From 3dc4ea8845d6e7960336079ab721ef4931fbabc9 Mon Sep 17 00:00:00 2001 From: larryrider Date: Wed, 6 May 2026 18:24:16 +0200 Subject: [PATCH 1/4] deps: update dependencies --- package.json | 27 +- yarn.lock | 983 ++++++++++++++++++++++----------------------------- 2 files changed, 435 insertions(+), 575 deletions(-) diff --git a/package.json b/package.json index 66adcf8..c76d299 100644 --- a/package.json +++ b/package.json @@ -29,22 +29,21 @@ "swagger:mail": "openapi-typescript http://localhost:3100/api-json -o ./src/mail/schema.ts && yarn format" }, "devDependencies": { - "@internxt/eslint-config-internxt": "2.1.0", - "@internxt/prettier-config": "internxt/prettier-config#v2.0.0", - "@types/node": "25.6.0", - "@vitest/coverage-istanbul": "4.1.4", - "eslint": "10.2.0", - "husky": "9.1.7", - "lint-staged": "16.4.0", - "openapi-typescript": "7.13.0", - "prettier": "3.8.2", - "rimraf": "6.1.3", - "typescript": "5.9.3", - "vitest": "4.1.4" + "@internxt/eslint-config-internxt": "^2.1.0", + "@internxt/prettier-config": "^2.0.1", + "@types/node": "^25.6.0", + "@vitest/coverage-istanbul": "^4.1.5", + "eslint": "^10.3.0", + "husky": "^9.1.7", + "lint-staged": "^17.0.2", + "openapi-typescript": "^7.13.0", + "prettier": "^3.8.3", + "rimraf": "^6.1.3", + "typescript": "^6.0.3", + "vitest": "^4.1.5" }, "dependencies": { - "axios": "1.15.2", - "internxt-crypto": "1.0.2" + "axios": "^1.16.0" }, "lint-staged": { "*.{js,jsx,tsx,ts}": [ diff --git a/yarn.lock b/yarn.lock index 27d464d..ce3c63e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,9 +12,9 @@ picocolors "^1.1.1" "@babel/compat-data@^7.28.6": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" - integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== + version "7.29.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.3.tgz#e3f5347f0589596c91d227ccb6a541d37fb1307b" + integrity sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg== "@babel/core@^7.29.0": version "7.29.0" @@ -105,9 +105,9 @@ "@babel/types" "^7.29.0" "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": - version "7.29.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.2.tgz#58bd50b9a7951d134988a1ae177a35ef9a703ba1" - integrity sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA== + version "7.29.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.3.tgz#116f70a77958307fceac27747573032f8a62f88e" + integrity sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA== dependencies: "@babel/types" "^7.29.0" @@ -141,18 +141,18 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" -"@emnapi/core@1.9.2": - version "1.9.2" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.9.2.tgz#3870265ecffc7352d01ead62d8d83d8358a2d034" - integrity sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA== +"@emnapi/core@1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467" + integrity sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw== dependencies: "@emnapi/wasi-threads" "1.2.1" tslib "^2.4.0" -"@emnapi/runtime@1.9.2": - version "1.9.2" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.9.2.tgz#8b469a3db160817cadb1de9050211a9d1ea84fa2" - integrity sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw== +"@emnapi/runtime@1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.10.0.tgz#4b260c0d3534204e98c6110b8db1a987d26ec87c" + integrity sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA== dependencies: tslib "^2.4.0" @@ -175,16 +175,7 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== -"@eslint/config-array@^0.23.3": - version "0.23.3" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.23.3.tgz#3f4a93dd546169c09130cbd10f2415b13a20a219" - integrity sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw== - dependencies: - "@eslint/object-schema" "^3.0.3" - debug "^4.3.1" - minimatch "^10.2.4" - -"@eslint/config-array@^0.23.4": +"@eslint/config-array@^0.23.5": version "0.23.5" resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.23.5.tgz#56e86d243049195d8acc0c06a1b3dfdc3fa3de95" integrity sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA== @@ -193,28 +184,14 @@ debug "^4.3.1" minimatch "^10.2.4" -"@eslint/config-helpers@^0.5.2": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.5.3.tgz#721fe6bbb90d74b0c80d6ff2428e5bbcb002becb" - integrity sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw== - dependencies: - "@eslint/core" "^1.1.1" - -"@eslint/config-helpers@^0.5.4": +"@eslint/config-helpers@^0.5.5": version "0.5.5" resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.5.5.tgz#ae16134e4792ac5fbdc533548a24ac1ea9f7f3ae" integrity sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w== dependencies: "@eslint/core" "^1.2.1" -"@eslint/core@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-1.1.1.tgz#450f3d2be2d463ccd51119544092256b4e88df32" - integrity sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ== - dependencies: - "@types/json-schema" "^7.0.15" - -"@eslint/core@^1.2.0", "@eslint/core@^1.2.1": +"@eslint/core@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@eslint/core/-/core-1.2.1.tgz#c1da7cd1b82fa8787f98b5629fb811848a1b63ce" integrity sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ== @@ -226,25 +203,12 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-10.0.1.tgz#1e8a876f50117af8ab67e47d5ad94d38d6622583" integrity sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA== -"@eslint/object-schema@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-3.0.3.tgz#5bf671e52e382e4adc47a9906f2699374637db6b" - integrity sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ== - "@eslint/object-schema@^3.0.5": version "3.0.5" resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-3.0.5.tgz#88e9bf4d11d2b19c082e78ebe7ce88724a5eb091" integrity sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw== -"@eslint/plugin-kit@^0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz#eb9e6689b56ce8bc1855bb33090e63f3fc115e8e" - integrity sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ== - dependencies: - "@eslint/core" "^1.1.1" - levn "^0.4.1" - -"@eslint/plugin-kit@^0.7.0": +"@eslint/plugin-kit@^0.7.1": version "0.7.1" resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz#c4125fd015eceeb09b793109fdbcd4dd0a02d346" integrity sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ== @@ -252,19 +216,27 @@ "@eslint/core" "^1.2.1" levn "^0.4.1" -"@humanfs/core@^0.19.1": - version "0.19.1" - resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" - integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== +"@humanfs/core@^0.19.2": + version "0.19.2" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.2.tgz#a8272ca03b2acf492670222b2320b6c421bfde60" + integrity sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA== + dependencies: + "@humanfs/types" "^0.15.0" "@humanfs/node@^0.16.6": - version "0.16.7" - resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.7.tgz#822cb7b3a12c5a240a24f621b5a2413e27a45f26" - integrity sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ== + version "0.16.8" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.8.tgz#8f800cccc13f4f8cd3116e2d9c0a94939da3e3ed" + integrity sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ== dependencies: - "@humanfs/core" "^0.19.1" + "@humanfs/core" "^0.19.2" + "@humanfs/types" "^0.15.0" "@humanwhocodes/retry" "^0.4.0" +"@humanfs/types@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@humanfs/types/-/types-0.15.0.tgz#f2a09f62012390b2bff3fc6fb248ddec8c09a090" + integrity sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q== + "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" @@ -275,7 +247,7 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== -"@internxt/eslint-config-internxt@2.1.0": +"@internxt/eslint-config-internxt@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@internxt/eslint-config-internxt/-/eslint-config-internxt-2.1.0.tgz#081fcd5e967706b140cd7fd7ea9abe32fc4919bf" integrity sha512-6tM+7Rc4H935W+9SvOG4CFvuEsiAGRmIO2w8dDGgTVaF3Ts+2Wisb7lTqQAtIMXVLcHve00qYtZJk20Ui1W4ag== @@ -285,14 +257,15 @@ eslint-config-prettier "^10.1.8" typescript-eslint "^8.57.1" -"@internxt/prettier-config@internxt/prettier-config#v2.0.0": - version "2.0.0" - resolved "https://codeload.github.com/internxt/prettier-config/tar.gz/66ff94f2d78b71884eac141ae026ca3892c6c4d6" +"@internxt/prettier-config@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@internxt/prettier-config/-/prettier-config-2.0.1.tgz#a25e7a16f62a990aed2bd1804e04140cc8c33e77" + integrity sha512-sCnOMX7GR7BYDJ5OH1RiV/JaOBLE3uhL6QN6tYhMKi7QXK/cnM/77qmDlIEBlhTNIFEMLFljSkc0vZEvf6m2xA== "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + version "0.1.6" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.6.tgz#8dc9afa2ac1506cb1a58f89940f1c124446c8df3" + integrity sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw== "@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.13", "@jridgewell/gen-mapping@^0.3.5": version "0.3.13" @@ -328,42 +301,17 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@napi-rs/wasm-runtime@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.3.tgz#1eeb8699770481306e5fcd84471f20fcb6177336" - integrity sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ== +"@napi-rs/wasm-runtime@^1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz#a46bbfedc29751b7170c5d23bc1d8ee8c7e3c1e1" + integrity sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow== dependencies: "@tybys/wasm-util" "^0.10.1" -"@noble/ciphers@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-2.1.1.tgz#c8c74fcda8c3d1f88797d0ecda24f9fc8b92b052" - integrity sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw== - -"@noble/curves@^2.0.1", "@noble/curves@~2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-2.0.1.tgz#64ba8bd5e8564a02942655602515646df1cdb3ad" - integrity sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw== - dependencies: - "@noble/hashes" "2.0.1" - -"@noble/hashes@2.0.1", "@noble/hashes@^2.0.1", "@noble/hashes@~2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-2.0.1.tgz#fc1a928061d1232b0a52bb754393c37a5216c89e" - integrity sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw== - -"@noble/post-quantum@^0.5.2": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@noble/post-quantum/-/post-quantum-0.5.4.tgz#bd1095647c61e4c8fd317fa8a3977db8cd28a4b9" - integrity sha512-leww0zzIirrvwaYMPI9fj6aRIlA/c6Y0/lifQQ1YOOyHEr0MNH3yYpjXeiVG+tWdPps4XxGclFWX2INPO3Yo5w== - dependencies: - "@noble/curves" "~2.0.0" - "@noble/hashes" "~2.0.0" - -"@oxc-project/types@=0.124.0": - version "0.124.0" - resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.124.0.tgz#1dfd7b3fbb98febc2f91b505f48c940db73c8701" - integrity sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg== +"@oxc-project/types@=0.127.0": + version "0.127.0" + resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.127.0.tgz#8374fcdfb4a641861218daa5700c447c00b66663" + integrity sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ== "@redocly/ajv@8.11.2": version "8.11.2" @@ -381,9 +329,9 @@ integrity sha512-gAy93Ddo01Z3bHuVdPWfCwzgfaYgMdaZPcfL7JZ7hWJoK9V0lXDbigTWkhiPFAaLWzbOJ+kbUQG1+XwIm0KRGQ== "@redocly/openapi-core@^1.34.6": - version "1.34.11" - resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.34.11.tgz#0d3d35fcc72ce528c9c833532734d3f0acb32c55" - integrity sha512-V09ayfnb5GyysmvARbt+voFZAjGcf7hSYxOYxSkCc4fbH/DTfq5YWoec8cflvmHHqyIFbqvmGKmYFzqhr9zxDg== + version "1.34.14" + resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.34.14.tgz#3b3ba0a6febe65e6a4f108af37da9ca97df0d678" + integrity sha512-y+xFx+Zz54Xhr8jUdnLENYnt7Y7GEDL6Q03ga7rTtX8DVwefX9H+hQEPgJp1nda7vdH+wJ9/HBVvyfBuW9x6rA== dependencies: "@redocly/ajv" "8.11.2" "@redocly/config" "0.22.0" @@ -395,102 +343,89 @@ pluralize "8.0.0" yaml-ast-parser "0.0.43" -"@rolldown/binding-android-arm64@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.15.tgz#ca20574c469ade7b941f90c9af5e83e7c67f06b7" - integrity sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA== - -"@rolldown/binding-darwin-arm64@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.15.tgz#ce2c5c7fc4958dfc94783dc09b3d09f3c2e1d072" - integrity sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg== - -"@rolldown/binding-darwin-x64@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.15.tgz#251ecdf1fdb751031cb6486907c105daaf9dab21" - integrity sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw== - -"@rolldown/binding-freebsd-x64@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.15.tgz#dbcfe95f409bf671a77bd83bff0fdc877d217728" - integrity sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw== - -"@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.15.tgz#ea002b45445be6f9ed1883a834b335bc2ccd510f" - integrity sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA== - -"@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.15.tgz#12b96e7e7821a9dc2cd5c670ad56882987ed5c62" - integrity sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w== - -"@rolldown/binding-linux-arm64-musl@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.15.tgz#738b0f62f0b65bf676dfe48595017f1883859d1f" - integrity sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ== - -"@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.15.tgz#3088b9fbc2783033985b558316f87f39281bc533" - integrity sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ== - -"@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.15.tgz#ac0aa6f1b72e3151d56c43145a71c745cf862a9a" - integrity sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ== - -"@rolldown/binding-linux-x64-gnu@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.15.tgz#b8cf27aa5be6da641c22dad5665d0240551d2dec" - integrity sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA== - -"@rolldown/binding-linux-x64-musl@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.15.tgz#4531f9eca77963935026634ba9b61c2535340534" - integrity sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw== - -"@rolldown/binding-openharmony-arm64@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.15.tgz#66ff691a65f9325171bced98e353b4cc4b0095c3" - integrity sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg== - -"@rolldown/binding-wasm32-wasi@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.15.tgz#7db6c90aa510eef65d7d0f14e8ca23775e8e5eee" - integrity sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q== - dependencies: - "@emnapi/core" "1.9.2" - "@emnapi/runtime" "1.9.2" - "@napi-rs/wasm-runtime" "^1.1.3" - -"@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.15.tgz#81f9097abbd4493cc13373b26f5a3da8461dbb47" - integrity sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA== - -"@rolldown/binding-win32-x64-msvc@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.15.tgz#cef11bc89149f3a77771727be75490fbb13ae193" - integrity sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g== - -"@rolldown/pluginutils@1.0.0-rc.15": - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.15.tgz#e75d7731593e195d23710f9ff49bf5c745c96682" - integrity sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g== - -"@scure/base@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-2.0.0.tgz#ba6371fddf92c2727e88ad6ab485db6e624f9a98" - integrity sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w== - -"@scure/bip39@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-2.0.1.tgz#47a6dc15e04faf200041239d46ae3bb7c3c96add" - integrity sha512-PsxdFj/d2AcJcZDX1FXN3dDgitDDTmwf78rKZq1a6c1P1Nan1X/Sxc7667zU3U+AN60g7SxxP0YCVw2H/hBycg== - dependencies: - "@noble/hashes" "2.0.1" - "@scure/base" "2.0.0" +"@rolldown/binding-android-arm64@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.17.tgz#0a502a88c39d0ffa81aa30b561dade6f6217dcc5" + integrity sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ== + +"@rolldown/binding-darwin-arm64@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.17.tgz#8b7f05ac9000ab19161a79a0346b1b64a1bc7ba3" + integrity sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw== + +"@rolldown/binding-darwin-x64@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.17.tgz#f8b465b3a4e992053890b162f1ae19e4f1719a6a" + integrity sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw== + +"@rolldown/binding-freebsd-x64@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.17.tgz#a8281e14fa9c243fe22dc2d0e54900e66b31935e" + integrity sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw== + +"@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.17.tgz#cd29cf869ddd4fac8d6929abf94b91ddb0494650" + integrity sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ== + +"@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.17.tgz#91c331236ec3728366218d61a62f0bd226546c6c" + integrity sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q== + +"@rolldown/binding-linux-arm64-musl@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.17.tgz#80108957db752e7826836e22240e56b8140e9684" + integrity sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg== + +"@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.17.tgz#1dce51148cbc6bab3c3f9157b5323d2a31aac924" + integrity sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA== + +"@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.17.tgz#d4a0d2e01d8d441e4ac3af3fa68eec17a7d0e9cd" + integrity sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA== + +"@rolldown/binding-linux-x64-gnu@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.17.tgz#0ac8b3139cefeea798ad147f30ea70572b133af1" + integrity sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA== + +"@rolldown/binding-linux-x64-musl@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.17.tgz#2af61bee087571728f58f1c47734bbbd41dd7050" + integrity sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw== + +"@rolldown/binding-openharmony-arm64@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.17.tgz#56c1afbf6c592819abf47b4a983987dc288b30c1" + integrity sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA== + +"@rolldown/binding-wasm32-wasi@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.17.tgz#5d112ff4dd0d268a60fb4e0eb3077e3ea2531f0d" + integrity sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA== + dependencies: + "@emnapi/core" "1.10.0" + "@emnapi/runtime" "1.10.0" + "@napi-rs/wasm-runtime" "^1.1.4" + +"@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.17.tgz#5125a85222d64a543201d28e16a395cc45bf4d17" + integrity sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA== + +"@rolldown/binding-win32-x64-msvc@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.17.tgz#fc6b78e759a0bb2054b5c0a3489da12b2cae54b4" + integrity sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg== + +"@rolldown/pluginutils@1.0.0-rc.17": + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.17.tgz#a89b30833fb628bc834fe2e89fea93a2da9fa69a" + integrity sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg== "@standard-schema/spec@^1.1.0": version "1.1.0" @@ -498,9 +433,9 @@ integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== "@tybys/wasm-util@^0.10.1": - version "0.10.1" - resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" - integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== + version "0.10.2" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.2.tgz#12b3a1b33db1f9cad4ddff1f604ab7dd00bf464e" + integrity sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg== dependencies: tslib "^2.4.0" @@ -532,113 +467,113 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/node@25.6.0": +"@types/node@^25.6.0": version "25.6.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-25.6.0.tgz#4e09bad9b469871f2d0f68140198cbd714f4edca" integrity sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ== dependencies: undici-types "~7.19.0" -"@typescript-eslint/eslint-plugin@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.1.tgz#ddfdfb30f8b5ccee7f3c21798b377c51370edd55" - integrity sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ== +"@typescript-eslint/eslint-plugin@8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.2.tgz#f37b2c189a0177141fe3de3b08f2a83991bfdbfa" + integrity sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ== dependencies: "@eslint-community/regexpp" "^4.12.2" - "@typescript-eslint/scope-manager" "8.57.1" - "@typescript-eslint/type-utils" "8.57.1" - "@typescript-eslint/utils" "8.57.1" - "@typescript-eslint/visitor-keys" "8.57.1" + "@typescript-eslint/scope-manager" "8.59.2" + "@typescript-eslint/type-utils" "8.59.2" + "@typescript-eslint/utils" "8.59.2" + "@typescript-eslint/visitor-keys" "8.59.2" ignore "^7.0.5" natural-compare "^1.4.0" - ts-api-utils "^2.4.0" + ts-api-utils "^2.5.0" -"@typescript-eslint/parser@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.57.1.tgz#d523e559b148264055c0a49a29d5f50c7de659c2" - integrity sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw== +"@typescript-eslint/parser@8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.59.2.tgz#e2fd0084baa5dd0c24cd789af1c72cbc3a7a1c62" + integrity sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ== dependencies: - "@typescript-eslint/scope-manager" "8.57.1" - "@typescript-eslint/types" "8.57.1" - "@typescript-eslint/typescript-estree" "8.57.1" - "@typescript-eslint/visitor-keys" "8.57.1" + "@typescript-eslint/scope-manager" "8.59.2" + "@typescript-eslint/types" "8.59.2" + "@typescript-eslint/typescript-estree" "8.59.2" + "@typescript-eslint/visitor-keys" "8.59.2" debug "^4.4.3" -"@typescript-eslint/project-service@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.57.1.tgz#16af9fe16eedbd7085e4fdc29baa73715c0c55c5" - integrity sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg== +"@typescript-eslint/project-service@8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.59.2.tgz#f8b8cbf8692e3a51c2c394acf8cf6900f7e755af" + integrity sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.57.1" - "@typescript-eslint/types" "^8.57.1" + "@typescript-eslint/tsconfig-utils" "^8.59.2" + "@typescript-eslint/types" "^8.59.2" debug "^4.4.3" -"@typescript-eslint/scope-manager@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.57.1.tgz#4524d7e7b420cb501807499684d435ae129aaf35" - integrity sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg== +"@typescript-eslint/scope-manager@8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.59.2.tgz#63cbd0af2e3180949d6be81122cc555bc71e736d" + integrity sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg== dependencies: - "@typescript-eslint/types" "8.57.1" - "@typescript-eslint/visitor-keys" "8.57.1" + "@typescript-eslint/types" "8.59.2" + "@typescript-eslint/visitor-keys" "8.59.2" -"@typescript-eslint/tsconfig-utils@8.57.1", "@typescript-eslint/tsconfig-utils@^8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.1.tgz#9233443ec716882a6f9e240fd900a73f0235f3d7" - integrity sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg== +"@typescript-eslint/tsconfig-utils@8.59.2", "@typescript-eslint/tsconfig-utils@^8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.2.tgz#6e92bc412083753185a79c9f1431e78169d9232f" + integrity sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw== -"@typescript-eslint/type-utils@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.57.1.tgz#c49af1347b5869ca85155547a8f34f84ab386fd9" - integrity sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA== +"@typescript-eslint/type-utils@8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.59.2.tgz#a60a1192a804fa472a92c41656853ac6a9ba7176" + integrity sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ== dependencies: - "@typescript-eslint/types" "8.57.1" - "@typescript-eslint/typescript-estree" "8.57.1" - "@typescript-eslint/utils" "8.57.1" + "@typescript-eslint/types" "8.59.2" + "@typescript-eslint/typescript-estree" "8.59.2" + "@typescript-eslint/utils" "8.59.2" debug "^4.4.3" - ts-api-utils "^2.4.0" - -"@typescript-eslint/types@8.57.1", "@typescript-eslint/types@^8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.57.1.tgz#54b27a8a25a7b45b4f978c3f8e00c4c78f11142c" - integrity sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ== - -"@typescript-eslint/typescript-estree@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.1.tgz#a9fd28d4a0ec896aa9a9a7e0cead62ea24f99e76" - integrity sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g== - dependencies: - "@typescript-eslint/project-service" "8.57.1" - "@typescript-eslint/tsconfig-utils" "8.57.1" - "@typescript-eslint/types" "8.57.1" - "@typescript-eslint/visitor-keys" "8.57.1" + ts-api-utils "^2.5.0" + +"@typescript-eslint/types@8.59.2", "@typescript-eslint/types@^8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.59.2.tgz#01caabcd7e4715c33ad5e11cab260829714d6b9c" + integrity sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q== + +"@typescript-eslint/typescript-estree@8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.2.tgz#6a217ef65b18dbd12c718fc86a675d1d7a1414cc" + integrity sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg== + dependencies: + "@typescript-eslint/project-service" "8.59.2" + "@typescript-eslint/tsconfig-utils" "8.59.2" + "@typescript-eslint/types" "8.59.2" + "@typescript-eslint/visitor-keys" "8.59.2" debug "^4.4.3" minimatch "^10.2.2" semver "^7.7.3" tinyglobby "^0.2.15" - ts-api-utils "^2.4.0" + ts-api-utils "^2.5.0" -"@typescript-eslint/utils@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.57.1.tgz#e40f5a7fcff02fd24092a7b52bd6ec029fb50465" - integrity sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ== +"@typescript-eslint/utils@8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.59.2.tgz#ff619a6a3075f4017fa91b8610b752a8ca3366aa" + integrity sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q== dependencies: "@eslint-community/eslint-utils" "^4.9.1" - "@typescript-eslint/scope-manager" "8.57.1" - "@typescript-eslint/types" "8.57.1" - "@typescript-eslint/typescript-estree" "8.57.1" + "@typescript-eslint/scope-manager" "8.59.2" + "@typescript-eslint/types" "8.59.2" + "@typescript-eslint/typescript-estree" "8.59.2" -"@typescript-eslint/visitor-keys@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.1.tgz#3af4f88118924d3be983d4b8ae84803f11fe4563" - integrity sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A== +"@typescript-eslint/visitor-keys@8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.2.tgz#5ccc486913cd347883d69158836b1189a660bfe6" + integrity sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA== dependencies: - "@typescript-eslint/types" "8.57.1" + "@typescript-eslint/types" "8.59.2" eslint-visitor-keys "^5.0.0" -"@vitest/coverage-istanbul@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@vitest/coverage-istanbul/-/coverage-istanbul-4.1.4.tgz#936eefc04b9050b477a24b22059a63d469a8cb84" - integrity sha512-Pyi4F8RnqU6hBGiIDhS/e8gVD4FRcUvZJ2AbFiIlmIxHlEIsKyCxGOqufCECobty/dXELcN8oIH4Gms3hVOCYA== +"@vitest/coverage-istanbul@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@vitest/coverage-istanbul/-/coverage-istanbul-4.1.5.tgz#c87f75d910ee6c0fa99ddf25a3d77119a92d9089" + integrity sha512-X4kQMDEWh9mA0IiLuigtdYv4kXe+W8KLTbucoz15lbyZRPAxT5l+hu0JizI7Am050+G9vQnB7QJNgYi2LnwV4w== dependencies: "@babel/core" "^7.29.0" "@istanbuljs/schema" "^0.1.3" @@ -651,63 +586,63 @@ obug "^2.1.1" tinyrainbow "^3.1.0" -"@vitest/expect@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-4.1.4.tgz#1507e51c53969723c99e8a7f054aa12cfa7c1a4d" - integrity sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww== +"@vitest/expect@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-4.1.5.tgz#5caab19535cfb04fbc37087c5608d46e74dc9292" + integrity sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw== dependencies: "@standard-schema/spec" "^1.1.0" "@types/chai" "^5.2.2" - "@vitest/spy" "4.1.4" - "@vitest/utils" "4.1.4" + "@vitest/spy" "4.1.5" + "@vitest/utils" "4.1.5" chai "^6.2.2" tinyrainbow "^3.1.0" -"@vitest/mocker@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-4.1.4.tgz#5d22e99d8dbacf2f77f7a4c30a6e17eece7f25ef" - integrity sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg== +"@vitest/mocker@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-4.1.5.tgz#9d5791733e4866cfb8af2d48ca371b127e7d2e93" + integrity sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw== dependencies: - "@vitest/spy" "4.1.4" + "@vitest/spy" "4.1.5" estree-walker "^3.0.3" magic-string "^0.30.21" -"@vitest/pretty-format@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-4.1.4.tgz#0ee79cd2ef8321330dabb8cc57ba9bce237e7183" - integrity sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A== +"@vitest/pretty-format@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-4.1.5.tgz#4c13d77a77e2931e44db95522ed5700bcf0570d4" + integrity sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g== dependencies: tinyrainbow "^3.1.0" -"@vitest/runner@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-4.1.4.tgz#8f884f265efabfdd8a5ee393cfe622a01ec849c2" - integrity sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ== +"@vitest/runner@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-4.1.5.tgz#a14dd2d2f48603f906dd52304a10c7fc623bb1de" + integrity sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ== dependencies: - "@vitest/utils" "4.1.4" + "@vitest/utils" "4.1.5" pathe "^2.0.3" -"@vitest/snapshot@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-4.1.4.tgz#600c04ee1c598d4e6ce219afae684ff21c3e187d" - integrity sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw== +"@vitest/snapshot@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-4.1.5.tgz#d07970d1448190ee5a258db6ab79c65b8018c13b" + integrity sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ== dependencies: - "@vitest/pretty-format" "4.1.4" - "@vitest/utils" "4.1.4" + "@vitest/pretty-format" "4.1.5" + "@vitest/utils" "4.1.5" magic-string "^0.30.21" pathe "^2.0.3" -"@vitest/spy@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-4.1.4.tgz#b955fcef98bcc746e7fc61d17d4725b43b33fa6d" - integrity sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ== +"@vitest/spy@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-4.1.5.tgz#fa7858ffab746fa9ac29496e626f5a0caf9a5a7f" + integrity sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ== -"@vitest/utils@4.1.4": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-4.1.4.tgz#9518fb0ad0903ae455e82e063fa18e7558aa6065" - integrity sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw== +"@vitest/utils@4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-4.1.5.tgz#20d6a6ae651a0dd33f945548921698d49701fa43" + integrity sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug== dependencies: - "@vitest/pretty-format" "4.1.4" + "@vitest/pretty-format" "4.1.5" convert-source-map "^2.0.0" tinyrainbow "^3.1.0" @@ -727,9 +662,9 @@ agent-base@^7.1.2: integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== ajv@^6.14.0: - version "6.14.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a" - integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw== + version "6.15.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.15.0.tgz#07e982c74626167aa7a2495c53817892d7139492" + integrity sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -773,12 +708,12 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -axios@1.15.2: - version "1.15.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.15.2.tgz#eb8fb6d30349abace6ade5b4cb4d9e8a0dc23e5b" - integrity sha512-wLrXxPtcrPTsNlJmKjkPnNPK2Ihe0hn0wGSaTEiHRPxwjvJwT3hKmXF4dpqxmPO9SoNb2FsYXj/xEo0gHN+D5A== +axios@^1.16.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.16.0.tgz#f8e5dd931cef2a5f8c32216d5784eda2f8750eb7" + integrity sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w== dependencies: - follow-redirects "^1.15.11" + follow-redirects "^1.16.0" form-data "^4.0.5" proxy-from-env "^2.1.0" @@ -792,35 +727,35 @@ balanced-match@^4.0.2: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== -baseline-browser-mapping@^2.9.0: - version "2.10.8" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.8.tgz#23d1cea1a85b181c2b8660b6cfe626dc2fb15630" - integrity sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ== +baseline-browser-mapping@^2.10.12: + version "2.10.27" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.27.tgz#fee941c2a0b42cdf83c6427e4c830b1d0bdab2c3" + integrity sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA== brace-expansion@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" - integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.1.0.tgz#4f41a41190216ee36067ec381526fe9539c4f0ae" + integrity sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w== dependencies: balanced-match "^1.0.0" -brace-expansion@^5.0.2: - version "5.0.4" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.4.tgz#614daaecd0a688f660bbbc909a8748c3d80d4336" - integrity sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg== +brace-expansion@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.5.tgz#dcc3a37116b79f3e1b46db994ced5d570e930fdb" + integrity sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ== dependencies: balanced-match "^4.0.2" browserslist@^4.24.0: - version "4.28.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" - integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== + version "4.28.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2" + integrity sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg== dependencies: - baseline-browser-mapping "^2.9.0" - caniuse-lite "^1.0.30001759" - electron-to-chromium "^1.5.263" - node-releases "^2.0.27" - update-browserslist-db "^1.2.0" + baseline-browser-mapping "^2.10.12" + caniuse-lite "^1.0.30001782" + electron-to-chromium "^1.5.328" + node-releases "^2.0.36" + update-browserslist-db "^1.2.3" call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" @@ -830,10 +765,10 @@ call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: es-errors "^1.3.0" function-bind "^1.1.2" -caniuse-lite@^1.0.30001759: - version "1.0.30001780" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz#0e413de292808868a62ed9118822683fa120a110" - integrity sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ== +caniuse-lite@^1.0.30001782: + version "1.0.30001792" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz#ca8bb9be244835a335e2018272ce7223691873c5" + integrity sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw== chai@^6.2.2: version "6.2.2" @@ -852,7 +787,7 @@ cli-cursor@^5.0.0: dependencies: restore-cursor "^5.0.0" -cli-truncate@^5.0.0: +cli-truncate@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-5.2.0.tgz#c8e72aaca8339c773d128c36e0a17c6315b694eb" integrity sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw== @@ -865,11 +800,6 @@ colorette@1.4.0: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== -colorette@^2.0.20: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -877,11 +807,6 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@^14.0.3: - version "14.0.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-14.0.3.tgz#425d79b48f9af82fcd9e4fc1ea8af6c5ec07bbc2" - integrity sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw== - convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" @@ -927,10 +852,10 @@ dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -electron-to-chromium@^1.5.263: - version "1.5.313" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.313.tgz#193e9ae2c2ab6915acb41e833068381e4ef0b3e4" - integrity sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA== +electron-to-chromium@^1.5.328: + version "1.5.351" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.351.tgz#7314fbb5b4835a1869feaec09665541b6a84cd37" + integrity sha512-9D7Iqx8RImSvCnOsj86rCH6eQjZFQoM04Jn6HnZVM0Nu/G58/gmKYQ1d12MZTbjQbQSTGI8nwEy07ErsA2slLA== emoji-regex@^10.3.0: version "10.6.0" @@ -953,9 +878,9 @@ es-errors@^1.3.0: integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-module-lexer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.0.0.tgz#f657cd7a9448dcdda9c070a3cb75e5dc1e85f5b1" - integrity sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.1.0.tgz#1dfcbb5ea3bbfb63f28e1fc3676c3676d1c9624c" + integrity sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ== es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.1" @@ -1009,17 +934,17 @@ eslint-visitor-keys@^5.0.0, eslint-visitor-keys@^5.0.1: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz#9e3c9489697824d2d4ce3a8ad12628f91e9f59be" integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== -eslint@10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-10.2.0.tgz#711c80d32fc3fdd3a575bb93977df43887c3ec8e" - integrity sha512-+L0vBFYGIpSNIt/KWTpFonPrqYvgKw1eUI5Vn7mEogrQcWtWYtNQ7dNqC+px/J0idT3BAkiWrhfS7k+Tum8TUA== +eslint@^10.0.3, eslint@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-10.3.0.tgz#ed5b810eb8e0191bf24bddcf9cdb45b974e0a16d" + integrity sha512-XbEXaRva5cF0ZQB8w6MluHA0kZZfV2DuCMJ3ozyEOHLwDpZX2Lmm/7Pp0xdJmI0GL1W05VH5VwIFHEm1Vcw2gw== dependencies: "@eslint-community/eslint-utils" "^4.8.0" "@eslint-community/regexpp" "^4.12.2" - "@eslint/config-array" "^0.23.4" - "@eslint/config-helpers" "^0.5.4" - "@eslint/core" "^1.2.0" - "@eslint/plugin-kit" "^0.7.0" + "@eslint/config-array" "^0.23.5" + "@eslint/config-helpers" "^0.5.5" + "@eslint/core" "^1.2.1" + "@eslint/plugin-kit" "^0.7.1" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" "@humanwhocodes/retry" "^0.4.2" @@ -1045,43 +970,7 @@ eslint@10.2.0: natural-compare "^1.4.0" optionator "^0.9.3" -eslint@^10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-10.0.3.tgz#360a7de7f2706eb8a32caa17ca983f0089efe694" - integrity sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ== - dependencies: - "@eslint-community/eslint-utils" "^4.8.0" - "@eslint-community/regexpp" "^4.12.2" - "@eslint/config-array" "^0.23.3" - "@eslint/config-helpers" "^0.5.2" - "@eslint/core" "^1.1.1" - "@eslint/plugin-kit" "^0.6.1" - "@humanfs/node" "^0.16.6" - "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.4.2" - "@types/estree" "^1.0.6" - ajv "^6.14.0" - cross-spawn "^7.0.6" - debug "^4.3.2" - escape-string-regexp "^4.0.0" - eslint-scope "^9.1.2" - eslint-visitor-keys "^5.0.1" - espree "^11.1.1" - esquery "^1.7.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^8.0.0" - find-up "^5.0.0" - glob-parent "^6.0.2" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - json-stable-stringify-without-jsonify "^1.0.1" - minimatch "^10.2.4" - natural-compare "^1.4.0" - optionator "^0.9.3" - -espree@^11.1.1, espree@^11.2.0: +espree@^11.2.0: version "11.2.0" resolved "https://registry.yarnpkg.com/espree/-/espree-11.2.0.tgz#01d5e47dc332aaba3059008362454a8cc34ccaa5" integrity sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw== @@ -1121,7 +1010,7 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -eventemitter3@^5.0.1: +eventemitter3@^5.0.4: version "5.0.4" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.4.tgz#a86d66170433712dde814707ac52b5271ceb1feb" integrity sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw== @@ -1179,12 +1068,7 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.4.2.tgz#f5c23c107f0f37de8dbdf24f13722b3b98d52726" integrity sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA== -flexsearch@^0.8.205: - version "0.8.212" - resolved "https://registry.yarnpkg.com/flexsearch/-/flexsearch-0.8.212.tgz#b9509af778a991b938292e36fe0809a4ece4b940" - integrity sha512-wSyJr1GUWoOOIISRu+X2IXiOcVfg9qqBRyCPRUdLMIGJqPzMo+jMRlvE83t14v1j0dRMEaBbER/adQjp6Du2pw== - -follow-redirects@^1.15.11: +follow-redirects@^1.16.0: version "1.16.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.16.0.tgz#28474a159d3b9d11ef62050a14ed60e4df6d61bc" integrity sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw== @@ -1282,15 +1166,10 @@ has-tostringtag@^1.0.2: dependencies: has-symbols "^1.0.3" -hash-wasm@^4.12.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/hash-wasm/-/hash-wasm-4.12.0.tgz#f9f1a9f9121e027a9acbf6db5d59452ace1ef9bb" - integrity sha512-+/2B2rYLb48I/evdOIhP+K/DD2ca2fgBjp6O+GBEnCDk2e4rpeXIK8GvIyRPjTezgmWn9gmKwkQjjx6BtqDHVQ== - hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + version "2.0.3" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.3.tgz#5e5c2b15b60370a4c7930c383dfb76bf17bc403c" + integrity sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg== dependencies: function-bind "^1.1.2" @@ -1307,16 +1186,11 @@ https-proxy-agent@7.0.6: agent-base "^7.1.2" debug "4" -husky@9.1.7, husky@^9.1.7: +husky@^9.1.7: version "9.1.7" resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== -idb@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/idb/-/idb-8.0.3.tgz#c91e558f15a8d53f1d7f53a094d226fc3ad71fd9" - integrity sha512-LtwtVyVYO5BqRvcsKuB2iUMnHwPVByPCXFXOpuU96IZPPoPN6xjOGxZQ74pgSVVLQWtUOYgyeL4GE98BY5D3wg== - ignore@^5.2.0: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" @@ -1337,22 +1211,6 @@ index-to-position@^1.1.0: resolved "https://registry.yarnpkg.com/index-to-position/-/index-to-position-1.2.0.tgz#c800eb34dacf4dbf96b9b06c7eb78d5f704138b4" integrity sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw== -internxt-crypto@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/internxt-crypto/-/internxt-crypto-1.0.2.tgz#983fe991dfbb00a453e93070bb34049a88a94707" - integrity sha512-F9PuXci0eU1wlgDwqEbGR7hVDNS0MX8VNh/W+pdpR4ZsEsjRDBrOD2g1DvViR2woCxPiu1AW9Wwekpw2YVKfnA== - dependencies: - "@noble/ciphers" "^2.1.1" - "@noble/curves" "^2.0.1" - "@noble/hashes" "^2.0.1" - "@noble/post-quantum" "^0.5.2" - "@scure/bip39" "^2.0.1" - flexsearch "^0.8.205" - hash-wasm "^4.12.0" - husky "^9.1.7" - idb "^8.0.3" - uuid "^13.0.0" - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -1535,29 +1393,28 @@ lightningcss@^1.32.0: lightningcss-win32-arm64-msvc "1.32.0" lightningcss-win32-x64-msvc "1.32.0" -lint-staged@16.4.0: - version "16.4.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-16.4.0.tgz#a00b0e3abff59239cef6d7d9341e8f8473308e23" - integrity sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw== +lint-staged@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-17.0.2.tgz#722692fe789eb5240f5bf0851aa285cbf359bce3" + integrity sha512-Rbr6rdmbCn1fIDHBZpn0madg0hEkdlh+QwajnL3Qq0ZUq/icAJfLGj9BVBajAXi7657ZzKQ7kobGP9S5XOHYRw== dependencies: - commander "^14.0.3" - listr2 "^9.0.5" - picomatch "^4.0.3" + listr2 "^10.2.1" + picomatch "^4.0.4" string-argv "^0.3.2" - tinyexec "^1.0.4" - yaml "^2.8.2" + tinyexec "^1.1.2" + optionalDependencies: + yaml "^2.8.4" -listr2@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-9.0.5.tgz#92df7c4416a6da630eb9ef46da469b70de97b316" - integrity sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g== +listr2@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-10.2.1.tgz#fb44e1e9e5f8b15ab817296d45149d295c47bee9" + integrity sha512-7I5knELsJKTUjXG+A6BkKAiGkW1i25fNa/xlUl9hFtk15WbE9jndA89xu5FzQKrY5llajE1hfZZFMILXkDHk/Q== dependencies: - cli-truncate "^5.0.0" - colorette "^2.0.20" - eventemitter3 "^5.0.1" + cli-truncate "^5.2.0" + eventemitter3 "^5.0.4" log-update "^6.1.0" rfdc "^1.4.1" - wrap-ansi "^9.0.0" + wrap-ansi "^10.0.0" locate-path@^6.0.0: version "6.0.0" @@ -1578,9 +1435,9 @@ log-update@^6.1.0: wrap-ansi "^9.0.0" lru-cache@^11.0.0: - version "11.2.7" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.7.tgz#9127402617f34cd6767b96daee98c28e74458d35" - integrity sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA== + version "11.3.6" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.3.6.tgz#f0306ad6e9f0a5dc25b16aeba4e8f57b7ec2df55" + integrity sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A== lru-cache@^5.1.1: version "5.1.1" @@ -1642,11 +1499,11 @@ minimatch@5.1.9: brace-expansion "^2.0.1" minimatch@^10.2.2, minimatch@^10.2.4: - version "10.2.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.4.tgz#465b3accbd0218b8281f5301e27cedc697f96fde" - integrity sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg== + version "10.2.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.5.tgz#bd48687a0be38ed2961399105600f832095861d1" + integrity sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg== dependencies: - brace-expansion "^5.0.2" + brace-expansion "^5.0.5" minipass@^7.1.2, minipass@^7.1.3: version "7.1.3" @@ -1659,19 +1516,19 @@ ms@^2.1.3: integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== nanoid@^3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" - integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + version "3.3.12" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.12.tgz#ab3d912e217a6d0a514f00a72a16543a28982c05" + integrity sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -node-releases@^2.0.27: - version "2.0.36" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.36.tgz#99fd6552aaeda9e17c4713b57a63964a2e325e9d" - integrity sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA== +node-releases@^2.0.36: + version "2.0.38" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.38.tgz#791569b9e4424a044e12c3abfad418ed83ce9947" + integrity sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw== obug@^2.1.1: version "2.1.1" @@ -1685,7 +1542,7 @@ onetime@^7.0.0: dependencies: mimic-function "^5.0.0" -openapi-typescript@7.13.0: +openapi-typescript@^7.13.0: version "7.13.0" resolved "https://registry.yarnpkg.com/openapi-typescript/-/openapi-typescript-7.13.0.tgz#5d0dc5e95d648fba85b15351a0b91c5815d8360b" integrity sha512-EFP392gcqXS7ntPvbhBzbF8TyBA+baIYEm791Hy5YkjDYKTnk/Tn5OQeKm5BIZvJihpp8Zzr4hzx0Irde1LNGQ== @@ -1775,7 +1632,7 @@ pluralize@8.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -postcss@^8.5.8: +postcss@^8.5.10: version "8.5.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.14.tgz#a66c2d7808fadf69ebb5b84a03f8bafd76c4919c" integrity sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg== @@ -1789,10 +1646,10 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.8.2.tgz#4f52e502193c9aa5b384c3d00852003e551bbd9f" - integrity sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q== +prettier@^3.8.3: + version "3.8.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.8.3.tgz#560f2de55bf01b4c0503bc629d5df99b9a1d09b0" + integrity sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw== proxy-from-env@^2.1.0: version "2.1.0" @@ -1822,7 +1679,7 @@ rfdc@^1.4.1: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== -rimraf@6.1.3: +rimraf@^6.1.3: version "6.1.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.1.3.tgz#afbee236b3bd2be331d4e7ce4493bac1718981af" integrity sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA== @@ -1830,29 +1687,29 @@ rimraf@6.1.3: glob "^13.0.3" package-json-from-dist "^1.0.1" -rolldown@1.0.0-rc.15: - version "1.0.0-rc.15" - resolved "https://registry.yarnpkg.com/rolldown/-/rolldown-1.0.0-rc.15.tgz#ea3526443b2dbe834e9f8f6c1fde6232ec687170" - integrity sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g== +rolldown@1.0.0-rc.17: + version "1.0.0-rc.17" + resolved "https://registry.yarnpkg.com/rolldown/-/rolldown-1.0.0-rc.17.tgz#c524fc22f6bb37b5588aec862ab1ee11382610f3" + integrity sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA== dependencies: - "@oxc-project/types" "=0.124.0" - "@rolldown/pluginutils" "1.0.0-rc.15" + "@oxc-project/types" "=0.127.0" + "@rolldown/pluginutils" "1.0.0-rc.17" optionalDependencies: - "@rolldown/binding-android-arm64" "1.0.0-rc.15" - "@rolldown/binding-darwin-arm64" "1.0.0-rc.15" - "@rolldown/binding-darwin-x64" "1.0.0-rc.15" - "@rolldown/binding-freebsd-x64" "1.0.0-rc.15" - "@rolldown/binding-linux-arm-gnueabihf" "1.0.0-rc.15" - "@rolldown/binding-linux-arm64-gnu" "1.0.0-rc.15" - "@rolldown/binding-linux-arm64-musl" "1.0.0-rc.15" - "@rolldown/binding-linux-ppc64-gnu" "1.0.0-rc.15" - "@rolldown/binding-linux-s390x-gnu" "1.0.0-rc.15" - "@rolldown/binding-linux-x64-gnu" "1.0.0-rc.15" - "@rolldown/binding-linux-x64-musl" "1.0.0-rc.15" - "@rolldown/binding-openharmony-arm64" "1.0.0-rc.15" - "@rolldown/binding-wasm32-wasi" "1.0.0-rc.15" - "@rolldown/binding-win32-arm64-msvc" "1.0.0-rc.15" - "@rolldown/binding-win32-x64-msvc" "1.0.0-rc.15" + "@rolldown/binding-android-arm64" "1.0.0-rc.17" + "@rolldown/binding-darwin-arm64" "1.0.0-rc.17" + "@rolldown/binding-darwin-x64" "1.0.0-rc.17" + "@rolldown/binding-freebsd-x64" "1.0.0-rc.17" + "@rolldown/binding-linux-arm-gnueabihf" "1.0.0-rc.17" + "@rolldown/binding-linux-arm64-gnu" "1.0.0-rc.17" + "@rolldown/binding-linux-arm64-musl" "1.0.0-rc.17" + "@rolldown/binding-linux-ppc64-gnu" "1.0.0-rc.17" + "@rolldown/binding-linux-s390x-gnu" "1.0.0-rc.17" + "@rolldown/binding-linux-x64-gnu" "1.0.0-rc.17" + "@rolldown/binding-linux-x64-musl" "1.0.0-rc.17" + "@rolldown/binding-openharmony-arm64" "1.0.0-rc.17" + "@rolldown/binding-wasm32-wasi" "1.0.0-rc.17" + "@rolldown/binding-win32-arm64-msvc" "1.0.0-rc.17" + "@rolldown/binding-win32-x64-msvc" "1.0.0-rc.17" semver@^6.3.1: version "6.3.1" @@ -1913,9 +1770,9 @@ stackback@0.0.2: integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== std-env@^4.0.0-rc.1: - version "4.0.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-4.0.0.tgz#ba3dc31c3a46bc5ba21138aa20a6a4ceb5bb9b7e" - integrity sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ== + version "4.1.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-4.1.0.tgz#45899abc590d86d682e87f0acd1033a75084cd3f" + integrity sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ== string-argv@^0.3.2: version "0.3.2" @@ -1932,9 +1789,9 @@ string-width@^7.0.0: strip-ansi "^7.1.0" string-width@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-8.2.0.tgz#bdb6a9bd6d7800db635adae96cdb0443fec56c42" - integrity sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw== + version "8.2.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-8.2.1.tgz#165089cfa527cc88fbc23dd73313f5e334af1ea1" + integrity sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA== dependencies: get-east-asian-width "^1.5.0" strip-ansi "^7.1.2" @@ -1963,28 +1820,28 @@ tinybench@^2.9.0: resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== -tinyexec@^1.0.2, tinyexec@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-1.0.4.tgz#6c60864fe1d01331b2f17c6890f535d7e5385408" - integrity sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw== +tinyexec@^1.0.2, tinyexec@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-1.1.2.tgz#11feef204b706d4668ca4013db29f3bd64f5c4dc" + integrity sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA== -tinyglobby@^0.2.15: - version "0.2.15" - resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" - integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== +tinyglobby@^0.2.15, tinyglobby@^0.2.16: + version "0.2.16" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.16.tgz#1c3b7eb953fce42b226bc5a1ee06428281aff3d6" + integrity sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg== dependencies: fdir "^6.5.0" - picomatch "^4.0.3" + picomatch "^4.0.4" tinyrainbow@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-3.1.0.tgz#1d8a623893f95cf0a2ddb9e5d11150e191409421" integrity sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw== -ts-api-utils@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8" - integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== +ts-api-utils@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.5.0.tgz#4acd4a155e22734990a5ed1fe9e97f113bcb37c1" + integrity sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA== tslib@^2.4.0: version "2.8.1" @@ -2004,26 +1861,26 @@ type-fest@^4.39.1: integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== typescript-eslint@^8.57.1: - version "8.57.1" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.57.1.tgz#573f97d3e48bbb67290b47dde1b7cb3b5d01dc4f" - integrity sha512-fLvZWf+cAGw3tqMCYzGIU6yR8K+Y9NT2z23RwOjlNFF2HwSB3KhdEFI5lSBv8tNmFkkBShSjsCjzx1vahZfISA== + version "8.59.2" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.59.2.tgz#e24b4f7232e20112e40572dba162a829a738ce98" + integrity sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ== dependencies: - "@typescript-eslint/eslint-plugin" "8.57.1" - "@typescript-eslint/parser" "8.57.1" - "@typescript-eslint/typescript-estree" "8.57.1" - "@typescript-eslint/utils" "8.57.1" + "@typescript-eslint/eslint-plugin" "8.59.2" + "@typescript-eslint/parser" "8.59.2" + "@typescript-eslint/typescript-estree" "8.59.2" + "@typescript-eslint/utils" "8.59.2" -typescript@5.9.3: - version "5.9.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" - integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== +typescript@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-6.0.3.tgz#90251dc007916e972786cb94d74d15b185577d21" + integrity sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw== undici-types@~7.19.0: version "7.19.2" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.19.2.tgz#1b67fc26d0f157a0cba3a58a5b5c1e2276b8ba2a" integrity sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg== -update-browserslist-db@^1.2.0: +update-browserslist-db@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== @@ -2043,36 +1900,31 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -uuid@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-13.0.0.tgz#263dc341b19b4d755eb8fe36b78d95a6b65707e8" - integrity sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w== - "vite@^6.0.0 || ^7.0.0 || ^8.0.0": - version "8.0.8" - resolved "https://registry.yarnpkg.com/vite/-/vite-8.0.8.tgz#4e26a9bba77c4b27a00b6b10100a7dab48d546a3" - integrity sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw== + version "8.0.10" + resolved "https://registry.yarnpkg.com/vite/-/vite-8.0.10.tgz#fb31868526ec874101fac084172a2cdc6776319b" + integrity sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw== dependencies: lightningcss "^1.32.0" picomatch "^4.0.4" - postcss "^8.5.8" - rolldown "1.0.0-rc.15" - tinyglobby "^0.2.15" + postcss "^8.5.10" + rolldown "1.0.0-rc.17" + tinyglobby "^0.2.16" optionalDependencies: fsevents "~2.3.3" -vitest@4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-4.1.4.tgz#330a3798ce307f88d3eea373e61a5f14da8f3bb1" - integrity sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg== - dependencies: - "@vitest/expect" "4.1.4" - "@vitest/mocker" "4.1.4" - "@vitest/pretty-format" "4.1.4" - "@vitest/runner" "4.1.4" - "@vitest/snapshot" "4.1.4" - "@vitest/spy" "4.1.4" - "@vitest/utils" "4.1.4" +vitest@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-4.1.5.tgz#cda189c0cd9dd1c920be477c0f371b64ec14782a" + integrity sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg== + dependencies: + "@vitest/expect" "4.1.5" + "@vitest/mocker" "4.1.5" + "@vitest/pretty-format" "4.1.5" + "@vitest/runner" "4.1.5" + "@vitest/snapshot" "4.1.5" + "@vitest/spy" "4.1.5" + "@vitest/utils" "4.1.5" es-module-lexer "^2.0.0" expect-type "^1.3.0" magic-string "^0.30.21" @@ -2107,6 +1959,15 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== +wrap-ansi@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-10.0.0.tgz#b83ddcc14dbc5596f1b07e153bf6f863c1acbb57" + integrity sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ== + dependencies: + ansi-styles "^6.2.3" + string-width "^8.2.0" + strip-ansi "^7.1.2" + wrap-ansi@^9.0.0: version "9.0.2" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.2.tgz#956832dea9494306e6d209eb871643bb873d7c98" @@ -2126,10 +1987,10 @@ yaml-ast-parser@0.0.43: resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== -yaml@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" - integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== +yaml@^2.8.4: + version "2.8.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.4.tgz#4b5f411dd25f9544914d8673d4da7f29248e5e2e" + integrity sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog== yargs-parser@^21.1.1: version "21.1.1" From 1b283e69a0d2c3a4065f64301fe2682a1fdc1dbb Mon Sep 17 00:00:00 2001 From: larryrider Date: Wed, 6 May 2026 18:24:38 +0200 Subject: [PATCH 2/4] chore: update tsconfig --- tsconfig.json | 78 ++++++++------------------------------------------- 1 file changed, 11 insertions(+), 67 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index c379cd8..01ee747 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,72 +1,16 @@ { "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */, - "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, - // "lib": [], /* Specify library files to be included in the compilation. */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ - "declaration": true /* Generates corresponding '.d.ts' file. */, - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - // "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./dist" /* Redirect output structure to the directory. */, - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an 'override' modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - "baseUrl": "./" /* Base directory to resolve non-absolute module names. */, - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "skipLibCheck": true /* Skip type checking of declaration files. */, - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + "target": "ESNext", + "module": "commonjs", + "lib": ["ESNext"], + "declaration": true, + "outDir": "./dist", + "rootDir": "./src", + "strict": true, + "types": ["node"], + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true }, "include": ["src"] } From 1d3d8a4c3012f24d255391e92c99142e5bfb7a44 Mon Sep 17 00:00:00 2001 From: larryrider Date: Wed, 6 May 2026 18:33:36 +0200 Subject: [PATCH 3/4] refactor: removed crypto functionality --- src/mail/api.ts | 227 -------------------------- src/mail/crypto.ts | 122 -------------- src/mail/index.ts | 211 +++++++++++++++++++++++- src/mail/mail.ts | 272 ------------------------------- src/mail/types.ts | 59 +++++++ test/mail/index.test.ts | 351 ---------------------------------------- 6 files changed, 268 insertions(+), 974 deletions(-) delete mode 100644 src/mail/api.ts delete mode 100644 src/mail/crypto.ts delete mode 100644 src/mail/mail.ts delete mode 100644 test/mail/index.test.ts diff --git a/src/mail/api.ts b/src/mail/api.ts deleted file mode 100644 index c39f90e..0000000 --- a/src/mail/api.ts +++ /dev/null @@ -1,227 +0,0 @@ -import { ApiSecurity, ApiUrl, AppDetails } from '../shared'; -import { headersWithToken } from '../shared/headers'; -import { HttpClient } from '../shared/http/client'; -import { - EncryptedKeystore, - KeystoreType, - HybridEncryptedEmail, - PwdProtectedEmail, - RecipientWithPublicKey, - base64ToUint8Array, - EmailPublicParameters, -} from 'internxt-crypto'; -import { - MailboxResponse, - EmailListResponse, - EmailResponse, - EmailCreatedResponse, - SendEmailRequest, - DraftEmailRequest, - UpdateEmailRequest, - ListEmailsQuery, - EmailDomainsResponse, - SetupMailAccountPayload, - SearchFiltersQuery, - MailAccountKeysResponse, -} from './types'; - -export class MailApi { - private readonly client: HttpClient; - private readonly appDetails: AppDetails; - private readonly apiSecurity: ApiSecurity; - private readonly apiUrl: ApiUrl; - - public static client(apiUrl: ApiUrl, appDetails: AppDetails, apiSecurity: ApiSecurity) { - return new MailApi(apiUrl, appDetails, apiSecurity); - } - - private constructor(apiUrl: ApiUrl, appDetails: AppDetails, apiSecurity: ApiSecurity) { - this.client = HttpClient.create(apiUrl, apiSecurity.unauthorizedCallback); - this.appDetails = appDetails; - this.apiSecurity = apiSecurity; - this.apiUrl = apiUrl; - } - - /** - * Uploads encrypted keystore to the server - * - * @param keystore - The encrypted keystore - * @returns Server response - */ - async uploadKeystore(keystore: EncryptedKeystore): Promise { - return this.client.post('/keystore', { encryptedKeystore: keystore }, this.headers()); - } - - /** - * Requests encrypted keystore from the server - * - * @param userEmail - The email of the user - * @param keystoreType - The type of the keystore - * @returns The encrypted keystore - */ - async downloadKeystore(userEmail: string, keystoreType: KeystoreType): Promise { - return this.client.getWithParams('/user/keystore', { userEmail, keystoreType }, this.headers()); - } - - /** - * Requests users with corresponding public keys from the server - * - * @param emails - The emails of the users - * @returns Users with corresponding public keys - */ - async getUsersWithPublicKeys(emails: string[]): Promise { - const response = await this.client.post<{ publicKey: string; email: string }[]>( - '/users/public-keys', - { emails }, - this.headers(), - ); - - const result = await Promise.all( - response.map(async (item) => { - const publicHybridKey = base64ToUint8Array(item.publicKey); - return { email: item.email, publicHybridKey }; - }), - ); - - return result; - } - - /** - * Sends the encrypted emails to the server - * - * @param emails - The encrypted emails - * @param params - The public parameters of the email - * @returns Server response - */ - async sendE2EEmails(emails: HybridEncryptedEmail[], params: EmailPublicParameters): Promise { - return this.client.post('/emails', { emails, params }, this.headers()); - } - - /** - * Sends the password-protected email to the server - * - * @param email - The password-protected email - * @param params - The public parameters of the email - * @returns Server response - */ - async sendE2EPasswordProtectedEmail(email: PwdProtectedEmail, params: EmailPublicParameters): Promise { - return this.client.post('/emails', { email, params }, this.headers()); - } - - async search(filters: SearchFiltersQuery): Promise { - return this.client.post('/email/search', filters, this.headers()); - } - - /** - * Gets the mailboxes of the user - * - * @returns The mailboxes of the user - `MailboxResponse[]` - */ - async getMailboxes(): Promise { - return this.client.get('/email/mailboxes', this.headers()); - } - - /** - * Lists emails of the user - * - * @param query - The query to filter emails (e.g. mailbox, limit, etc.) - * @returns The list of emails - `EmailListResponse` - */ - async listEmails(query?: ListEmailsQuery): Promise { - return this.client.getWithParams('/email', query ?? {}, this.headers()); - } - - /** - * Gets the email with the corresponding id - * - * @param id - The id of the email - * @returns The email with the corresponding id - `EmailResponse` - */ - async getEmail(id: string): Promise { - return this.client.get(`/email/${id}`, this.headers()); - } - - /** - * Deletes the email with the corresponding id - * - * @param id - The id of the email to delete - * @returns A promise that resolves when the email is deleted - */ - async deleteEmail(id: string): Promise { - return this.client.delete(`/email/${id}`, this.headers()); - } - - /** - * Updates the email with the corresponding id - * - * @param id - The id of the email to update - * @param body - The new body of the email - * @returns A promise that resolves when the email is updated - */ - async updateEmail(id: string, body: UpdateEmailRequest): Promise { - return this.client.patch(`/email/${id}`, body, this.headers()); - } - - /** - * Sends an email to the specified recipients - * - * @param body - The body of the email to send - * @returns The created email - */ - async sendEmail(body: SendEmailRequest): Promise { - return this.client.post('/email/send', body, this.headers()); - } - - /** - * Saves a draft email - * - * @param body - The body of the draft email to save - * @returns The created email - `EmailCreatedResponse` - */ - async saveDraft(body: DraftEmailRequest): Promise { - return this.client.post('/email/drafts', body, this.headers()); - } - - /** - * Returns the list of active domains for the email gateway - * - * @returns The list of active domains - `ActiveDomainsResponse` - */ - async getActiveDomains(): Promise { - return this.client.get('/email/domains', this.headers()); - } - - /** - * Sets up a mail account for the user - * - * @param payload - Set of details for mail account setup - * @returns A promise that resolves with the created mail account address - */ - async setupMailAccount(payload: SetupMailAccountPayload): Promise<{ address: string }> { - return this.client.post('/users/me/mail-account', payload, this.headers()); - } - - /** - * Gets the mail account keys for the given address - * - * @param address - The mail address whose keys should be retrieved - * @returns The public, encrypted private and recovery keys plus the salt - */ - async getMailAccountKeys(address: string): Promise { - return this.client.getWithParams('/users/me/mail-account/keys', { address }, this.headers()); - } - - /** - * Returns the needed headers for the module requests - * @private - */ - private headers() { - return headersWithToken({ - clientName: this.appDetails.clientName, - clientVersion: this.appDetails.clientVersion, - token: this.apiSecurity.token, - desktopToken: this.appDetails.desktopHeader, - customHeaders: this.appDetails.customHeaders, - }); - } -} diff --git a/src/mail/crypto.ts b/src/mail/crypto.ts deleted file mode 100644 index c48f387..0000000 --- a/src/mail/crypto.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { - EncryptedKeystore, - HybridEncryptedEmail, - PwdProtectedEmail, - HybridKeyPair, - Email, - EmailBody, - createEncryptionAndRecoveryKeystores, - openEncryptionKeystore, - RecipientWithPublicKey, - encryptEmailHybridForMultipleRecipients, - decryptEmailHybrid, - createPwdProtectedEmail, - decryptPwdProtectedEmail, - openRecoveryKeystore, - UTF8ToUint8, -} from 'internxt-crypto'; - -/** - * Creates recovery and encryption keystores for a user - * - * @param userEmail - The email of the user - * @param baseKey - The secret key of the user - * @returns The created keystores, keys and recovery codes for opening recovery keystore - */ -export async function createKeystores( - userEmail: string, - baseKey: Uint8Array, -): Promise<{ - encryptionKeystore: EncryptedKeystore; - recoveryKeystore: EncryptedKeystore; - recoveryCodes: string; - keys: HybridKeyPair; -}> { - return createEncryptionAndRecoveryKeystores(userEmail, baseKey); -} - -/** - * Opens user's keystore and returns the keys - * - * @param keystore - The encrypted keystore - * @param baseKey - The secret key of the user - * @returns The keys of the user - */ -export async function openKeystore(keystore: EncryptedKeystore, baseKey: Uint8Array): Promise { - return openEncryptionKeystore(keystore, baseKey); -} - -/** - * Recovery of user's keys using recovery keystore - * - * @param keystore - The recovery keystore - * @param recoveryCodes - The recovery codes of the user - * @returns The keys of the user - */ -export async function recoverKeys(keystore: EncryptedKeystore, recoveryCodes: string): Promise { - return openRecoveryKeystore(recoveryCodes, keystore); -} - -/** - * Encrypts the email - * - * @param email - The email to encrypt - * @param recipients - The recipients of the email - * @param aux - The optional auxilary data to encrypt together with the email (e.g. email sender) - * @returns The encrypted emails for each recipient - */ -export async function encryptEmail( - email: Email, - recipients: RecipientWithPublicKey[], - aux?: string, -): Promise { - const auxArray = aux ? UTF8ToUint8(aux) : new Uint8Array(); - return encryptEmailHybridForMultipleRecipients(email.body, recipients, auxArray); -} - -/** - * Password-protects the email - * - * @param email - The email to password-protect - * @param pwd - The password to protect the email with - * @param aux - The optional auxilary data to encrypt together with the email (e.g. email sender) - * @returns The password-protected email - */ -export async function passwordProtectAndSendEmail(email: Email, pwd: string, aux?: string): Promise { - const auxArray = aux ? UTF8ToUint8(aux) : new Uint8Array(); - return createPwdProtectedEmail(email.body, pwd, auxArray); -} - -/** - * Opens the password-protected email - * - * @param email - The password-protected email - * @param pwd - The shared password - * @param aux - The optional auxilary data that was encrypted together with the email (e.g. email sender) - * @returns The decrypted email body - */ -export async function openPasswordProtectedEmail( - email: PwdProtectedEmail, - pwd: string, - aux?: string, -): Promise { - const auxArray = aux ? UTF8ToUint8(aux) : new Uint8Array(); - return decryptPwdProtectedEmail(email, pwd, auxArray); -} - -/** - * Decrypt the email - * - * @param email - The encrypted email - * @param recipientPrivateKeys - The private keys of the email recipient - * @param aux - The optional auxilary data that was encrypted together with the email (e.g. email sender) - * @returns The decrypted email body - */ -export async function decryptEmail( - email: HybridEncryptedEmail, - recipientPrivateKeys: Uint8Array, - aux?: string, -): Promise { - const auxArray = aux ? UTF8ToUint8(aux) : new Uint8Array(); - return decryptEmailHybrid(email, recipientPrivateKeys, auxArray); -} diff --git a/src/mail/index.ts b/src/mail/index.ts index f28f3b0..876dfd4 100644 --- a/src/mail/index.ts +++ b/src/mail/index.ts @@ -1,2 +1,209 @@ -export * from './types'; -export * from './mail'; +import { ApiSecurity, ApiUrl, AppDetails } from '../shared'; +import { headersWithToken } from '../shared/headers'; +import { HttpClient } from '../shared/http/client'; +import { + MailboxResponse, + EmailListResponse, + EmailResponse, + EmailCreatedResponse, + SendEmailRequest, + DraftEmailRequest, + UpdateEmailRequest, + ListEmailsQuery, + EmailDomainsResponse, + SetupMailAccountPayload, + SearchFiltersQuery, + MailAccountKeysResponse, + EncryptedKeystore, + KeystoreType, + RecipientWithPublicKey, + HybridEncryptedEmail, + EmailPublicParameters, + PwdProtectedEmail, +} from './types'; + +export class MailApi { + private readonly client: HttpClient; + private readonly appDetails: AppDetails; + private readonly apiSecurity: ApiSecurity; + + public static client(apiUrl: ApiUrl, appDetails: AppDetails, apiSecurity: ApiSecurity) { + return new MailApi(apiUrl, appDetails, apiSecurity); + } + + private constructor(apiUrl: ApiUrl, appDetails: AppDetails, apiSecurity: ApiSecurity) { + this.client = HttpClient.create(apiUrl, apiSecurity.unauthorizedCallback); + this.appDetails = appDetails; + this.apiSecurity = apiSecurity; + } + + /** + * Uploads encrypted keystore to the server + * + * @param keystore - The encrypted keystore + * @returns Server response + */ + uploadKeystore(keystore: EncryptedKeystore): Promise { + return this.client.post('/keystore', { encryptedKeystore: keystore }, this.headers()); + } + + /** + * Requests encrypted keystore from the server + * + * @param userEmail - The email of the user + * @param keystoreType - The type of the keystore + * @returns The encrypted keystore + */ + downloadKeystore(userEmail: string, keystoreType: KeystoreType): Promise { + return this.client.getWithParams('/user/keystore', { userEmail, keystoreType }, this.headers()); + } + + /** + * Requests users with corresponding public keys from the server + * + * @param emails - The emails of the users + * @returns Users with corresponding public keys + */ + getUsersWithPublicKeys(emails: string[]): Promise { + return this.client.post<{ publicKey: string; email: string }[]>('/users/public-keys', { emails }, this.headers()); + } + + /** + * Sends the encrypted emails to the server + * + * @param emails - The encrypted emails + * @param params - The public parameters of the email + * @returns Server response + */ + sendE2EEmails(emails: HybridEncryptedEmail[], params: EmailPublicParameters): Promise { + return this.client.post('/emails', { emails, params }, this.headers()); + } + + /** + * Sends the password-protected email to the server + * + * @param email - The password-protected email + * @param params - The public parameters of the email + * @returns Server response + */ + sendE2EPasswordProtectedEmail(email: PwdProtectedEmail, params: EmailPublicParameters): Promise { + return this.client.post('/emails', { email, params }, this.headers()); + } + + search(filters: SearchFiltersQuery): Promise { + return this.client.post('/email/search', filters, this.headers()); + } + + /** + * Gets the mailboxes of the user + * + * @returns The mailboxes of the user - `MailboxResponse[]` + */ + getMailboxes(): Promise { + return this.client.get('/email/mailboxes', this.headers()); + } + + /** + * Lists emails of the user + * + * @param query - The query to filter emails (e.g. mailbox, limit, etc.) + * @returns The list of emails - `EmailListResponse` + */ + listEmails(query?: ListEmailsQuery): Promise { + return this.client.getWithParams('/email', query ?? {}, this.headers()); + } + + /** + * Gets the email with the corresponding id + * + * @param id - The id of the email + * @returns The email with the corresponding id - `EmailResponse` + */ + getEmail(id: string): Promise { + return this.client.get(`/email/${id}`, this.headers()); + } + + /** + * Deletes the email with the corresponding id + * + * @param id - The id of the email to delete + * @returns A promise that resolves when the email is deleted + */ + deleteEmail(id: string): Promise { + return this.client.delete(`/email/${id}`, this.headers()); + } + + /** + * Updates the email with the corresponding id + * + * @param id - The id of the email to update + * @param body - The new body of the email + * @returns A promise that resolves when the email is updated + */ + updateEmail(id: string, body: UpdateEmailRequest): Promise { + return this.client.patch(`/email/${id}`, body, this.headers()); + } + + /** + * Sends an email to the specified recipients + * + * @param body - The body of the email to send + * @returns The created email + */ + sendEmail(body: SendEmailRequest): Promise { + return this.client.post('/email/send', body, this.headers()); + } + + /** + * Saves a draft email + * + * @param body - The body of the draft email to save + * @returns The created email - `EmailCreatedResponse` + */ + saveDraft(body: DraftEmailRequest): Promise { + return this.client.post('/email/drafts', body, this.headers()); + } + + /** + * Returns the list of active domains for the email gateway + * + * @returns The list of active domains - `ActiveDomainsResponse` + */ + getActiveDomains(): Promise { + return this.client.get('/email/domains', this.headers()); + } + + /** + * Sets up a mail account for the user + * + * @param payload - Set of details for mail account setup + * @returns A promise that resolves with the created mail account address + */ + setupMailAccount(payload: SetupMailAccountPayload): Promise<{ address: string }> { + return this.client.post('/users/me/mail-account', payload, this.headers()); + } + + /** + * Gets the mail account keys for the given address + * + * @param address - The mail address whose keys should be retrieved + * @returns The public, encrypted private and recovery keys plus the salt + */ + getMailAccountKeys(address: string): Promise { + return this.client.getWithParams('/users/me/mail-account/keys', { address }, this.headers()); + } + + /** + * Returns the needed headers for the module requests + * @private + */ + private headers() { + return headersWithToken({ + clientName: this.appDetails.clientName, + clientVersion: this.appDetails.clientVersion, + token: this.apiSecurity.token, + desktopToken: this.appDetails.desktopHeader, + customHeaders: this.appDetails.customHeaders, + }); + } +} diff --git a/src/mail/mail.ts b/src/mail/mail.ts deleted file mode 100644 index 5bd815a..0000000 --- a/src/mail/mail.ts +++ /dev/null @@ -1,272 +0,0 @@ -import { ApiSecurity, ApiUrl, AppDetails } from '../shared'; -import { - EncryptedKeystore, - KeystoreType, - HybridEncryptedEmail, - PwdProtectedEmail, - HybridKeyPair, - Email, - RecipientWithPublicKey, - EmailPublicParameters, -} from 'internxt-crypto'; - -import { MailApi } from './api'; -import { - MailboxResponse, - EmailListResponse, - EmailResponse, - EmailCreatedResponse, - SendEmailRequest, - DraftEmailRequest, - UpdateEmailRequest, - ListEmailsQuery, - SearchFiltersQuery, - EmailDomainsResponse, - SetupMailAccountPayload, - MailAccountKeysResponse, -} from './types'; -import { createKeystores, encryptEmail, passwordProtectAndSendEmail, openKeystore, recoverKeys } from './crypto'; - -export class Mail { - private readonly api: MailApi; - - public static client(apiUrl: ApiUrl, appDetails: AppDetails, apiSecurity: ApiSecurity) { - return new Mail(apiUrl, appDetails, apiSecurity); - } - - private constructor(apiUrl: ApiUrl, appDetails: AppDetails, apiSecurity: ApiSecurity) { - this.api = MailApi.client(apiUrl, appDetails, apiSecurity); - } - - /** - * Uploads encrypted keystore to the server - * - * @param encryptedKeystore - The encrypted keystore - * @returns Server response - */ - async uploadKeystoreToServer(encryptedKeystore: EncryptedKeystore): Promise { - return this.api.uploadKeystore(encryptedKeystore); - } - - /** - * Creates recovery and encryption keystores and uploads them to the server - * - * @param userEmail - The email of the user - * @param baseKey - The secret key of the user - * @returns The recovery codes and keys of the user - */ - async createAndUploadKeystores( - userEmail: string, - baseKey: Uint8Array, - ): Promise<{ recoveryCodes: string; keys: HybridKeyPair }> { - const { encryptionKeystore, recoveryKeystore, recoveryCodes, keys } = await createKeystores(userEmail, baseKey); - await Promise.all([this.api.uploadKeystore(encryptionKeystore), this.api.uploadKeystore(recoveryKeystore)]); - return { recoveryCodes, keys }; - } - - /** - * Requests encrypted keystore from the server - * - * @param userEmail - The email of the user - * @param keystoreType - The type of the keystore - * @returns The encrypted keystore - */ - async downloadKeystoreFromServer(userEmail: string, keystoreType: KeystoreType): Promise { - return this.api.downloadKeystore(userEmail, keystoreType); - } - - /** - * Requests encrypted keystore from the server and opens it - * - * @param userEmail - The email of the user - * @param baseKey - The secret key of the user - * @returns The hybrid keys of the user - */ - async getUserEmailKeys(userEmail: string, baseKey: Uint8Array): Promise { - const keystore = await this.api.downloadKeystore(userEmail, KeystoreType.ENCRYPTION); - return openKeystore(keystore, baseKey); - } - - /** - * Requests recovery keystore from the server and opens it - * - * @param userEmail - The email of the user - * @param recoveryCodes - The recovery codes of the user - * @returns The hybrid keys of the user - */ - async recoverUserEmailKeys(userEmail: string, recoveryCodes: string): Promise { - const keystore = await this.api.downloadKeystore(userEmail, KeystoreType.RECOVERY); - return recoverKeys(keystore, recoveryCodes); - } - - /** - * Request user with corresponding public keys from the server - * - * @param userEmail - The email of the user - * @returns User with corresponding public keys - */ - async getUserWithPublicKeys(userEmail: string): Promise { - const results = await this.api.getUsersWithPublicKeys([userEmail]); - if (!results[0]) throw new Error(`No public keys found for ${userEmail}`); - return results[0]; - } - - /** - * Request users with corresponding public keys from the server - * - * @param emails - The emails of the users - * @returns Users with corresponding public keys - */ - async getSeveralUsersWithPublicKeys(emails: string[]): Promise { - return this.api.getUsersWithPublicKeys(emails); - } - - /** - * Sends the encrypted emails to the server - * - * @param emails - The encrypted emails - * @param params - The public parameters of the email (sender, recipients, CCs, BCCs, etc.) - * @returns Server response - */ - async sendE2EEncryptedEmail(emails: HybridEncryptedEmail[], params: EmailPublicParameters): Promise { - return this.api.sendE2EEmails(emails, params); - } - - /** - * Encrypts and sends email(s) to the server - * - * @param email - The message to encrypt - * @param aux - The optional auxilary data to encrypt together with the email (e.g. email sender) - * @returns Server response - */ - async e2eEncryptAndSendEmail(email: Email, aux?: string): Promise { - const recipientEmails = email.params.recipients?.map((user) => user.email); - - if (!recipientEmails) throw new Error('No recipients found'); - - const recipients = await this.api.getUsersWithPublicKeys(recipientEmails); - - const encEmails = await encryptEmail(email, recipients, aux); - return this.api.sendE2EEmails(encEmails, email.params); - } - - /** - * Sends the password-protected email to the server - * - * @param email - The password-protected email - * @param params - The public parameters of the email - * @returns Server response - */ - async sendE2EPasswordProtectedEmail(email: PwdProtectedEmail, params: EmailPublicParameters): Promise { - return this.api.sendE2EPasswordProtectedEmail(email, params); - } - - /** - * Creates the password-protected E2E email and sends it to the server - * - * @param email - The email - * @param pwd - The password - * @param aux - The optional auxiliary data to encrypt together with the email (e.g. email sender) - * @returns Server response - */ - async e2ePasswordProtectAndSendEmail(email: Email, pwd: string, aux?: string): Promise { - const encEmail = await passwordProtectAndSendEmail(email, pwd, aux); - return this.api.sendE2EPasswordProtectedEmail(encEmail, email.params); - } - - /** - * Gets the mailboxes of the user - * - * @returns The mailboxes of the user - */ - async getMailboxes(): Promise { - return this.api.getMailboxes(); - } - - /** - * Lists emails of the user - * - * @param query - The query to filter emails - * @returns The list of emails - */ - async listEmails(query?: ListEmailsQuery): Promise { - return this.api.listEmails(query); - } - - /** - * Gets the email with the corresponding id - * - * @param id - The id of the email - * @returns The email with the corresponding id - */ - async getEmail(id: string): Promise { - return this.api.getEmail(id); - } - - /** - * Deletes the email with the corresponding id - * - * @param id - The id of the email to delete - */ - async deleteEmail(id: string): Promise { - return this.api.deleteEmail(id); - } - - /** - * Updates the email with the corresponding id - * - * @param id - The id of the email to update - * @param body - The new body of the email - */ - async updateEmail(id: string, body: UpdateEmailRequest): Promise { - return this.api.updateEmail(id, body); - } - - /** - * Sends an email to the specified recipients - * - * @param body - The body of the email to send - * @returns The created email - */ - async sendEmail(body: SendEmailRequest): Promise { - return this.api.sendEmail(body); - } - - /** - * Saves a draft email. - * - * @param body - The body of the email to save as a draft - * @returns The created email - */ - async saveDraft(body: DraftEmailRequest): Promise { - return this.api.saveDraft(body); - } - - async search(filters: SearchFiltersQuery): Promise { - return this.api.search(filters); - } - - async getActiveDomains(): Promise { - return this.api.getActiveDomains(); - } - - /** - * Sets up a mail account for the user - * - * @param payload - Set of details for mail account setup - * @returns A promise that resolves with the created mail account address - */ - async setupMailAccount(payload: SetupMailAccountPayload): Promise<{ address: string }> { - return this.api.setupMailAccount(payload); - } - - /** - * Gets the mail account keys for the given address - * - * @param address - The mail address whose keys should be retrieved - * @returns The public, encrypted private and recovery keys plus the salt - */ - async getMailAccountKeys(address: string): Promise { - return this.api.getMailAccountKeys(address); - } -} diff --git a/src/mail/types.ts b/src/mail/types.ts index 3dfc8c2..46cbebc 100644 --- a/src/mail/types.ts +++ b/src/mail/types.ts @@ -30,3 +30,62 @@ export type MailAccountKeysResponse = { encryptionPrivateKey: string; recoveryPrivateKey: string; }; + +export type EncryptedKeystore = { + userEmail: string; + type: KeystoreType; + publicKey: string; + privateKeyEncrypted: string; +}; + +export enum KeystoreType { + ENCRYPTION = 'Encryption', + RECOVERY = 'Recovery', +} + +export type HybridEncryptedEmail = { + encryptedKey: HybridEncKey; + encEmailBody: EmailBodyEncrypted; +}; + +type HybridEncKey = { + hybridCiphertext: string; + encryptedKey: string; + encryptedForEmail: string; +}; + +type EmailBodyEncrypted = { + encText: string; + encSubject: string; + encAttachments?: string[]; +}; + +export type PwdProtectedEmail = { + encryptedKey: PwdProtectedKey; + encEmailBody: EmailBodyEncrypted; +}; + +type PwdProtectedKey = { + encryptedKey: string; + salt: string; +}; + +export type RecipientWithPublicKey = { + email: string; + publicKey: string; +}; + +export type EmailPublicParameters = { + createdAt: string; + sender: User; + recipients: User[]; + ccs?: User[]; + bccs?: User[]; + replyToEmailID?: string; + labels?: string[]; +}; + +type User = { + email: string; + name: string; +}; diff --git a/test/mail/index.test.ts b/test/mail/index.test.ts deleted file mode 100644 index 33583f5..0000000 --- a/test/mail/index.test.ts +++ /dev/null @@ -1,351 +0,0 @@ -import { HttpClient } from '../../src/shared/http/client'; -import { Mail } from '../../src/mail/index'; -import { ApiSecurity, AppDetails } from '../../src/shared'; -import { headersWithToken } from '../../src/shared/headers'; -import { - createEncryptionAndRecoveryKeystores, - genSymmetricKey, - KeystoreType, - generateEmailKeys, - Email, - generateUuid, - createPwdProtectedEmail, - encryptEmailHybrid, - uint8ArrayToBase64, -} from 'internxt-crypto'; -import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { decryptEmail, openPasswordProtectedEmail } from '../../src/mail/crypto'; - -describe('Mail service tests', () => { - beforeEach(() => { - vi.restoreAllMocks(); - }); - - describe('test keystore call methods', async () => { - const email = 'test@internxt.com'; - const baseKey = genSymmetricKey(); - const { encryptionKeystore, recoveryCodes, recoveryKeystore, keys } = await createEncryptionAndRecoveryKeystores( - email, - baseKey, - ); - - it('When a keystore upload is requested, then it should successfully upload the keystore', async () => { - const { client, headers } = clientAndHeadersWithToken(); - const postCall = vi.spyOn(HttpClient.prototype, 'post').mockResolvedValue({}); - await client.uploadKeystoreToServer(encryptionKeystore); - - expect(postCall.mock.calls[0]).toEqual([ - '/keystore', - { - encryptedKeystore: encryptionKeystore, - }, - headers, - ]); - }); - - it('When keystore creation is requested, then it should create and upload two keystores', async () => { - const { client, headers } = clientAndHeadersWithToken(); - const postCall = vi.spyOn(HttpClient.prototype, 'post').mockResolvedValue({}); - await client.createAndUploadKeystores(email, baseKey); - - expect(postCall.mock.calls[0]).toEqual([ - '/keystore', - { - encryptedKeystore: { - userEmail: email, - type: KeystoreType.ENCRYPTION, - privateKeyEncrypted: expect.any(String), - publicKey: expect.any(String), - }, - }, - headers, - ]); - - expect(postCall.mock.calls[1]).toEqual([ - '/keystore', - { - encryptedKeystore: { - userEmail: email, - type: KeystoreType.RECOVERY, - privateKeyEncrypted: expect.any(String), - publicKey: expect.any(String), - }, - }, - headers, - ]); - }); - it('When a keystore downloading is requested, then it should successfully download the keystore', async () => { - const { client, headers } = clientAndHeadersWithToken(); - const postCall = vi.spyOn(HttpClient.prototype, 'getWithParams').mockResolvedValue({ encryptionKeystore }); - const result = await client.downloadKeystoreFromServer(email, KeystoreType.ENCRYPTION); - - expect(postCall.mock.calls[0]).toEqual([ - '/user/keystore', - { - userEmail: email, - keystoreType: KeystoreType.ENCRYPTION, - }, - headers, - ]); - expect(result).toEqual({ encryptionKeystore: encryptionKeystore }); - }); - - it('When user email keys are requested, then it should successfully download keystore and open it', async () => { - const { client, headers } = clientAndHeadersWithToken(); - const postCall = vi.spyOn(HttpClient.prototype, 'getWithParams').mockResolvedValue(encryptionKeystore); - const result = await client.getUserEmailKeys(email, baseKey); - - expect(postCall.mock.calls[0]).toEqual([ - '/user/keystore', - { - userEmail: email, - keystoreType: KeystoreType.ENCRYPTION, - }, - headers, - ]); - expect(result).toEqual(keys); - }); - - it('When email key recovery is requested, then it should successfully download keystore and open it', async () => { - const { client, headers } = clientAndHeadersWithToken(); - const postCall = vi.spyOn(HttpClient.prototype, 'getWithParams').mockResolvedValue(recoveryKeystore); - const result = await client.recoverUserEmailKeys(email, recoveryCodes); - - expect(postCall.mock.calls[0]).toEqual([ - '/user/keystore', - { - userEmail: email, - keystoreType: KeystoreType.RECOVERY, - }, - headers, - ]); - expect(result).toEqual(keys); - }); - }); - - describe('test public keys call methods', async () => { - const userA = 'user A email'; - const userB = 'user B email'; - const userC = 'user C email'; - const emailKeysA = await generateEmailKeys(); - const emailKeysB = await generateEmailKeys(); - const emailKeysC = await generateEmailKeys(); - - const publicKeyA = uint8ArrayToBase64(emailKeysA.publicKey); - const publicKeyB = uint8ArrayToBase64(emailKeysB.publicKey); - const publicKeyC = uint8ArrayToBase64(emailKeysC.publicKey); - - it('When user email public keys are requested, then it should successfully get them', async () => { - const { client, headers } = clientAndHeadersWithToken(); - const postCall = vi - .spyOn(HttpClient.prototype, 'post') - .mockResolvedValue([{ publicKey: publicKeyA, email: userA }]); - const result = await client.getUserWithPublicKeys(userA); - - expect(postCall.mock.calls[0]).toEqual([ - '/users/public-keys', - { - emails: [userA], - }, - headers, - ]); - expect(result).toStrictEqual({ email: userA, publicHybridKey: emailKeysA.publicKey }); - }); - - it('When public keys are requested for several users, then it should successfully get all of them', async () => { - const { client, headers } = clientAndHeadersWithToken(); - const postCall = vi.spyOn(HttpClient.prototype, 'post').mockResolvedValue([ - { publicKey: publicKeyA, email: userA }, - { publicKey: publicKeyB, email: userB }, - { publicKey: publicKeyC, email: userC }, - ]); - const result = await client.getSeveralUsersWithPublicKeys([userA, userB, userC]); - - expect(postCall.mock.calls[0]).toEqual([ - '/users/public-keys', - { - emails: [userA, userB, userC], - }, - headers, - ]); - expect(result).toEqual([ - { email: userA, publicHybridKey: emailKeysA.publicKey }, - { email: userB, publicHybridKey: emailKeysB.publicKey }, - { email: userC, publicHybridKey: emailKeysC.publicKey }, - ]); - }); - }); - - describe('test email call methods', async () => { - const userA = { - email: 'user A email', - name: 'user A name', - }; - - const userB = { - email: 'user B email', - name: 'user B name', - }; - const uuid = generateUuid(); - - const emailKeysB = await generateEmailKeys(); - const publicKeyB = uint8ArrayToBase64(emailKeysB.publicKey); - - const email: Email = { - id: uuid, - body: { - text: 'Email text', - subject: 'Email subject', - attachments: ['Email attachment'], - }, - params: { - createdAt: '2026-01-21T15:11:22.000Z', - sender: userA, - recipients: [userB], - replyToEmailID: uuid, - labels: ['inbox', 'test'], - }, - }; - - const pwd = 'mock password'; - - it('When user request encrypting email, then it should successfully encrypt and send an email', async () => { - const { client, headers } = clientAndHeadersWithToken(); - const postCall = vi - .spyOn(HttpClient.prototype, 'post') - .mockResolvedValueOnce([{ publicKey: publicKeyB, email: userB.email }]) - .mockResolvedValueOnce({}); - await client.e2eEncryptAndSendEmail(email); - - expect(postCall.mock.calls[0]).toEqual([ - '/users/public-keys', - { - emails: [userB.email], - }, - headers, - ]); - - expect(postCall.mock.calls[1]).toEqual([ - '/emails', - { - emails: [ - { - encEmailBody: { - encText: expect.any(String), - encSubject: expect.any(String), - encAttachments: [expect.any(String)], - }, - encryptedKey: { - encryptedKey: expect.any(String), - hybridCiphertext: expect.any(String), - encryptedForEmail: userB.email, - }, - }, - ], - params: email.params, - }, - headers, - ]); - }); - - it('When user request password protect email, then it should successfully protect and send an email', async () => { - const { client, headers } = clientAndHeadersWithToken(); - const postCall = vi.spyOn(HttpClient.prototype, 'post').mockResolvedValue({}); - await client.e2ePasswordProtectAndSendEmail(email, pwd); - - expect(postCall.mock.calls[0]).toEqual([ - '/emails', - { - email: { - encryptedKey: { - encryptedKey: expect.any(String), - salt: expect.any(String), - }, - encEmailBody: { - encText: expect.any(String), - encSubject: expect.any(String), - encAttachments: [expect.any(String)], - }, - }, - params: email.params, - }, - headers, - ]); - }); - - it('When user request opening a password protect email, then it should successfully open it', async () => { - const encEmail = await createPwdProtectedEmail(email.body, pwd); - const result = await openPasswordProtectedEmail(encEmail, pwd); - - expect(result).toEqual(email.body); - }); - - it('When user request decrypting an encrypted email, then it should successfully decrypt it', async () => { - const recipient = { email: userB.email, publicHybridKey: emailKeysB.publicKey }; - const encEmail = await encryptEmailHybrid(email.body, recipient); - const result = await decryptEmail(encEmail, emailKeysB.secretKey); - - expect(result).toEqual(email.body); - }); - }); - - describe('test mail account setup', () => { - it('When a mail account setup is requested, then it should POST to /users/me/mail-account and return the created address', async () => { - const { client, headers } = clientAndHeadersWithToken(); - const postStub = vi.spyOn(HttpClient.prototype, 'post').mockResolvedValue({ address: 'user@domain.com' }); - const payload = { - address: 'user', - domain: 'domain.com', - displayName: 'User', - password: 'mail-password', - keys: { - publicKey: 'public-key', - encryptionPrivateKey: 'encryption-private-key', - recoveryPrivateKey: 'recovery-private-key', - }, - }; - - const result = await client.setupMailAccount(payload); - - expect(postStub).toHaveBeenCalledWith('/users/me/mail-account', payload, headers); - expect(result).toEqual({ address: 'user@domain.com' }); - }); - - it('When the mail account keys are requested, then it should GET /users/me/mail-account/keys with the address', async () => { - const { client, headers } = clientAndHeadersWithToken(); - const expectedKeys = { - address: 'user@domain.com', - publicKey: 'public-key', - encryptionPrivateKey: 'encryption-private-key', - recoveryPrivateKey: 'recovery-private-key', - }; - const getStub = vi.spyOn(HttpClient.prototype, 'getWithParams').mockResolvedValue(expectedKeys); - - const result = await client.getMailAccountKeys('user@domain.com'); - - expect(getStub).toHaveBeenCalledWith('/users/me/mail-account/keys', { address: 'user@domain.com' }, headers); - expect(result).toEqual(expectedKeys); - }); - }); -}); - -function clientAndHeadersWithToken( - apiUrl = '', - clientName = 'c-name', - clientVersion = '0.1', - token = 'my-token', -): { - client: Mail; - headers: object; -} { - const appDetails: AppDetails = { - clientName, - clientVersion, - }; - const apiSecurity: ApiSecurity = { - token, - }; - const client = Mail.client(apiUrl, appDetails, apiSecurity); - const headers = headersWithToken({ clientName, clientVersion, token }); - return { client, headers }; -} From ed9a8acf2600ab8d921d537db0401b30f8e06d07 Mon Sep 17 00:00:00 2001 From: larryrider Date: Wed, 6 May 2026 18:34:19 +0200 Subject: [PATCH 4/4] chore: bump version to 1.16.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dac73ae..0ffad9f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@internxt/sdk", "author": "Internxt ", - "version": "1.15.14", + "version": "1.16.0", "description": "An sdk for interacting with Internxt's services", "repository": { "type": "git",