From d1d843b950f3e60ed47f39f4f882b7958caf41f4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Apr 2026 22:03:46 +0000 Subject: [PATCH 1/7] build(deps): bump the npm-deps group with 5 updates Bumps the npm-deps group with 5 updates: | Package | From | To | | --- | --- | --- | | [dompurify](https://github.com/cure53/DOMPurify) | `3.4.0` | `3.4.1` | | [@openpgp/web-stream-tools](https://github.com/openpgpjs/web-stream-tools) | `0.3.0` | `0.3.1` | | [@tony.ganchev/eslint-plugin-header](https://github.com/tonyganchev/eslint-plugin-header) | `3.4.3` | `3.4.4` | | [stylelint](https://github.com/stylelint/stylelint) | `17.8.0` | `17.9.0` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.58.2` | `8.59.0` | Updates `dompurify` from 3.4.0 to 3.4.1 - [Release notes](https://github.com/cure53/DOMPurify/releases) - [Commits](https://github.com/cure53/DOMPurify/compare/3.4.0...3.4.1) Updates `@openpgp/web-stream-tools` from 0.3.0 to 0.3.1 - [Commits](https://github.com/openpgpjs/web-stream-tools/commits/v0.3.1) Updates `@tony.ganchev/eslint-plugin-header` from 3.4.3 to 3.4.4 - [Release notes](https://github.com/tonyganchev/eslint-plugin-header/releases) - [Changelog](https://github.com/tonyganchev/eslint-plugin-header/blob/main/CHANGELOG.md) - [Commits](https://github.com/tonyganchev/eslint-plugin-header/compare/v3.4.3...v3.4.4) Updates `stylelint` from 17.8.0 to 17.9.0 - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/17.8.0...17.9.0) Updates `typescript-eslint` from 8.58.2 to 8.59.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.0/packages/typescript-eslint) --- updated-dependencies: - dependency-name: dompurify dependency-version: 3.4.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-deps - dependency-name: "@openpgp/web-stream-tools" dependency-version: 0.3.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-deps - dependency-name: "@tony.ganchev/eslint-plugin-header" dependency-version: 3.4.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-deps - dependency-name: stylelint dependency-version: 17.9.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-deps - dependency-name: typescript-eslint dependency-version: 8.59.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-deps ... Signed-off-by: dependabot[bot] --- package-lock.json | 175 +++++++++++++++++++++------------------------- package.json | 10 +-- 2 files changed, 85 insertions(+), 100 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3502f17b35d..48a0c53fdea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@zxcvbn-ts/language-common": "^3.0.4", "@zxcvbn-ts/language-en": "^3.0.2", "bootstrap": "^5.3.3", - "dompurify": "3.4.0", + "dompurify": "3.4.1", "filesize": "11.0.16", "fs-extra": "^11.3.4", "globby": "^16.2.0", @@ -30,8 +30,8 @@ "tap-xunit": "^2.4.1" }, "devDependencies": { - "@openpgp/web-stream-tools": "0.3.0", - "@tony.ganchev/eslint-plugin-header": "^3.4.3", + "@openpgp/web-stream-tools": "0.3.1", + "@tony.ganchev/eslint-plugin-header": "^3.4.4", "@types/chai": "5.2.3", "@types/chai-as-promised": "8.0.2", "@types/chrome": "0.1.40", @@ -58,10 +58,10 @@ "pdfjs-dist": "5.6.205", "prettier": "^3.8.3", "puppeteer": "24.42.0", - "stylelint": "17.8.0", + "stylelint": "17.9.0", "stylelint-config-standard": "40.0.0", "typescript": "6.0.3", - "typescript-eslint": "8.58.2", + "typescript-eslint": "8.59.0", "undici-types": "^8.1.0", "web-ext": "10.1.0", "webpack-cli": "^7.0.2" @@ -985,9 +985,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1009,9 +1006,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1033,9 +1027,6 @@ "riscv64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1057,9 +1048,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1081,9 +1069,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1175,9 +1160,9 @@ } }, "node_modules/@openpgp/web-stream-tools": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@openpgp/web-stream-tools/-/web-stream-tools-0.3.0.tgz", - "integrity": "sha512-WGCcIti5uAwySkdny5IJ975Vu6fS45LE9Ce3M7vylIWOZwzL4qFUFclskZ6JU7rQ1zgoze6CQ//QKFc/ML2uqw==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@openpgp/web-stream-tools/-/web-stream-tools-0.3.1.tgz", + "integrity": "sha512-EV+VQ4Dr8b+JmlGnc74FLgx7EhLyydOr4j6s6Hp+2scQh6sLQMs2h+1oEYUIslXcQPicWKG5ZQx+/dua0dgPWA==", "dev": true, "license": "MIT", "engines": { @@ -1470,9 +1455,9 @@ } }, "node_modules/@tony.ganchev/eslint-plugin-header": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.4.3.tgz", - "integrity": "sha512-C8oGfJNGGcYl3y55JRS6Sfr9pAtjXyVN4qJllr5g3g6wrDkxcPMQ0654FsZtnQJTXA4swcwtR1cUhCBvW0WDKA==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.4.4.tgz", + "integrity": "sha512-O3PDvjikVWECu078bLdRb2HwjVgR+wa7D0GX8gN1A8axlgEc7tordHOoEYcKRVxGcAw7bxXjwiKGXaY17qXD+Q==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1682,17 +1667,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.2.tgz", - "integrity": "sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.0.tgz", + "integrity": "sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.58.2", - "@typescript-eslint/type-utils": "8.58.2", - "@typescript-eslint/utils": "8.58.2", - "@typescript-eslint/visitor-keys": "8.58.2", + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/type-utils": "8.59.0", + "@typescript-eslint/utils": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" @@ -1705,7 +1690,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.58.2", + "@typescript-eslint/parser": "^8.59.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } @@ -1721,16 +1706,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.2.tgz", - "integrity": "sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.0.tgz", + "integrity": "sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.58.2", - "@typescript-eslint/types": "8.58.2", - "@typescript-eslint/typescript-estree": "8.58.2", - "@typescript-eslint/visitor-keys": "8.58.2", + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "debug": "^4.4.3" }, "engines": { @@ -1746,14 +1731,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.2.tgz", - "integrity": "sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.0.tgz", + "integrity": "sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.58.2", - "@typescript-eslint/types": "^8.58.2", + "@typescript-eslint/tsconfig-utils": "^8.59.0", + "@typescript-eslint/types": "^8.59.0", "debug": "^4.4.3" }, "engines": { @@ -1768,14 +1753,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.2.tgz", - "integrity": "sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.0.tgz", + "integrity": "sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.58.2", - "@typescript-eslint/visitor-keys": "8.58.2" + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1786,9 +1771,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.2.tgz", - "integrity": "sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.0.tgz", + "integrity": "sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==", "dev": true, "license": "MIT", "engines": { @@ -1803,15 +1788,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.2.tgz", - "integrity": "sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.0.tgz", + "integrity": "sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.58.2", - "@typescript-eslint/typescript-estree": "8.58.2", - "@typescript-eslint/utils": "8.58.2", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/utils": "8.59.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, @@ -1828,9 +1813,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.2.tgz", - "integrity": "sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.0.tgz", + "integrity": "sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==", "dev": true, "license": "MIT", "engines": { @@ -1842,16 +1827,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.2.tgz", - "integrity": "sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.0.tgz", + "integrity": "sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.58.2", - "@typescript-eslint/tsconfig-utils": "8.58.2", - "@typescript-eslint/types": "8.58.2", - "@typescript-eslint/visitor-keys": "8.58.2", + "@typescript-eslint/project-service": "8.59.0", + "@typescript-eslint/tsconfig-utils": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -1870,16 +1855,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.2.tgz", - "integrity": "sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.0.tgz", + "integrity": "sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.58.2", - "@typescript-eslint/types": "8.58.2", - "@typescript-eslint/typescript-estree": "8.58.2" + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1894,13 +1879,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.2.tgz", - "integrity": "sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.0.tgz", + "integrity": "sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/types": "8.59.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -4567,9 +4552,9 @@ } }, "node_modules/dompurify": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.0.tgz", - "integrity": "sha512-nolgK9JcaUXMSmW+j1yaSvaEaoXYHwWyGJlkoCTghc97KgGDDSnpoU/PlEnw63Ah+TGKFOyY+X5LnxaWbCSfXg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.1.tgz", + "integrity": "sha512-JahakDAIg1gyOm7dlgWSDjV4n7Ip2PKR55NIT6jrMfIgLFgWo81vdr1/QGqWtFNRqXP9UV71oVePtjqS2ebnPw==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -9678,9 +9663,9 @@ "license": "MIT" }, "node_modules/stylelint": { - "version": "17.8.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.8.0.tgz", - "integrity": "sha512-oHkld9T60LDSaUQ4CSVc+tlt9eUoDlxhaGWShsUCKyIL14boZfmK5bSphZqx64aiC5tCqX+BsQMTMoSz8D1zIg==", + "version": "17.9.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.9.0.tgz", + "integrity": "sha512-xO0jeY6z1/urFL5L/BZLmB1yYlbRiRMQnYH6ArZIDWJ+SZXGssOY7XoYb1JIv/L220+EBnwwJXJS4Mt/F96SvA==", "dev": true, "funding": [ { @@ -9694,9 +9679,9 @@ ], "license": "MIT", "dependencies": { - "@csstools/css-calc": "^3.1.1", + "@csstools/css-calc": "^3.2.0", "@csstools/css-parser-algorithms": "^4.0.0", - "@csstools/css-syntax-patches-for-csstree": "^1.1.2", + "@csstools/css-syntax-patches-for-csstree": "^1.1.3", "@csstools/css-tokenizer": "^4.0.0", "@csstools/media-query-list-parser": "^5.0.0", "@csstools/selector-resolve-nested": "^4.0.0", @@ -10476,16 +10461,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.2.tgz", - "integrity": "sha512-V8iSng9mRbdZjl54VJ9NKr6ZB+dW0J3TzRXRGcSbLIej9jV86ZRtlYeTKDR/QLxXykocJ5icNzbsl2+5TzIvcQ==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.0.tgz", + "integrity": "sha512-BU3ONW9X+v90EcCH9ZS6LMackcVtxRLlI3XrYyqZIwVSHIk7Qf7bFw1z0M9Q0IUxhTMZCf8piY9hTYaNEIASrw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.58.2", - "@typescript-eslint/parser": "8.58.2", - "@typescript-eslint/typescript-estree": "8.58.2", - "@typescript-eslint/utils": "8.58.2" + "@typescript-eslint/eslint-plugin": "8.59.0", + "@typescript-eslint/parser": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/utils": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/package.json b/package.json index bb53549d1a3..ad221d3fb6a 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "graceful-fs": "4.1.13" }, "devDependencies": { - "@openpgp/web-stream-tools": "0.3.0", - "@tony.ganchev/eslint-plugin-header": "^3.4.3", + "@openpgp/web-stream-tools": "0.3.1", + "@tony.ganchev/eslint-plugin-header": "^3.4.4", "@types/chai": "5.2.3", "@types/chai-as-promised": "8.0.2", "@types/chrome": "0.1.40", @@ -34,10 +34,10 @@ "pdfjs-dist": "5.6.205", "prettier": "^3.8.3", "puppeteer": "24.42.0", - "stylelint": "17.8.0", + "stylelint": "17.9.0", "stylelint-config-standard": "40.0.0", "typescript": "6.0.3", - "typescript-eslint": "8.58.2", + "typescript-eslint": "8.59.0", "undici-types": "^8.1.0", "web-ext": "10.1.0", "webpack-cli": "^7.0.2" @@ -49,7 +49,7 @@ "@zxcvbn-ts/language-common": "^3.0.4", "@zxcvbn-ts/language-en": "^3.0.2", "bootstrap": "^5.3.3", - "dompurify": "3.4.0", + "dompurify": "3.4.1", "filesize": "11.0.16", "fs-extra": "^11.3.4", "globby": "^16.2.0", From 05cd9823fa9579d6ef9ffecc689041c6f12d338d Mon Sep 17 00:00:00 2001 From: Roma Sosnovsky Date: Mon, 27 Apr 2026 12:06:40 +0300 Subject: [PATCH 2/7] wip --- package-lock.json | 249 ++++++++++++++++++++++++---------------------- 1 file changed, 132 insertions(+), 117 deletions(-) diff --git a/package-lock.json b/package-lock.json index 48a0c53fdea..c7b339c9ea3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -863,9 +863,9 @@ "license": "CC0-1.0" }, "node_modules/@napi-rs/canvas": { - "version": "0.1.99", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.99.tgz", - "integrity": "sha512-zN4eQlK3eBf7aJBcTHZilpBH3tDekBzPMIWC8r0s94Ecl73XfOyFi4w7yKFMRVUT0lvNQjtOL8YSrwqQj6mZFg==", + "version": "0.1.100", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.100.tgz", + "integrity": "sha512-xglYA6q3XO5P3BNJYxVZ1IV7DLVjp1Py6nwag88YntrS+3vKHyYcMqXVS4ZztJmwz2uGvz1FWhI/4LgbR5uQDA==", "dev": true, "license": "MIT", "optional": true, @@ -880,23 +880,23 @@ "url": "https://github.com/sponsors/Brooooooklyn" }, "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "0.1.99", - "@napi-rs/canvas-darwin-arm64": "0.1.99", - "@napi-rs/canvas-darwin-x64": "0.1.99", - "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.99", - "@napi-rs/canvas-linux-arm64-gnu": "0.1.99", - "@napi-rs/canvas-linux-arm64-musl": "0.1.99", - "@napi-rs/canvas-linux-riscv64-gnu": "0.1.99", - "@napi-rs/canvas-linux-x64-gnu": "0.1.99", - "@napi-rs/canvas-linux-x64-musl": "0.1.99", - "@napi-rs/canvas-win32-arm64-msvc": "0.1.99", - "@napi-rs/canvas-win32-x64-msvc": "0.1.99" + "@napi-rs/canvas-android-arm64": "0.1.100", + "@napi-rs/canvas-darwin-arm64": "0.1.100", + "@napi-rs/canvas-darwin-x64": "0.1.100", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.100", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.100", + "@napi-rs/canvas-linux-arm64-musl": "0.1.100", + "@napi-rs/canvas-linux-riscv64-gnu": "0.1.100", + "@napi-rs/canvas-linux-x64-gnu": "0.1.100", + "@napi-rs/canvas-linux-x64-musl": "0.1.100", + "@napi-rs/canvas-win32-arm64-msvc": "0.1.100", + "@napi-rs/canvas-win32-x64-msvc": "0.1.100" } }, "node_modules/@napi-rs/canvas-android-arm64": { - "version": "0.1.99", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.99.tgz", - "integrity": "sha512-9OCRt8VVxA17m32NWZKyNC2qamdaS/SC5CEOIQwFngRq0DIeVm4PDal+6Ljnhqm2whZiC63DNuKZ4xSp2nbj9w==", + "version": "0.1.100", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.100.tgz", + "integrity": "sha512-hjhCKhntPv9+t4ckHymdx0phYNcVW+GKQR6Lzw2zE+pOVjOplSmtx9nNNknTjbEDLcuLZqA1y8ufKg1XfgftzQ==", "cpu": [ "arm64" ], @@ -915,9 +915,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "0.1.99", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.99.tgz", - "integrity": "sha512-lupMDMy1+H38dhyCcLirOKKVUyzzlxi7j7rGPLI3vViMHOoPjcXO1b10ivy+ad+q6MiwHfoLjKTCoLke5ySOBg==", + "version": "0.1.100", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.100.tgz", + "integrity": "sha512-2PcswRaC7Ly645DGt88///zuFDhJxJYdKAs1uU3mfk1atYkXufgcgLfBpk6Tm12nCQBaNt1wpybuPZ4qOhTo8A==", "cpu": [ "arm64" ], @@ -936,9 +936,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "0.1.99", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.99.tgz", - "integrity": "sha512-fdz02t4w8n6Ii/rYhWig6STb/zcTmCC/6YZTGmjoDeidDwn9Wf0ukQVynhCPEs29vqUc66wHZKsuIgMs9tycCg==", + "version": "0.1.100", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.100.tgz", + "integrity": "sha512-ePNZtj7pNIva/siZMg+HmbeozkIjqUIYdoymH8HaA3qK7LfzFN4WMBM8G6HQ9ZC+H3+Dnn5pqtiXpgLykaPOhw==", "cpu": [ "x64" ], @@ -957,9 +957,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "0.1.99", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.99.tgz", - "integrity": "sha512-w4FwVwlNo00ezeRhfY62IVIyt6G3u8wodkPtiqWc52BUHx+VDBUM2vkS3ogfANaLI7hnf3s6WK4LyZVUjBg1lA==", + "version": "0.1.100", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.100.tgz", + "integrity": "sha512-d5cDB48oWFGU8/XPhUOFAlySgb/VAu7D+s8fi55K1Pcfg8aPplHWqMgibhVLU8ky7Pyg/fuiVLz4Nf3JrSTuUA==", "cpu": [ "arm" ], @@ -978,13 +978,16 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "0.1.99", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.99.tgz", - "integrity": "sha512-8JvHeexKQ8c7g0q7YJ29NVQwnf1ePghP9ys9ZN0R0qzyqJQ9Uw6N9qnDINArlm3IYHexB7LjzArIfhQiqSDGvQ==", + "version": "0.1.100", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.100.tgz", + "integrity": "sha512-rDxgxRu69RvDlX/bh9o22DxLsGr8EqsNgotL9+RwQE1S0b0cqeatqsw6aW45mukm0B42DIAaAacKaYQ8cqS1nw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -999,13 +1002,16 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "0.1.99", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.99.tgz", - "integrity": "sha512-Z+6nyLdJXWzLPVxi4H6g9TJop4DwN3KSgHWto5JCbZV5/uKoVqcSynPs0tGlUHOoWI8S8tEvJspz51GQkvr07w==", + "version": "0.1.100", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.100.tgz", + "integrity": "sha512-K3mDW66N+xT2/V439u1alFANiBUjdEx2gLiNYnCmUsva5jZMxWTjafBYwTzYK+EMFMHrUoabuU+T1BIP5CgbYQ==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1020,13 +1026,16 @@ } }, "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { - "version": "0.1.99", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.99.tgz", - "integrity": "sha512-jAnfOUv4IO1l8Levk5t85oVtEBOXLa07KnIUgWo1CDlPxiqpxS3uBfiE38Lvj/CQgHaNF6Nxk/SaemwLgsVJgw==", + "version": "0.1.100", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.100.tgz", + "integrity": "sha512-mooqUBTIsccZpnoQC4NgrC1v6C1vof39etLNMnBwCY+p0gajWJvAHLGQ6g/gGyS5YrpDW+GefSN4+Cvcr08UWw==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1041,13 +1050,16 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "0.1.99", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.99.tgz", - "integrity": "sha512-mIkXw3fGmbYyFjSmfWEvty4jN+rwEOmv0+Dy9bRvvTzLYWCgm3RMgUEQVfAKFw96nIRFnyNZiK83KNQaVVFjng==", + "version": "0.1.100", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.100.tgz", + "integrity": "sha512-1eCvkDCazm7FFhsT7DfGOdSaHgZVK3bt/dSBl5EWHOWmnz+I7j8tPseJqqD81NF+MH21jKUK4wQSDjN0mdhnTg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1062,13 +1074,16 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "0.1.99", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.99.tgz", - "integrity": "sha512-f3Uz2P0RgrtBHISxZqr6yiYXJlTDyCVBumDacxo+4AmSg7z0HiqYZKGWC/gszq3fbPhyQUya1W2AEteKxT9Y6A==", + "version": "0.1.100", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.100.tgz", + "integrity": "sha512-20arT6lnI19S68qNlii73TSEDbECNgzMz2EpldC1V3mZFuRkeujXkcebRk0LRJe9SEUAooYiLokfMViY8IX7yA==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1083,9 +1098,9 @@ } }, "node_modules/@napi-rs/canvas-win32-arm64-msvc": { - "version": "0.1.99", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-0.1.99.tgz", - "integrity": "sha512-XE6KUkfqRsCNejcoRMiMr3RaUeObxNf6y7dut3hrq2rn7PzfRTZgrjF1F/B2C7FcdgqY/vSHWpQeMuNz1vTNHg==", + "version": "0.1.100", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-0.1.100.tgz", + "integrity": "sha512-DZFFT1wIAg37LJw37yhMRFfjATd3vTQzjZ1Yki8u2vhO6Hi5VE6BVaGQ1aaDu7xb4iMErz+9EOwjpS7xcxFeBw==", "cpu": [ "arm64" ], @@ -1104,9 +1119,9 @@ } }, "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "0.1.99", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.99.tgz", - "integrity": "sha512-plMYGVbc/vmmPF9MtmHbwNk1rL1Aj53vQZt+Gnv1oZn6gmd9jEHHJ0n9Nd2nxa5sKH7TS5IjkCDM6289O0d6PQ==", + "version": "0.1.100", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.100.tgz", + "integrity": "sha512-MyT1j3mHC2+Lu4pBi9mKyMJhtP6U7k7EldY7sj/uS5gJA65gTXt8MefJQXLJo5d/vZbuWmfxzkEUNc/urV3pHA==", "cpu": [ "x64" ], @@ -2507,9 +2522,9 @@ } }, "node_modules/addons-linter/node_modules/eslint/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -2772,9 +2787,9 @@ } }, "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -2808,9 +2823,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "peer": true, @@ -3205,9 +3220,9 @@ } }, "node_modules/bare-os": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.7.tgz", - "integrity": "sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.0.tgz", + "integrity": "sha512-JTjuZyNIDpw+GytMO4a6TK1VXdVKKJr6DRxEHasyuYyShV2deuiHJK/ahGZlebc+SG0/wJCB9XK8gprBGDFi/Q==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3252,9 +3267,9 @@ } }, "node_modules/bare-url": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.1.tgz", - "integrity": "sha512-fZapLWNB25gS+etK27NV9KgBNXgo2yeYHuj+OyPblQd6GYAE3JVy6aKxszMV5jhGGFwraXQKA5fldvf3lMyEqw==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.2.tgz", + "integrity": "sha512-/9a2j4ac6ckpmAHvod/ob7x439OAHst/drc2Clnq+reRYd/ovddwcF4LfoxHyNk5AuGBnPg+HqFjmE/Zpq6v0A==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3283,9 +3298,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.20", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.20.tgz", - "integrity": "sha512-1AaXxEPfXT+GvTBJFuy4yXVHWJBXa4OdbIebGN/wX5DlsIkU0+wzGnd2lOzokSk51d5LUmqjgBLRLlypLUqInQ==", + "version": "2.10.23", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.23.tgz", + "integrity": "sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -3609,9 +3624,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001788", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz", - "integrity": "sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==", + "version": "1.0.30001791", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz", + "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==", "dev": true, "funding": [ { @@ -4635,9 +4650,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.340", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.340.tgz", - "integrity": "sha512-908qahOGocRMinT2nM3ajCEM99H4iPdv84eagPP3FfZy/1ZGeOy2CZYzjhms81ckOPCXPlW7LkY4XpxD8r1DrA==", + "version": "1.5.344", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz", + "integrity": "sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==", "dev": true, "license": "ISC", "peer": true @@ -4697,15 +4712,15 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", - "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz", + "integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" + "tapable": "^2.3.3" }, "engines": { "node": ">=10.13.0" @@ -4790,9 +4805,9 @@ } }, "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "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", "peer": true @@ -6812,9 +6827,9 @@ "license": "MIT" }, "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -7108,9 +7123,9 @@ } }, "node_modules/loader-runner": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", - "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", + "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", "dev": true, "license": "MIT", "peer": true, @@ -7727,9 +7742,9 @@ "optional": true }, "node_modules/node-releases": { - "version": "2.0.37", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", - "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", "dev": true, "license": "MIT", "peer": true @@ -8398,9 +8413,9 @@ } }, "node_modules/postcss": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz", - "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz", + "integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==", "funding": [ { "type": "opencollective", @@ -8724,9 +8739,9 @@ } }, "node_modules/qified/node_modules/hookified": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-2.1.1.tgz", - "integrity": "sha512-AHb76R16GB5EsPBE2J7Ko5kiEyXwviB9P5SMrAKcuAu4vJPZttViAbj9+tZeaQE5zjDme+1vcHP78Yj/WoAveA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-2.2.0.tgz", + "integrity": "sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==", "dev": true, "license": "MIT" }, @@ -9090,9 +9105,9 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "peer": true, @@ -9560,9 +9575,9 @@ } }, "node_modules/string-width": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", - "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz", + "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==", "dev": true, "license": "MIT", "dependencies": { @@ -9948,9 +9963,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "dependencies": { @@ -10111,9 +10126,9 @@ } }, "node_modules/tapable": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", - "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", "dev": true, "license": "MIT", "peer": true, @@ -10191,9 +10206,9 @@ } }, "node_modules/terser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", - "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.2.tgz", + "integrity": "sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==", "dev": true, "license": "BSD-2-Clause", "peer": true, @@ -10211,9 +10226,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", - "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==", "dev": true, "license": "MIT", "peer": true, @@ -10433,9 +10448,9 @@ } }, "node_modules/typed-query-selector": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.1.tgz", - "integrity": "sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.2.tgz", + "integrity": "sha512-EOPFbyIub4ngnEdqi2yOcNeDLaX/0jcE1JoAXQDDMIthap7FoN795lc/SHfIq2d416VufXpM8z/lD+WRm2gfOQ==", "dev": true, "license": "MIT" }, @@ -10984,9 +10999,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", - "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.0.tgz", + "integrity": "sha512-gHwIe1cgBvvfLeu1Yz/dcFpmHfKDVxxyqI+kzqmuxZED81z2ChxpyqPaWcNqigPywhaEke7AjSGga+kxY55gjQ==", "dev": true, "license": "MIT", "peer": true, From 61170bc5f530d545b7e13edd0090d17aac265562 Mon Sep 17 00:00:00 2001 From: Roma Sosnovsky Date: Tue, 28 Apr 2026 11:31:05 +0300 Subject: [PATCH 3/7] updates --- package-lock.json | 187 ++++++++++++++++++++++------------------------ package.json | 8 +- 2 files changed, 93 insertions(+), 102 deletions(-) diff --git a/package-lock.json b/package-lock.json index c7b339c9ea3..ee7a8004a77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@zxcvbn-ts/language-en": "^3.0.2", "bootstrap": "^5.3.3", "dompurify": "3.4.1", - "filesize": "11.0.16", + "filesize": "11.0.17", "fs-extra": "^11.3.4", "globby": "^16.2.0", "jquery": "^4.0.0", @@ -55,13 +55,13 @@ "mailparser": "3.9.8", "mkdirp": "3.0.1", "openpgp": "6.3.0", - "pdfjs-dist": "5.6.205", + "pdfjs-dist": "5.7.284", "prettier": "^3.8.3", "puppeteer": "24.42.0", - "stylelint": "17.9.0", + "stylelint": "17.9.1", "stylelint-config-standard": "40.0.0", "typescript": "6.0.3", - "typescript-eslint": "8.59.0", + "typescript-eslint": "8.59.1", "undici-types": "^8.1.0", "web-ext": "10.1.0", "webpack-cli": "^7.0.2" @@ -1682,17 +1682,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.0.tgz", - "integrity": "sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw==", + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.1.tgz", + "integrity": "sha512-BOziFIfE+6osHO9FoJG4zjoHUcvI7fTNBSpdAwrNH0/TLvzjsk2oo8XSSOT2HhqUyhZPfHv4UOffoJ9oEEQ7Ag==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.59.0", - "@typescript-eslint/type-utils": "8.59.0", - "@typescript-eslint/utils": "8.59.0", - "@typescript-eslint/visitor-keys": "8.59.0", + "@typescript-eslint/scope-manager": "8.59.1", + "@typescript-eslint/type-utils": "8.59.1", + "@typescript-eslint/utils": "8.59.1", + "@typescript-eslint/visitor-keys": "8.59.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" @@ -1705,7 +1705,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.59.0", + "@typescript-eslint/parser": "^8.59.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } @@ -1721,16 +1721,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.0.tgz", - "integrity": "sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg==", + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.1.tgz", + "integrity": "sha512-HDQH9O/47Dxi1ceDhBXdaldtf/WV9yRYMjbjCuNk3qnaTD564qwv61Y7+gTxwxRKzSrgO5uhtw584igXVuuZkA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.59.0", - "@typescript-eslint/types": "8.59.0", - "@typescript-eslint/typescript-estree": "8.59.0", - "@typescript-eslint/visitor-keys": "8.59.0", + "@typescript-eslint/scope-manager": "8.59.1", + "@typescript-eslint/types": "8.59.1", + "@typescript-eslint/typescript-estree": "8.59.1", + "@typescript-eslint/visitor-keys": "8.59.1", "debug": "^4.4.3" }, "engines": { @@ -1746,14 +1746,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.0.tgz", - "integrity": "sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==", + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.1.tgz", + "integrity": "sha512-+MuHQlHiEr00Of/IQbE/MmEoi44znZHbR/Pz7Opq4HryUOlRi+/44dro9Ycy8Fyo+/024IWtw8m4JUMCGTYxDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.59.0", - "@typescript-eslint/types": "^8.59.0", + "@typescript-eslint/tsconfig-utils": "^8.59.1", + "@typescript-eslint/types": "^8.59.1", "debug": "^4.4.3" }, "engines": { @@ -1768,14 +1768,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.0.tgz", - "integrity": "sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==", + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.1.tgz", + "integrity": "sha512-LwuHQI4pDOYVKvmH2dkaJo6YZCSgouVgnS/z7yBPKBMvgtBvyLqiLy9Z6b7+m/TRcX1NFYUqZetI5Y+aT4GEfg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.59.0", - "@typescript-eslint/visitor-keys": "8.59.0" + "@typescript-eslint/types": "8.59.1", + "@typescript-eslint/visitor-keys": "8.59.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1786,9 +1786,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.0.tgz", - "integrity": "sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==", + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.1.tgz", + "integrity": "sha512-/0nEyPbX7gRsk0Uwfe4ALwwgxuA66d/l2mhRDNlAvaj4U3juhUtJNq0DsY8M2AYwwb9rEq2hrC3IcIcEt++iJA==", "dev": true, "license": "MIT", "engines": { @@ -1803,15 +1803,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.0.tgz", - "integrity": "sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg==", + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.1.tgz", + "integrity": "sha512-klWPBR2ciQHS3f++ug/mVnWKPjBUo7icEL3FAO1lhAR1Z1i5NQYZ1EannMSRYcq5qCv5wNALlXr6fksRHyYl7w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.59.0", - "@typescript-eslint/typescript-estree": "8.59.0", - "@typescript-eslint/utils": "8.59.0", + "@typescript-eslint/types": "8.59.1", + "@typescript-eslint/typescript-estree": "8.59.1", + "@typescript-eslint/utils": "8.59.1", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, @@ -1828,9 +1828,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.0.tgz", - "integrity": "sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==", + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.1.tgz", + "integrity": "sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==", "dev": true, "license": "MIT", "engines": { @@ -1842,16 +1842,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.0.tgz", - "integrity": "sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==", + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.1.tgz", + "integrity": "sha512-OUd+vJS05sSkOip+BkZ/2NS8RMxrAAJemsC6vU3kmfLyeaJT0TftHkV9mcx2107MmsBVXXexhVu4F0TZXyMl4g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.59.0", - "@typescript-eslint/tsconfig-utils": "8.59.0", - "@typescript-eslint/types": "8.59.0", - "@typescript-eslint/visitor-keys": "8.59.0", + "@typescript-eslint/project-service": "8.59.1", + "@typescript-eslint/tsconfig-utils": "8.59.1", + "@typescript-eslint/types": "8.59.1", + "@typescript-eslint/visitor-keys": "8.59.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -1870,16 +1870,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.0.tgz", - "integrity": "sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==", + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.1.tgz", + "integrity": "sha512-3pIeoXhCeYH9FSCBI8P3iNwJlGuzPlYKkTlen2O9T1DSeeg8UG8jstq6BLk+Mda0qup7mgk4z4XL4OzRaxZ8LA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.59.0", - "@typescript-eslint/types": "8.59.0", - "@typescript-eslint/typescript-estree": "8.59.0" + "@typescript-eslint/scope-manager": "8.59.1", + "@typescript-eslint/types": "8.59.1", + "@typescript-eslint/typescript-estree": "8.59.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1894,13 +1894,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.0.tgz", - "integrity": "sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==", + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.1.tgz", + "integrity": "sha512-LdDNl6C5iJExcM0Yh0PwAIBb9PrSiCsWamF/JyEZawm3kFDnRoaq3LGE4bpyRao/fWeGKKyw7icx0YxrLFC5Cg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/types": "8.59.1", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -3240,9 +3240,9 @@ } }, "node_modules/bare-stream": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.0.tgz", - "integrity": "sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.1.tgz", + "integrity": "sha512-Vp0cnjYyrEC4whYTymQ+YZi6pBpfiICZO3cfRG8sy67ZNWe951urv1x4eW1BKNngw3U+3fPYb5JQvHbCtxH7Ow==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3312,9 +3312,9 @@ } }, "node_modules/basic-ftp": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.0.tgz", - "integrity": "sha512-5K9eNNn7ywHPsYnFwjKgYH8Hf8B5emh7JKcPaVjjrMJFQQwGpwowEnZNEtHs7DfR7hCZsmaK3VA4HUK0YarT+w==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.1.tgz", + "integrity": "sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==", "dev": true, "license": "MIT", "engines": { @@ -5413,9 +5413,9 @@ "license": "MIT" }, "node_modules/filesize": { - "version": "11.0.16", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-11.0.16.tgz", - "integrity": "sha512-XMcUu0Zxnh0L8rY5b5vrdKKs0H3l3osTp9vNEBulRmwLqYfuQe5SJCagpA0/sGMJx2KHbD+IWOyd6QsJQuYEkQ==", + "version": "11.0.17", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-11.0.17.tgz", + "integrity": "sha512-oHLTvMLw6imZUl1se/RBQrFlyy50nXce4sU7yGR6Qc0JgCwqnfiFsAnEwotdGmfKLD7SArGUk2/5STU0k8LOBQ==", "license": "BSD-3-Clause", "engines": { "node": ">= 10.8.0" @@ -6371,9 +6371,9 @@ } }, "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.1.tgz", + "integrity": "sha512-1FMu8/N15Ck1BL551Jf42NYIoin2unWjLQ2Fze/DXryJRl5twqtwNHlO39qERGbIOcKYWHdgRryhOC+NG4eaLw==", "dev": true, "license": "MIT", "engines": { @@ -7733,14 +7733,6 @@ "which": "^2.0.2" } }, - "node_modules/node-readable-to-web-readable-stream": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/node-readable-to-web-readable-stream/-/node-readable-to-web-readable-stream-0.4.2.tgz", - "integrity": "sha512-/cMZNI34v//jUTrI+UIo4ieHAB5EZRY/+7OmXZgBxaWBMcW2tGdceIw06RFxWxrKZ5Jp3sI2i5TsRo+CBhtVLQ==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/node-releases": { "version": "2.0.38", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", @@ -8238,17 +8230,16 @@ } }, "node_modules/pdfjs-dist": { - "version": "5.6.205", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.6.205.tgz", - "integrity": "sha512-tlUj+2IDa7G1SbvBNN74UHRLJybZDWYom+k6p5KIZl7huBvsA4APi6mKL+zCxd3tLjN5hOOEE9Tv7VdzO88pfg==", + "version": "5.7.284", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.7.284.tgz", + "integrity": "sha512-h4EdYQczmGhbOlqc3PPZwxevn7ApdWPbovAuWXOB/DjIyigSnwfy2oze7c6mRcSr9XgLp3eN3EeL4DyySTPMFw==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=20.19.0 || >=22.13.0 || >=24" + "node": ">=22.13.0 || >=24" }, "optionalDependencies": { - "@napi-rs/canvas": "^0.1.96", - "node-readable-to-web-readable-stream": "^0.4.2" + "@napi-rs/canvas": "^0.1.100" } }, "node_modules/peberminta": { @@ -9373,13 +9364,13 @@ } }, "node_modules/socks": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", - "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.8.tgz", + "integrity": "sha512-NlGELfPrgX2f1TAAcz0WawlLn+0r3FyhhCRpFFK2CemXenPYvzMWWZINv3eDNo9ucdwme7oCHRY0Jnbs4aIkog==", "dev": true, "license": "MIT", "dependencies": { - "ip-address": "^10.0.1", + "ip-address": "^10.1.1", "smart-buffer": "^4.2.0" }, "engines": { @@ -9678,9 +9669,9 @@ "license": "MIT" }, "node_modules/stylelint": { - "version": "17.9.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.9.0.tgz", - "integrity": "sha512-xO0jeY6z1/urFL5L/BZLmB1yYlbRiRMQnYH6ArZIDWJ+SZXGssOY7XoYb1JIv/L220+EBnwwJXJS4Mt/F96SvA==", + "version": "17.9.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.9.1.tgz", + "integrity": "sha512-THTmnAPJTrg/JhkTWZlSyrO+HUYMx6ELthIHeMyD2WOKqXIJUFQv2Yxn91bvUrZdbBJaW2dUuQdPST2wcQ6C3g==", "dev": true, "funding": [ { @@ -10476,16 +10467,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.59.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.0.tgz", - "integrity": "sha512-BU3ONW9X+v90EcCH9ZS6LMackcVtxRLlI3XrYyqZIwVSHIk7Qf7bFw1z0M9Q0IUxhTMZCf8piY9hTYaNEIASrw==", + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.1.tgz", + "integrity": "sha512-xqDcFVBmlrltH64lklOVp1wYxgJr6LVdg3NamBgH2OOQDLFdTKfIZXF5PfghrnXQKXZGTQs8tr1vL7fJvq8CTQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.59.0", - "@typescript-eslint/parser": "8.59.0", - "@typescript-eslint/typescript-estree": "8.59.0", - "@typescript-eslint/utils": "8.59.0" + "@typescript-eslint/eslint-plugin": "8.59.1", + "@typescript-eslint/parser": "8.59.1", + "@typescript-eslint/typescript-estree": "8.59.1", + "@typescript-eslint/utils": "8.59.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/package.json b/package.json index ad221d3fb6a..8cba84a0cf5 100644 --- a/package.json +++ b/package.json @@ -31,13 +31,13 @@ "mailparser": "3.9.8", "mkdirp": "3.0.1", "openpgp": "6.3.0", - "pdfjs-dist": "5.6.205", + "pdfjs-dist": "5.7.284", "prettier": "^3.8.3", "puppeteer": "24.42.0", - "stylelint": "17.9.0", + "stylelint": "17.9.1", "stylelint-config-standard": "40.0.0", "typescript": "6.0.3", - "typescript-eslint": "8.59.0", + "typescript-eslint": "8.59.1", "undici-types": "^8.1.0", "web-ext": "10.1.0", "webpack-cli": "^7.0.2" @@ -50,7 +50,7 @@ "@zxcvbn-ts/language-en": "^3.0.2", "bootstrap": "^5.3.3", "dompurify": "3.4.1", - "filesize": "11.0.16", + "filesize": "11.0.17", "fs-extra": "^11.3.4", "globby": "^16.2.0", "jquery": "^4.0.0", From 4736ac8a9da7af2161b4225497179f80dc70fb07 Mon Sep 17 00:00:00 2001 From: Roma Sosnovsky Date: Tue, 28 Apr 2026 12:07:13 +0300 Subject: [PATCH 4/7] fix eslint errors --- eslint.config.mjs | 1 + .../api/authentication/google/google-oauth.ts | 4 +-- .../js/common/api/key-server/attester.ts | 2 +- extension/js/common/api/shared/api.ts | 2 +- .../js/common/browser/browser-extension.ts | 9 +++--- extension/js/common/core/common.ts | 32 ++++++++++++++++++- extension/js/common/downloader.ts | 6 ++-- extension/js/common/message-renderer.ts | 2 +- extension/js/common/platform/catch.ts | 13 ++------ test/source/browser/browser-handle.ts | 2 +- test/source/mock/google/google-data.ts | 2 +- test/source/mock/lib/api.ts | 10 ++++-- test/source/platform/require.ts | 2 +- test/source/tests/setup.ts | 7 ++-- 14 files changed, 62 insertions(+), 32 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index ab06299afab..d1e5abc4bdd 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -66,6 +66,7 @@ const jsConfigRules = { destructuring: 'all', }, ], + 'prefer-promise-reject-errors': 'off', radix: 'off', 'require-atomic-updates': 0, 'sort-imports': 'off', diff --git a/extension/js/common/api/authentication/google/google-oauth.ts b/extension/js/common/api/authentication/google/google-oauth.ts index c3ba9fdb6be..2c33fbb168e 100644 --- a/extension/js/common/api/authentication/google/google-oauth.ts +++ b/extension/js/common/api/authentication/google/google-oauth.ts @@ -89,9 +89,9 @@ export class GoogleOAuth extends OAuth { // temporary use jquery for upload requests https://github.com/FlowCrypt/flowcrypt-browser/issues/5612 if (req.progress?.upload) { // eslint-disable-next-line @typescript-eslint/no-deprecated - return (await Api.ajaxWithJquery(req, 'json')) as RT; + return await Api.ajaxWithJquery(req, 'json'); } else { - return (await Api.ajax(req, 'json')) as RT; + return await Api.ajax(req, 'json'); } }; diff --git a/extension/js/common/api/key-server/attester.ts b/extension/js/common/api/key-server/attester.ts index b274ddf1c26..cce4cdb1c7e 100644 --- a/extension/js/common/api/key-server/attester.ts +++ b/extension/js/common/api/key-server/attester.ts @@ -94,7 +94,7 @@ export class Attester extends Api { }; private jsonPost = async (path: string, values: Dict, hdrs?: Dict): Promise => { - return (await Api.apiCall(ATTESTER_API_HOST, path, { data: values, fmt: 'JSON' }, undefined, { 'api-version': '3', ...(hdrs ?? {}) }, 'json')) as RT; + return await Api.apiCall(ATTESTER_API_HOST, path, { data: values, fmt: 'JSON' }, undefined, { 'api-version': '3', ...(hdrs ?? {}) }, 'json'); }; private pubCall = async (resource: string, data?: string, hdrs?: Dict): Promise => { diff --git a/extension/js/common/api/shared/api.ts b/extension/js/common/api/shared/api.ts index 4f561ed15d6..2e490f3e9c1 100644 --- a/extension/js/common/api/shared/api.ts +++ b/extension/js/common/api/shared/api.ts @@ -413,7 +413,7 @@ export class Api { headers?: AjaxHeaders, resFmt?: T ): Promise> { - progress = progress || ({} as ProgressCbs); + progress = progress || {}; let formattedData: FormData | string | undefined; let dataPart: AjaxParams = { method: 'GET' }; if (values) { diff --git a/extension/js/common/browser/browser-extension.ts b/extension/js/common/browser/browser-extension.ts index a9990298110..99177e3530f 100644 --- a/extension/js/common/browser/browser-extension.ts +++ b/extension/js/common/browser/browser-extension.ts @@ -5,6 +5,7 @@ import { Dict } from '../core/common.js'; import { FlatTypes } from '../platform/store/abstract-store.js'; import { CatchHelper } from '../platform/catch-helper.js'; +import { Catch } from '../platform/catch.js'; export class BrowserExtension { // todo - move extension-specific common.js code here @@ -14,14 +15,14 @@ export class BrowserExtension { try { bugReport.error = JSON.stringify(error, undefined, 2); } catch (e) { - bugReport.error_as_string = String(error); - bugReport.error_serialization_error = String(e); + bugReport.error_as_string = Catch.stringify(error); + bugReport.error_serialization_error = Catch.stringify(e); } try { bugReport.details = JSON.stringify(details, undefined, 2); } catch (e) { - bugReport.details_as_string = String(details as unknown); - bugReport.details_serialization_error = String(e); + bugReport.details_as_string = Catch.stringify(details); + bugReport.details_serialization_error = Catch.stringify(e); } let result = ''; for (const k of Object.keys(bugReport)) { diff --git a/extension/js/common/core/common.ts b/extension/js/common/core/common.ts index b75e9ccab43..47935789eff 100644 --- a/extension/js/common/core/common.ts +++ b/extension/js/common/core/common.ts @@ -137,8 +137,38 @@ export class Str { return list.map(x => Str.formatEmailWithOptionalNameEx(x, forceBrackets)).join(', '); }; + public static stringify = (obj: unknown, space?: number): string => { + if (typeof obj === 'object') { + try { + return JSON.stringify(obj, undefined, space) ?? ''; + } catch { + return '[unstringifiable object]'; + } + } + if (typeof obj === 'function') { + return `[function ${obj.name || 'anonymous'}]`; + } + if (typeof obj === 'undefined') { + return ''; + } + if (typeof obj === 'symbol') { + return obj.description ?? ''; + } + switch (typeof obj) { + case 'string': + return obj; + case 'number': + return obj.toString(); + case 'boolean': + return obj ? 'true' : 'false'; + case 'bigint': + return obj.toString(); + } + return ''; + }; + public static prettyPrint = (obj: unknown) => { - return typeof obj === 'object' ? JSON.stringify(obj, undefined, 2).replace(/ /g, ' ').replace(/\n/g, '
') : String(obj as unknown); + return Str.stringify(obj, 2).replace(/ /g, ' ').replace(/\n/g, '
'); }; public static normalizeSpaces = (str: string) => { diff --git a/extension/js/common/downloader.ts b/extension/js/common/downloader.ts index 0fc92759e44..4aa3d988079 100644 --- a/extension/js/common/downloader.ts +++ b/extension/js/common/downloader.ts @@ -56,7 +56,7 @@ export class Downloader { resolve({ result: download }); }) .catch((e: unknown) => { - reject(e as Error); + reject(e instanceof Error ? e : new Error(Catch.stringify(e))); }); }); }; @@ -87,7 +87,7 @@ export class Downloader { resolve(msg.raw || ''); }) .catch((e: unknown) => { - reject(e as Error); + reject(e instanceof Error ? e : new Error(Catch.stringify(e))); }); }); }; @@ -108,7 +108,7 @@ export class Downloader { resolve(msg); }) .catch((e: unknown) => { - reject(e as Error); + reject(e instanceof Error ? e : new Error(Catch.stringify(e))); }); }); }; diff --git a/extension/js/common/message-renderer.ts b/extension/js/common/message-renderer.ts index 46928530710..095850e4d7d 100644 --- a/extension/js/common/message-renderer.ts +++ b/extension/js/common/message-renderer.ts @@ -446,7 +446,7 @@ export class MessageRenderer { resolve(await this.processedMessages.await(msgId, processed)); }) .catch((e: unknown) => { - reject(e as Error); + reject(e instanceof Error ? e : new Error(Catch.stringify(e))); }); }); }; diff --git a/extension/js/common/platform/catch.ts b/extension/js/common/platform/catch.ts index 77ed6dffba9..5b563c5a9a6 100644 --- a/extension/js/common/platform/catch.ts +++ b/extension/js/common/platform/catch.ts @@ -4,7 +4,7 @@ import type { ExternalService as IExternalService } from '../api/account-servers/external-service.js'; import { Env } from '../browser/env.js'; -import { Url } from '../core/common.js'; +import { Str, Url } from '../core/common.js'; import { FLAVOR, VERSION } from '../core/const.js'; import { CatchHelper } from './catch-helper.js'; import { ErrorReport, UnreportableError } from './error-report.js'; @@ -49,14 +49,7 @@ export class Catch { if (e instanceof Error) { return `[typeof:Error:${e.name}] ${e.message}\n\n${e.stack}`; } - if (typeof e === 'string') { - return `[typeof:string] ${e}`; - } - try { - return `[typeof:${typeof e}:${String(e)}] ${JSON.stringify(e)}`; - } catch { - return `[unstringifiable typeof:${typeof e}:${String(e)}]`; - } + return `[typeof:${typeof e}] ${Str.stringify(e)}`; } public static hasStack(e: unknown): e is ObjWithStack { @@ -315,7 +308,7 @@ export class Catch { private static formExceptionFromThrown(thrown: unknown, errMsg?: string, url?: string, line?: number, col?: number, isManuallyCalled?: boolean): Error { let exception: Error; if (typeof thrown !== 'object') { - exception = new Error(`THROWN_NON_OBJECT[${typeof thrown}]: ${String(thrown as unknown)}`); + exception = new Error(`THROWN_NON_OBJECT[${typeof thrown}]: ${Catch.stringify(thrown)}`); } else if (errMsg && url && typeof line !== 'undefined' && !col && !thrown && !isManuallyCalled) { exception = new Error(`LIMITED_ERROR: ${errMsg}`); } else if (thrown instanceof Error) { diff --git a/test/source/browser/browser-handle.ts b/test/source/browser/browser-handle.ts index 02b7c08ca76..7c71f60b9fa 100644 --- a/test/source/browser/browser-handle.ts +++ b/test/source/browser/browser-handle.ts @@ -162,7 +162,7 @@ export class BrowserHandle { }; this.browser.on('targetcreated', listener); triggeringAction().catch((e: unknown) => { - console.error(e as Error); + console.error(e); }); }); }; diff --git a/test/source/mock/google/google-data.ts b/test/source/mock/google/google-data.ts index 8090ec5d4da..96734457cf8 100644 --- a/test/source/mock/google/google-data.ts +++ b/test/source/mock/google/google-data.ts @@ -394,7 +394,7 @@ export class GoogleData { id, threadId: parseResult.threadId ?? null, // eslint-disable-line no-null/no-null historyId: '', - labelIds: ['SENT' as GmailMsg$labelId], + labelIds: ['SENT'], payload: { mimeType, headers, diff --git a/test/source/mock/lib/api.ts b/test/source/mock/lib/api.ts index f2b4df5e227..ee864d3a1eb 100644 --- a/test/source/mock/lib/api.ts +++ b/test/source/mock/lib/api.ts @@ -15,6 +15,10 @@ import { SksConfig, getMockSksEndpoints } from '../sks/sks-endpoints'; import { getMockCustomerUrlFesEndpoints } from '../fes/customer-url-fes-endpoints'; import { getMockS3Endpoints } from '../s3/s3-endpoints'; +const toError = (e: unknown): Error => { + return e instanceof Error ? e : new Error(String(e)); +}; + export class HttpAuthErr extends Error {} export class HttpClientErr extends Error { public constructor( @@ -163,13 +167,13 @@ export class Api { }); } catch (e) { console.error('exception when starting mock server', e); - reject(e as Error); + reject(toError(e)); } }); }; public close = (): Promise => { - return new Promise((resolve, reject) => this.server.close((err: unknown) => (err ? reject(err as Error) : resolve()))); + return new Promise((resolve, reject) => this.server.close((err: unknown) => (err ? reject(toError(err)) : resolve()))); }; // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -278,7 +282,7 @@ export class Api { try { resolve(Buffer.concat(body)); } catch (e) { - reject(e as Error); + reject(toError(e)); } }); }); diff --git a/test/source/platform/require.ts b/test/source/platform/require.ts index fe793c61043..5d406a1fbd4 100644 --- a/test/source/platform/require.ts +++ b/test/source/platform/require.ts @@ -6,7 +6,7 @@ import type OpenPGP from 'openpgp'; export const requireOpenpgp = (): typeof OpenPGP => { // eslint-disable-next-line @typescript-eslint/no-require-imports - return require('openpgp') as unknown as typeof OpenPGP; + return require('openpgp') as typeof OpenPGP; }; /* eslint-disable @typescript-eslint/no-explicit-any */ diff --git a/test/source/tests/setup.ts b/test/source/tests/setup.ts index 257ffdde63a..f571256f370 100644 --- a/test/source/tests/setup.ts +++ b/test/source/tests/setup.ts @@ -2250,7 +2250,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== const title = await settingsPage.read('@container-overlay-prompt-text'); expect(title).to.contain( 'Failed to store newly generated key on FlowCrypt Email Key Manager, ' + - 'No key has been generated for reject.client.keypair@key-manager-autogen.flowcrypt.test yet. Please ask your administrator.' + 'No key has been generated for reject.client.keypair@key-manager-autogen.flowcrypt.test yet. Please ask your administrator.' ); await settingsPage.click('@action-show-overlay-details'); await settingsPage.waitAll('@container-overlay-details'); @@ -2258,7 +2258,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== const details = await settingsPage.read('@container-overlay-details'); expect(details).to.contain( `405 when PUT-ing https://localhost:${t.context.urls?.port}/flowcrypt-email-key-manager/v1/keys/private string: ` + - 'privateKey -> No key has been generated for reject.client.keypair@key-manager-autogen.flowcrypt.test yet' + 'privateKey -> No key has been generated for reject.client.keypair@key-manager-autogen.flowcrypt.test yet' ); expect(details).to.not.contain('PRIVATE KEY'); }) @@ -2379,7 +2379,8 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== const rawMessage = await Parse.convertBase64ToMimeMsg(sentMsg.raw!); const fromEmailHeaderLine = rawMessage.headerLines[2].line; const toEmailHeaderLine = rawMessage.headerLines[3].line; - const subjectLine = String(rawMessage.headers.get('subject') as unknown); + const subjectHeader = rawMessage.headers.get('subject'); + const subjectLine = typeof subjectHeader === 'string' ? subjectHeader : JSON.stringify(subjectHeader); const adminPrivateKey = testConstants.prvBackupToDesignatedMailboxTestPrvKey; const parsedAdminPrivateKey = await KeyUtil.parse(adminPrivateKey); const passphrase = 'super hard to guess passphrase'; From ab5d13115f99715b1a23003ebc77530df04bc661 Mon Sep 17 00:00:00 2001 From: Roma Sosnovsky Date: Tue, 28 Apr 2026 12:13:17 +0300 Subject: [PATCH 5/7] optimize eslint.config.mjs --- eslint.config.mjs | 104 +++++++++++++++++++--------------------------- 1 file changed, 43 insertions(+), 61 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index d1e5abc4bdd..b1e8e0babc9 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,4 +1,5 @@ -// Importing necessary ESLint plugins +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; import tseslint from 'typescript-eslint'; import noOnlyTestsPlugin from 'eslint-plugin-no-only-tests'; import headerPlugin from '@tony.ganchev/eslint-plugin-header'; @@ -10,13 +11,12 @@ import eslintConfigPrettier from 'eslint-config-prettier'; import pluginJs from '@eslint/js'; import globals from 'globals'; -const mergeConfigs = (configs, key) => configs.reduce((acc, cfg) => ({ ...acc, ...(cfg[key] || {}) }), {}); +const tsconfigRootDir = path.dirname(fileURLToPath(import.meta.url)); +const mergeRules = configs => Object.assign({}, ...configs.map(cfg => cfg.rules)); const { strictTypeChecked, stylisticTypeChecked } = tseslint.configs; -const strictTypeCheckedPlugins = mergeConfigs(strictTypeChecked, 'plugins'); -const strictTypeCheckedRules = mergeConfigs(strictTypeChecked, 'rules'); -const stylisticPlugins = mergeConfigs(stylisticTypeChecked, 'plugins'); -const stylisticRules = mergeConfigs(stylisticTypeChecked, 'rules'); +const strictTypeCheckedRules = mergeRules(strictTypeChecked); +const stylisticRules = mergeRules(stylisticTypeChecked); const jsConfigRules = { complexity: 'off', @@ -72,22 +72,26 @@ const jsConfigRules = { 'sort-imports': 'off', 'local-rules/standard-loops': 'error', }; + +const basePlugins = { + header: headerPlugin, + jsdoc: jsdocPlugin, + 'prefer-arrow': preferArrowPlugin, + 'no-null': noNullPlugin, + 'local-rules': localRulesPlugin, +}; + const commonConfig = { plugins: { '@typescript-eslint': tseslint.plugin, 'no-only-tests': noOnlyTestsPlugin, - header: headerPlugin, - jsdoc: jsdocPlugin, - 'prefer-arrow': preferArrowPlugin, - 'no-null': noNullPlugin, - 'local-rules': localRulesPlugin, - ...strictTypeCheckedPlugins, - ...stylisticPlugins, + ...basePlugins, }, languageOptions: { parser: tseslint.parser, parserOptions: { project: true, + tsconfigRootDir, }, }, rules: { @@ -173,6 +177,21 @@ const commonConfig = { }, }; +const tsProjectLanguageOptions = project => ({ + ...commonConfig.languageOptions, + parserOptions: { + project, + tsconfigRootDir, + }, +}); + +const tsProjectConfig = (files, project, rules = {}) => ({ + ...commonConfig, + files, + languageOptions: tsProjectLanguageOptions(project), + ...(Object.keys(rules).length ? { rules: { ...commonConfig.rules, ...rules } } : {}), +}); + export default [ { ignores: [ @@ -189,51 +208,18 @@ export default [ }, pluginJs.configs.recommended, eslintConfigPrettier, - { - ...commonConfig, - files: ['extension/**/*.ts'], - languageOptions: { - ...commonConfig.languageOptions, - parserOptions: { - project: './tsconfig.json', - }, - }, - }, - { - ...commonConfig, - files: ['tooling/**/*.ts'], - languageOptions: { - ...commonConfig.languageOptions, - parserOptions: { - project: './conf/tsconfig.tooling.json', - }, - }, - }, - { - ...commonConfig, - files: ['test/**/*.ts'], - languageOptions: { - ...commonConfig.languageOptions, - parserOptions: { - project: './conf/tsconfig.test.eslint.json', - }, - }, - rules: { - ...commonConfig.rules, - '@typescript-eslint/no-unused-expressions': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - }, - }, + tsProjectConfig(['extension/**/*.ts'], './tsconfig.json'), + tsProjectConfig(['tooling/**/*.ts'], './conf/tsconfig.tooling.json'), + tsProjectConfig(['test/**/*.ts'], './conf/tsconfig.test.eslint.json', { + '@typescript-eslint/no-unused-expressions': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + }), ...tseslint.config({ files: ['extension/js/content_scripts/webmail/**/*.ts'], - languageOptions: { - parserOptions: { - project: './conf/tsconfig.content_scripts.json', - }, - }, + languageOptions: tsProjectLanguageOptions('./conf/tsconfig.content_scripts.json'), }), { files: ['scripts/**/*.js'], @@ -246,11 +232,7 @@ export default [ }, }, plugins: { - header: headerPlugin, - jsdoc: jsdocPlugin, - 'prefer-arrow': preferArrowPlugin, - 'no-null': noNullPlugin, - 'local-rules': localRulesPlugin, + ...basePlugins, }, rules: { ...pluginJs.configs.recommended.rules, ...jsConfigRules }, }, From 8bf869ca6db4f6674b3198fb322ecceba4622b16 Mon Sep 17 00:00:00 2001 From: Roma Sosnovsky Date: Tue, 28 Apr 2026 12:20:04 +0300 Subject: [PATCH 6/7] update tsconfig --- conf/tsconfig.content_scripts.json | 2 ++ conf/tsconfig.streams.json | 2 ++ conf/tsconfig.test.json | 2 ++ conf/tsconfig.tooling.json | 2 ++ tsconfig.json | 2 ++ 5 files changed, 10 insertions(+) diff --git a/conf/tsconfig.content_scripts.json b/conf/tsconfig.content_scripts.json index 233275f08a3..530c4506bd5 100644 --- a/conf/tsconfig.content_scripts.json +++ b/conf/tsconfig.content_scripts.json @@ -4,7 +4,9 @@ "module": "es2022", "forceConsistentCasingInFileNames": true, "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, "noUnusedLocals": true, + "noEmitOnError": true, "alwaysStrict": true, "noImplicitAny": true, "strictNullChecks": true, diff --git a/conf/tsconfig.streams.json b/conf/tsconfig.streams.json index b10acb6a12f..b2de0e23822 100644 --- a/conf/tsconfig.streams.json +++ b/conf/tsconfig.streams.json @@ -5,6 +5,8 @@ "allowJs": true, "alwaysStrict": true, "noImplicitAny": true, + "noFallthroughCasesInSwitch": true, + "noEmitOnError": true, "strictNullChecks": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, diff --git a/conf/tsconfig.test.json b/conf/tsconfig.test.json index 5dfdeabb0b7..3e2adc23756 100644 --- a/conf/tsconfig.test.json +++ b/conf/tsconfig.test.json @@ -4,6 +4,8 @@ "lib": ["es6", "dom"], "alwaysStrict": true, "noImplicitAny": true, + "noFallthroughCasesInSwitch": true, + "noEmitOnError": true, "strictNullChecks": true, "strictFunctionTypes": false, "allowSyntheticDefaultImports": true, diff --git a/conf/tsconfig.tooling.json b/conf/tsconfig.tooling.json index 12b769dca7a..4a778237d86 100644 --- a/conf/tsconfig.tooling.json +++ b/conf/tsconfig.tooling.json @@ -4,6 +4,8 @@ "lib": ["es6", "dom"], "alwaysStrict": true, "noImplicitAny": true, + "noFallthroughCasesInSwitch": true, + "noEmitOnError": true, "strictNullChecks": true, "module": "commonjs", "sourceMap": false, diff --git a/tsconfig.json b/tsconfig.json index 342552dac31..62dc9d7c0cb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,9 @@ "forceConsistentCasingInFileNames": true, "allowSyntheticDefaultImports": true, "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, "noUnusedLocals": true, + "noEmitOnError": true, "strictFunctionTypes": false, "sourceMap": false, "checkJs": false, From 2750a993a4e2b19bb25668f7cf7cfbb3dac7a760 Mon Sep 17 00:00:00 2001 From: Roma Sosnovsky Date: Tue, 28 Apr 2026 13:39:14 +0300 Subject: [PATCH 7/7] fix --- extension/js/common/platform/catch.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/extension/js/common/platform/catch.ts b/extension/js/common/platform/catch.ts index 5b563c5a9a6..3da2f64f32c 100644 --- a/extension/js/common/platform/catch.ts +++ b/extension/js/common/platform/catch.ts @@ -49,6 +49,9 @@ export class Catch { if (e instanceof Error) { return `[typeof:Error:${e.name}] ${e.message}\n\n${e.stack}`; } + if (typeof e === 'object') { + return `[typeof:object:${Object.prototype.toString.call(e)}] ${Str.stringify(e)}`; + } return `[typeof:${typeof e}] ${Str.stringify(e)}`; }