Update dependencies to the most recent versions

Note that the `prettier` update introduces a handful of formatting
changes (see https://prettier.io/blog/2026/06/27/3.9.0).

Moreover, the `tsc-alias` update requires explicitly defining the root
URL in the compiler options now, otherwise it errors with `tsc-alias
error: compilerOptions.rootDir is required with implicit baseUrl` (see
https://github.com/justkey007/tsc-alias/pull/259/changes).
This commit is contained in:
Tim van der Meij 2026-07-04 14:30:41 +02:00
parent cb70c93e8a
commit 4fd232a124
No known key found for this signature in database
GPG Key ID: 8C3FD2925A5F2762
21 changed files with 279 additions and 237 deletions

View File

@ -48,7 +48,7 @@ const jpegData = jpegImage.getData({
// //
const imageData = jpegCtx.createImageData(width, height); const imageData = jpegCtx.createImageData(width, height);
const imageBytes = imageData.data; const imageBytes = imageData.data;
for (let j = 0, k = 0, jj = width * height * 4; j < jj; ) { for (let j = 0, k = 0, jj = width * height * 4; j < jj;) {
imageBytes[j++] = jpegData[k++]; imageBytes[j++] = jpegData[k++];
imageBytes[j++] = jpegData[k++]; imageBytes[j++] = jpegData[k++];
imageBytes[j++] = jpegData[k++]; imageBytes[j++] = jpegData[k++];

332
package-lock.json generated
View File

@ -10,28 +10,28 @@
"@babel/core": "^8.0.1", "@babel/core": "^8.0.1",
"@babel/preset-env": "^8.0.2", "@babel/preset-env": "^8.0.2",
"@babel/runtime": "^8.0.0", "@babel/runtime": "^8.0.0",
"@eslint/json": "^2.0.0", "@eslint/json": "^2.0.1",
"@fluent/bundle": "^0.19.1", "@fluent/bundle": "^0.19.1",
"@fluent/dom": "^0.10.2", "@fluent/dom": "^0.10.2",
"@metalsmith/layouts": "^3.0.0", "@metalsmith/layouts": "^3.0.0",
"@metalsmith/markdown": "^1.10.0", "@metalsmith/markdown": "^1.10.0",
"@napi-rs/canvas": "^1.0.0", "@napi-rs/canvas": "^1.0.2",
"@types/node": "^26.0.0", "@types/node": "^26.1.0",
"autoprefixer": "^10.5.1", "autoprefixer": "^10.5.2",
"babel-loader": "^10.1.1", "babel-loader": "^10.1.1",
"babel-plugin-istanbul": "^8.0.2", "babel-plugin-istanbul": "^8.0.2",
"babel-plugin-polyfill-corejs3": "^1.0.0", "babel-plugin-polyfill-corejs3": "^1.0.0",
"cached-iterable": "^0.3.0", "cached-iterable": "^0.3.0",
"caniuse-lite": "^1.0.30001799", "caniuse-lite": "^1.0.30001800",
"core-js": "^3.49.0", "core-js": "^3.49.0",
"eslint": "^10.5.0", "eslint": "^10.6.0",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"eslint-plugin-import-x": "^4.17.0", "eslint-plugin-import-x": "^4.17.1",
"eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-jasmine": "^4.2.2",
"eslint-plugin-no-unsanitized": "^4.1.5", "eslint-plugin-no-unsanitized": "^4.1.5",
"eslint-plugin-perfectionist": "^5.9.1", "eslint-plugin-perfectionist": "^5.9.1",
"eslint-plugin-prettier": "^5.5.6", "eslint-plugin-prettier": "^5.5.6",
"eslint-plugin-regexp": "^3.1.0", "eslint-plugin-regexp": "^3.1.1",
"eslint-plugin-unicorn": "^68.0.0", "eslint-plugin-unicorn": "^68.0.0",
"globals": "^17.7.0", "globals": "^17.7.0",
"gulp": "^5.0.1", "gulp": "^5.0.1",
@ -52,20 +52,20 @@
"metalsmith-html-relative": "^2.0.12", "metalsmith-html-relative": "^2.0.12",
"ordered-read-streams": "^2.0.0", "ordered-read-streams": "^2.0.0",
"pngjs": "^7.0.0", "pngjs": "^7.0.0",
"postcss": "^8.5.15", "postcss": "^8.5.16",
"postcss-discard-comments": "^8.0.1", "postcss-discard-comments": "^8.0.1",
"postcss-values-parser": "^8.0.0", "postcss-values-parser": "^8.0.0",
"prettier": "^3.8.4", "prettier": "^3.9.4",
"puppeteer": "^25.2.0", "puppeteer": "^25.3.0",
"stylelint": "^17.13.0", "stylelint": "^17.14.0",
"stylelint-prettier": "^5.0.3", "stylelint-prettier": "^5.0.3",
"svglint": "^4.2.1", "svglint": "^4.2.1",
"terser-webpack-plugin": "^5.6.1", "terser-webpack-plugin": "^5.6.1",
"tsc-alias": "^1.8.17", "tsc-alias": "^1.9.0",
"ttest": "^4.0.0", "ttest": "^4.0.0",
"typescript": "^6.0.3", "typescript": "^6.0.3",
"vinyl": "^3.0.1", "vinyl": "^3.0.1",
"webpack": "^5.107.2", "webpack": "^5.108.3",
"webpack-stream": "^7.0.0" "webpack-stream": "^7.0.0"
}, },
"engines": { "engines": {
@ -3282,14 +3282,14 @@
} }
}, },
"node_modules/@eslint/json": { "node_modules/@eslint/json": {
"version": "2.0.0", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/@eslint/json/-/json-2.0.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/json/-/json-2.0.1.tgz",
"integrity": "sha512-P32ZJMIopNWQd1SFhd0tgjfA/hgzUuVSqHmMi2273QaLWHWimXq6V+qL4DNKnjGzO/aNECtYW+rEJ/pWB6uP+w==", "integrity": "sha512-Thz2j92ceUF3Bq/0TuWb3MWn3Z+Cwc8k5ptF0fakl2D4Mp8mSx07Xr1aQM4R5NoihzarWUdxfOmQ8DesGy4jOg==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@eslint/core": "^1.2.1", "@eslint/core": "^1.2.1",
"@eslint/plugin-kit": "^0.7.1", "@eslint/plugin-kit": "^0.7.2",
"@humanwhocodes/momoa": "^3.3.10", "@humanwhocodes/momoa": "^3.3.10",
"natural-compare": "^1.4.0" "natural-compare": "^1.4.0"
}, },
@ -3648,9 +3648,9 @@
} }
}, },
"node_modules/@napi-rs/canvas": { "node_modules/@napi-rs/canvas": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-1.0.2.tgz",
"integrity": "sha512-Jqxcy1XOIqj+lH9sl1GT+il6GR3uQv13vI2mrwubP3uT8Olak2ClDrK2RnxlQKjwv8BRr4b3ug0YR7c6hBX8wg==", "integrity": "sha512-EYEqlMYaCbpZDz+IgDH5xp9MTd3ui4dmGqbQYryhMLnSRxrhHKq5KQWHHKxFUcEP4Hp8/BWgvqXocX4j7iSbOQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"workspaces": [ "workspaces": [
@ -3664,23 +3664,23 @@
"url": "https://github.com/sponsors/Brooooooklyn" "url": "https://github.com/sponsors/Brooooooklyn"
}, },
"optionalDependencies": { "optionalDependencies": {
"@napi-rs/canvas-android-arm64": "1.0.0", "@napi-rs/canvas-android-arm64": "1.0.2",
"@napi-rs/canvas-darwin-arm64": "1.0.0", "@napi-rs/canvas-darwin-arm64": "1.0.2",
"@napi-rs/canvas-darwin-x64": "1.0.0", "@napi-rs/canvas-darwin-x64": "1.0.2",
"@napi-rs/canvas-linux-arm-gnueabihf": "1.0.0", "@napi-rs/canvas-linux-arm-gnueabihf": "1.0.2",
"@napi-rs/canvas-linux-arm64-gnu": "1.0.0", "@napi-rs/canvas-linux-arm64-gnu": "1.0.2",
"@napi-rs/canvas-linux-arm64-musl": "1.0.0", "@napi-rs/canvas-linux-arm64-musl": "1.0.2",
"@napi-rs/canvas-linux-riscv64-gnu": "1.0.0", "@napi-rs/canvas-linux-riscv64-gnu": "1.0.2",
"@napi-rs/canvas-linux-x64-gnu": "1.0.0", "@napi-rs/canvas-linux-x64-gnu": "1.0.2",
"@napi-rs/canvas-linux-x64-musl": "1.0.0", "@napi-rs/canvas-linux-x64-musl": "1.0.2",
"@napi-rs/canvas-win32-arm64-msvc": "1.0.0", "@napi-rs/canvas-win32-arm64-msvc": "1.0.2",
"@napi-rs/canvas-win32-x64-msvc": "1.0.0" "@napi-rs/canvas-win32-x64-msvc": "1.0.2"
} }
}, },
"node_modules/@napi-rs/canvas-android-arm64": { "node_modules/@napi-rs/canvas-android-arm64": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-1.0.2.tgz",
"integrity": "sha512-3hNKJObUK7JsCF9aJlVCs1J0/KE/gGfZNeK8MO1ge6bB3aicr5walGme9t9No1f/oyk9GgvdAT/rjSdsx3gbIw==", "integrity": "sha512-IMXKVQod0ol4vt3gmClUfXz4JAgHYESGPCUqmH3lQxBoL0K/2greJaQE1HVBVxWWFKfLc4OLZVdxg7kXVyXv+g==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -3699,9 +3699,9 @@
} }
}, },
"node_modules/@napi-rs/canvas-darwin-arm64": { "node_modules/@napi-rs/canvas-darwin-arm64": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-1.0.2.tgz",
"integrity": "sha512-ZIja19/BiGz2puhki+WUYSRriwFeFJ8Mi9eK3hZdSS85w4Y60cuEAJVhMCfKwswQkKkUtrnzdKMBuO7TupvexA==", "integrity": "sha512-Sc8tPi6cF+5lqOzCCKFALJHhDiRwyMzTPYm3bbhdXsOunU0lQO5f05ucyOzN2r55I23Hg5bsjH63uSCvWp3EgQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -3720,9 +3720,9 @@
} }
}, },
"node_modules/@napi-rs/canvas-darwin-x64": { "node_modules/@napi-rs/canvas-darwin-x64": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-1.0.2.tgz",
"integrity": "sha512-hImggWc82jqZVpEsFR9S7PE9OQYjq/H/D7vwCGB6X1jRH+UVBP1+1niJTPBOat1B154T6GKK7/kcFtoWgjgFzQ==", "integrity": "sha512-niDXZ9LhKB1zLrUdYB64RHQFDGz9rr0eGx061qtJJU3U20EMMIx28ADF5fVYbhtOgkWQrBjFicfaye1yM0U62A==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -3741,9 +3741,9 @@
} }
}, },
"node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-1.0.2.tgz",
"integrity": "sha512-hlJRy6d+kWLKVOG/+1rEvNQVURZ0DxxRPJsLmEWwhwiXZUJc0BF5o9esALHSEP4CoJK4wChRtj3hnyBgVx2oWA==", "integrity": "sha512-sgatQL9JxGRH/Amzcvu0P3t8Am3duou74CisfuJ41Dwt8cWy723z/9KZ8LlgmxfypEwEZxSTNFJtU8d281lmhQ==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@ -3762,9 +3762,9 @@
} }
}, },
"node_modules/@napi-rs/canvas-linux-arm64-gnu": { "node_modules/@napi-rs/canvas-linux-arm64-gnu": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-1.0.2.tgz",
"integrity": "sha512-5Hru4T3RXkosRQafcjelv7AUzw9mXqmGYsxnzeDDOWveFCJyEPMSJltvGCM+jfH98seOCbfwm9KyFg6Jm5FhAA==", "integrity": "sha512-dgKuX0peF3xwY6ZF5QxGS4wbfDqpoFAJYXiLSp+guZKARQUKMkRqZSDrXKj7nfrec3UCMzC0PFCPte0ES98AiA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -3786,9 +3786,9 @@
} }
}, },
"node_modules/@napi-rs/canvas-linux-arm64-musl": { "node_modules/@napi-rs/canvas-linux-arm64-musl": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-1.0.2.tgz",
"integrity": "sha512-LTUl9jS8WsLSUGaxQZKQkxfluOJRpgvBuxxdM4pYcjib+di8AU4OzQc6+L6SzGMLcKc9H0RAjojRatBhTMqYdg==", "integrity": "sha512-qwROoDIC9upfvDoRLuPn2aNg9CGW1x0Ygr4k2Or+8paA9d0qBLwk87U+g8KQpoOviKoPoiwl97kvBYuYD7qZoA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -3810,9 +3810,9 @@
} }
}, },
"node_modules/@napi-rs/canvas-linux-riscv64-gnu": { "node_modules/@napi-rs/canvas-linux-riscv64-gnu": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-1.0.2.tgz",
"integrity": "sha512-Iz931SAZf+WVDzpjk52Q3ffW3zw0YflFwEZMgs036Wfu1kX/LrwT9wGjsuSqyduqefUkl91/vTdAjn8hQu5ezA==", "integrity": "sha512-fXRjnPihdnbO6qy1QQOgxAonb68A0TCEG7rj1x7v7rxNElsE8EVIKIEUTvyDtU+sthYSbX+8e7g3oZiLGnOmxw==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
@ -3834,9 +3834,9 @@
} }
}, },
"node_modules/@napi-rs/canvas-linux-x64-gnu": { "node_modules/@napi-rs/canvas-linux-x64-gnu": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-1.0.2.tgz",
"integrity": "sha512-pFEQ5eFK4JusgN1K6KkO9DKP/Hi1WMJOkF8Ch03/khTc4bFbCKkCCsJG4YcOMOW9bI4XbT2/eMAWxhO0xaWgPA==", "integrity": "sha512-nPR97DXhbWIAy7yazF3jc06kEPMqYMLmPzFOVNlwKPfIoSChnI+x7dc0hTLaihz3jxrjL6j4BbA7earxfx4X3g==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -3858,9 +3858,9 @@
} }
}, },
"node_modules/@napi-rs/canvas-linux-x64-musl": { "node_modules/@napi-rs/canvas-linux-x64-musl": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-1.0.2.tgz",
"integrity": "sha512-jnvr8NrLHiZ3NCiOKWqDbkI4Ah+QDrqtZ+sddPZBltEb1mQ2coSvCSJYfict+oAwcm0c970oTmVySpjKP/lnaA==", "integrity": "sha512-l7zZY5+jL5qnBZtDz7CoBtY6p7EkHu422g/0zWwrOrzIwWyWxZFRfZZORY1UG7YApymPLx+UbOkN206xXn/c1Q==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -3882,9 +3882,9 @@
} }
}, },
"node_modules/@napi-rs/canvas-win32-arm64-msvc": { "node_modules/@napi-rs/canvas-win32-arm64-msvc": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-1.0.2.tgz",
"integrity": "sha512-y2j9/Gfd5joqiqxdP/L1smqjQ+uAx3C4N0EC7bDHrnZEEH8ToM/OC5p3uHvtj4Lq591aHj+ArL01UDLNwT5HgQ==", "integrity": "sha512-yE0koHCFF4PIbMc2o2SEALhnipz7WBISh5glLvQiomtIoCcW0np3H4Lw93ceJAfJttTTeIIWFbwH84F7EVzjMQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -3903,9 +3903,9 @@
} }
}, },
"node_modules/@napi-rs/canvas-win32-x64-msvc": { "node_modules/@napi-rs/canvas-win32-x64-msvc": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-1.0.2.tgz",
"integrity": "sha512-qwdhh9N6Gge/hC4pL9S1tQp0iKwhSl/dYjg7+RGp9k26iRGRi5MqqUyKGOXIWli0zOcuy5Y2wIH/jk2ry6i/jA==", "integrity": "sha512-okU8/t2foV6C31n0GtvEMbfD5rOFc70+/6xUNME9Guld29sgSOIGUEDScAWFlcP3k5TYQRl9TNkwJEEjh15w8A==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -4012,9 +4012,9 @@
} }
}, },
"node_modules/@puppeteer/browsers": { "node_modules/@puppeteer/browsers": {
"version": "3.0.5", "version": "3.0.6",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-3.0.5.tgz", "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-3.0.6.tgz",
"integrity": "sha512-xYXNuEQmHNIPWWcbL/skf2KF7seyp7c1xmKFRk3wmdFx7VwBsKVrtOLKs8ecaezsKPsWeF1YsgwIiElAscaryA==", "integrity": "sha512-B/gKoqlFkzhvzsI6jo9K1cZz9o5ypviVv/xu8CwA4grZzyVwN+XfkT+tu8T1zrauuEXv6VhS2oGX+6NL95WcKA==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
@ -4028,11 +4028,15 @@
"node": ">=22.12.0" "node": ">=22.12.0"
}, },
"peerDependencies": { "peerDependencies": {
"proxy-agent": ">=8.0.1" "proxy-agent": ">=8.0.1",
"yauzl": "^2.10.0 || ^3.4.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"proxy-agent": { "proxy-agent": {
"optional": true "optional": true
},
"yauzl": {
"optional": true
} }
} }
}, },
@ -4135,9 +4139,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "26.0.0", "version": "26.1.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.0.0.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.0.tgz",
"integrity": "sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==", "integrity": "sha512-O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -5063,9 +5067,9 @@
} }
}, },
"node_modules/autoprefixer": { "node_modules/autoprefixer": {
"version": "10.5.1", "version": "10.5.2",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.1.tgz", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.2.tgz",
"integrity": "sha512-jwM2pcTuCWUoN70FEvf5XrXyDbUgRURK4FnU8v0jWZZYU/KkVvN9T33mu1sVLFY9JW3kTWzKheEpn6xYLRc/VA==", "integrity": "sha512-rD5t5DwOjJdmSORcTq64j8MawTC+tbQ+HHqjR4NDumamy/ambn1UJrlKL+KdwujWxMkFjPM3pPHOEA9tl4767Q==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -5478,9 +5482,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001799", "version": "1.0.30001800",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001800.tgz",
"integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==", "integrity": "sha512-MMHtuAz9Ys840zAY5F4k6fV5GaivZ9sPk+nz0mY+GYVzRBnYkN0mpqkSR92oWRQ19yQWo4HvBV/FnC16AJX8MA==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -5910,9 +5914,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/cosmiconfig": { "node_modules/cosmiconfig": {
"version": "9.0.1", "version": "9.0.2",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.2.tgz",
"integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", "integrity": "sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -5944,9 +5948,9 @@
"license": "Python-2.0" "license": "Python-2.0"
}, },
"node_modules/cosmiconfig/node_modules/js-yaml": { "node_modules/cosmiconfig/node_modules/js-yaml": {
"version": "4.2.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",
"integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -6295,9 +6299,9 @@
} }
}, },
"node_modules/enhanced-resolve": { "node_modules/enhanced-resolve": {
"version": "5.22.0", "version": "5.24.1",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.0.tgz", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.1.tgz",
"integrity": "sha512-xYcDWrpELkFzz9SpZ3PlI6Eu6eD93Yf0WLDRxikGhWJ3MAir2SNZTIVCVZqZ/NUyx8AdMc2gT9C0gPiw18kG+A==", "integrity": "sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -6398,9 +6402,9 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "10.5.0", "version": "10.6.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-10.5.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.6.0.tgz",
"integrity": "sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==", "integrity": "sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"workspaces": [ "workspaces": [
@ -6498,9 +6502,9 @@
} }
}, },
"node_modules/eslint-plugin-import-x": { "node_modules/eslint-plugin-import-x": {
"version": "4.17.0", "version": "4.17.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.17.0.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.17.1.tgz",
"integrity": "sha512-aM7V25Bg6YuYxtEhwjafzfS0NTMds1D2PMQI0K4KqJxQJRtkP4CO+MQTWRdBq2qAnmPxTxLevhXUBtByxJqS1w==", "integrity": "sha512-4cdstYkKCyjumM2Q9NSI03K8D2a9F4Ssz33K2lv2hQa4KmR9jPLwk3uWGtNvclfqBrPGfGuMBwsGMbe6dMRbfg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -6617,9 +6621,9 @@
} }
}, },
"node_modules/eslint-plugin-regexp": { "node_modules/eslint-plugin-regexp": {
"version": "3.1.0", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-3.1.0.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-3.1.1.tgz",
"integrity": "sha512-qGXIC3DIKZHcK1H9A9+Byz9gmndY6TTSRkSMTZpNXdyCw2ObSehRgccJv35n9AdUakEjQp5VFNLas6BMXizCZg==", "integrity": "sha512-MxR5nqoQCtVWmJwia0D2+NlXX1xzdpkslsVOZLEYQ4PQWEaL65PCZXURxaBc3lPnkNFpNxzMIRmYVxdl8giXRA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -7346,13 +7350,6 @@
"node": ">=10.13.0" "node": ">=10.13.0"
} }
}, },
"node_modules/glob-to-regexp": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true,
"license": "BSD-2-Clause"
},
"node_modules/glob-watcher": { "node_modules/glob-watcher": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz", "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz",
@ -9307,6 +9304,67 @@
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
} }
}, },
"node_modules/minimizer-webpack-plugin": {
"version": "5.6.1",
"resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz",
"integrity": "sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.25",
"jest-worker": "^27.4.5",
"schema-utils": "^4.3.0",
"terser": "^5.31.1"
},
"engines": {
"node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
"webpack": "^5.1.0"
},
"peerDependenciesMeta": {
"@minify-html/node": {
"optional": true
},
"@swc/core": {
"optional": true
},
"@swc/css": {
"optional": true
},
"@swc/html": {
"optional": true
},
"clean-css": {
"optional": true
},
"cssnano": {
"optional": true
},
"csso": {
"optional": true
},
"esbuild": {
"optional": true
},
"html-minifier-terser": {
"optional": true
},
"lightningcss": {
"optional": true
},
"postcss": {
"optional": true
},
"uglify-js": {
"optional": true
}
}
},
"node_modules/minipass": { "node_modules/minipass": {
"version": "7.1.3", "version": "7.1.3",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
@ -9942,9 +10000,9 @@
} }
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.5.15", "version": "8.5.16",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz",
"integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", "integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -10104,9 +10162,9 @@
} }
}, },
"node_modules/prettier": { "node_modules/prettier": {
"version": "3.8.4", "version": "3.9.4",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.4.tgz", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.4.tgz",
"integrity": "sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==", "integrity": "sha512-yWG/o/4oJfo036EKAfK6ACAoDOfHeRHx4tuxkfBZiauURiaSmYwlpOr5LQqKtIkRD2z1PLteme2WoxEnj4tHTg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"bin": { "bin": {
@ -10177,18 +10235,18 @@
} }
}, },
"node_modules/puppeteer": { "node_modules/puppeteer": {
"version": "25.2.0", "version": "25.3.0",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-25.2.0.tgz", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-25.3.0.tgz",
"integrity": "sha512-JPMPd/2+lgdkLhEyPqH895oR3ccMt1wSra6oewgjjTuLmo2s9zPZpKXQTFEIiA/fMKpiL01kjU3+2zPEReRWNg==", "integrity": "sha512-O1tx8S315aw8eI99HZ5ZNcVEzJ9+jKF//eO5UvfZ3cXJ6okZ5sX3Y50u7DJaM+ewEK4LqXP068tBhfRaWikj+g==",
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@puppeteer/browsers": "3.0.5", "@puppeteer/browsers": "3.0.6",
"chromium-bidi": "16.0.1", "chromium-bidi": "16.0.1",
"devtools-protocol": "0.0.1638949", "devtools-protocol": "0.0.1638949",
"lilconfig": "^3.1.3", "lilconfig": "^3.1.3",
"puppeteer-core": "25.2.0", "puppeteer-core": "25.3.0",
"typed-query-selector": "^2.12.2" "typed-query-selector": "^2.12.2"
}, },
"bin": { "bin": {
@ -10199,13 +10257,13 @@
} }
}, },
"node_modules/puppeteer-core": { "node_modules/puppeteer-core": {
"version": "25.2.0", "version": "25.3.0",
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-25.2.0.tgz", "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-25.3.0.tgz",
"integrity": "sha512-jGhuGAlkgOcbyGRc0Cm9b/y4vvqoxhyAyl6a1diVe8F3sHsgTaQ60QQT5F3rGegTZV3prysgHVc+0LsvPZo3GA==", "integrity": "sha512-fm+wpUr2oigH1PXZvwgATrM2tYWHMDG8ASzTEe9uukCye4X5Ldx1K5BTHPFKITrIWvQQAQ256d1NpbEveBcKjA==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@puppeteer/browsers": "3.0.5", "@puppeteer/browsers": "3.0.6",
"chromium-bidi": "16.0.1", "chromium-bidi": "16.0.1",
"devtools-protocol": "0.0.1638949", "devtools-protocol": "0.0.1638949",
"typed-query-selector": "^2.12.2", "typed-query-selector": "^2.12.2",
@ -11050,9 +11108,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/stylelint": { "node_modules/stylelint": {
"version": "17.13.0", "version": "17.14.0",
"resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.13.0.tgz", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.14.0.tgz",
"integrity": "sha512-G1WYzMerp7ihOaIe9VJCHLt12MoAD2QLf1AFerYP37+BCRBUK5UCpq8e/mN+zCIaJPKQcaxhE4WlPmqdiOx/gw==", "integrity": "sha512-8xkHPpdqYryeIsOgfsYTmr6cIeC4nLYWk5S8BPxpodq8mIuepggkMljsHewWfuAjj/+qpRKou2QerhjMH3iasg==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -11068,13 +11126,13 @@
"dependencies": { "dependencies": {
"@csstools/css-calc": "^3.2.1", "@csstools/css-calc": "^3.2.1",
"@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-parser-algorithms": "^4.0.0",
"@csstools/css-syntax-patches-for-csstree": "^1.1.4", "@csstools/css-syntax-patches-for-csstree": "^1.1.5",
"@csstools/css-tokenizer": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0",
"@csstools/media-query-list-parser": "^5.0.0", "@csstools/media-query-list-parser": "^5.0.0",
"@csstools/selector-resolve-nested": "^4.0.0", "@csstools/selector-resolve-nested": "^4.0.0",
"@csstools/selector-specificity": "^6.0.0", "@csstools/selector-specificity": "^6.0.0",
"colord": "^2.9.3", "colord": "^2.9.3",
"cosmiconfig": "^9.0.1", "cosmiconfig": "^9.0.2",
"css-functions-list": "^3.3.3", "css-functions-list": "^3.3.3",
"css-tree": "^3.2.1", "css-tree": "^3.2.1",
"debug": "^4.4.3", "debug": "^4.4.3",
@ -11094,7 +11152,7 @@
"picocolors": "^1.1.1", "picocolors": "^1.1.1",
"postcss": "^8.5.15", "postcss": "^8.5.15",
"postcss-safe-parser": "^7.0.1", "postcss-safe-parser": "^7.0.1",
"postcss-selector-parser": "^7.1.1", "postcss-selector-parser": "^7.1.4",
"postcss-value-parser": "^4.2.0", "postcss-value-parser": "^4.2.0",
"string-width": "^8.2.1", "string-width": "^8.2.1",
"supports-hyperlinks": "^4.4.0", "supports-hyperlinks": "^4.4.0",
@ -12042,9 +12100,9 @@
} }
}, },
"node_modules/tsc-alias": { "node_modules/tsc-alias": {
"version": "1.8.17", "version": "1.9.0",
"resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.8.17.tgz", "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.9.0.tgz",
"integrity": "sha512-EIduCZHqbNwPm8BZYfq1aD7BQ697A4h6uSGMOFQfYGoQwfrYFTKwYfy9Bv42YxHkduVBcn9Zx0DkX111DKskyg==", "integrity": "sha512-IZrCInovKxVCwXyKhcdr/HaxSYugKT0w4zyktOE/4115Nzo6gbp/NhkaEeyOG0/H7QoTeXtv+3UHffBYta9oWw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -12499,13 +12557,12 @@
} }
}, },
"node_modules/watchpack": { "node_modules/watchpack": {
"version": "2.5.1", "version": "2.5.2",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.2.tgz",
"integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "integrity": "sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2" "graceful-fs": "^4.1.2"
}, },
"engines": { "engines": {
@ -12520,9 +12577,9 @@
"license": "Apache-2.0" "license": "Apache-2.0"
}, },
"node_modules/webpack": { "node_modules/webpack": {
"version": "5.107.2", "version": "5.108.3",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.107.2.tgz", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.108.3.tgz",
"integrity": "sha512-v7RhXaJbpMlV0D7hC7lb2EbnxkoeUqf9qhKr6lozx3Q48pmFrqqNRmZFUEGmi7pSwm6fCQ2H1IjvCkHqdpVdjQ==", "integrity": "sha512-hOpaCHmQVVY66IVTjofnH14IgSdmod2aquSGHGuYig/OIdWge01Hk2Wt988DZcwXumFUT4+FvJY5N+ikl8o/ww==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -12535,19 +12592,18 @@
"acorn-import-phases": "^1.0.3", "acorn-import-phases": "^1.0.3",
"browserslist": "^4.28.1", "browserslist": "^4.28.1",
"chrome-trace-event": "^1.0.2", "chrome-trace-event": "^1.0.2",
"enhanced-resolve": "^5.22.0", "enhanced-resolve": "^5.22.2",
"es-module-lexer": "^2.1.0", "es-module-lexer": "^2.1.0",
"eslint-scope": "5.1.1", "eslint-scope": "5.1.1",
"events": "^3.2.0", "events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.11", "graceful-fs": "^4.2.11",
"loader-runner": "^4.3.2", "loader-runner": "^4.3.2",
"mime-db": "^1.54.0", "mime-db": "^1.54.0",
"minimizer-webpack-plugin": "^5.6.1",
"neo-async": "^2.6.2", "neo-async": "^2.6.2",
"schema-utils": "^4.3.3", "schema-utils": "^4.3.3",
"tapable": "^2.3.0", "tapable": "^2.3.0",
"terser-webpack-plugin": "^5.5.0", "watchpack": "^2.5.2",
"watchpack": "^2.5.1",
"webpack-sources": "^3.5.0" "webpack-sources": "^3.5.0"
}, },
"bin": { "bin": {

View File

@ -5,28 +5,28 @@
"@babel/core": "^8.0.1", "@babel/core": "^8.0.1",
"@babel/preset-env": "^8.0.2", "@babel/preset-env": "^8.0.2",
"@babel/runtime": "^8.0.0", "@babel/runtime": "^8.0.0",
"@eslint/json": "^2.0.0", "@eslint/json": "^2.0.1",
"@fluent/bundle": "^0.19.1", "@fluent/bundle": "^0.19.1",
"@fluent/dom": "^0.10.2", "@fluent/dom": "^0.10.2",
"@metalsmith/layouts": "^3.0.0", "@metalsmith/layouts": "^3.0.0",
"@metalsmith/markdown": "^1.10.0", "@metalsmith/markdown": "^1.10.0",
"@napi-rs/canvas": "^1.0.0", "@napi-rs/canvas": "^1.0.2",
"@types/node": "^26.0.0", "@types/node": "^26.1.0",
"autoprefixer": "^10.5.1", "autoprefixer": "^10.5.2",
"babel-loader": "^10.1.1", "babel-loader": "^10.1.1",
"babel-plugin-istanbul": "^8.0.2", "babel-plugin-istanbul": "^8.0.2",
"babel-plugin-polyfill-corejs3": "^1.0.0", "babel-plugin-polyfill-corejs3": "^1.0.0",
"cached-iterable": "^0.3.0", "cached-iterable": "^0.3.0",
"caniuse-lite": "^1.0.30001799", "caniuse-lite": "^1.0.30001800",
"core-js": "^3.49.0", "core-js": "^3.49.0",
"eslint": "^10.5.0", "eslint": "^10.6.0",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"eslint-plugin-import-x": "^4.17.0", "eslint-plugin-import-x": "^4.17.1",
"eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-jasmine": "^4.2.2",
"eslint-plugin-no-unsanitized": "^4.1.5", "eslint-plugin-no-unsanitized": "^4.1.5",
"eslint-plugin-perfectionist": "^5.9.1", "eslint-plugin-perfectionist": "^5.9.1",
"eslint-plugin-prettier": "^5.5.6", "eslint-plugin-prettier": "^5.5.6",
"eslint-plugin-regexp": "^3.1.0", "eslint-plugin-regexp": "^3.1.1",
"eslint-plugin-unicorn": "^68.0.0", "eslint-plugin-unicorn": "^68.0.0",
"globals": "^17.7.0", "globals": "^17.7.0",
"gulp": "^5.0.1", "gulp": "^5.0.1",
@ -47,20 +47,20 @@
"metalsmith-html-relative": "^2.0.12", "metalsmith-html-relative": "^2.0.12",
"ordered-read-streams": "^2.0.0", "ordered-read-streams": "^2.0.0",
"pngjs": "^7.0.0", "pngjs": "^7.0.0",
"postcss": "^8.5.15", "postcss": "^8.5.16",
"postcss-discard-comments": "^8.0.1", "postcss-discard-comments": "^8.0.1",
"postcss-values-parser": "^8.0.0", "postcss-values-parser": "^8.0.0",
"prettier": "^3.8.4", "prettier": "^3.9.4",
"puppeteer": "^25.2.0", "puppeteer": "^25.3.0",
"stylelint": "^17.13.0", "stylelint": "^17.14.0",
"stylelint-prettier": "^5.0.3", "stylelint-prettier": "^5.0.3",
"svglint": "^4.2.1", "svglint": "^4.2.1",
"terser-webpack-plugin": "^5.6.1", "terser-webpack-plugin": "^5.6.1",
"tsc-alias": "^1.8.17", "tsc-alias": "^1.9.0",
"ttest": "^4.0.0", "ttest": "^4.0.0",
"typescript": "^6.0.3", "typescript": "^6.0.3",
"vinyl": "^3.0.1", "vinyl": "^3.0.1",
"webpack": "^5.107.2", "webpack": "^5.108.3",
"webpack-stream": "^7.0.0" "webpack-stream": "^7.0.0"
}, },
"repository": { "repository": {

View File

@ -75,7 +75,7 @@ function calculateMD5(data, offset, length) {
i += 3; i += 3;
const w = new Int32Array(16); const w = new Int32Array(16);
const { k, r } = PARAMS; const { k, r } = PARAMS;
for (i = 0; i < paddedLength; ) { for (i = 0; i < paddedLength;) {
for (j = 0; j < 16; ++j, i += 4) { for (j = 0; j < 16; ++j, i += 4) {
w[j] = w[j] =
padded[i] | padded[i] |

View File

@ -96,7 +96,7 @@ function calculateSHA256(data, offset, length) {
const w = new Uint32Array(64); const w = new Uint32Array(64);
const { k } = PARAMS; const { k } = PARAMS;
// for each 512 bit block // for each 512 bit block
for (i = 0; i < paddedLength; ) { for (i = 0; i < paddedLength;) {
for (j = 0; j < 16; ++j) { for (j = 0; j < 16; ++j) {
w[j] = w[j] =
(padded[i] << 24) | (padded[i] << 24) |

View File

@ -303,7 +303,7 @@ function calculateSHA512(data, offset, length, mode384 = false) {
let tmp3; let tmp3;
// for each 1024 bit block // for each 1024 bit block
for (i = 0; i < paddedLength; ) { for (i = 0; i < paddedLength;) {
for (j = 0; j < 16; ++j) { for (j = 0; j < 16; ++j) {
w[j].high = w[j].high =
(padded[i] << 24) | (padded[i] << 24) |

View File

@ -546,7 +546,7 @@ class CFFParser {
let length = data.length; let length = data.length;
for (let j = 0; j < length; ) { for (let j = 0; j < length;) {
const value = data[j++]; const value = data[j++];
let validationCommand = null; let validationCommand = null;
if (value === 12) { if (value === 12) {

View File

@ -326,7 +326,7 @@ class CMap {
c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0; c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;
// Check each codespace range to see if it falls within. // Check each codespace range to see if it falls within.
const codespaceRange = codespaceRanges[n]; const codespaceRange = codespaceRanges[n];
for (let k = 0, kk = codespaceRange.length; k < kk; ) { for (let k = 0, kk = codespaceRange.length; k < kk;) {
const low = codespaceRange[k++]; const low = codespaceRange[k++];
const high = codespaceRange[k++]; const high = codespaceRange[k++];
if (c >= low && c <= high) { if (c >= low && c <= high) {
@ -345,7 +345,7 @@ class CMap {
for (let n = 0, nn = codespaceRanges.length; n < nn; n++) { for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {
// Check each codespace range to see if it falls within. // Check each codespace range to see if it falls within.
const codespaceRange = codespaceRanges[n]; const codespaceRange = codespaceRanges[n];
for (let k = 0, kk = codespaceRange.length; k < kk; ) { for (let k = 0, kk = codespaceRange.length; k < kk;) {
const low = codespaceRange[k++]; const low = codespaceRange[k++];
const high = codespaceRange[k++]; const high = codespaceRange[k++];
if (charCode >= low && charCode <= high) { if (charCode >= low && charCode <= high) {

View File

@ -550,7 +550,7 @@ function getRanges(glyphs, toUnicodeExtraMap, numGlyphs) {
// Split the sorted codes into ranges. // Split the sorted codes into ranges.
const ranges = []; const ranges = [];
const length = codes.length; const length = codes.length;
for (let n = 0; n < length; ) { for (let n = 0; n < length;) {
const start = codes[n].fontCharCode; const start = codes[n].fontCharCode;
const codeIndices = [codes[n].glyphId]; const codeIndices = [codes[n].glyphId];
++n; ++n;
@ -2449,7 +2449,7 @@ class Font {
let inFDEF = false, let inFDEF = false,
ifLevel = 0, ifLevel = 0,
inELSE = 0; inELSE = 0;
for (let ii = data.length; i < ii; ) { for (let ii = data.length; i < ii;) {
const op = data[i++]; const op = data[i++];
// The TrueType instruction set docs can be found at // The TrueType instruction set docs can be found at
// https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html

View File

@ -610,24 +610,20 @@ class CompositeGlyph {
size += 2; size += 2;
if (this.flags & 2) { if (this.flags & 2) {
// Arguments are signed. // Arguments are signed.
if ( if (!(
!( this.argument1 >= -128 &&
this.argument1 >= -128 && this.argument1 <= 127 &&
this.argument1 <= 127 && this.argument2 >= -128 &&
this.argument2 >= -128 && this.argument2 <= 127
this.argument2 <= 127 )) {
)
) {
size += 2; size += 2;
} }
} else if ( } else if (!(
!( this.argument1 >= 0 &&
this.argument1 >= 0 && this.argument1 <= 255 &&
this.argument1 <= 255 && this.argument2 >= 0 &&
this.argument2 >= 0 && this.argument2 <= 255
this.argument2 <= 255 )) {
)
) {
size += 2; size += 2;
} }
@ -639,24 +635,20 @@ class CompositeGlyph {
if (this.flags & ARGS_ARE_XY_VALUES) { if (this.flags & ARGS_ARE_XY_VALUES) {
// Arguments are signed. // Arguments are signed.
if ( if (!(
!( this.argument1 >= -128 &&
this.argument1 >= -128 && this.argument1 <= 127 &&
this.argument1 <= 127 && this.argument2 >= -128 &&
this.argument2 >= -128 && this.argument2 <= 127
this.argument2 <= 127 )) {
)
) {
this.flags |= ARG_1_AND_2_ARE_WORDS; this.flags |= ARG_1_AND_2_ARE_WORDS;
} }
} else if ( } else if (!(
!( this.argument1 >= 0 &&
this.argument1 >= 0 && this.argument1 <= 255 &&
this.argument1 <= 255 && this.argument2 >= 0 &&
this.argument2 >= 0 && this.argument2 <= 255
this.argument2 <= 255 )) {
)
) {
this.flags |= ARG_1_AND_2_ARE_WORDS; this.flags |= ARG_1_AND_2_ARE_WORDS;
} }

View File

@ -76,28 +76,24 @@ class SingleIntersector {
if (this.#lastIntersectingQuadIndex >= 0) { if (this.#lastIntersectingQuadIndex >= 0) {
const i = this.#lastIntersectingQuadIndex; const i = this.#lastIntersectingQuadIndex;
if ( if (!(
!( quadPoints[i] >= x ||
quadPoints[i] >= x || quadPoints[i + 2] <= x ||
quadPoints[i + 2] <= x || quadPoints[i + 5] >= y ||
quadPoints[i + 5] >= y || quadPoints[i + 1] <= y
quadPoints[i + 1] <= y )) {
)
) {
return true; return true;
} }
this.#lastIntersectingQuadIndex = -1; this.#lastIntersectingQuadIndex = -1;
} }
for (let i = 0, ii = quadPoints.length; i < ii; i += 8) { for (let i = 0, ii = quadPoints.length; i < ii; i += 8) {
if ( if (!(
!( quadPoints[i] >= x ||
quadPoints[i] >= x || quadPoints[i + 2] <= x ||
quadPoints[i + 2] <= x || quadPoints[i + 5] >= y ||
quadPoints[i + 5] >= y || quadPoints[i + 1] <= y
quadPoints[i + 1] <= y )) {
)
) {
this.#lastIntersectingQuadIndex = i; this.#lastIntersectingQuadIndex = i;
return true; return true;
} }

View File

@ -1046,7 +1046,7 @@ class JpegImage {
case 0xffc4: // DHT (Define Huffman Tables) case 0xffc4: // DHT (Define Huffman Tables)
const huffmanLength = view.getUint16(offset); const huffmanLength = view.getUint16(offset);
offset += 2; offset += 2;
for (i = 2; i < huffmanLength; ) { for (i = 2; i < huffmanLength;) {
const huffmanTableSpec = data[offset++]; const huffmanTableSpec = data[offset++];
const codeLengths = new Uint8Array(16); const codeLengths = new Uint8Array(16);
let codeLengthSum = 0; let codeLengthSum = 0;
@ -1272,7 +1272,7 @@ class JpegImage {
} }
if (transform) { if (transform) {
for (i = 0; i < dataLength; ) { for (i = 0; i < dataLength;) {
for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) { for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {
data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1]; data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];
} }

View File

@ -524,7 +524,7 @@ addState(
const newBBox = F32_BBOX_INIT.slice(); const newBBox = F32_BBOX_INIT.slice();
Util.axialAlignedBoundingBox(minMax, transform, newBBox); Util.axialAlignedBoundingBox(minMax, transform, newBBox);
minMax.set(newBBox); minMax.set(newBBox);
for (let k = 0, kk = buffer.length; k < kk; ) { for (let k = 0, kk = buffer.length; k < kk;) {
switch (buffer[k++]) { switch (buffer[k++]) {
case DrawOPS.moveTo: case DrawOPS.moveTo:
case DrawOPS.lineTo: case DrawOPS.lineTo:

View File

@ -1467,16 +1467,14 @@ class Linearization {
const obj3 = parser.getObj(); const obj3 = parser.getObj();
const linDict = parser.getObj(); const linDict = parser.getObj();
let obj, length; let obj, length;
if ( if (!(
!( Number.isInteger(obj1) &&
Number.isInteger(obj1) && Number.isInteger(obj2) &&
Number.isInteger(obj2) && isCmd(obj3, "obj") &&
isCmd(obj3, "obj") && linDict instanceof Dict &&
linDict instanceof Dict && typeof (obj = linDict.get("Linearized")) === "number" &&
typeof (obj = linDict.get("Linearized")) === "number" && obj > 0
obj > 0 )) {
)
) {
return null; // No valid linearization dictionary found. return null; // No valid linearization dictionary found.
} else if ((length = getInt(linDict, "L")) !== stream.length) { } else if ((length = getInt(linDict, "L")) !== stream.length) {
throw new Error( throw new Error(

View File

@ -782,7 +782,7 @@ function makePathFromDrawOPS(data) {
if (!data) { if (!data) {
return path; return path;
} }
for (let i = 0, ii = data.length; i < ii; ) { for (let i = 0, ii = data.length; i < ii;) {
switch (data[i++]) { switch (data[i++]) {
case DrawOPS.moveTo: case DrawOPS.moveTo:
path.moveTo(data[i++], data[i++]); path.moveTo(data[i++], data[i++]);

View File

@ -119,7 +119,7 @@ async function drawInkLine(page, pageNumber) {
async function waitForHavingContents(page, expected) { async function waitForHavingContents(page, expected) {
await page.evaluate(() => { await page.evaluate(() => {
// Make sure all the pages will be visible. // Make sure all the pages will be visible.
window.PDFViewerApplication.pdfViewer.scrollMode = 2 /* = ScrollMode.WRAPPED = */; window.PDFViewerApplication.pdfViewer.scrollMode = 2; /* = ScrollMode.WRAPPED = */
window.PDFViewerApplication.pdfViewer.updateScale({ window.PDFViewerApplication.pdfViewer.updateScale({
drawingDelay: 0, drawingDelay: 0,
scaleFactor: 0.01, scaleFactor: 0.01,

View File

@ -1,6 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"outDir": "../../build/tmp", "outDir": "../../build/tmp",
"rootDir": ".",
"sourceMap": true, "sourceMap": true,
"declaration": false, "declaration": false,
"moduleResolution": "bundler", "moduleResolution": "bundler",

View File

@ -1,5 +1,6 @@
{ {
"compilerOptions": { "compilerOptions": {
"rootDir": ".",
"target": "ES2022", "target": "ES2022",
"allowJs": true, "allowJs": true,
"declaration": true, "declaration": true,

View File

@ -221,13 +221,11 @@ class PDFLinkService {
const pageNumber = const pageNumber =
(typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val)) || (typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val)) ||
val | 0; val | 0;
if ( if (!(
!( Number.isInteger(pageNumber) &&
Number.isInteger(pageNumber) && pageNumber > 0 &&
pageNumber > 0 && pageNumber <= this.pagesCount
pageNumber <= this.pagesCount )) {
)
) {
console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`); console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`);
return; return;
} }

View File

@ -592,9 +592,9 @@ class PDFThumbnailViewer {
} }
if (!labels) { if (!labels) {
this._pageLabels = null; this._pageLabels = null;
} else if ( } else if (!(
!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length) Array.isArray(labels) && this.pdfDocument.numPages === labels.length
) { )) {
this._pageLabels = null; this._pageLabels = null;
console.error("PDFThumbnailViewer_setPageLabels: Invalid page labels."); console.error("PDFThumbnailViewer_setPageLabels: Invalid page labels.");
} else { } else {

View File

@ -1333,9 +1333,9 @@ class PDFViewer {
} }
if (!labels) { if (!labels) {
this._pageLabels = null; this._pageLabels = null;
} else if ( } else if (!(
!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length) Array.isArray(labels) && this.pdfDocument.numPages === labels.length
) { )) {
this._pageLabels = null; this._pageLabels = null;
console.error(`setPageLabels: Invalid page labels.`); console.error(`setPageLabels: Invalid page labels.`);
} else { } else {