diff --git a/cspell-dict.txt b/cspell-dict.txt index ae1fd2c6288..eaf3e6c4e09 100644 --- a/cspell-dict.txt +++ b/cspell-dict.txt @@ -54,7 +54,6 @@ résumé rolldown rspack serializers -skia-canvas smol-toml specberus Subdeps diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f331fa50f2e..6d9c4ff02f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1640,13 +1640,6 @@ importers: thistogram: specifier: ^2.0.0 version: 2.0.0 - devDependencies: - chart.js: - specifier: ^4.6.1 - version: 4.6.1 - skia-canvas: - specifier: ^4.0.0 - version: 4.0.0(debug@4.4.3(supports-color@9.4.0))(supports-color@9.4.0) website: dependencies: @@ -3794,9 +3787,6 @@ packages: '@keyv/serialize@1.1.1': resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} - '@kurkle/color@0.3.4': - resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} - '@kwsites/file-exists@1.1.1': resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} @@ -4730,50 +4720,6 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@skia-canvas/darwin-arm64@4.0.0': - resolution: {integrity: sha512-0THbyAdihsVc+C8dB44BWDUxYPs8g6XY19Az77Q6F3ExUpod+QpJAkKdZ8fHB8PGtj74WzsjFt+5Ns/R+RD83A==} - cpu: [arm64] - os: [darwin] - - '@skia-canvas/darwin-x64@4.0.0': - resolution: {integrity: sha512-cZRlVDjUVlSegG63kyTY0dMG95RUTw0ZwgkUMnMoLzrp73F2T6KcX3QFAmp2CRW/405i04Mo0PLTK5Y24gLMUA==} - cpu: [x64] - os: [darwin] - - '@skia-canvas/linux-arm64-glibc@4.0.0': - resolution: {integrity: sha512-/wJRyiIZjFSPtHf/Zwo7chEM5o2P12mS3+N2h8uckNstSlT3P/CWlOi8HjO9OBSypbLhwz4gJfWW7eS+lY6lyw==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@skia-canvas/linux-arm64-musl@4.0.0': - resolution: {integrity: sha512-rbFMxYZ1wgZjF2l+Tx5ve+oTc3ZLHyDyAQRP6dKfbxIUHGUi8zgdpV754jM+VvkuqW9ljzc2sOYe3izrpfYByQ==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@skia-canvas/linux-x64-glibc@4.0.0': - resolution: {integrity: sha512-rpgx6WX6OrNFuBNz1tjOnxbNG6il5wfe72HhpA6fOo1ZBWPgzmHEmeAXvSMvhbnsJEdcfBV9akThufzitQ4sgA==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@skia-canvas/linux-x64-musl@4.0.0': - resolution: {integrity: sha512-xOh7dt9Z5pAMVc6KNkJEu906usaa5HAUEQ8CwEQHWtiZQNvQx6Ma71+I0c4mEWFEJaA1mwK5xUoGSzONY+wsmw==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@skia-canvas/win32-arm64@4.0.0': - resolution: {integrity: sha512-5+yXHAQLp0jacna/zhLKMfesDfKcZBXoKxcu82adLYI6vu5hj5P+iUI2416rfRdeUzX/E9n+mIfKTylEHgIdMA==} - cpu: [arm64] - os: [win32] - - '@skia-canvas/win32-x64@4.0.0': - resolution: {integrity: sha512-qLmlrca+VRR+JZAmN0TYCmztVabi3YWKAbxXD9HLHcUP5HKOk2wh+y/9nMqJsJLQyQqItBeNjnLHLfsDS65RnQ==} - cpu: [x64] - os: [win32] - '@slorber/react-helmet-async@1.3.0': resolution: {integrity: sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==} peerDependencies: @@ -5576,10 +5522,6 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - agent-base@9.0.0: - resolution: {integrity: sha512-TQf59BsZnytt8GdJKLPfUZ54g/iaUL2OWDSFCCvMOhsHduDQxO8xC4PNeyIkVcA5KwL2phPSv0douC0fgWzmnA==} - engines: {node: '>= 20'} - aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -5961,10 +5903,6 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chart.js@4.6.1: - resolution: {integrity: sha512-hJyniucsFmq//EvXYvJ6c6mahPoI3kaxdjVH8awTaJ/fDNWeSqqqArixMJWkWNN6fcYvPU3HneSANFNYtRi61g==} - engines: {pnpm: '>=8'} - cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -7640,10 +7578,6 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - https-proxy-agent@9.1.0: - resolution: {integrity: sha512-ag87y7cJJ9/3+GxFr8Oy4O5faDsGRGnBGsJj/YjOSsSx/5eadKLYTMPlzuR6obgoCDDm0abAAZitXXQkMOPSpA==} - engines: {node: '>= 20'} - human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -9750,15 +9684,6 @@ packages: resolution: {integrity: sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==} engines: {node: '>= 0.10'} - proxy-agent-negotiate@1.1.0: - resolution: {integrity: sha512-N8IBcM3UgCVzz2L2Lqv8DVntDnnC8/hiV4nEDUPkqq72TPUgYWjQc+bdZlBPZK9LzPAvOY//gAt0S0DApoOXWQ==} - engines: {node: '>= 20'} - peerDependencies: - kerberos: ^2.0.0 - peerDependenciesMeta: - kerberos: - optional: true - pump@3.0.4: resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} @@ -10341,10 +10266,6 @@ packages: engines: {node: '>=12.0.0', npm: '>=5.6.0'} hasBin: true - skia-canvas@4.0.0: - resolution: {integrity: sha512-Y4K2xKy1nxj6fhT/ZTHQ+KJnSqV/oOXqbgjML8ie2Jj8eJ3satsiz9y/L8OWYclpNhEAvBSOIurdZ9hDs6fsGA==} - engines: {node: '>=18'} - skin-tone@2.0.0: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} @@ -14658,8 +14579,6 @@ snapshots: '@keyv/serialize@1.1.1': {} - '@kurkle/color@0.3.4': {} - '@kwsites/file-exists@1.1.1(supports-color@9.4.0)': dependencies: debug: 4.4.3(supports-color@9.4.0) @@ -15593,30 +15512,6 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@skia-canvas/darwin-arm64@4.0.0': - optional: true - - '@skia-canvas/darwin-x64@4.0.0': - optional: true - - '@skia-canvas/linux-arm64-glibc@4.0.0': - optional: true - - '@skia-canvas/linux-arm64-musl@4.0.0': - optional: true - - '@skia-canvas/linux-x64-glibc@4.0.0': - optional: true - - '@skia-canvas/linux-x64-musl@4.0.0': - optional: true - - '@skia-canvas/win32-arm64@4.0.0': - optional: true - - '@skia-canvas/win32-x64@4.0.0': - optional: true - '@slorber/react-helmet-async@1.3.0(react-dom@19.3.1(react@19.3.1))(react@19.3.1)': dependencies: '@babel/runtime': 7.29.10 @@ -16538,8 +16433,6 @@ snapshots: agent-base@7.1.4: {} - agent-base@9.0.0: {} - aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 @@ -16998,10 +16891,6 @@ snapshots: character-reference-invalid@2.0.1: {} - chart.js@4.6.1: - dependencies: - '@kurkle/color': 0.3.4 - cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 @@ -19229,15 +19118,6 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@9.1.0(supports-color@9.4.0): - dependencies: - agent-base: 9.0.0 - debug: 4.4.3(supports-color@9.4.0) - proxy-agent-negotiate: 1.1.0 - transitivePeerDependencies: - - kerberos - - supports-color - human-signals@2.1.0: {} hyperdyperid@1.2.0: {} @@ -21756,8 +21636,6 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-agent-negotiate@1.1.0: {} - pump@3.0.4: dependencies: end-of-stream: 1.4.5 @@ -22516,25 +22394,6 @@ snapshots: arg: 5.0.2 sax: 1.6.1 - skia-canvas@4.0.0(debug@4.4.3(supports-color@9.4.0))(supports-color@9.4.0): - dependencies: - detect-libc: 2.1.2 - follow-redirects: 1.16.2(debug@4.4.3(supports-color@9.4.0)) - https-proxy-agent: 9.1.0(supports-color@9.4.0) - optionalDependencies: - '@skia-canvas/darwin-arm64': 4.0.0 - '@skia-canvas/darwin-x64': 4.0.0 - '@skia-canvas/linux-arm64-glibc': 4.0.0 - '@skia-canvas/linux-arm64-musl': 4.0.0 - '@skia-canvas/linux-x64-glibc': 4.0.0 - '@skia-canvas/linux-x64-musl': 4.0.0 - '@skia-canvas/win32-arm64': 4.0.0 - '@skia-canvas/win32-x64': 4.0.0 - transitivePeerDependencies: - - debug - - kerberos - - supports-color - skin-tone@2.0.0: dependencies: unicode-emoji-modifier-base: 1.0.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0c892f70f00..1079e64ded6 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -52,7 +52,6 @@ allowBuilds: '@swc/core': true core-js: false esbuild: true - skia-canvas: false unrs-resolver: true # cspell:dictionaries npm diff --git a/tools/perf-chart/package.json b/tools/perf-chart/package.json index 21c0b22b596..3a774e7ee33 100644 --- a/tools/perf-chart/package.json +++ b/tools/perf-chart/package.json @@ -23,10 +23,6 @@ "src", "bin.ts" ], - "devDependencies": { - "chart.js": "^4.6.1", - "skia-canvas": "^4.0.0" - }, "dependencies": { "@streetsidesoftware/unindent": "^1.0.1", "commander": "^15.0.0", diff --git a/tools/perf-chart/src/app.ts b/tools/perf-chart/src/app.ts index d228f451583..59bb3bdd99f 100644 --- a/tools/perf-chart/src/app.ts +++ b/tools/perf-chart/src/app.ts @@ -6,8 +6,6 @@ program .argument('', 'path to perf data file') .description('Generate a min/max chart of the perf data') .option('-o, --output ', 'Path to the output the Markdown file.') - .option('-p, --png ', 'Path to PNG file to generate.') - .option('-u, --site-url ', 'The url to prefix png path when adding it to the markdown.') .option('--daily-csv ', 'Path out output the daily csv') .option( '-d, --days ', diff --git a/tools/perf-chart/src/experimental/plotPng.ts b/tools/perf-chart/src/experimental/plotPng.ts deleted file mode 100644 index 6c53a1c0af2..00000000000 --- a/tools/perf-chart/src/experimental/plotPng.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { - BarController, - BarElement, - CategoryScale, - Chart, - LinearScale, - LineController, - LineElement, - PointElement, -} from 'chart.js'; -import { Canvas } from 'skia-canvas'; - -import type { CsvRecordsRO } from '../CsvRecord.ts'; -import { createDailyStats } from '../dailyStats.ts'; -import type { Options } from '../options.ts'; - -const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; - -Chart.register([CategoryScale, BarController, BarElement, LineController, LineElement, LinearScale, PointElement]); - -export async function plotPng(records: CsvRecordsRO, _options: Options): Promise { - const dailyStats = createDailyStats(records); - - const xAxis = dailyStats.map((d) => `${monthNames[d.date.getUTCMonth()]}-${d.date.getUTCDate()}`); - - const canvas = new Canvas(900, 600); - const chart = new Chart( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - canvas as any, // TypeScript needs "as any" here - { - data: { - labels: xAxis, - datasets: [ - { - type: 'bar', - label: 'Kilobytes per Second', - data: dailyStats.map((d) => d.kps), - }, - { - type: 'line', - label: 'Avg Kilobytes per Second', - data: dailyStats.map((d) => d.fpsByRepo.get('googleapis/google-cloud-cpp')?.avg || 1), - }, - ], - }, - }, - ); - const pngBuffer = await canvas.toBuffer('png', { matte: 'white' }); - chart.destroy(); - return pngBuffer; -} diff --git a/tools/perf-chart/src/options.ts b/tools/perf-chart/src/options.ts index c36c29f1d5e..1c8aaf715fe 100644 --- a/tools/perf-chart/src/options.ts +++ b/tools/perf-chart/src/options.ts @@ -1,13 +1,7 @@ export interface Options { - /** Path to PNG file to generate. */ - png?: string; - /** Path to the output the Markdown file. */ output?: string; - /** The url to prefix png path when adding it to the markdown */ - siteUrl?: string; - /** The number of days in the past to plot. */ days: number; diff --git a/tools/perf-chart/src/perfChart.ts b/tools/perf-chart/src/perfChart.ts index ce9c316fb42..ee63d941829 100644 --- a/tools/perf-chart/src/perfChart.ts +++ b/tools/perf-chart/src/perfChart.ts @@ -30,8 +30,6 @@ export async function perfReport(csvFile: string | URL, options: Options): Promi const recordsGraph = limitDataToDaysAgo(rawRecords, days * 3); await outputDailyCsv(recordsGraph, options); - - await generatePng(recordsGraph, options); } function limitDataToDaysAgo(data: CsvRecordsRO, days: number): CsvRecord[] { @@ -62,17 +60,7 @@ async function outputDailyCsv(records: CsvRecord[], options: Options): Promise { - if (!options.png) return; - - // Delay the import until needed - not actively used. - const { plotPng } = await import('./experimental/plotPng.ts'); - - const buffer = await plotPng(records, options); - await outputFile(options.png, buffer); -} - -async function outputFile(filePath: string, content: string | Buffer): Promise { +async function outputFile(filePath: string, content: string): Promise { await fs.mkdir(Path.dirname(filePath), { recursive: true }); await fs.writeFile(filePath, content); } diff --git a/tools/perf-chart/tsconfig.json b/tools/perf-chart/tsconfig.json index d7f8f32d6d8..a22d0fe5de0 100644 --- a/tools/perf-chart/tsconfig.json +++ b/tools/perf-chart/tsconfig.json @@ -4,8 +4,6 @@ "noEmit": true, "module": "NodeNext", "moduleResolution": "NodeNext", - // `skia-canvas` ships type declarations with errors. - "skipLibCheck": true, "allowImportingTsExtensions": true, "types": ["node"], "outDir": "dist"