From 6fa4157f043ba895499f58c46dd791a8ff4f3db5 Mon Sep 17 00:00:00 2001 From: Aanish Bhirud Date: Fri, 19 Jun 2026 14:33:05 +0530 Subject: [PATCH] chore(deps): bump @git-diff-view/react, @playwright/test, vitest; re-vendor diff CSS Consolidates the open Dependabot bumps that survive the optimization stack: - @git-diff-view/react ^0.1.1 -> ^0.1.5 (re-vendored public/vendor/diff-view-pure.css + .br) - @playwright/test ^1.58.2 -> ^1.61.0 - vitest ^4.0.18 -> ^4.1.9 Held back, on purpose: - @types/node stays at ^22 (matches the supported runtime; engines is node >=20.10). Bumping to 25 types Node-25 APIs that do not exist on the supported runtime and broke the Buffer typings in tests. - @codemirror/search: already removed by the optimization branch. vitest 4.1 needs no config change on regular vite 7 (the esbuild jsx config still applies); the 4.1.5 rolldown/oxc parse failure does not reproduce on 4.1.9. Co-Authored-By: Claude Opus 4.8 --- package-lock.json | 229 +++++++++++++++------------- package.json | 8 +- public/vendor/diff-view-pure.css | 111 ++++++++++++++ public/vendor/diff-view-pure.css.br | Bin 2777 -> 3195 bytes 4 files changed, 240 insertions(+), 108 deletions(-) diff --git a/package-lock.json b/package-lock.json index 72a4969..57d6259 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@codemirror/language": "^6.12.3", "@codemirror/state": "^6.6.0", "@codemirror/view": "^6.38.2", - "@git-diff-view/react": "^0.1.1", + "@git-diff-view/react": "^0.1.5", "@replit/codemirror-indentation-markers": "^6.5.3", "brotli-wasm": "^3.0.1", "fflate": "^0.8.2", @@ -35,13 +35,13 @@ "remark-gfm": "^4.0.1" }, "devDependencies": { - "@playwright/test": "^1.58.2", + "@playwright/test": "^1.61.0", "@tailwindcss/postcss": "^4.0.6", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", "@types/better-sqlite3": "^7.6.13", - "@types/node": "^22.13.10", + "@types/node": "^22.19.21", "@types/papaparse": "^5.3.16", "@types/react": "^19.0.10", "@types/react-dom": "^19.0.4", @@ -51,7 +51,7 @@ "tailwindcss": "^4.0.6", "tsx": "^4.21.0", "typescript": "^5.8.2", - "vitest": "^4.0.18" + "vitest": "^4.1.9" }, "engines": { "node": ">=20.10.0" @@ -1129,21 +1129,21 @@ } }, "node_modules/@git-diff-view/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@git-diff-view/core/-/core-0.1.1.tgz", - "integrity": "sha512-8bjNPT3oLAo7mqTRu79WEC44scIBjTtA9iXvvbqfbR2w2GM/FPZajmhPvgIre+YKe2jfTNFjhV2UcbjOarRKfA==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@git-diff-view/core/-/core-0.1.5.tgz", + "integrity": "sha512-xvMZnD0k8BlmP3RqSocQrPVVzgUxr8KEl0wT5TTIm9c2B5tODHat69zidUvFWIoaYvHwDu4PfVcdGj4c+PrL6g==", "license": "MIT", "dependencies": { - "@git-diff-view/lowlight": "^0.1.1", + "@git-diff-view/lowlight": "^0.1.5", "fast-diff": "^1.3.0", "highlight.js": "^11.11.0", "lowlight": "^3.3.0" } }, "node_modules/@git-diff-view/lowlight": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@git-diff-view/lowlight/-/lowlight-0.1.1.tgz", - "integrity": "sha512-OXJv/EII795h/ek6sJVjge1vcTS826/3j2fw3mvmc8QGjQyncSRQhD655WQcamOq7jvEPSf7BC7zh3L36BEl8w==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@git-diff-view/lowlight/-/lowlight-0.1.5.tgz", + "integrity": "sha512-6sxEJcGIUHzJc6Rx1kQ1TqAi0g6ABiGG8z5xhlLHWcQwDmGzB2wTISbyRxNXTwQTwJIMX5u5Cj+2xl+a84APxQ==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -1152,17 +1152,17 @@ } }, "node_modules/@git-diff-view/react": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@git-diff-view/react/-/react-0.1.1.tgz", - "integrity": "sha512-mV1cQwBCCGURaG49J+jOBOm9Y+4iiUPrMBj02vWvJSF9MQYHk42/KynXtv7xbRjf/6AdUNphiRjOcC1b1xUWmA==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@git-diff-view/react/-/react-0.1.5.tgz", + "integrity": "sha512-xcEr42FRtVhxR6TCkruY2zqCq+vaAOvWl3rH05aEYgDNuEbAvSZ0sOTULIE84hwHshkN3AF+sruuEjL1YC0aEg==", "license": "MIT", "dependencies": { - "@git-diff-view/core": "^0.1.1", + "@git-diff-view/core": "^0.1.5", "@types/hast": "^3.0.0", "fast-diff": "^1.3.0", "highlight.js": "^11.11.0", "lowlight": "^3.3.0", - "reactivity-store": "^0.3.12", + "reactivity-store": "^0.4.0", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { @@ -2076,14 +2076,14 @@ } }, "node_modules/@playwright/test": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz", - "integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==", + "version": "1.61.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.61.0.tgz", + "integrity": "sha512-cKA5B6lpFEMyMGjxF54QihfYpB4FkEGH+qZhtArDEG+wezQAJY8Pq6C7T1SjWz+FFzt3TbyoXBQYk/0292TdJA==", "devOptional": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "playwright": "1.58.2" + "playwright": "1.61.0" }, "bin": { "playwright": "cli.js" @@ -3286,9 +3286,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.19.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz", - "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", + "version": "22.19.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.21.tgz", + "integrity": "sha512-VMeFBSCKQKmm2swI2kW51SFusDqekC6q9trBCvJ/JliDchFSuoYYKN7yVNjPthP1HKZcx3U1gI/wTcEBjEFKTA==", "dev": true, "license": "MIT", "dependencies": { @@ -3908,31 +3908,31 @@ } }, "node_modules/@vitest/expect": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", - "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.9.tgz", + "integrity": "sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==", "dev": true, "license": "MIT", "dependencies": { - "@standard-schema/spec": "^1.0.0", + "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "chai": "^6.2.1", - "tinyrainbow": "^3.0.3" + "@vitest/spy": "4.1.9", + "@vitest/utils": "4.1.9", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", - "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.9.tgz", + "integrity": "sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.0.18", + "@vitest/spy": "4.1.9", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -3941,7 +3941,7 @@ }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0-0" + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "msw": { @@ -3953,26 +3953,26 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.9.tgz", + "integrity": "sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^3.0.3" + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", - "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.9.tgz", + "integrity": "sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.18", + "@vitest/utils": "4.1.9", "pathe": "^2.0.3" }, "funding": { @@ -3980,13 +3980,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", - "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.9.tgz", + "integrity": "sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", + "@vitest/pretty-format": "4.1.9", + "@vitest/utils": "4.1.9", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -3995,9 +3996,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", - "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.9.tgz", + "integrity": "sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==", "dev": true, "license": "MIT", "funding": { @@ -4005,32 +4006,33 @@ } }, "node_modules/@vitest/utils": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", - "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.9.tgz", + "integrity": "sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", - "tinyrainbow": "^3.0.3" + "@vitest/pretty-format": "4.1.9", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vue/reactivity": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.29.tgz", - "integrity": "sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==", + "version": "3.5.38", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.38.tgz", + "integrity": "sha512-pG6LV/NDNRbKizcUjFFLAfjaL8mcv4DmR9avNcUw2gDHBzZneuS2TWCmp633ynzxz9YYKNeEPK2I8Wraqy2HUQ==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.29" + "@vue/shared": "3.5.38" } }, "node_modules/@vue/shared": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.29.tgz", - "integrity": "sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==", + "version": "3.5.38", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.38.tgz", + "integrity": "sha512-FTW0AFZNaK5/mOqvGBwVfUlNLU38TiQn4+DQgIFUnrBBJQ1crMJ82yeGQLV5jyKFsO8yRukpbuP7x+nRbH6aug==", "license": "MIT" }, "node_modules/acorn": { @@ -4714,6 +4716,13 @@ "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", "license": "MIT" }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, "node_modules/cose-base": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", @@ -5722,9 +5731,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", "dev": true, "license": "MIT" }, @@ -9604,13 +9613,13 @@ } }, "node_modules/playwright": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz", - "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==", + "version": "1.61.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.61.0.tgz", + "integrity": "sha512-Z+7BeeqQPRRzklHsVFP4KTGIyMxKUmfeRA4WisM6G3/XW6nwGeX6fX9qYaDa+CiUqpOkb2f6X3nar05R3kSuJQ==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.58.2" + "playwright-core": "1.61.0" }, "bin": { "playwright": "cli.js" @@ -9623,9 +9632,9 @@ } }, "node_modules/playwright-core": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", - "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==", + "version": "1.61.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.0.tgz", + "integrity": "sha512-caX7TrY3Ml6egyDX0WUcTHDxodl/b51y5wJOdCEA36QviK/s2g081hvmGs8eaE3DWb6NYZQ6BjO/QkNRPenoPA==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -9925,13 +9934,13 @@ } }, "node_modules/reactivity-store": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/reactivity-store/-/reactivity-store-0.3.12.tgz", - "integrity": "sha512-Idz9EL4dFUtQbHySZQzckWOTUfqjdYpUtNW0iOysC32mG7IjiUGB77QrsyR5eAWBkRiS9JscF6A3fuQAIy+LrQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/reactivity-store/-/reactivity-store-0.4.0.tgz", + "integrity": "sha512-uL9uoREOBg2o4zUa8vMU0AbvAOk0osPloizscmyZqMvJzcuuKX3ELFYYr1DX8gAcfvlhPduz4QuLZn1eChCu4Q==", "license": "MIT", "dependencies": { - "@vue/reactivity": "~3.5.22", - "@vue/shared": "~3.5.22", + "@vue/reactivity": "~3.5.30", + "@vue/shared": "~3.5.30", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { @@ -10641,9 +10650,9 @@ "license": "MIT" }, "node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", + "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", "dev": true, "license": "MIT" }, @@ -11037,9 +11046,9 @@ } }, "node_modules/tinyrainbow": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", - "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", "dev": true, "license": "MIT", "engines": { @@ -11646,31 +11655,31 @@ } }, "node_modules/vitest": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", - "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.9.tgz", + "integrity": "sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.0.18", - "@vitest/mocker": "4.0.18", - "@vitest/pretty-format": "4.0.18", - "@vitest/runner": "4.0.18", - "@vitest/snapshot": "4.0.18", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "es-module-lexer": "^1.7.0", - "expect-type": "^1.2.2", + "@vitest/expect": "4.1.9", + "@vitest/mocker": "4.1.9", + "@vitest/pretty-format": "4.1.9", + "@vitest/runner": "4.1.9", + "@vitest/snapshot": "4.1.9", + "@vitest/spy": "4.1.9", + "@vitest/utils": "4.1.9", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", - "std-env": "^3.10.0", + "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.0.3", - "vite": "^6.0.0 || ^7.0.0", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "bin": { @@ -11686,12 +11695,15 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.0.18", - "@vitest/browser-preview": "4.0.18", - "@vitest/browser-webdriverio": "4.0.18", - "@vitest/ui": "4.0.18", + "@vitest/browser-playwright": "4.1.9", + "@vitest/browser-preview": "4.1.9", + "@vitest/browser-webdriverio": "4.1.9", + "@vitest/coverage-istanbul": "4.1.9", + "@vitest/coverage-v8": "4.1.9", + "@vitest/ui": "4.1.9", "happy-dom": "*", - "jsdom": "*" + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "@edge-runtime/vm": { @@ -11712,6 +11724,12 @@ "@vitest/browser-webdriverio": { "optional": true }, + "@vitest/coverage-istanbul": { + "optional": true + }, + "@vitest/coverage-v8": { + "optional": true + }, "@vitest/ui": { "optional": true }, @@ -11720,6 +11738,9 @@ }, "jsdom": { "optional": true + }, + "vite": { + "optional": false } } }, diff --git a/package.json b/package.json index 12f7b54..d9a7d5a 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@codemirror/language": "^6.12.3", "@codemirror/state": "^6.6.0", "@codemirror/view": "^6.38.2", - "@git-diff-view/react": "^0.1.1", + "@git-diff-view/react": "^0.1.5", "@replit/codemirror-indentation-markers": "^6.5.3", "brotli-wasm": "^3.0.1", "fflate": "^0.8.2", @@ -71,13 +71,13 @@ "remark-gfm": "^4.0.1" }, "devDependencies": { - "@playwright/test": "^1.58.2", + "@playwright/test": "^1.61.0", "@tailwindcss/postcss": "^4.0.6", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", "@types/better-sqlite3": "^7.6.13", - "@types/node": "^22.13.10", + "@types/node": "^22.19.21", "@types/papaparse": "^5.3.16", "@types/react": "^19.0.10", "@types/react-dom": "^19.0.4", @@ -87,7 +87,7 @@ "tailwindcss": "^4.0.6", "tsx": "^4.21.0", "typescript": "^5.8.2", - "vitest": "^4.0.18" + "vitest": "^4.1.9" }, "optionalDependencies": { "better-sqlite3": "^12.8.0" diff --git a/public/vendor/diff-view-pure.css b/public/vendor/diff-view-pure.css index 81032e5..9c6e072 100644 --- a/public/vendor/diff-view-pure.css +++ b/public/vendor/diff-view-pure.css @@ -1,27 +1,45 @@ +.diff-tailwindcss-wrapper .\!container { + width: 100% !important; +} .diff-tailwindcss-wrapper .container { width: 100%; } @media (min-width: 640px) { + .diff-tailwindcss-wrapper .\!container { + max-width: 640px !important; + } .diff-tailwindcss-wrapper .container { max-width: 640px; } } @media (min-width: 768px) { + .diff-tailwindcss-wrapper .\!container { + max-width: 768px !important; + } .diff-tailwindcss-wrapper .container { max-width: 768px; } } @media (min-width: 1024px) { + .diff-tailwindcss-wrapper .\!container { + max-width: 1024px !important; + } .diff-tailwindcss-wrapper .container { max-width: 1024px; } } @media (min-width: 1280px) { + .diff-tailwindcss-wrapper .\!container { + max-width: 1280px !important; + } .diff-tailwindcss-wrapper .container { max-width: 1280px; } } @media (min-width: 1536px) { + .diff-tailwindcss-wrapper .\!container { + max-width: 1536px !important; + } .diff-tailwindcss-wrapper .container { max-width: 1536px; } @@ -408,12 +426,105 @@ .diff-tailwindcss-wrapper .diff-widget-tooltip:hover::after { display: block; } +.diff-line-extend-wrapper, +.diff-line-widget-wrapper { + display: flow-root; +} .diff-line-extend-wrapper * { color: initial; } .diff-line-widget-wrapper * { color: initial; } +/* Multi-select styles for line range selection */ +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-new-num, +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-old-num, +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-num { + z-index: 2; +} +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-content, +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-new-content, +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-old-content { + position: relative; +} +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-new-num::after, +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-old-num::after, +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-num::after { + content: ""; + position: absolute; + z-index: 1; + inset: 0; + opacity: 0.15; + background-color: var(--diff-multi-select-bg, #f0c000); + pointer-events: none; +} +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-new-num::before, +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-old-num::before, +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-num::before { + content: ""; + z-index: 2; + position: absolute; + top: 0; + bottom: 0; + right: -2px; + width: 4px; + background-color: var(--diff-multi-select-border, #2588fa); +} +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-new-content::after, +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-old-content::after, +.diff-tailwindcss-wrapper .diff-multi-select-active.diff-line-content::after { + content: ""; + position: absolute; + z-index: 1; + inset: 0; + opacity: 0.15; + background-color: var(--diff-multi-select-bg, #f0c000); + pointer-events: none; +} +/* Multi-select: ensure proper positioning for line number cells */ +.diff-multi-selecting .diff-line-old-num, +.diff-multi-selecting .diff-line-new-num, +.diff-multi-selecting .diff-line-num { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.diff-multi-selecting .diff-line-old-content, +.diff-multi-selecting .diff-line-new-content, +.diff-multi-selecting .diff-line-content { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +/* Prevent text selection during multi-line selection */ +.diff-multi-selecting { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.diff-multi-selecting * { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +/* Hide addWidget button during active dragging selection */ +.diff-multi-selecting .diff-add-widget-wrapper { + display: none; +} +/* Ensure addWidget button is above selection overlay */ +.diff-multiselect-wrapper .diff-add-widget-wrapper { + z-index: 10 !important; +} +/* Line number span should not interfere with click events */ +.diff-tailwindcss-wrapper .diff-line-new-num span[data-line-num], +.diff-tailwindcss-wrapper .diff-line-old-num span[data-line-num] { + pointer-events: none; +} +.diff-multiselect-wrapper .diff-line-old-num, +.diff-multiselect-wrapper .diff-line-new-num, +.diff-multiselect-wrapper .diff-line-num { + cursor: pointer; +} .diff-tailwindcss-wrapper[data-theme="light"] .diff-line-syntax-raw pre code.hljs { display: block; overflow-x: auto; diff --git a/public/vendor/diff-view-pure.css.br b/public/vendor/diff-view-pure.css.br index 4e6954ea0496944d3e73b3bf1204b847cb1f3dad..04cbb925fcd81cb2713d550bcad34444fe94ac40 100644 GIT binary patch literal 3195 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 literal 2777 zcmV;~3MTa%|5qTKgK^__`wvhqwXKxJq4i2WicDN)JOpjp_w|iNwrsPoe*&tTP-(;AErl*(Lg{j}`uCC7^AcrM+c?{@72KK&%7gqSATg-3j|C70adsv(2oX(}74|w}?OZ*|gpA36LDCCkT@*bW zl7bIOOe~`BbET=$o%JnGN;wDO6!ivB#OUhoFV6z}K7V<2%_+*FkXlm{wC!p`m>2Jk z|HlY$GY(~v;&gWD+5hw`DE9Y^JzjPNv3m#;AxTP{dgUh(F zHL-}H70>gSL85!ow75e~oS2|%QJkt03I}M*Ev9H-pJ~F=1~SEyh^FAvYPS;xz~}mg%FMlPEb<(mt5&dBVRj{K46&&tI#WPelU; zC&wtT#&LjAz{ngCkku3@TLJ-V@i&dAU}Qm(ZE_yESswaJ33GDdeP;(<`eD*IWru~yru z8*OcsW~I#cCU*5iMaAU3Q&G5|!@^qQX0LkaWqXjMvjR~Z!y|B^P87KzEmCZFOpmm* z7bwl;4=Fi|6iNO#rC;FE{IU7kT`&;v_xj)Zo)+d~<)fN;I9OFU-OQq}tl)+eU}E46T&MyDT-;`3Ga|{g)5@M<2d-lD zR9!Ckw1G>wU~3V(APIbFsyT?1!}+xwv0eQNX~y$_Bcu2fAZSkaYb=#a9?IuI9~Jp_%Id_m zEWw+@OnM6-D2&{*Ad$+uFg2|e_{odc)$Q?=DPmP7W*nnNQ#DW)gc0@RMAwL8$@i%? zzVsXr?{To>V8_!I4VB0S!9a#KG^T(wzg`S~2l(SmGT^ALeYz2&m|Z|bYJ07e=9e2=A$pUZ|j^|H!FWGIuwUu1iM%F{#wiy zKLv+O=rY}dK9P7f>0W7*m>T6eF_TYhauHio?B&{E$H0}w5z1k|MYU~E%cm8WBg7x@ z0|I}Lugd4(&kc6uTFPG)9pdU$(Y&CH$U4~on+){|IAQ?X9%JNqZ&^FUYqcoEg z1_AYTpq)g*3Rdqkp^vi ziLK$iD!551@w-odq%p*&*N|ZKwqv>}Vs6Z=Y>f< zkGR6ids7|US>cRJ?R5{N3ieOsQjEO6z_n4sy&B@5g87m$tz+fjESh8^%ce?-{iw1m zI3+PK>dRo|$RyJO%q-0VjkvW-A97x9ZBg7F)?p`_d8;i#C^q{Z#(QCs_7LO_@U!^} zD=<`tGM6C12ERB2p3BbpN!ecLdFaqVCgu4#ueKZYFO%$0Gt$rnZXtTB)mYN*cTHzh z!_jD)&Y{J&*0$@69wi|({>3Y@(pXcw|7rHAG!QOq0(AQEv*MT_wsCY(m;HWCnq5-`(C>j2k#q=YZ&%B z!Om4(UqE1%Un&x`9VD8)rK1*?nha&zh%BJCizk#c_O4-etdhbS19BVg^Qs2-xU}P6&&l z5!BBQHOtF?3S}H=Jdb%Gjd9f(F-}^E%gjUYvPv^C{>FjFmQv3PUg^dTM(O=$ z-tF~`2NE{kKS@W4Wy~)%qISYhJZ3&v|1~U+Fd)>Bkgy{O81vS$=GhsViAK3&1Z#E~ z56Y?8q5cRLFDuXG3i3mOB4eH`rmYiS@Nr}Bgps-n@!_?WJFs3OzezN9lt*a<}3l|{XsEi4kO0R zP0x&(03YxNV9pq@m5gDe%=1>x$HgCZ95-~GN^lDPO2F~u4%TZCg@@uooR