From 1c0d0f8d9a0fe39c705c1d17adc80b29270e17a6 Mon Sep 17 00:00:00 2001 From: Pleroma Renovate Bot Date: Fri, 21 Feb 2025 09:05:04 +0000 Subject: [PATCH 01/22] Update dependency phoenix to v1.7.20 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 87f7317fb..9e22e08cf 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "js-cookie": "3.0.5", "localforage": "1.10.0", "parse-link-header": "2.0.0", - "phoenix": "1.7.19", + "phoenix": "1.7.20", "pinia": "^2.0.33", "punycode.js": "2.3.1", "qrcode": "1.5.4", diff --git a/yarn.lock b/yarn.lock index 0133ddb73..67ffcced4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6792,10 +6792,10 @@ pend@~1.2.0: resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== -phoenix@1.7.19: - version "1.7.19" - resolved "https://registry.yarnpkg.com/phoenix/-/phoenix-1.7.19.tgz#6128b764c542037e648b1d268d9c825cefc87c76" - integrity sha512-d9dJ4NvweGkQ6SEVlCtsqpb5RvBViYgC+dJyiQml+9KLKnG00cdDu1Hbx8beIoion7dmIk5W3HJAn9Eyur2stA== +phoenix@1.7.20: + version "1.7.20" + resolved "https://registry.yarnpkg.com/phoenix/-/phoenix-1.7.20.tgz#f92359680e2cc958e03d8448146f24184d6aa081" + integrity sha512-ek3V+kR1ALSPSF8jqh+nh3Hu4WcQX4615Kh0eUUWcrEBzcIkqY585aDQQ6grTGKbS7ObPXVcXfqYb0posiG8Ew== picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.1: version "1.1.1" From d8e43175f44e83ed2e81b28ab8b9ce88c240815d Mon Sep 17 00:00:00 2001 From: Pleroma Renovate Bot Date: Wed, 12 Mar 2025 09:04:21 +0000 Subject: [PATCH 02/22] Update babel monorepo to v7.26.10 --- package.json | 8 ++-- yarn.lock | 109 +++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 92 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 481f65e66..caa9027ac 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "lint-fix": "eslint --fix src test/unit/specs test/e2e/specs" }, "dependencies": { - "@babel/runtime": "7.26.9", + "@babel/runtime": "7.26.10", "@chenfengyuan/vue-qrcode": "2.0.0", "@fortawesome/fontawesome-svg-core": "6.7.2", "@fortawesome/free-regular-svg-icons": "6.7.2", @@ -53,9 +53,9 @@ "vuex": "4.1.0" }, "devDependencies": { - "@babel/core": "7.26.9", - "@babel/eslint-parser": "7.26.8", - "@babel/plugin-transform-runtime": "7.26.9", + "@babel/core": "7.26.10", + "@babel/eslint-parser": "7.26.10", + "@babel/plugin-transform-runtime": "7.26.10", "@babel/preset-env": "7.26.9", "@babel/register": "7.25.9", "@ungap/event-target": "0.2.4", diff --git a/yarn.lock b/yarn.lock index 4c1f13092..219848b53 100644 --- a/yarn.lock +++ b/yarn.lock @@ -47,7 +47,28 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== -"@babel/core@7.26.9", "@babel/core@^7.26.0": +"@babel/core@7.26.10": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9" + integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.10" + "@babel/helper-compilation-targets" "^7.26.5" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.10" + "@babel/parser" "^7.26.10" + "@babel/template" "^7.26.9" + "@babel/traverse" "^7.26.10" + "@babel/types" "^7.26.10" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/core@^7.26.0": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.9.tgz#71838542a4b1e49dfed353d7acbc6eb89f4a76f2" integrity sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw== @@ -68,15 +89,26 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.26.8.tgz#55c4f4aae4970ae127f7a12369182ed6250e6f09" - integrity sha512-3tBctaHRW6xSub26z7n8uyOTwwUsCdvIug/oxBH9n6yCO5hMj2vwDJAo7RbBMKrM7P+W2j61zLKviJQFGOYKMg== +"@babel/eslint-parser@7.26.10": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.26.10.tgz#4423cb3f84c26978439feabfe23c5aa929400737" + integrity sha512-QsfQZr4AiLpKqn7fz+j7SN+f43z2DZCgGyYbNJ2vJOqKfG4E6MZer1+jqGZqKJaxq/gdO2DC/nUu45+pOL5p2Q== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" +"@babel/generator@^7.26.10": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.10.tgz#a60d9de49caca16744e6340c3658dfef6138c3f7" + integrity sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang== + dependencies: + "@babel/parser" "^7.26.10" + "@babel/types" "^7.26.10" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + "@babel/generator@^7.26.5": version "7.26.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.5.tgz#e44d4ab3176bbcaf78a5725da5f1dc28802a9458" @@ -150,7 +182,7 @@ regexpu-core "^6.2.0" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.2", "@babel/helper-define-polyfill-provider@^0.6.3": +"@babel/helper-define-polyfill-provider@^0.6.3": version "0.6.3" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz#f4f2792fae2ef382074bc2d713522cf24e6ddb21" integrity sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg== @@ -248,6 +280,14 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" +"@babel/helpers@^7.26.10": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.10.tgz#6baea3cd62ec2d0c1068778d63cb1314f6637384" + integrity sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g== + dependencies: + "@babel/template" "^7.26.9" + "@babel/types" "^7.26.10" + "@babel/helpers@^7.26.9": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.9.tgz#28f3fb45252fc88ef2dc547c8a911c255fc9fef6" @@ -273,6 +313,13 @@ dependencies: "@babel/types" "^7.26.7" +"@babel/parser@^7.26.10": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.10.tgz#e9bdb82f14b97df6569b0b038edd436839c57749" + integrity sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA== + dependencies: + "@babel/types" "^7.26.10" + "@babel/parser@^7.26.8": version "7.26.8" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.8.tgz#deca2b4d99e5e1b1553843b99823f118da6107c2" @@ -687,15 +734,15 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-runtime@7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.9.tgz#ea8be19ef134668e98f7b54daf7c4f853859dc44" - integrity sha512-Jf+8y9wXQbbxvVYTM8gO5oEF2POdNji0NMltEkG7FtmzD9PVz7/lxpqSdTvwsjTMU5HIHuDVNf2SOxLkWi+wPQ== +"@babel/plugin-transform-runtime@7.26.10": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz#6b4504233de8238e7d666c15cde681dc62adff87" + integrity sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw== dependencies: "@babel/helper-module-imports" "^7.25.9" "@babel/helper-plugin-utils" "^7.26.5" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.6" + babel-plugin-polyfill-corejs3 "^0.11.0" babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" @@ -872,7 +919,14 @@ pirates "^4.0.6" source-map-support "^0.5.16" -"@babel/runtime@7.26.9", "@babel/runtime@^7.12.5": +"@babel/runtime@7.26.10": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.10.tgz#a07b4d8fa27af131a633d7b3524db803eb4764c2" + integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.12.5": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.9.tgz#aa4c6facc65b9cb3f87d75125ffd47781b475433" integrity sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg== @@ -926,6 +980,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.26.10": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.10.tgz#43cca33d76005dbaa93024fae536cc1946a4c380" + integrity sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.10" + "@babel/parser" "^7.26.10" + "@babel/template" "^7.26.9" + "@babel/types" "^7.26.10" + debug "^4.3.1" + globals "^11.1.0" + "@babel/traverse@^7.26.8": version "7.26.8" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.8.tgz#0a8a9c2b7cc9519eed14275f4fd2278ad46e8cc9" @@ -960,6 +1027,14 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" +"@babel/types@^7.26.10": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.10.tgz#396382f6335bd4feb65741eacfc808218f859259" + integrity sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/types@^7.26.8": version "7.26.8" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.8.tgz#97dcdc190fab45be7f3dc073e3c11160d677c127" @@ -2738,14 +2813,6 @@ babel-plugin-polyfill-corejs2@^0.4.10: "@babel/helper-define-polyfill-provider" "^0.6.3" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.10.6: - version "0.10.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" - integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.2" - core-js-compat "^3.38.0" - babel-plugin-polyfill-corejs3@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz#4e4e182f1bb37c7ba62e2af81d8dd09df31344f6" @@ -3296,7 +3363,7 @@ cookie@^0.7.2: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== -core-js-compat@^3.38.0, core-js-compat@^3.40.0: +core-js-compat@^3.40.0: version "3.40.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.40.0.tgz#7485912a5a4a4315c2fdb2cbdc623e6881c88b38" integrity sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ== From 50e51437c7b34816f46067ef782bedf9acf1cbd8 Mon Sep 17 00:00:00 2001 From: Sean King Date: Wed, 12 Mar 2025 22:47:19 -0600 Subject: [PATCH 03/22] Remove opn dependency --- package.json | 1 - yarn.lock | 43 +++---------------------------------------- 2 files changed, 3 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index 481f65e66..7a91d2574 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,6 @@ "lodash": "4.17.21", "msw": "2.7.3", "nightwatch": "3.11.1", - "opn": "5.5.0", "ora": "0.4.1", "playwright": "1.49.1", "postcss": "8.5.3", diff --git a/yarn.lock b/yarn.lock index 4c1f13092..e5ddae10a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5297,11 +5297,6 @@ is-weakset@^2.0.3: call-bound "^1.0.3" get-intrinsic "^1.2.6" -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -6160,13 +6155,6 @@ open@8.4.2: is-docker "^2.1.1" is-wsl "^2.2.0" -opn@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" @@ -7395,16 +7383,7 @@ strict-event-emitter@^0.5.1: resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz#1602ece81c51574ca39c6815e09f1a3e8550bd93" integrity sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7468,7 +7447,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -7482,13 +7461,6 @@ strip-ansi@5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -8331,7 +8303,7 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -8349,15 +8321,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 099e493298e384d1d7122c9ffbc2fa1345eaba20 Mon Sep 17 00:00:00 2001 From: Sean King Date: Wed, 12 Mar 2025 22:50:28 -0600 Subject: [PATCH 04/22] Add changelog file --- changelog.d/remove-opn-dependency.skip | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 changelog.d/remove-opn-dependency.skip diff --git a/changelog.d/remove-opn-dependency.skip b/changelog.d/remove-opn-dependency.skip new file mode 100644 index 000000000..e69de29bb From 73ce22f60089a1023cf7cebf0a6a80c9d0b13970 Mon Sep 17 00:00:00 2001 From: Pleroma Renovate Bot Date: Thu, 13 Mar 2025 09:05:30 +0000 Subject: [PATCH 05/22] Update dependency shelljs to v0.9.1 --- package.json | 2 +- yarn.lock | 96 ++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 87 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 481f65e66..655a7a1d3 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "selenium-server": "3.141.59", "semver": "7.7.1", "serve-static": "1.16.2", - "shelljs": "0.8.5", + "shelljs": "0.9.1", "sinon": "15.2.0", "sinon-chai": "3.7.0", "stylelint": "14.16.1", diff --git a/yarn.lock b/yarn.lock index 4c1f13092..6fa5e5886 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3346,6 +3346,17 @@ cross-spawn@7.0.6, cross-spawn@^7.0.0, cross-spawn@^7.0.6: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^6.0.0: + version "6.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57" + integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + css-functions-list@^3.1.0: version "3.2.3" resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.3.tgz#95652b0c24f0f59b291a9fc386041a19d4f40dbe" @@ -4241,6 +4252,19 @@ eventsource-polyfill@0.9.6: resolved "https://registry.yarnpkg.com/eventsource-polyfill/-/eventsource-polyfill-0.9.6.tgz#10e0d187f111b167f28fdab918843ce7d818f13c" integrity sha512-LyMFp2oPDGhum2lMvkjqKZEwWd2/AoXyt8aoyftTBMWwPHNgU+2tdxhTHPluDxoz+z4gNj0uHAPR9nqevATMbg== +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + expect-type@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.1.0.tgz#a146e414250d13dfc49eafcfd1344a4060fa4c75" @@ -4304,7 +4328,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.12, fast-glob@^3.2.9: +fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== @@ -4610,6 +4634,13 @@ get-proto@^1.0.0, get-proto@^1.0.1: dunder-proto "^1.0.1" es-object-atoms "^1.0.0" +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -4656,7 +4687,7 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@7.2.3, glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.2.3: +glob@7.2.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -5243,6 +5274,11 @@ is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.4: dependencies: call-bound "^1.0.3" +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + is-string@^1.0.7, is-string@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" @@ -5947,6 +5983,11 @@ netmask@^2.0.2: resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + nightwatch-axe-verbose@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/nightwatch-axe-verbose/-/nightwatch-axe-verbose-2.3.1.tgz#42cd226989cb5205b699db42d74b1b967587d099" @@ -6052,6 +6093,13 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + nth-check@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" @@ -6218,6 +6266,11 @@ own-keys@^1.0.1: object-keys "^1.1.1" safe-push-apply "^1.0.0" +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -6341,6 +6394,11 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -7057,7 +7115,7 @@ selenium-webdriver@4.27.0: tmp "^0.2.3" ws "^8.18.0" -"semver@2 || 3 || 4 || 5", semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== @@ -7173,6 +7231,13 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -7180,17 +7245,23 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== +shelljs@0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.9.1.tgz#aab9426a54c27c093d5eca428b5fa559944460d6" + integrity sha512-ngPynK9u9OmsL2DttaTOhEPahyAjVbjIwCK3R+2V9YDq0/equpq7hVz3XrnfIjAk1thN5ET5mEIzAmocmV6i+Q== dependencies: - glob "^7.0.0" + execa "^1.0.0" + fast-glob "^3.3.2" interpret "^1.0.0" rechoir "^0.6.2" @@ -7239,7 +7310,7 @@ siginfo@^2.0.0: resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== -signal-exit@^3.0.2, signal-exit@^3.0.7: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -7508,6 +7579,11 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -8292,7 +8368,7 @@ which-typed-array@^1.1.13, which-typed-array@^1.1.16, which-typed-array@^1.1.18: gopd "^1.2.0" has-tostringtag "^1.0.2" -which@^1.3.1: +which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== From 8e8f03767f0d0a095bee26679e4ba6d7303b87e7 Mon Sep 17 00:00:00 2001 From: Pleroma Renovate Bot Date: Thu, 13 Mar 2025 09:05:49 +0000 Subject: [PATCH 06/22] Update dependency vite to v6.2.1 --- yarn.lock | 633 ++++++++++++++++++++---------------------------------- 1 file changed, 234 insertions(+), 399 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4c1f13092..86ebcad2c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1046,255 +1046,130 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== -"@esbuild/aix-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" - integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== +"@esbuild/aix-ppc64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz#c33cf6bbee34975626b01b80451cbb72b4c6c91d" + integrity sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ== -"@esbuild/aix-ppc64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz#499600c5e1757a524990d5d92601f0ac3ce87f64" - integrity sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ== +"@esbuild/android-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz#ea766015c7d2655164f22100d33d7f0308a28d6d" + integrity sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA== -"@esbuild/android-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" - integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== +"@esbuild/android-arm@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.1.tgz#e84d2bf2fe2e6177a0facda3a575b2139fd3cb9c" + integrity sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q== -"@esbuild/android-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz#b9b8231561a1dfb94eb31f4ee056b92a985c324f" - integrity sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g== +"@esbuild/android-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.1.tgz#58337bee3bc6d78d10425e5500bd11370cfdfbed" + integrity sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw== -"@esbuild/android-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" - integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== +"@esbuild/darwin-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz#a46805c1c585d451aa83be72500bd6e8495dd591" + integrity sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ== -"@esbuild/android-arm@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.0.tgz#ca6e7888942505f13e88ac9f5f7d2a72f9facd2b" - integrity sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g== +"@esbuild/darwin-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz#0643e003bb238c63fc93ddbee7d26a003be3cd98" + integrity sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA== -"@esbuild/android-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" - integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== +"@esbuild/freebsd-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz#cff18da5469c09986b93e87979de5d6872fe8f8e" + integrity sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A== -"@esbuild/android-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.0.tgz#e765ea753bac442dfc9cb53652ce8bd39d33e163" - integrity sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg== +"@esbuild/freebsd-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz#362fc09c2de14987621c1878af19203c46365dde" + integrity sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww== -"@esbuild/darwin-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" - integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== +"@esbuild/linux-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz#aa90d5b02efc97a271e124e6d1cea490634f7498" + integrity sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ== -"@esbuild/darwin-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz#fa394164b0d89d4fdc3a8a21989af70ef579fa2c" - integrity sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw== +"@esbuild/linux-arm@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz#dfcefcbac60a20918b19569b4b657844d39db35a" + integrity sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ== -"@esbuild/darwin-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" - integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== +"@esbuild/linux-ia32@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz#6f9527077ccb7953ed2af02e013d4bac69f13754" + integrity sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ== -"@esbuild/darwin-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz#91979d98d30ba6e7d69b22c617cc82bdad60e47a" - integrity sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg== +"@esbuild/linux-loong64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz#287d2412a5456e5860c2839d42a4b51284d1697c" + integrity sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg== -"@esbuild/freebsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" - integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== +"@esbuild/linux-mips64el@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz#530574b9e1bc5d20f7a4f44c5f045e26f3783d57" + integrity sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg== -"@esbuild/freebsd-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz#b97e97073310736b430a07b099d837084b85e9ce" - integrity sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w== +"@esbuild/linux-ppc64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz#5d7e6b283a0b321ea42c6bc0abeb9eb99c1f5589" + integrity sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg== -"@esbuild/freebsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" - integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== +"@esbuild/linux-riscv64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz#14fa0cd073c26b4ee2465d18cd1e18eea7859fa8" + integrity sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ== -"@esbuild/freebsd-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz#f3b694d0da61d9910ec7deff794d444cfbf3b6e7" - integrity sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A== +"@esbuild/linux-s390x@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz#e677b4b9d1b384098752266ccaa0d52a420dc1aa" + integrity sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ== -"@esbuild/linux-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" - integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== +"@esbuild/linux-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz#f1c796b78fff5ce393658313e8c58613198d9954" + integrity sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA== -"@esbuild/linux-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz#f921f699f162f332036d5657cad9036f7a993f73" - integrity sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg== +"@esbuild/netbsd-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz#0d280b7dfe3973f111b02d5fe9f3063b92796d29" + integrity sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g== -"@esbuild/linux-arm@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" - integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== +"@esbuild/netbsd-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz#be663893931a4bb3f3a009c5cc24fa9681cc71c0" + integrity sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA== -"@esbuild/linux-arm@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz#cc49305b3c6da317c900688995a4050e6cc91ca3" - integrity sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg== +"@esbuild/openbsd-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz#d9021b884233673a05dc1cc26de0bf325d824217" + integrity sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg== -"@esbuild/linux-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" - integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== +"@esbuild/openbsd-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz#9f1dc1786ed2e2938c404b06bcc48be9a13250de" + integrity sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw== -"@esbuild/linux-ia32@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz#3e0736fcfab16cff042dec806247e2c76e109e19" - integrity sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg== +"@esbuild/sunos-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz#89aac24a4b4115959b3f790192cf130396696c27" + integrity sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg== -"@esbuild/linux-loong64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" - integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== +"@esbuild/win32-arm64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz#354358647a6ea98ea6d243bf48bdd7a434999582" + integrity sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ== -"@esbuild/linux-loong64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz#ea2bf730883cddb9dfb85124232b5a875b8020c7" - integrity sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw== +"@esbuild/win32-ia32@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz#8cea7340f2647eba951a041dc95651e3908cd4cb" + integrity sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A== -"@esbuild/linux-mips64el@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" - integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== - -"@esbuild/linux-mips64el@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz#4cababb14eede09248980a2d2d8b966464294ff1" - integrity sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ== - -"@esbuild/linux-ppc64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" - integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== - -"@esbuild/linux-ppc64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz#8860a4609914c065373a77242e985179658e1951" - integrity sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw== - -"@esbuild/linux-riscv64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" - integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== - -"@esbuild/linux-riscv64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz#baf26e20bb2d38cfb86ee282dff840c04f4ed987" - integrity sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA== - -"@esbuild/linux-s390x@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" - integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== - -"@esbuild/linux-s390x@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz#8323afc0d6cb1b6dc6e9fd21efd9e1542c3640a4" - integrity sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA== - -"@esbuild/linux-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" - integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== - -"@esbuild/linux-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz#08fcf60cb400ed2382e9f8e0f5590bac8810469a" - integrity sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw== - -"@esbuild/netbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" - integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== - -"@esbuild/netbsd-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz#935c6c74e20f7224918fbe2e6c6fe865b6c6ea5b" - integrity sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw== - -"@esbuild/netbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" - integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== - -"@esbuild/netbsd-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz#414677cef66d16c5a4d210751eb2881bb9c1b62b" - integrity sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA== - -"@esbuild/openbsd-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" - integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== - -"@esbuild/openbsd-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz#8fd55a4d08d25cdc572844f13c88d678c84d13f7" - integrity sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw== - -"@esbuild/openbsd-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" - integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== - -"@esbuild/openbsd-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz#0c48ddb1494bbc2d6bcbaa1429a7f465fa1dedde" - integrity sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg== - -"@esbuild/sunos-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" - integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== - -"@esbuild/sunos-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz#86ff9075d77962b60dd26203d7352f92684c8c92" - integrity sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg== - -"@esbuild/win32-arm64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" - integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== - -"@esbuild/win32-arm64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz#849c62327c3229467f5b5cd681bf50588442e96c" - integrity sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw== - -"@esbuild/win32-ia32@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" - integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== - -"@esbuild/win32-ia32@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz#f62eb480cd7cca088cb65bb46a6db25b725dc079" - integrity sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA== - -"@esbuild/win32-x64@0.24.2": - version "0.24.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" - integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== - -"@esbuild/win32-x64@0.25.0": - version "0.25.0" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz#c8e119a30a7c8d60b9d2e22d2073722dde3b710b" - integrity sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ== +"@esbuild/win32-x64@0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz#7d79922cb2d88f9048f06393dbf62d2e4accb584" + integrity sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg== "@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0", "@eslint-community/eslint-utils@^4.4.1": version "4.4.1" @@ -1827,100 +1702,100 @@ estree-walker "^2.0.2" picomatch "^4.0.2" -"@rollup/rollup-android-arm-eabi@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz#731df27dfdb77189547bcef96ada7bf166bbb2fb" - integrity sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw== +"@rollup/rollup-android-arm-eabi@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz#e1d7700735f7e8de561ef7d1fa0362082a180c43" + integrity sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ== -"@rollup/rollup-android-arm64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz#4bea6db78e1f6927405df7fe0faf2f5095e01343" - integrity sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q== +"@rollup/rollup-android-arm64@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz#fa6cdfb1fc9e2c8e227a7f35d524d8f7f90cf4db" + integrity sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA== -"@rollup/rollup-darwin-arm64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz#a7aab77d44be3c44a20f946e10160f84e5450e7f" - integrity sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q== +"@rollup/rollup-darwin-arm64@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz#6da5a1ddc4f11d4a7ae85ab443824cb6bf614e30" + integrity sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q== -"@rollup/rollup-darwin-x64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz#c572c024b57ee8ddd1b0851703ace9eb6cc0dd82" - integrity sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw== +"@rollup/rollup-darwin-x64@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz#25b74ce2d8d3f9ea8e119b01384d44a1c0a0d3ae" + integrity sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q== -"@rollup/rollup-freebsd-arm64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz#cf74f8113b5a83098a5c026c165742277cbfb88b" - integrity sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA== +"@rollup/rollup-freebsd-arm64@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz#be3d39e3441df5d6e187c83d158c60656c82e203" + integrity sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ== -"@rollup/rollup-freebsd-x64@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz#39561f3a2f201a4ad6a01425b1ff5928154ecd7c" - integrity sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q== +"@rollup/rollup-freebsd-x64@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz#cd932d3ec679711efd65ca25821fb318e25b7ce4" + integrity sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw== -"@rollup/rollup-linux-arm-gnueabihf@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz#980d6061e373bfdaeb67925c46d2f8f9b3de537f" - integrity sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g== +"@rollup/rollup-linux-arm-gnueabihf@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz#d300b74c6f805474225632f185daaeae760ac2bb" + integrity sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg== -"@rollup/rollup-linux-arm-musleabihf@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz#f91a90f30dc00d5a64ac2d9bbedc829cd3cfaa78" - integrity sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA== +"@rollup/rollup-linux-arm-musleabihf@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz#2caac622380f314c41934ed1e68ceaf6cc380cc3" + integrity sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A== -"@rollup/rollup-linux-arm64-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz#fac700fa5c38bc13a0d5d34463133093da4c92a0" - integrity sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A== +"@rollup/rollup-linux-arm64-gnu@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz#1ec841650b038cc15c194c26326483fd7ebff3e3" + integrity sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A== -"@rollup/rollup-linux-arm64-musl@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz#f50ecccf8c78841ff6df1706bc4782d7f62bf9c3" - integrity sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q== +"@rollup/rollup-linux-arm64-musl@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz#2fc70a446d986e27f6101ea74e81746987f69150" + integrity sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg== -"@rollup/rollup-linux-loongarch64-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz#5869dc0b28242da6553e2b52af41374f4038cd6e" - integrity sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ== +"@rollup/rollup-linux-loongarch64-gnu@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz#561bd045cd9ce9e08c95f42e7a8688af8c93d764" + integrity sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g== -"@rollup/rollup-linux-powerpc64le-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz#5cdd9f851ce1bea33d6844a69f9574de335f20b1" - integrity sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw== +"@rollup/rollup-linux-powerpc64le-gnu@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz#45d849a0b33813f33fe5eba9f99e0ff15ab5caad" + integrity sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA== -"@rollup/rollup-linux-riscv64-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz#ef5dc37f4388f5253f0def43e1440ec012af204d" - integrity sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw== +"@rollup/rollup-linux-riscv64-gnu@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz#78dde3e6fcf5b5733a97d0a67482d768aa1e83a5" + integrity sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g== -"@rollup/rollup-linux-s390x-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz#7dbc3ccbcbcfb3e65be74538dfb6e8dd16178fde" - integrity sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA== +"@rollup/rollup-linux-s390x-gnu@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz#2e34835020f9e03dfb411473a5c2a0e8a9c5037b" + integrity sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw== -"@rollup/rollup-linux-x64-gnu@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz#5783fc0adcab7dc069692056e8ca8d83709855ce" - integrity sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA== +"@rollup/rollup-linux-x64-gnu@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz#4f9774beddc6f4274df57ac99862eb23040de461" + integrity sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA== -"@rollup/rollup-linux-x64-musl@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz#00b6c29b298197a384e3c659910b47943003a678" - integrity sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ== +"@rollup/rollup-linux-x64-musl@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz#dfcff2c1aed518b3d23ccffb49afb349d74fb608" + integrity sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg== -"@rollup/rollup-win32-arm64-msvc@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz#cbfee01f1fe73791c35191a05397838520ca3cdd" - integrity sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ== +"@rollup/rollup-win32-arm64-msvc@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz#b0b37e2d77041e3aa772f519291309abf4c03a84" + integrity sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg== -"@rollup/rollup-win32-ia32-msvc@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz#95cdbdff48fe6c948abcf6a1d500b2bd5ce33f62" - integrity sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w== +"@rollup/rollup-win32-ia32-msvc@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz#5b5a40e44a743ddc0e06b8e1b3982f856dc9ce0a" + integrity sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw== -"@rollup/rollup-win32-x64-msvc@4.34.8": - version "4.34.8" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz#4cdb2cfae69cdb7b1a3cc58778e820408075e928" - integrity sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g== +"@rollup/rollup-win32-x64-msvc@4.35.0": + version "4.35.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz#05f25dbc9981bee1ae6e713daab10397044a46ca" + integrity sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw== "@rtsao/scc@^1.1.0": version "1.1.0" @@ -3881,67 +3756,36 @@ es-to-primitive@^1.3.0: is-date-object "^1.0.5" is-symbol "^1.0.4" -esbuild@^0.24.2: - version "0.24.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" - integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== - optionalDependencies: - "@esbuild/aix-ppc64" "0.24.2" - "@esbuild/android-arm" "0.24.2" - "@esbuild/android-arm64" "0.24.2" - "@esbuild/android-x64" "0.24.2" - "@esbuild/darwin-arm64" "0.24.2" - "@esbuild/darwin-x64" "0.24.2" - "@esbuild/freebsd-arm64" "0.24.2" - "@esbuild/freebsd-x64" "0.24.2" - "@esbuild/linux-arm" "0.24.2" - "@esbuild/linux-arm64" "0.24.2" - "@esbuild/linux-ia32" "0.24.2" - "@esbuild/linux-loong64" "0.24.2" - "@esbuild/linux-mips64el" "0.24.2" - "@esbuild/linux-ppc64" "0.24.2" - "@esbuild/linux-riscv64" "0.24.2" - "@esbuild/linux-s390x" "0.24.2" - "@esbuild/linux-x64" "0.24.2" - "@esbuild/netbsd-arm64" "0.24.2" - "@esbuild/netbsd-x64" "0.24.2" - "@esbuild/openbsd-arm64" "0.24.2" - "@esbuild/openbsd-x64" "0.24.2" - "@esbuild/sunos-x64" "0.24.2" - "@esbuild/win32-arm64" "0.24.2" - "@esbuild/win32-ia32" "0.24.2" - "@esbuild/win32-x64" "0.24.2" - esbuild@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.0.tgz#0de1787a77206c5a79eeb634a623d39b5006ce92" - integrity sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw== + version "0.25.1" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.1.tgz#a16b8d070b6ad4871935277bda6ccfe852e3fa2f" + integrity sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ== optionalDependencies: - "@esbuild/aix-ppc64" "0.25.0" - "@esbuild/android-arm" "0.25.0" - "@esbuild/android-arm64" "0.25.0" - "@esbuild/android-x64" "0.25.0" - "@esbuild/darwin-arm64" "0.25.0" - "@esbuild/darwin-x64" "0.25.0" - "@esbuild/freebsd-arm64" "0.25.0" - "@esbuild/freebsd-x64" "0.25.0" - "@esbuild/linux-arm" "0.25.0" - "@esbuild/linux-arm64" "0.25.0" - "@esbuild/linux-ia32" "0.25.0" - "@esbuild/linux-loong64" "0.25.0" - "@esbuild/linux-mips64el" "0.25.0" - "@esbuild/linux-ppc64" "0.25.0" - "@esbuild/linux-riscv64" "0.25.0" - "@esbuild/linux-s390x" "0.25.0" - "@esbuild/linux-x64" "0.25.0" - "@esbuild/netbsd-arm64" "0.25.0" - "@esbuild/netbsd-x64" "0.25.0" - "@esbuild/openbsd-arm64" "0.25.0" - "@esbuild/openbsd-x64" "0.25.0" - "@esbuild/sunos-x64" "0.25.0" - "@esbuild/win32-arm64" "0.25.0" - "@esbuild/win32-ia32" "0.25.0" - "@esbuild/win32-x64" "0.25.0" + "@esbuild/aix-ppc64" "0.25.1" + "@esbuild/android-arm" "0.25.1" + "@esbuild/android-arm64" "0.25.1" + "@esbuild/android-x64" "0.25.1" + "@esbuild/darwin-arm64" "0.25.1" + "@esbuild/darwin-x64" "0.25.1" + "@esbuild/freebsd-arm64" "0.25.1" + "@esbuild/freebsd-x64" "0.25.1" + "@esbuild/linux-arm" "0.25.1" + "@esbuild/linux-arm64" "0.25.1" + "@esbuild/linux-ia32" "0.25.1" + "@esbuild/linux-loong64" "0.25.1" + "@esbuild/linux-mips64el" "0.25.1" + "@esbuild/linux-ppc64" "0.25.1" + "@esbuild/linux-riscv64" "0.25.1" + "@esbuild/linux-s390x" "0.25.1" + "@esbuild/linux-x64" "0.25.1" + "@esbuild/netbsd-arm64" "0.25.1" + "@esbuild/netbsd-x64" "0.25.1" + "@esbuild/openbsd-arm64" "0.25.1" + "@esbuild/openbsd-x64" "0.25.1" + "@esbuild/sunos-x64" "0.25.1" + "@esbuild/win32-arm64" "0.25.1" + "@esbuild/win32-ia32" "0.25.1" + "@esbuild/win32-x64" "0.25.1" escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" @@ -5928,9 +5772,9 @@ mute-stream@^2.0.0: integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== nanoid@^3.3.8: - version "3.3.8" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" - integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== + version "3.3.9" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.9.tgz#e0097d8e026b3343ff053e9ccd407360a03f503a" + integrity sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg== natural-compare@^1.4.0: version "1.4.0" @@ -6550,15 +6394,6 @@ postcss@^8.4.19, postcss@^8.4.48, postcss@^8.5.0: picocolors "^1.1.1" source-map-js "^1.2.1" -postcss@^8.5.1: - version "8.5.2" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.2.tgz#e7b99cb9d2ec3e8dd424002e7c16517cb2b846bd" - integrity sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA== - dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -6937,31 +6772,31 @@ rimraf@^3.0.2: glob "^7.1.3" rollup@^4.30.1: - version "4.34.8" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.34.8.tgz#e859c1a51d899aba9bcf451d4eed1d11fb8e2a6e" - integrity sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ== + version "4.35.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.35.0.tgz#76c95dba17a579df4c00c3955aed32aa5d4dc66d" + integrity sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg== dependencies: "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.34.8" - "@rollup/rollup-android-arm64" "4.34.8" - "@rollup/rollup-darwin-arm64" "4.34.8" - "@rollup/rollup-darwin-x64" "4.34.8" - "@rollup/rollup-freebsd-arm64" "4.34.8" - "@rollup/rollup-freebsd-x64" "4.34.8" - "@rollup/rollup-linux-arm-gnueabihf" "4.34.8" - "@rollup/rollup-linux-arm-musleabihf" "4.34.8" - "@rollup/rollup-linux-arm64-gnu" "4.34.8" - "@rollup/rollup-linux-arm64-musl" "4.34.8" - "@rollup/rollup-linux-loongarch64-gnu" "4.34.8" - "@rollup/rollup-linux-powerpc64le-gnu" "4.34.8" - "@rollup/rollup-linux-riscv64-gnu" "4.34.8" - "@rollup/rollup-linux-s390x-gnu" "4.34.8" - "@rollup/rollup-linux-x64-gnu" "4.34.8" - "@rollup/rollup-linux-x64-musl" "4.34.8" - "@rollup/rollup-win32-arm64-msvc" "4.34.8" - "@rollup/rollup-win32-ia32-msvc" "4.34.8" - "@rollup/rollup-win32-x64-msvc" "4.34.8" + "@rollup/rollup-android-arm-eabi" "4.35.0" + "@rollup/rollup-android-arm64" "4.35.0" + "@rollup/rollup-darwin-arm64" "4.35.0" + "@rollup/rollup-darwin-x64" "4.35.0" + "@rollup/rollup-freebsd-arm64" "4.35.0" + "@rollup/rollup-freebsd-x64" "4.35.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.35.0" + "@rollup/rollup-linux-arm-musleabihf" "4.35.0" + "@rollup/rollup-linux-arm64-gnu" "4.35.0" + "@rollup/rollup-linux-arm64-musl" "4.35.0" + "@rollup/rollup-linux-loongarch64-gnu" "4.35.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.35.0" + "@rollup/rollup-linux-riscv64-gnu" "4.35.0" + "@rollup/rollup-linux-s390x-gnu" "4.35.0" + "@rollup/rollup-linux-x64-gnu" "4.35.0" + "@rollup/rollup-linux-x64-musl" "4.35.0" + "@rollup/rollup-win32-arm64-msvc" "4.35.0" + "@rollup/rollup-win32-ia32-msvc" "4.35.0" + "@rollup/rollup-win32-x64-msvc" "4.35.0" fsevents "~2.3.2" rrweb-cssom@^0.7.1: @@ -8079,12 +7914,12 @@ vite-plugin-stylelint@^6.0.0: fsevents "~2.3.3" vite@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/vite/-/vite-6.1.0.tgz#00a4e99a23751af98a2e4701c65ba89ce23858a6" - integrity sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ== + version "6.2.1" + resolved "https://registry.yarnpkg.com/vite/-/vite-6.2.1.tgz#ae865d4bb93a11844be1bc647c8b2dd1856ea180" + integrity sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q== dependencies: - esbuild "^0.24.2" - postcss "^8.5.1" + esbuild "^0.25.0" + postcss "^8.5.3" rollup "^4.30.1" optionalDependencies: fsevents "~2.3.3" From d37c9afc0188ed6df325de345203c852c4be0a0d Mon Sep 17 00:00:00 2001 From: Pleroma Renovate Bot Date: Fri, 14 Mar 2025 09:05:48 +0000 Subject: [PATCH 07/22] Update dependency vite to v6.2.2 --- yarn.lock | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 97eadb40f..406872adf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7356,7 +7356,16 @@ strict-event-emitter@^0.5.1: resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz#1602ece81c51574ca39c6815e09f1a3e8550bd93" integrity sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7420,7 +7429,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -7434,6 +7443,13 @@ strip-ansi@5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -8029,9 +8045,9 @@ vite-plugin-stylelint@^6.0.0: fsevents "~2.3.3" vite@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/vite/-/vite-6.2.1.tgz#ae865d4bb93a11844be1bc647c8b2dd1856ea180" - integrity sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q== + version "6.2.2" + resolved "https://registry.yarnpkg.com/vite/-/vite-6.2.2.tgz#8098b12a6bfd95abe39399aa7d5faa56545d7a1a" + integrity sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ== dependencies: esbuild "^0.25.0" postcss "^8.5.3" @@ -8281,7 +8297,7 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -8299,6 +8315,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 851b39bdd7988d48237652891d71ff2a4e9ef951 Mon Sep 17 00:00:00 2001 From: Pleroma Renovate Bot Date: Fri, 14 Mar 2025 09:06:17 +0000 Subject: [PATCH 08/22] Update dependency nightwatch to v3.12.0 --- package.json | 2 +- yarn.lock | 39 ++++++++++++++++++++++++++++++++------- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 8f5d08e8e..fae2763a8 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "iso-639-1": "3.1.5", "lodash": "4.17.21", "msw": "2.7.3", - "nightwatch": "3.11.1", + "nightwatch": "3.12.0", "ora": "0.4.1", "playwright": "1.49.1", "postcss": "8.5.3", diff --git a/yarn.lock b/yarn.lock index 97eadb40f..20a2b71ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5901,10 +5901,10 @@ nightwatch-axe-verbose@^2.3.0: dependencies: axe-core "^4.9.1" -nightwatch@3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/nightwatch/-/nightwatch-3.11.1.tgz#a785ac3bd1ffc233d68aed9519cd21a57c5740f5" - integrity sha512-CNVDXpy38RzVxM3Nmb/H56os9LrU9tGfpTjFbnbeZW6SWEggMT+ScbbedowUbPw2IPuNfGP8/a1vXD5sYrtdeA== +nightwatch@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/nightwatch/-/nightwatch-3.12.0.tgz#a9b5d59defbb68aef52b3d437a3b4a977ebdab5c" + integrity sha512-0AVxqz3O6ziNaZn+1b/jK5gV3YtQPNshD5sQhZkwbQtYsPQdZ+D7QFC8CkoceuTTkgzC16Mck/mTaSI+11b57w== dependencies: "@nightwatch/chai" "5.0.3" "@nightwatch/html-reporter-template" "^0.3.0" @@ -7356,7 +7356,16 @@ strict-event-emitter@^0.5.1: resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz#1602ece81c51574ca39c6815e09f1a3e8550bd93" integrity sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7420,7 +7429,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -7434,6 +7443,13 @@ strip-ansi@5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -8281,7 +8297,7 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -8299,6 +8315,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 29729e63c78fd8eab598a900a394c92959e3ae84 Mon Sep 17 00:00:00 2001 From: Pleroma Renovate Bot Date: Fri, 14 Mar 2025 09:06:28 +0000 Subject: [PATCH 09/22] Update dependency chromedriver to v134 --- package.json | 2 +- yarn.lock | 39 ++++++++++++++++++++++++++++++++------- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 8f5d08e8e..e55ac775e 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "babel-plugin-lodash": "3.3.4", "chai": "4.5.0", "chalk": "5.4.1", - "chromedriver": "133.0.3", + "chromedriver": "134.0.3", "connect-history-api-fallback": "2.0.0", "cross-spawn": "7.0.6", "custom-event-polyfill": "1.0.7", diff --git a/yarn.lock b/yarn.lock index 97eadb40f..da694b6b8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3020,10 +3020,10 @@ chromatism@3.0.0: resolved "https://registry.yarnpkg.com/chromatism/-/chromatism-3.0.0.tgz#a7249d353c1e4f3577e444ac41171c4e2e624b12" integrity sha512-slVGC45odKFB6KzD/hpXP8XgS/Y+x72X1ckAhxU/9YZecCy8VwCJUSZsn0O4gQUwaTogun6IfrSiK3YuQaADFw== -chromedriver@133.0.3: - version "133.0.3" - resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-133.0.3.tgz#84c314954172cf07dff89485afbe5778c3082b25" - integrity sha512-wGZUtrSdyqnbweXEDIbn+ndu7memG4SEqG6/D+mSabKUEic0hveMYepAPAhlYtvyOc0X8JbsARYtEalVD3R/Vg== +chromedriver@134.0.3: + version "134.0.3" + resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-134.0.3.tgz#185a52526c193cc7ceb0a27d1266858f0f65f0fd" + integrity sha512-pRS401K3VRJMhFrK4NNceVE6xdoNOHC0P3sBylkLOb5p4MfrbXkjiCCipXoBD8jvui76t44FS5/taoVQNz9XUg== dependencies: "@testim/chrome-version" "^1.1.4" axios "^1.7.4" @@ -7356,7 +7356,16 @@ strict-event-emitter@^0.5.1: resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz#1602ece81c51574ca39c6815e09f1a3e8550bd93" integrity sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7420,7 +7429,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -7434,6 +7443,13 @@ strip-ansi@5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -8281,7 +8297,7 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -8299,6 +8315,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 3cc635407c3d6a3054b452c39524eb738c13ecea Mon Sep 17 00:00:00 2001 From: Pleroma Renovate Bot Date: Tue, 18 Mar 2025 09:05:41 +0000 Subject: [PATCH 10/22] Update dependency @vitejs/plugin-vue to v5.2.3 --- yarn.lock | 48 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index d8d3a84af..b3e5437f3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2052,19 +2052,19 @@ "@vue/babel-plugin-jsx" "^1.2.5" "@vitejs/plugin-vue@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz#d1491f678ee3af899f7ae57d9c21dc52a65c7133" - integrity sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ== + version "5.2.3" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz#71a8fc82d4d2e425af304c35bf389506f674d89b" + integrity sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg== "@vitest/browser@^3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@vitest/browser/-/browser-3.0.7.tgz#1a40ff3eb9faeac2cf0de888bf6716dc612cbe01" - integrity sha512-TDzZtnbe37KZLSLhvlO1pUkeRSRzW3rOhPLsshX8agGoPELMlG7EvS4z9GfsdaCxsP7oWLBJpFjNJwLS458Bzg== + version "3.0.9" + resolved "https://registry.yarnpkg.com/@vitest/browser/-/browser-3.0.9.tgz#9927bbd5923341cf83e56508215b614110728c6a" + integrity sha512-P9dcCeMkA3/oYGfUzRFZJLZxiOpApztxhPsQDUiZzAzLoZonWhse2+vPB0xEBP8Q0lX1WCEEmtY7HzBRi4oYBA== dependencies: "@testing-library/dom" "^10.4.0" "@testing-library/user-event" "^14.6.1" - "@vitest/mocker" "3.0.7" - "@vitest/utils" "3.0.7" + "@vitest/mocker" "3.0.9" + "@vitest/utils" "3.0.9" magic-string "^0.30.17" msw "^2.7.3" sirv "^3.0.1" @@ -2090,6 +2090,15 @@ estree-walker "^3.0.3" magic-string "^0.30.17" +"@vitest/mocker@3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-3.0.9.tgz#75d176745131caf40810d3a3a73491595fce46e6" + integrity sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA== + dependencies: + "@vitest/spy" "3.0.9" + estree-walker "^3.0.3" + magic-string "^0.30.17" + "@vitest/pretty-format@3.0.7", "@vitest/pretty-format@^3.0.7": version "3.0.7" resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-3.0.7.tgz#1780516ebb4e40dd89e60b9fc7ffcbd9cba0fc22" @@ -2097,6 +2106,13 @@ dependencies: tinyrainbow "^2.0.0" +"@vitest/pretty-format@3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-3.0.9.tgz#d9c88fe64b4edcdbc88e5bd92c39f9cc8d40930d" + integrity sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA== + dependencies: + tinyrainbow "^2.0.0" + "@vitest/runner@3.0.7": version "3.0.7" resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-3.0.7.tgz#65b64ba5f3291fdca4670bf9e50627200ea33b7b" @@ -2121,6 +2137,13 @@ dependencies: tinyspy "^3.0.2" +"@vitest/spy@3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-3.0.9.tgz#c3e5d47ceff7c1cb9fdfb9b2f168056bbc625534" + integrity sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ== + dependencies: + tinyspy "^3.0.2" + "@vitest/ui@^3.0.7": version "3.0.7" resolved "https://registry.yarnpkg.com/@vitest/ui/-/ui-3.0.7.tgz#ac4c3d0fa4543832f6372e02a82766da3f7ba52f" @@ -2143,6 +2166,15 @@ loupe "^3.1.3" tinyrainbow "^2.0.0" +"@vitest/utils@3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-3.0.9.tgz#15da261d8cacd6035dc28a8d3ba38ee39545f82b" + integrity sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng== + dependencies: + "@vitest/pretty-format" "3.0.9" + loupe "^3.1.3" + tinyrainbow "^2.0.0" + "@vue/babel-helper-vue-jsx-merge-props@1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz#8d53a1e21347db8edbe54d339902583176de09f2" From 290056e818eae9797291708ec1839bc2e09ee50c Mon Sep 17 00:00:00 2001 From: Pleroma Renovate Bot Date: Tue, 18 Mar 2025 09:05:54 +0000 Subject: [PATCH 11/22] Update dependency @vitejs/plugin-vue-jsx to v4.1.2 --- yarn.lock | 210 ++++++++++++------------------------------------------ 1 file changed, 47 insertions(+), 163 deletions(-) diff --git a/yarn.lock b/yarn.lock index d8d3a84af..f4be5127f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,7 +28,7 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.2": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.26.2": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== @@ -37,17 +37,17 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.5": +"@babel/compat-data@^7.22.6": version "7.26.5" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.5.tgz#df93ac37f4417854130e21d72c66ff3d4b897fc7" integrity sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg== -"@babel/compat-data@^7.26.8": +"@babel/compat-data@^7.26.5", "@babel/compat-data@^7.26.8": version "7.26.8" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== -"@babel/core@7.26.10": +"@babel/core@7.26.10", "@babel/core@^7.26.7": version "7.26.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9" integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== @@ -68,27 +68,6 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/core@^7.26.0": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.9.tgz#71838542a4b1e49dfed353d7acbc6eb89f4a76f2" - integrity sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.9" - "@babel/helper-compilation-targets" "^7.26.5" - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helpers" "^7.26.9" - "@babel/parser" "^7.26.9" - "@babel/template" "^7.26.9" - "@babel/traverse" "^7.26.9" - "@babel/types" "^7.26.9" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - "@babel/eslint-parser@7.26.10": version "7.26.10" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.26.10.tgz#4423cb3f84c26978439feabfe23c5aa929400737" @@ -109,17 +88,6 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/generator@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.5.tgz#e44d4ab3176bbcaf78a5725da5f1dc28802a9458" - integrity sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw== - dependencies: - "@babel/parser" "^7.26.5" - "@babel/types" "^7.26.5" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - "@babel/generator@^7.26.8": version "7.26.8" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.8.tgz#f9c5e770309e12e3099ad8271e52f6caa15442ab" @@ -161,16 +129,16 @@ semver "^6.3.1" "@babel/helper-create-class-features-plugin@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz#7644147706bb90ff613297d49ed5266bde729f83" - integrity sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ== + version "7.26.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz#d6f83e3039547fbb39967e78043cd3c8b7820c71" + integrity sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg== dependencies: "@babel/helper-annotate-as-pure" "^7.25.9" "@babel/helper-member-expression-to-functions" "^7.25.9" "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-replace-supers" "^7.26.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/traverse" "^7.26.9" semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": @@ -201,7 +169,7 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.24.7", "@babel/helper-module-imports@^7.25.9": +"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== @@ -225,7 +193,7 @@ dependencies: "@babel/types" "^7.25.9" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5": version "7.26.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== @@ -239,7 +207,7 @@ "@babel/helper-wrap-function" "^7.25.9" "@babel/traverse" "^7.25.9" -"@babel/helper-replace-supers@^7.25.9": +"@babel/helper-replace-supers@^7.25.9", "@babel/helper-replace-supers@^7.26.5": version "7.26.5" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz#6cb04e82ae291dae8e72335dfe438b0725f14c8d" integrity sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg== @@ -288,14 +256,6 @@ "@babel/template" "^7.26.9" "@babel/types" "^7.26.10" -"@babel/helpers@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.9.tgz#28f3fb45252fc88ef2dc547c8a911c255fc9fef6" - integrity sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA== - dependencies: - "@babel/template" "^7.26.9" - "@babel/types" "^7.26.9" - "@babel/highlight@^7.0.0": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.9.tgz#8141ce68fc73757946f983b343f1231f4691acc6" @@ -306,14 +266,7 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.25.3", "@babel/parser@^7.25.6", "@babel/parser@^7.25.9", "@babel/parser@^7.26.5", "@babel/parser@^7.26.7": - version "7.26.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.7.tgz#e114cd099e5f7d17b05368678da0fb9f69b3385c" - integrity sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w== - dependencies: - "@babel/types" "^7.26.7" - -"@babel/parser@^7.26.10": +"@babel/parser@^7.25.3", "@babel/parser@^7.26.10", "@babel/parser@^7.26.9": version "7.26.10" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.10.tgz#e9bdb82f14b97df6569b0b038edd436839c57749" integrity sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA== @@ -327,13 +280,6 @@ dependencies: "@babel/types" "^7.26.8" -"@babel/parser@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.9.tgz#d9e78bee6dc80f9efd8f2349dcfbbcdace280fd5" - integrity sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A== - dependencies: - "@babel/types" "^7.26.9" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" @@ -392,7 +338,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-jsx@^7.24.7", "@babel/plugin-syntax-jsx@^7.25.9": +"@babel/plugin-syntax-jsx@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== @@ -782,7 +728,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.26.5" -"@babel/plugin-transform-typescript@^7.25.9": +"@babel/plugin-transform-typescript@^7.26.7": version "7.26.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.8.tgz#2e9caa870aa102f50d7125240d9dbf91334b0950" integrity sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw== @@ -940,14 +886,14 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.25.0", "@babel/template@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" - integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== +"@babel/template@^7.25.9", "@babel/template@^7.26.9": + version "7.26.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.9.tgz#4577ad3ddf43d194528cff4e1fa6b232fa609bb2" + integrity sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA== dependencies: - "@babel/code-frame" "^7.25.9" - "@babel/parser" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/code-frame" "^7.26.2" + "@babel/parser" "^7.26.9" + "@babel/types" "^7.26.9" "@babel/template@^7.26.8": version "7.26.8" @@ -958,29 +904,7 @@ "@babel/parser" "^7.26.8" "@babel/types" "^7.26.8" -"@babel/template@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.9.tgz#4577ad3ddf43d194528cff4e1fa6b232fa609bb2" - integrity sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/parser" "^7.26.9" - "@babel/types" "^7.26.9" - -"@babel/traverse@^7.25.6", "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.5": - version "7.26.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.7.tgz#99a0a136f6a75e7fb8b0a1ace421e0b25994b8bb" - integrity sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.5" - "@babel/parser" "^7.26.7" - "@babel/template" "^7.25.9" - "@babel/types" "^7.26.7" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/traverse@^7.26.10": +"@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.5": version "7.26.10" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.10.tgz#43cca33d76005dbaa93024fae536cc1946a4c380" integrity sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A== @@ -1019,7 +943,7 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0-beta.49", "@babel/types@^7.25.6", "@babel/types@^7.25.9", "@babel/types@^7.26.5", "@babel/types@^7.26.7", "@babel/types@^7.4.4": +"@babel/types@^7.0.0-beta.49", "@babel/types@^7.4.4": version "7.26.7" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.7.tgz#5e2b89c0768e874d4d061961f3a5a153d71dc17a" integrity sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg== @@ -1027,7 +951,7 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" -"@babel/types@^7.26.10": +"@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.26.9": version "7.26.10" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.10.tgz#396382f6335bd4feb65741eacfc808218f859259" integrity sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ== @@ -1043,14 +967,6 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" -"@babel/types@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.9.tgz#08b43dec79ee8e682c2ac631c010bdcac54a21ce" - integrity sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw== - dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@bazel/runfiles@^6.3.1": version "6.3.1" resolved "https://registry.yarnpkg.com/@bazel/runfiles/-/runfiles-6.3.1.tgz#3f8824b2d82853377799d42354b4df78ab0ace0b" @@ -2043,12 +1959,12 @@ integrity sha512-u9Fd3k2qfMtn+0dxbCn/y0pzQ9Ucw6lWR984CrHcbxc+WzcMkJE4VjWHWSb9At40MjwMyHCkJNXroS55Osshhw== "@vitejs/plugin-vue-jsx@^4.1.1": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.1.1.tgz#180eef4d4ca42e9b46a2150caa605c9ae2272be7" - integrity sha512-uMJqv/7u1zz/9NbWAD3XdjaY20tKTf17XVfQ9zq4wY1BjsB/PjpJPMe2xiG39QpP4ZdhYNhm4Hvo66uJrykNLA== + version "4.1.2" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.1.2.tgz#7ab813bcba9a514a2bdee5b0e17c30d6e420c748" + integrity sha512-4Rk0GdE0QCdsIkuMmWeg11gmM4x8UmTnZR/LWPm7QJ7+BsK4tq08udrN0isrrWqz5heFy9HLV/7bOLgFS8hUjA== dependencies: - "@babel/core" "^7.26.0" - "@babel/plugin-transform-typescript" "^7.25.9" + "@babel/core" "^7.26.7" + "@babel/plugin-transform-typescript" "^7.26.7" "@vue/babel-plugin-jsx" "^1.2.5" "@vitejs/plugin-vue@^5.2.1": @@ -2148,17 +2064,12 @@ resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz#8d53a1e21347db8edbe54d339902583176de09f2" integrity sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA== -"@vue/babel-helper-vue-transform-on@1.2.5": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz#b9e195b92bfa8d15d5aa9581ca01cb702dbcc19d" - integrity sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw== - "@vue/babel-helper-vue-transform-on@1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.4.0.tgz#616020488692a9c42a613280d62ed1b727045d95" integrity sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw== -"@vue/babel-plugin-jsx@1.4.0": +"@vue/babel-plugin-jsx@1.4.0", "@vue/babel-plugin-jsx@^1.2.5": version "1.4.0" resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.4.0.tgz#c155c795ce980edf46aa6feceed93945a95ca658" integrity sha512-9zAHmwgMWlaN6qRKdrg1uKsBKHvnUU+Py+MOCTuYZBoZsopa90Di10QRjB+YPnVss0BZbG/H5XFwJY1fTxJWhA== @@ -2173,33 +2084,6 @@ "@vue/babel-plugin-resolve-type" "1.4.0" "@vue/shared" "^3.5.13" -"@vue/babel-plugin-jsx@^1.2.5": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz#77f4f9f189d00c24ebd587ab84ae615dfa1c3abb" - integrity sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg== - dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/plugin-syntax-jsx" "^7.24.7" - "@babel/template" "^7.25.0" - "@babel/traverse" "^7.25.6" - "@babel/types" "^7.25.6" - "@vue/babel-helper-vue-transform-on" "1.2.5" - "@vue/babel-plugin-resolve-type" "1.2.5" - html-tags "^3.3.1" - svg-tags "^1.0.0" - -"@vue/babel-plugin-resolve-type@1.2.5": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz#f6ed0d39987fe0158370659b73156c55e80d17b5" - integrity sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/parser" "^7.25.6" - "@vue/compiler-sfc" "^3.5.3" - "@vue/babel-plugin-resolve-type@1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.4.0.tgz#4d357a81fb0cc9cad0e8c81b118115bda2c51543" @@ -2230,7 +2114,7 @@ "@vue/compiler-core" "3.5.13" "@vue/shared" "3.5.13" -"@vue/compiler-sfc@3.5.13", "@vue/compiler-sfc@^3.5.13", "@vue/compiler-sfc@^3.5.3": +"@vue/compiler-sfc@3.5.13", "@vue/compiler-sfc@^3.5.13": version "3.5.13" resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz#461f8bd343b5c06fac4189c4fef8af32dea82b46" integrity sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ== @@ -2903,9 +2787,9 @@ camelcase@^6.0.0, camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001688: - version "1.0.30001696" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz#00c30a2fc11e3c98c25e5125418752af3ae2f49f" - integrity sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ== + version "1.0.30001706" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz#902c3f896f4b2968031c3a546ab2ef8b465a2c8f" + integrity sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug== caniuse-lite@^1.0.30001702: version "1.0.30001703" @@ -3653,9 +3537,9 @@ ejs@^3.1.10: jake "^10.8.5" electron-to-chromium@^1.5.73: - version "1.5.90" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.90.tgz#4717e5a5413f95bbb12d0af14c35057e9c65e0b6" - integrity sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug== + version "1.5.120" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.120.tgz#ccfdd28e9795fb8c2221cefa2c9a071501c86247" + integrity sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ== emoji-regex@^8.0.0: version "8.0.0" @@ -4810,7 +4694,7 @@ html-encoding-sniffer@^4.0.0: dependencies: whatwg-encoding "^3.1.1" -html-tags@^3.2.0, html-tags@^3.3.1: +html-tags@^3.2.0: version "3.3.1" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== @@ -5870,9 +5754,9 @@ mute-stream@^2.0.0: integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== nanoid@^3.3.8: - version "3.3.9" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.9.tgz#e0097d8e026b3343ff053e9ccd407360a03f503a" - integrity sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg== + version "3.3.10" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.10.tgz#7bc882237698ef787d5cbba109e3b0168ba6e7b1" + integrity sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg== natural-compare@^1.4.0: version "1.4.0" @@ -6489,7 +6373,7 @@ postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.5.3, postcss@^8.5.3: +postcss@8.5.3, postcss@^8.4.48, postcss@^8.5.3: version "8.5.3" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== @@ -6498,7 +6382,7 @@ postcss@8.5.3, postcss@^8.5.3: picocolors "^1.1.1" source-map-js "^1.2.1" -postcss@^8.4.19, postcss@^8.4.48, postcss@^8.5.0: +postcss@^8.4.19, postcss@^8.5.0: version "8.5.1" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== @@ -7938,9 +7822,9 @@ untildify@4.0.0: integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== update-browserslist-db@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz#97e9c96ab0ae7bcac08e9ae5151d26e6bc6b5580" - integrity sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg== + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== dependencies: escalade "^3.2.0" picocolors "^1.1.1" From 5e880ed54ff212e270ec8f3b8ab2502267fac8e1 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 20 Mar 2025 19:32:52 +0200 Subject: [PATCH 12/22] added ability to granularly modify objects in simple storage --- src/modules/serverSideStorage.js | 76 +++++++++++++++++-- .../specs/modules/serverSideStorage.spec.js | 73 +++++++++++++++++- 2 files changed, 143 insertions(+), 6 deletions(-) diff --git a/src/modules/serverSideStorage.js b/src/modules/serverSideStorage.js index 9a8ea316a..97bf69fe9 100644 --- a/src/modules/serverSideStorage.js +++ b/src/modules/serverSideStorage.js @@ -3,6 +3,7 @@ import { isEqual, cloneDeep, set, + unset, get, clamp, flatten, @@ -35,7 +36,8 @@ export const defaultState = { _journal: [], simple: { dontShowUpdateNotifs: false, - collapseNav: false + collapseNav: false, + filters: {} }, collections: { pinnedStatusActions: ['reply', 'retweet', 'favorite', 'emoji'], @@ -78,11 +80,16 @@ const _verifyPrefs = (state) => { simple: {}, collections: {} } + + // Simple Object.entries(defaultState.prefsStorage.simple).forEach(([k, v]) => { if (typeof v === 'number' || typeof v === 'boolean') return + if (typeof v === 'object' && v != null) return console.warn(`Preference simple.${k} as invalid type, reinitializing`) set(state.prefsStorage.simple, k, defaultState.prefsStorage.simple[k]) }) + + // Collections Object.entries(defaultState.prefsStorage.collections).forEach(([k, v]) => { if (Array.isArray(v)) return console.warn(`Preference collections.${k} as invalid type, reinitializing`) @@ -224,8 +231,27 @@ export const _mergePrefs = (recent, stale) => { } switch (operation) { case 'set': + if (path.startsWith('collections') || path.startsWith('objectCollections')) { + console.error('Illegal operation "set" on a collection') + return + } + if (path.split(/\./g).length <= 1) { + console.error(`Calling set on depth <= 1 (path: ${path}) is not allowed`) + return + } set(resultOutput, path, args[0]) break + case 'unset': + if (path.startsWith('collections') || path.startsWith('objectCollections')) { + console.error('Illegal operation "unset" on a collection') + return + } + if (path.split(/\./g).length <= 2) { + console.error(`Calling unset on depth <= 2 (path: ${path}) is not allowed`) + return + } + unset(resultOutput, path) + break case 'addToCollection': set(resultOutput, path, Array.from(new Set(get(resultOutput, path)).add(args[0]))) break @@ -380,7 +406,15 @@ export const mutations = { }, setPreference (state, { path, value }) { if (path.startsWith('_')) { - console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`) + console.error(`Tried to edit internal (starts with _) field '${path}', ignoring.`) + return + } + if (path.startsWith('collections') || path.startsWith('objectCollections')) { + console.error(`Invalid operation 'set' for collection field '${path}', ignoring.`) + return + } + if (path.split(/\./g).length <= 1) { + console.error(`Calling set on depth <= 1 (path: ${path}) is not allowed`) return } set(state.prefsStorage, path, value) @@ -390,14 +424,46 @@ export const mutations = { ] state.dirty = true }, + unsetPreference (state, { path, value }) { + if (path.startsWith('_')) { + console.error(`Tried to edit internal (starts with _) field '${path}', ignoring.`) + return + } + if (path.startsWith('collections') || path.startsWith('objectCollections')) { + console.error(`Invalid operation 'unset' for collection field '${path}', ignoring.`) + return + } + if (path.split(/\./g).length <= 2) { + console.error(`Calling unset on depth <= 2 (path: ${path}) is not allowed`) + return + } + unset(state.prefsStorage, path, value) + state.prefsStorage._journal = [ + ...state.prefsStorage._journal, + { operation: 'unset', path, args: [], timestamp: Date.now() } + ] + state.dirty = true + }, addCollectionPreference (state, { path, value }) { if (path.startsWith('_')) { console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`) return } - const collection = new Set(get(state.prefsStorage, path)) - collection.add(value) - set(state.prefsStorage, path, [...collection]) + if (path.startsWith('collections')) { + const collection = new Set(get(state.prefsStorage, path)) + collection.add(value) + set(state.prefsStorage, path, [...collection]) + } else if (path.startsWith('objectCollections')) { + const { _key } = value + if (!_key && typeof _key !== 'string') { + console.error('Object for storage is missing _key field! ignoring') + return + } + const collection = new Set(get(state.prefsStorage, path + '.index')) + collection.add(_key) + set(state.prefsStorage, path + '.index', [...collection]) + set(state.prefsStorage, path + '.data.' + _key, value) + } state.prefsStorage._journal = [ ...state.prefsStorage._journal, { operation: 'addToCollection', path, args: [value], timestamp: Date.now() } diff --git a/test/unit/specs/modules/serverSideStorage.spec.js b/test/unit/specs/modules/serverSideStorage.spec.js index 1d4021a7a..986cf61e0 100644 --- a/test/unit/specs/modules/serverSideStorage.spec.js +++ b/test/unit/specs/modules/serverSideStorage.spec.js @@ -107,7 +107,7 @@ describe('The serverSideStorage module', () => { }) }) describe('setPreference', () => { - const { setPreference, updateCache, addCollectionPreference, removeCollectionPreference } = mutations + const { setPreference, unsetPreference, updateCache, addCollectionPreference, removeCollectionPreference } = mutations it('should set preference and update journal log accordingly', () => { const state = cloneDeep(defaultState) @@ -160,6 +160,25 @@ describe('The serverSideStorage module', () => { expect(state.prefsStorage.collections.testing).to.eql([2]) expect(state.prefsStorage._journal.length).to.eql(2) }) + + it('should remove depth = 3 set/unset entries from journal', () => { + const state = cloneDeep(defaultState) + setPreference(state, { path: 'simple.object.foo', value: 1 }) + unsetPreference(state, { path: 'simple.object.foo' }) + updateCache(state, { username: 'test' }) + expect(state.prefsStorage.simple.object).to.not.have.property('foo') + expect(state.prefsStorage._journal.length).to.eql(1) + }) + + it('should not allow unsetting depth <= 2', () => { + const state = cloneDeep(defaultState) + setPreference(state, { path: 'simple.object.foo', value: 1 }) + unsetPreference(state, { path: 'simple.object' }) + unsetPreference(state, { path: 'simple' }) + updateCache(state, { username: 'test' }) + expect(state.prefsStorage.simple.object).to.have.property('foo') + expect(state.prefsStorage._journal.length).to.eql(1) + }) }) }) @@ -315,6 +334,58 @@ describe('The serverSideStorage module', () => { ] }) }) + + it('should work with objects', () => { + expect( + _mergePrefs( + // RECENT + { + simple: { lv2: { lv3: 'foo' } }, + _journal: [ + { path: 'simple.lv2.lv3', operation: 'set', args: ['foo'], timestamp: 2 } + ] + }, + // STALE + { + simple: { lv2: { lv3: 'bar' } }, + _journal: [ + { path: 'simple.lv2.lv3', operation: 'set', args: ['bar'], timestamp: 4 } + ] + } + ) + ).to.eql({ + simple: { lv2: { lv3: 'bar' } }, + _journal: [ + { path: 'simple.lv2.lv3', operation: 'set', args: ['bar'], timestamp: 4 } + ] + }) + }) + + it('should work with unset', () => { + expect( + _mergePrefs( + // RECENT + { + simple: { lv2: { lv3: 'foo' } }, + _journal: [ + { path: 'simple.lv2.lv3', operation: 'set', args: ['foo'], timestamp: 2 } + ] + }, + // STALE + { + simple: { lv2: {} }, + _journal: [ + { path: 'simple.lv2.lv3', operation: 'unset', args: [], timestamp: 4 } + ] + } + ) + ).to.eql({ + simple: { lv2: {} }, + _journal: [ + { path: 'simple.lv2.lv3', operation: 'unset', args: [], timestamp: 4 } + ] + }) + }) }) describe('_resetFlags', () => { From eaf7efdcffd631975f7c1a8b1a964d8da896575c Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Sun, 23 Mar 2025 17:23:47 +0200 Subject: [PATCH 13/22] throw errors instead of console logs --- src/modules/serverSideStorage.js | 53 ++++++++----------- .../specs/modules/serverSideStorage.spec.js | 16 ++++-- 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/src/modules/serverSideStorage.js b/src/modules/serverSideStorage.js index 97bf69fe9..0b46f8560 100644 --- a/src/modules/serverSideStorage.js +++ b/src/modules/serverSideStorage.js @@ -226,29 +226,24 @@ export const _mergePrefs = (recent, stale) => { const totalJournal = _mergeJournal(staleJournal, recentJournal) totalJournal.forEach(({ path, operation, args }) => { if (path.startsWith('_')) { - console.error(`journal contains entry to edit internal (starts with _) field '${path}', something is incorrect here, ignoring.`) - return + throw new Error(`journal contains entry to edit internal (starts with _) field '${path}', something is incorrect here, ignoring.`) } switch (operation) { case 'set': if (path.startsWith('collections') || path.startsWith('objectCollections')) { - console.error('Illegal operation "set" on a collection') - return + throw new Error('Illegal operation "set" on a collection') } if (path.split(/\./g).length <= 1) { - console.error(`Calling set on depth <= 1 (path: ${path}) is not allowed`) - return + throw new Error(`Calling set on depth <= 1 (path: ${path}) is not allowed`) } set(resultOutput, path, args[0]) break case 'unset': if (path.startsWith('collections') || path.startsWith('objectCollections')) { - console.error('Illegal operation "unset" on a collection') - return + throw new Error('Illegal operation "unset" on a collection') } if (path.split(/\./g).length <= 2) { - console.error(`Calling unset on depth <= 2 (path: ${path}) is not allowed`) - return + throw new Error(`Calling unset on depth <= 2 (path: ${path}) is not allowed`) } unset(resultOutput, path) break @@ -267,7 +262,7 @@ export const _mergePrefs = (recent, stale) => { break } default: - console.error(`Unknown journal operation: '${operation}', did we forget to run reverse migrations beforehand?`) + throw new Error(`Unknown journal operation: '${operation}', did we forget to run reverse migrations beforehand?`) } }) return { ...resultOutput, _journal: totalJournal } @@ -406,16 +401,16 @@ export const mutations = { }, setPreference (state, { path, value }) { if (path.startsWith('_')) { - console.error(`Tried to edit internal (starts with _) field '${path}', ignoring.`) - return + throw new Error(`Tried to edit internal (starts with _) field '${path}', ignoring.`) } if (path.startsWith('collections') || path.startsWith('objectCollections')) { - console.error(`Invalid operation 'set' for collection field '${path}', ignoring.`) - return + throw new Error(`Invalid operation 'set' for collection field '${path}', ignoring.`) } if (path.split(/\./g).length <= 1) { - console.error(`Calling set on depth <= 1 (path: ${path}) is not allowed`) - return + throw new Error(`Calling set on depth <= 1 (path: ${path}) is not allowed`) + } + if (path.split(/\./g).length > 3) { + throw new Error(`Calling set on depth > 3 (path: ${path}) is not allowed`) } set(state.prefsStorage, path, value) state.prefsStorage._journal = [ @@ -426,16 +421,16 @@ export const mutations = { }, unsetPreference (state, { path, value }) { if (path.startsWith('_')) { - console.error(`Tried to edit internal (starts with _) field '${path}', ignoring.`) - return + throw new Error(`Tried to edit internal (starts with _) field '${path}', ignoring.`) } if (path.startsWith('collections') || path.startsWith('objectCollections')) { - console.error(`Invalid operation 'unset' for collection field '${path}', ignoring.`) - return + throw new Error(`Invalid operation 'unset' for collection field '${path}', ignoring.`) } if (path.split(/\./g).length <= 2) { - console.error(`Calling unset on depth <= 2 (path: ${path}) is not allowed`) - return + throw new Error(`Calling unset on depth <= 2 (path: ${path}) is not allowed`) + } + if (path.split(/\./g).length > 3) { + throw new Error(`Calling unset on depth > 3 (path: ${path}) is not allowed`) } unset(state.prefsStorage, path, value) state.prefsStorage._journal = [ @@ -446,8 +441,7 @@ export const mutations = { }, addCollectionPreference (state, { path, value }) { if (path.startsWith('_')) { - console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`) - return + throw new Error(`tried to edit internal (starts with _) field '${path}'`) } if (path.startsWith('collections')) { const collection = new Set(get(state.prefsStorage, path)) @@ -456,8 +450,7 @@ export const mutations = { } else if (path.startsWith('objectCollections')) { const { _key } = value if (!_key && typeof _key !== 'string') { - console.error('Object for storage is missing _key field! ignoring') - return + throw new Error('Object for storage is missing _key field!') } const collection = new Set(get(state.prefsStorage, path + '.index')) collection.add(_key) @@ -472,8 +465,7 @@ export const mutations = { }, removeCollectionPreference (state, { path, value }) { if (path.startsWith('_')) { - console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`) - return + throw new Error(`tried to edit internal (starts with _) field '${path}', ignoring.`) } const collection = new Set(get(state.prefsStorage, path)) collection.delete(value) @@ -486,8 +478,7 @@ export const mutations = { }, reorderCollectionPreference (state, { path, value, movement }) { if (path.startsWith('_')) { - console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`) - return + throw new Error(`tried to edit internal (starts with _) field '${path}', ignoring.`) } const collection = get(state.prefsStorage, path) const newCollection = _moveItemInArray(collection, value, movement) diff --git a/test/unit/specs/modules/serverSideStorage.spec.js b/test/unit/specs/modules/serverSideStorage.spec.js index 986cf61e0..fc0402402 100644 --- a/test/unit/specs/modules/serverSideStorage.spec.js +++ b/test/unit/specs/modules/serverSideStorage.spec.js @@ -173,11 +173,17 @@ describe('The serverSideStorage module', () => { it('should not allow unsetting depth <= 2', () => { const state = cloneDeep(defaultState) setPreference(state, { path: 'simple.object.foo', value: 1 }) - unsetPreference(state, { path: 'simple.object' }) - unsetPreference(state, { path: 'simple' }) - updateCache(state, { username: 'test' }) - expect(state.prefsStorage.simple.object).to.have.property('foo') - expect(state.prefsStorage._journal.length).to.eql(1) + expect(() => unsetPreference(state, { path: 'simple' })).to.throw() + expect(() => unsetPreference(state, { path: 'simple.object' })).to.throw() + }) + + it('should not allow (un)setting depth > 3', () => { + const state = cloneDeep(defaultState) + setPreference(state, { path: 'simple.object', value: {} }) + expect(() => setPreference(state, { path: 'simple.object.lv3', value: 1 })).to.not.throw() + expect(() => setPreference(state, { path: 'simple.object.lv3.lv4', value: 1})).to.throw() + expect(() => unsetPreference(state, { path: 'simple.object.lv3', value: 1 })).to.not.throw() + expect(() => unsetPreference(state, { path: 'simple.object.lv3.lv4', value: 1})).to.throw() }) }) }) From f347897b2916ebc8eefe911e05018cf45d17bb9e Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Sun, 23 Mar 2025 20:03:25 +0200 Subject: [PATCH 14/22] migrate to pinia --- src/components/mobile_nav/mobile_nav.js | 17 +- src/components/nav_panel/nav_panel.js | 18 +- src/components/navigation/navigation_entry.js | 18 +- src/components/navigation/navigation_pins.js | 9 +- .../status_action_buttons.js | 16 +- .../update_notification.js | 16 +- src/modules/index.js | 2 - src/modules/users.js | 7 +- src/{modules => stores}/serverSideStorage.js | 373 +++++++++--------- .../specs/modules/serverSideStorage.spec.js | 171 ++++---- 10 files changed, 330 insertions(+), 317 deletions(-) rename src/{modules => stores}/serverSideStorage.js (61%) diff --git a/src/components/mobile_nav/mobile_nav.js b/src/components/mobile_nav/mobile_nav.js index 10a0892f4..2085d24e3 100644 --- a/src/components/mobile_nav/mobile_nav.js +++ b/src/components/mobile_nav/mobile_nav.js @@ -1,14 +1,19 @@ import SideDrawer from '../side_drawer/side_drawer.vue' import Notifications from '../notifications/notifications.vue' import ConfirmModal from '../confirm_modal/confirm_modal.vue' +import GestureService from '../../services/gesture_service/gesture_service' +import NavigationPins from 'src/components/navigation/navigation_pins.vue' + import { unseenNotificationsFromStore, countExtraNotifications } from '../../services/notification_utils/notification_utils' -import GestureService from '../../services/gesture_service/gesture_service' -import NavigationPins from 'src/components/navigation/navigation_pins.vue' + import { mapGetters } from 'vuex' import { mapState } from 'pinia' +import { useAnnouncementsStore } from 'src/stores/announcements' +import { useServerSideStorageStore } from 'src/stores/serverSideStorage' + import { library } from '@fortawesome/fontawesome-svg-core' import { faTimes, @@ -18,7 +23,6 @@ import { faMinus, faCheckDouble } from '@fortawesome/free-solid-svg-icons' -import { useAnnouncementsStore } from 'src/stores/announcements' library.add( faTimes, @@ -71,10 +75,9 @@ const MobileNav = { return this.$route.name === 'chat' }, ...mapState(useAnnouncementsStore, ['unreadAnnouncementCount']), - ...mapGetters(['unreadChatCount']), - chatsPinned () { - return new Set(this.$store.state.serverSideStorage.prefsStorage.collections.pinnedNavItems).has('chats') - }, + ...mapState(useServerSideStorageStore, { + pinnedItems: store => new Set(store.prefsStorage.collections.pinnedNavItems).has('chats') + }), shouldConfirmLogout () { return this.$store.getters.mergedConfig.modalOnLogout }, diff --git a/src/components/nav_panel/nav_panel.js b/src/components/nav_panel/nav_panel.js index 9d569729f..681aaf05b 100644 --- a/src/components/nav_panel/nav_panel.js +++ b/src/components/nav_panel/nav_panel.js @@ -7,7 +7,9 @@ import { filterNavigation } from 'src/components/navigation/filter.js' import NavigationEntry from 'src/components/navigation/navigation_entry.vue' import NavigationPins from 'src/components/navigation/navigation_pins.vue' import Checkbox from 'src/components/checkbox/checkbox.vue' + import { useAnnouncementsStore } from 'src/stores/announcements' +import { useServerSideStorageStore } from 'src/stores/serverSideStorage' import { library } from '@fortawesome/fontawesome-svg-core' import { @@ -76,19 +78,19 @@ const NavPanel = { this.editMode = !this.editMode }, toggleCollapse () { - this.$store.commit('setPreference', { path: 'simple.collapseNav', value: !this.collapsed }) - this.$store.dispatch('pushServerSideStorage') + useServerSideStorageStore().setPreference({ path: 'simple.collapseNav', value: !this.collapsed }) + useServerSideStorageStore().pushServerSideStorage() }, isPinned (item) { return this.pinnedItems.has(item) }, togglePin (item) { if (this.isPinned(item)) { - this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedNavItems', value: item }) + useServerSideStorageStore().removeCollectionPreference({ path: 'collections.pinnedNavItems', value: item }) } else { - this.$store.commit('addCollectionPreference', { path: 'collections.pinnedNavItems', value: item }) + useServerSideStorageStore().addCollectionPreference({ path: 'collections.pinnedNavItems', value: item }) } - this.$store.dispatch('pushServerSideStorage') + useServerSideStorageStore().pushServerSideStorage() } }, computed: { @@ -96,14 +98,16 @@ const NavPanel = { unreadAnnouncementCount: 'unreadAnnouncementCount', supportsAnnouncements: store => store.supportsAnnouncements }), + ...mapPiniaState(useServerSideStorageStore, { + collapsed: store => store.prefsStorage.simple.collapseNav, + pinnedItems: store => new Set(store.prefsStorage.collections.pinnedNavItems) + }), ...mapState({ currentUser: state => state.users.currentUser, followRequestCount: state => state.api.followRequests.length, privateMode: state => state.instance.private, federating: state => state.instance.federating, pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable, - pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems), - collapsed: state => state.serverSideStorage.prefsStorage.simple.collapseNav, bookmarkFolders: state => state.instance.pleromaBookmarkFoldersAvailable }), timelinesItems () { diff --git a/src/components/navigation/navigation_entry.js b/src/components/navigation/navigation_entry.js index dbef18fcd..11db1c9e3 100644 --- a/src/components/navigation/navigation_entry.js +++ b/src/components/navigation/navigation_entry.js @@ -3,8 +3,10 @@ import { routeTo } from 'src/components/navigation/navigation.js' import OptionalRouterLink from 'src/components/optional_router_link/optional_router_link.vue' import { library } from '@fortawesome/fontawesome-svg-core' import { faThumbtack } from '@fortawesome/free-solid-svg-icons' -import { mapStores } from 'pinia' +import { mapStores, mapState as mapPiniaState } from 'pinia' + import { useAnnouncementsStore } from 'src/stores/announcements' +import { useServerSideStorageStore } from 'src/stores/serverSideStorage' library.add(faThumbtack) @@ -19,11 +21,11 @@ const NavigationEntry = { }, togglePin (value) { if (this.isPinned(value)) { - this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedNavItems', value }) + useServerSideStorageStore().removeCollectionPreference({ path: 'collections.pinnedNavItems', value }) } else { - this.$store.commit('addCollectionPreference', { path: 'collections.pinnedNavItems', value }) + useServerSideStorageStore().addCollectionPreference({ path: 'collections.pinnedNavItems', value }) } - this.$store.dispatch('pushServerSideStorage') + useServerSideStorageStore().pushServerSideStorage() } }, computed: { @@ -35,9 +37,11 @@ const NavigationEntry = { }, ...mapStores(useAnnouncementsStore), ...mapState({ - currentUser: state => state.users.currentUser, - pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems) - }) + currentUser: state => state.users.currentUser + }), + ...mapPiniaState(useServerSideStorageStore, { + pinnedItems: store => new Set(store.prefsStorage.collections.pinnedNavItems) + }), } } diff --git a/src/components/navigation/navigation_pins.js b/src/components/navigation/navigation_pins.js index f9cdef71b..50acbbaf1 100644 --- a/src/components/navigation/navigation_pins.js +++ b/src/components/navigation/navigation_pins.js @@ -20,6 +20,7 @@ import { import { useListsStore } from 'src/stores/lists' import { useAnnouncementsStore } from 'src/stores/announcements' import { useBookmarkFoldersStore } from 'src/stores/bookmark_folders' +import { useServerSideStorageStore } from 'src/stores/serverSideStorage' library.add( faUsers, @@ -54,15 +55,17 @@ const NavPanel = { supportsAnnouncements: store => store.supportsAnnouncements }), ...mapPiniaState(useBookmarkFoldersStore, { - bookmarks: getBookmarkFolderEntries + bookmarks: getBookmarkFolderEntries, + }), + ...mapPiniaState(useServerSideStorageStore, { + pinnedItems: store => new Set(store.prefsStorage.collections.pinnedNavItems) }), ...mapState({ currentUser: state => state.users.currentUser, followRequestCount: state => state.api.followRequests.length, privateMode: state => state.instance.private, federating: state => state.instance.federating, - pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable, - pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems) + pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable }), pinnedList () { if (!this.currentUser) { diff --git a/src/components/status_action_buttons/status_action_buttons.js b/src/components/status_action_buttons/status_action_buttons.js index 6d4e4fbc0..6f84ce8b5 100644 --- a/src/components/status_action_buttons/status_action_buttons.js +++ b/src/components/status_action_buttons/status_action_buttons.js @@ -1,10 +1,12 @@ -import { mapState } from 'vuex' +import { mapState } from 'pinia' import ConfirmModal from 'src/components/confirm_modal/confirm_modal.vue' import ActionButtonContainer from './action_button_container.vue' import Popover from 'src/components/popover/popover.vue' import genRandomSeed from 'src/services/random_seed/random_seed.service.js' +import { useServerSideStorageStore } from 'src/stores/serverSideStorage' + import { BUTTONS } from './buttons_definitions.js' import { library } from '@fortawesome/fontawesome-svg-core' @@ -36,8 +38,8 @@ const StatusActionButtons = { ActionButtonContainer }, computed: { - ...mapState({ - pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedStatusActions) + ...mapState(useServerSideStorageStore, { + pinnedItems: store => new Set(store.prefsStorage.collections.pinnedStatusActions) }), buttons () { return BUTTONS.filter(x => x.if ? x.if(this.funcArg) : true) @@ -101,12 +103,12 @@ const StatusActionButtons = { return this.pinnedItems.has(button.name) }, unpin (button) { - this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedStatusActions', value: button.name }) - this.$store.dispatch('pushServerSideStorage') + useServerSideStorageStore().removeCollectionPreference({ path: 'collections.pinnedStatusActions', value: button.name }) + useServerSideStorageStore().pushServerSideStorage() }, pin (button) { - this.$store.commit('addCollectionPreference', { path: 'collections.pinnedStatusActions', value: button.name }) - this.$store.dispatch('pushServerSideStorage') + useServerSideStorageStore().addCollectionPreference({ path: 'collections.pinnedStatusActions', value: button.name }) + useServerSideStorageStore().pushServerSideStorage() }, getComponent (button) { if (!this.$store.state.users.currentUser && button.anonLink) { diff --git a/src/components/update_notification/update_notification.js b/src/components/update_notification/update_notification.js index 308449698..1dbae0bba 100644 --- a/src/components/update_notification/update_notification.js +++ b/src/components/update_notification/update_notification.js @@ -3,6 +3,8 @@ import { library } from '@fortawesome/fontawesome-svg-core' import pleromaTanMask from 'src/assets/pleromatan_apology_mask.png' import pleromaTanFoxMask from 'src/assets/pleromatan_apology_fox_mask.png' +import { useServerSideStorageStore } from 'src/stores/serverSideStorage' + import { faTimes } from '@fortawesome/free-solid-svg-icons' @@ -36,8 +38,8 @@ const UpdateNotification = { shouldShow () { return !this.$store.state.instance.disableUpdateNotification && this.$store.state.users.currentUser && - this.$store.state.serverSideStorage.flagStorage.updateCounter < CURRENT_UPDATE_COUNTER && - !this.$store.state.serverSideStorage.prefsStorage.simple.dontShowUpdateNotifs + useServerSideStorageStore().flagStorage.updateCounter < CURRENT_UPDATE_COUNTER && + !useServerSideStorageStore().prefsStorage.simple.dontShowUpdateNotifs } }, methods: { @@ -46,13 +48,13 @@ const UpdateNotification = { }, neverShowAgain () { this.toggleShow() - this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER }) - this.$store.commit('setPreference', { path: 'simple.dontShowUpdateNotifs', value: true }) - this.$store.dispatch('pushServerSideStorage') + useServerSideStorageStore().setFlag({ flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER }) + useServerSideStorageStore().setPreference({ path: 'simple.dontShowUpdateNotifs', value: true }) + useServerSideStorageStore().pushServerSideStorage() }, dismiss () { - this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER }) - this.$store.dispatch('pushServerSideStorage') + useServerSideStorageStore().setFlag({ flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER }) + useServerSideStorageStore().pushServerSideStorage() } }, mounted () { diff --git a/src/modules/index.js b/src/modules/index.js index e1c68aa67..5bcc1ca94 100644 --- a/src/modules/index.js +++ b/src/modules/index.js @@ -5,7 +5,6 @@ import users from './users.js' import api from './api.js' import config from './config.js' import profileConfig from './profileConfig.js' -import serverSideStorage from './serverSideStorage.js' import adminSettings from './adminSettings.js' import authFlow from './auth_flow.js' import oauthTokens from './oauth_tokens.js' @@ -20,7 +19,6 @@ export default { api, config, profileConfig, - serverSideStorage, adminSettings, authFlow, oauthTokens, diff --git a/src/modules/users.js b/src/modules/users.js index f52de9597..f6c05ca21 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -4,8 +4,10 @@ import apiService from '../services/api/api.service.js' import oauthApi from '../services/new_api/oauth.js' import { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash' import { registerPushNotifications, unregisterPushNotifications } from '../services/sw/sw.js' + import { useInterfaceStore } from 'src/stores/interface.js' import { useOAuthStore } from 'src/stores/oauth.js' +import { useServerSideStorageStore } from 'src/stores/serverSideStorage' // TODO: Unify with mergeOrAdd in statuses.js export const mergeOrAdd = (arr, obj, item) => { @@ -605,7 +607,8 @@ const users = { user.muteIds = [] user.domainMutes = [] commit('setCurrentUser', user) - commit('setServerSideStorage', user) + + useServerSideStorageStore().setServerSideStorage(user) commit('addNewUsers', [user]) dispatch('fetchEmoji') @@ -615,7 +618,7 @@ const users = { // Set our new backend interactor commit('setBackendInteractor', backendInteractorService(accessToken)) - dispatch('pushServerSideStorage') + useServerSideStorageStore().pushServerSideStorage() if (user.token) { dispatch('setWsToken', user.token) diff --git a/src/modules/serverSideStorage.js b/src/stores/serverSideStorage.js similarity index 61% rename from src/modules/serverSideStorage.js rename to src/stores/serverSideStorage.js index 0b46f8560..2a19b2cf2 100644 --- a/src/modules/serverSideStorage.js +++ b/src/stores/serverSideStorage.js @@ -1,3 +1,4 @@ +import { defineStore } from 'pinia' import { toRaw } from 'vue' import { isEqual, @@ -323,200 +324,194 @@ export const _doMigrations = (cache) => { return cache } -export const mutations = { - clearServerSideStorage (state) { - const blankState = { ...cloneDeep(defaultState) } - Object.keys(state).forEach(k => { - state[k] = blankState[k] - }) +export const useServerSideStorageStore = defineStore('serverSideStorage', { + state() { + return cloneDeep(defaultState) }, - setServerSideStorage (state, userData) { - const live = userData.storage - state.raw = live - let cache = state.cache - if (cache && cache._user !== userData.fqn) { - console.warn('Cache belongs to another user! reinitializing local cache!') - cache = null - } - - cache = _doMigrations(cache) - - let { recent, stale, needUpload } = _getRecentData(cache, live) - - const userNew = userData.created_at > NEW_USER_DATE - const flagsTemplate = userNew ? newUserFlags : defaultState.flagStorage - let dirty = false - - if (recent === null) { - console.debug(`Data is empty, initializing for ${userNew ? 'new' : 'existing'} user`) - recent = _wrapData({ - flagStorage: { ...flagsTemplate }, - prefsStorage: { ...defaultState.prefsStorage } - }) - } - - if (!needUpload && recent && stale) { - console.debug('Checking if data needs merging...') - // discarding timestamps and versions - /* eslint-disable no-unused-vars */ - const { _timestamp: _0, _version: _1, ...recentData } = recent - const { _timestamp: _2, _version: _3, ...staleData } = stale - /* eslint-enable no-unused-vars */ - dirty = !isEqual(recentData, staleData) - console.debug(`Data ${dirty ? 'needs' : 'doesn\'t need'} merging`) - } - - const allFlagKeys = _getAllFlags(recent, stale) - let totalFlags - let totalPrefs - if (dirty) { - // Merge the flags - console.debug('Merging the data...') - totalFlags = _mergeFlags(recent, stale, allFlagKeys) - _verifyPrefs(recent) - _verifyPrefs(stale) - totalPrefs = _mergePrefs(recent.prefsStorage, stale.prefsStorage) - } else { - totalFlags = recent.flagStorage - totalPrefs = recent.prefsStorage - } - - totalFlags = _resetFlags(totalFlags) - - recent.flagStorage = { ...flagsTemplate, ...totalFlags } - recent.prefsStorage = { ...defaultState.prefsStorage, ...totalPrefs } - - state.dirty = dirty || needUpload - state.cache = recent - // set local timestamp to smaller one if we don't have any changes - if (stale && recent && !state.dirty) { - state.cache._timestamp = Math.min(stale._timestamp, recent._timestamp) - } - state.flagStorage = state.cache.flagStorage - state.prefsStorage = state.cache.prefsStorage - }, - setFlag (state, { flag, value }) { - state.flagStorage[flag] = value - state.dirty = true - }, - setPreference (state, { path, value }) { - if (path.startsWith('_')) { - throw new Error(`Tried to edit internal (starts with _) field '${path}', ignoring.`) - } - if (path.startsWith('collections') || path.startsWith('objectCollections')) { - throw new Error(`Invalid operation 'set' for collection field '${path}', ignoring.`) - } - if (path.split(/\./g).length <= 1) { - throw new Error(`Calling set on depth <= 1 (path: ${path}) is not allowed`) - } - if (path.split(/\./g).length > 3) { - throw new Error(`Calling set on depth > 3 (path: ${path}) is not allowed`) - } - set(state.prefsStorage, path, value) - state.prefsStorage._journal = [ - ...state.prefsStorage._journal, - { operation: 'set', path, args: [value], timestamp: Date.now() } - ] - state.dirty = true - }, - unsetPreference (state, { path, value }) { - if (path.startsWith('_')) { - throw new Error(`Tried to edit internal (starts with _) field '${path}', ignoring.`) - } - if (path.startsWith('collections') || path.startsWith('objectCollections')) { - throw new Error(`Invalid operation 'unset' for collection field '${path}', ignoring.`) - } - if (path.split(/\./g).length <= 2) { - throw new Error(`Calling unset on depth <= 2 (path: ${path}) is not allowed`) - } - if (path.split(/\./g).length > 3) { - throw new Error(`Calling unset on depth > 3 (path: ${path}) is not allowed`) - } - unset(state.prefsStorage, path, value) - state.prefsStorage._journal = [ - ...state.prefsStorage._journal, - { operation: 'unset', path, args: [], timestamp: Date.now() } - ] - state.dirty = true - }, - addCollectionPreference (state, { path, value }) { - if (path.startsWith('_')) { - throw new Error(`tried to edit internal (starts with _) field '${path}'`) - } - if (path.startsWith('collections')) { - const collection = new Set(get(state.prefsStorage, path)) - collection.add(value) - set(state.prefsStorage, path, [...collection]) - } else if (path.startsWith('objectCollections')) { - const { _key } = value - if (!_key && typeof _key !== 'string') { - throw new Error('Object for storage is missing _key field!') - } - const collection = new Set(get(state.prefsStorage, path + '.index')) - collection.add(_key) - set(state.prefsStorage, path + '.index', [...collection]) - set(state.prefsStorage, path + '.data.' + _key, value) - } - state.prefsStorage._journal = [ - ...state.prefsStorage._journal, - { operation: 'addToCollection', path, args: [value], timestamp: Date.now() } - ] - state.dirty = true - }, - removeCollectionPreference (state, { path, value }) { - if (path.startsWith('_')) { - throw new Error(`tried to edit internal (starts with _) field '${path}', ignoring.`) - } - const collection = new Set(get(state.prefsStorage, path)) - collection.delete(value) - set(state.prefsStorage, path, [...collection]) - state.prefsStorage._journal = [ - ...state.prefsStorage._journal, - { operation: 'removeFromCollection', path, args: [value], timestamp: Date.now() } - ] - state.dirty = true - }, - reorderCollectionPreference (state, { path, value, movement }) { - if (path.startsWith('_')) { - throw new Error(`tried to edit internal (starts with _) field '${path}', ignoring.`) - } - const collection = get(state.prefsStorage, path) - const newCollection = _moveItemInArray(collection, value, movement) - set(state.prefsStorage, path, newCollection) - state.prefsStorage._journal = [ - ...state.prefsStorage._journal, - { operation: 'arrangeCollection', path, args: [value], timestamp: Date.now() } - ] - state.dirty = true - }, - updateCache (state, { username }) { - state.prefsStorage._journal = _mergeJournal(state.prefsStorage._journal) - state.cache = _wrapData({ - flagStorage: toRaw(state.flagStorage), - prefsStorage: toRaw(state.prefsStorage) - }, username) - } -} - -const serverSideStorage = { - state: { - ...cloneDeep(defaultState) - }, - mutations, actions: { - pushServerSideStorage ({ state, rootState, commit }, { force = false } = {}) { - const needPush = state.dirty || force + clearServerSideStorage () { + const blankState = { ...cloneDeep(defaultState) } + Object.keys(this).forEach(k => { + this[k] = blankState[k] + }) + }, + setServerSideStorage (userData) { + const live = userData.storage + this.raw = live + let cache = this.cache + if (cache && cache._user !== userData.fqn) { + console.warn('Cache belongs to another user! reinitializing local cache!') + cache = null + } + + cache = _doMigrations(cache) + + let { recent, stale, needUpload } = _getRecentData(cache, live) + + const userNew = userData.created_at > NEW_USER_DATE + const flagsTemplate = userNew ? newUserFlags : defaultState.flagStorage + let dirty = false + + if (recent === null) { + console.debug(`Data is empty, initializing for ${userNew ? 'new' : 'existing'} user`) + recent = _wrapData({ + flagStorage: { ...flagsTemplate }, + prefsStorage: { ...defaultState.prefsStorage } + }) + } + + if (!needUpload && recent && stale) { + console.debug('Checking if data needs merging...') + // discarding timestamps and versions + /* eslint-disable no-unused-vars */ + const { _timestamp: _0, _version: _1, ...recentData } = recent + const { _timestamp: _2, _version: _3, ...staleData } = stale + /* eslint-enable no-unused-vars */ + dirty = !isEqual(recentData, staleData) + console.debug(`Data ${dirty ? 'needs' : 'doesn\'t need'} merging`) + } + + const allFlagKeys = _getAllFlags(recent, stale) + let totalFlags + let totalPrefs + if (dirty) { + // Merge the flags + console.debug('Merging the data...') + totalFlags = _mergeFlags(recent, stale, allFlagKeys) + _verifyPrefs(recent) + _verifyPrefs(stale) + totalPrefs = _mergePrefs(recent.prefsStorage, stale.prefsStorage) + } else { + totalFlags = recent.flagStorage + totalPrefs = recent.prefsStorage + } + + totalFlags = _resetFlags(totalFlags) + + recent.flagStorage = { ...flagsTemplate, ...totalFlags } + recent.prefsStorage = { ...defaultState.prefsStorage, ...totalPrefs } + + this.dirty = dirty || needUpload + this.cache = recent + // set local timestamp to smaller one if we don't have any changes + if (stale && recent && !this.dirty) { + this.cache._timestamp = Math.min(stale._timestamp, recent._timestamp) + } + this.flagStorage = this.cache.flagStorage + this.prefsStorage = this.cache.prefsStorage + }, + setFlag ({ flag, value }) { + this.flagStorage[flag] = value + this.dirty = true + }, + setPreference ({ path, value }) { + if (path.startsWith('_')) { + throw new Error(`Tried to edit internal (starts with _) field '${path}', ignoring.`) + } + if (path.startsWith('collections') || path.startsWith('objectCollections')) { + throw new Error(`Invalid operation 'set' for collection field '${path}', ignoring.`) + } + if (path.split(/\./g).length <= 1) { + throw new Error(`Calling set on depth <= 1 (path: ${path}) is not allowed`) + } + if (path.split(/\./g).length > 3) { + throw new Error(`Calling set on depth > 3 (path: ${path}) is not allowed`) + } + set(this.prefsStorage, path, value) + this.prefsStorage._journal = [ + ...this.prefsStorage._journal, + { operation: 'set', path, args: [value], timestamp: Date.now() } + ] + this.dirty = true + }, + unsetPreference ({ path, value }) { + if (path.startsWith('_')) { + throw new Error(`Tried to edit internal (starts with _) field '${path}', ignoring.`) + } + if (path.startsWith('collections') || path.startsWith('objectCollections')) { + throw new Error(`Invalid operation 'unset' for collection field '${path}', ignoring.`) + } + if (path.split(/\./g).length <= 2) { + throw new Error(`Calling unset on depth <= 2 (path: ${path}) is not allowed`) + } + if (path.split(/\./g).length > 3) { + throw new Error(`Calling unset on depth > 3 (path: ${path}) is not allowed`) + } + unset(this.prefsStorage, path, value) + this.prefsStorage._journal = [ + ...this.prefsStorage._journal, + { operation: 'unset', path, args: [], timestamp: Date.now() } + ] + this.dirty = true + }, + addCollectionPreference ({ path, value }) { + if (path.startsWith('_')) { + throw new Error(`tried to edit internal (starts with _) field '${path}'`) + } + if (path.startsWith('collections')) { + const collection = new Set(get(this.prefsStorage, path)) + collection.add(value) + set(this.prefsStorage, path, [...collection]) + } else if (path.startsWith('objectCollections')) { + const { _key } = value + if (!_key && typeof _key !== 'string') { + throw new Error('Object for storage is missing _key field!') + } + const collection = new Set(get(this.prefsStorage, path + '.index')) + collection.add(_key) + set(this.prefsStorage, path + '.index', [...collection]) + set(this.prefsStorage, path + '.data.' + _key, value) + } + this.prefsStorage._journal = [ + ...this.prefsStorage._journal, + { operation: 'addToCollection', path, args: [value], timestamp: Date.now() } + ] + this.dirty = true + }, + removeCollectionPreference ({ path, value }) { + if (path.startsWith('_')) { + throw new Error(`tried to edit internal (starts with _) field '${path}', ignoring.`) + } + const collection = new Set(get(this.prefsStorage, path)) + collection.delete(value) + set(this.prefsStorage, path, [...collection]) + this.prefsStorage._journal = [ + ...this.prefsStorage._journal, + { operation: 'removeFromCollection', path, args: [value], timestamp: Date.now() } + ] + this.dirty = true + }, + reorderCollectionPreference ({ path, value, movement }) { + if (path.startsWith('_')) { + throw new Error(`tried to edit internal (starts with _) field '${path}', ignoring.`) + } + const collection = get(this.prefsStorage, path) + const newCollection = _moveItemInArray(collection, value, movement) + set(this.prefsStorage, path, newCollection) + this.prefsStorage._journal = [ + ...this.prefsStorage._journal, + { operation: 'arrangeCollection', path, args: [value], timestamp: Date.now() } + ] + this.dirty = true + }, + updateCache ({ username }) { + this.prefsStorage._journal = _mergeJournal(this.prefsStorage._journal) + this.cache = _wrapData({ + flagStorage: toRaw(this.flagStorage), + prefsStorage: toRaw(this.prefsStorage) + }, username) + }, + pushServerSideStorage ({ force = false } = {}) { + const needPush = this.dirty || force if (!needPush) return - commit('updateCache', { username: rootState.users.currentUser.fqn }) - const params = { pleroma_settings_store: { 'pleroma-fe': state.cache } } - rootState.api.backendInteractor + this.updateCache({ username: window.vuex.state.users.currentUser.fqn }) + const params = { pleroma_settings_store: { 'pleroma-fe': this.cache } } + window.vuex.state.api.backendInteractor .updateProfile({ params }) .then((user) => { - commit('setServerSideStorage', user) - state.dirty = false + this.setServerSideStorage(user) + this.dirty = false }) } } -} - -export default serverSideStorage +}) diff --git a/test/unit/specs/modules/serverSideStorage.spec.js b/test/unit/specs/modules/serverSideStorage.spec.js index fc0402402..607bf9263 100644 --- a/test/unit/specs/modules/serverSideStorage.spec.js +++ b/test/unit/specs/modules/serverSideStorage.spec.js @@ -1,4 +1,5 @@ import { cloneDeep } from 'lodash' +import { setActivePinia, createPinia } from 'pinia' import { VERSION, @@ -10,49 +11,50 @@ import { _mergeFlags, _mergePrefs, _resetFlags, - mutations, defaultState, - newUserFlags -} from 'src/modules/serverSideStorage.js' + newUserFlags, + useServerSideStorageStore, +} from 'src/stores/serverSideStorage.js' describe('The serverSideStorage module', () => { + beforeEach(() => { + setActivePinia(createPinia()) + }) + describe('mutations', () => { describe('setServerSideStorage', () => { - const { setServerSideStorage } = mutations const user = { created_at: new Date('1999-02-09'), storage: {} } it('should initialize storage if none present', () => { - const state = cloneDeep(defaultState) - setServerSideStorage(state, user) - expect(state.cache._version).to.eql(VERSION) - expect(state.cache._timestamp).to.be.a('number') - expect(state.cache.flagStorage).to.eql(defaultState.flagStorage) - expect(state.cache.prefsStorage).to.eql(defaultState.prefsStorage) + const store = useServerSideStorageStore() + store.setServerSideStorage(store, user) + expect(store.cache._version).to.eql(VERSION) + expect(store.cache._timestamp).to.be.a('number') + expect(store.cache.flagStorage).to.eql(defaultState.flagStorage) + expect(store.cache.prefsStorage).to.eql(defaultState.prefsStorage) }) it('should initialize storage with proper flags for new users if none present', () => { - const state = cloneDeep(defaultState) - setServerSideStorage(state, { ...user, created_at: new Date() }) - expect(state.cache._version).to.eql(VERSION) - expect(state.cache._timestamp).to.be.a('number') - expect(state.cache.flagStorage).to.eql(newUserFlags) - expect(state.cache.prefsStorage).to.eql(defaultState.prefsStorage) + const store = useServerSideStorageStore() + store.setServerSideStorage({ ...user, created_at: new Date() }) + expect(store.cache._version).to.eql(VERSION) + expect(store.cache._timestamp).to.be.a('number') + expect(store.cache.flagStorage).to.eql(newUserFlags) + expect(store.cache.prefsStorage).to.eql(defaultState.prefsStorage) }) it('should merge flags even if remote timestamp is older', () => { - const state = { - ...cloneDeep(defaultState), - cache: { - _timestamp: Date.now(), - _version: VERSION, - ...cloneDeep(defaultState) - } + const store = useServerSideStorageStore() + store.cache = { + _timestamp: Date.now(), + _version: VERSION, + ...cloneDeep(defaultState) } - setServerSideStorage( - state, + + store.setServerSideStorage( { ...user, storage: { @@ -68,19 +70,18 @@ describe('The serverSideStorage module', () => { } } ) - expect(state.cache.flagStorage).to.eql({ + + expect(store.cache.flagStorage).to.eql({ ...defaultState.flagStorage, updateCounter: 1 }) }) it('should reset local timestamp to remote if contents are the same', () => { - const state = { - ...cloneDeep(defaultState), - cache: null - } - setServerSideStorage( - state, + const store = useServerSideStorageStore() + store.cache = null + + store.setServerSideStorage( { ...user, storage: { @@ -93,97 +94,95 @@ describe('The serverSideStorage module', () => { } } ) - expect(state.cache._timestamp).to.eql(123) - expect(state.flagStorage.updateCounter).to.eql(999) - expect(state.cache.flagStorage.updateCounter).to.eql(999) + expect(store.cache._timestamp).to.eql(123) + expect(store.flagStorage.updateCounter).to.eql(999) + expect(store.cache.flagStorage.updateCounter).to.eql(999) }) it('should remote version if local missing', () => { - const state = cloneDeep(defaultState) - setServerSideStorage(state, user) - expect(state.cache._version).to.eql(VERSION) - expect(state.cache._timestamp).to.be.a('number') - expect(state.cache.flagStorage).to.eql(defaultState.flagStorage) + const store = useServerSideStorageStore() + store.setServerSideStorage(store, user) + expect(store.cache._version).to.eql(VERSION) + expect(store.cache._timestamp).to.be.a('number') + expect(store.cache.flagStorage).to.eql(defaultState.flagStorage) }) }) describe('setPreference', () => { - const { setPreference, unsetPreference, updateCache, addCollectionPreference, removeCollectionPreference } = mutations - it('should set preference and update journal log accordingly', () => { - const state = cloneDeep(defaultState) - setPreference(state, { path: 'simple.testing', value: 1 }) - expect(state.prefsStorage.simple.testing).to.eql(1) - expect(state.prefsStorage._journal.length).to.eql(1) - expect(state.prefsStorage._journal[0]).to.eql({ + const store = useServerSideStorageStore() + store.setPreference({ path: 'simple.testing', value: 1 }) + expect(store.prefsStorage.simple.testing).to.eql(1) + expect(store.prefsStorage._journal.length).to.eql(1) + expect(store.prefsStorage._journal[0]).to.eql({ path: 'simple.testing', operation: 'set', args: [1], // should have A timestamp, we don't really care what it is - timestamp: state.prefsStorage._journal[0].timestamp + timestamp: store.prefsStorage._journal[0].timestamp }) }) it('should keep journal to a minimum', () => { - const state = cloneDeep(defaultState) - setPreference(state, { path: 'simple.testing', value: 1 }) - setPreference(state, { path: 'simple.testing', value: 2 }) - addCollectionPreference(state, { path: 'collections.testing', value: 2 }) - removeCollectionPreference(state, { path: 'collections.testing', value: 2 }) - updateCache(state, { username: 'test' }) - expect(state.prefsStorage.simple.testing).to.eql(2) - expect(state.prefsStorage.collections.testing).to.eql([]) - expect(state.prefsStorage._journal.length).to.eql(2) - expect(state.prefsStorage._journal[0]).to.eql({ + const store = useServerSideStorageStore() + store.setPreference({ path: 'simple.testing', value: 1 }) + store.setPreference({ path: 'simple.testing', value: 2 }) + store.addCollectionPreference({ path: 'collections.testing', value: 2 }) + store.removeCollectionPreference({ path: 'collections.testing', value: 2 }) + store.updateCache({ username: 'test' }) + expect(store.prefsStorage.simple.testing).to.eql(2) + expect(store.prefsStorage.collections.testing).to.eql([]) + expect(store.prefsStorage._journal.length).to.eql(2) + expect(store.prefsStorage._journal[0]).to.eql({ path: 'simple.testing', operation: 'set', args: [2], // should have A timestamp, we don't really care what it is - timestamp: state.prefsStorage._journal[0].timestamp + timestamp: store.prefsStorage._journal[0].timestamp }) - expect(state.prefsStorage._journal[1]).to.eql({ + expect(store.prefsStorage._journal[1]).to.eql({ path: 'collections.testing', operation: 'removeFromCollection', args: [2], // should have A timestamp, we don't really care what it is - timestamp: state.prefsStorage._journal[1].timestamp + timestamp: store.prefsStorage._journal[1].timestamp }) }) it('should remove duplicate entries from journal', () => { - const state = cloneDeep(defaultState) - setPreference(state, { path: 'simple.testing', value: 1 }) - setPreference(state, { path: 'simple.testing', value: 1 }) - addCollectionPreference(state, { path: 'collections.testing', value: 2 }) - addCollectionPreference(state, { path: 'collections.testing', value: 2 }) - updateCache(state, { username: 'test' }) - expect(state.prefsStorage.simple.testing).to.eql(1) - expect(state.prefsStorage.collections.testing).to.eql([2]) - expect(state.prefsStorage._journal.length).to.eql(2) + const store = useServerSideStorageStore() + store.setPreference({ path: 'simple.testing', value: 1 }) + store.setPreference({ path: 'simple.testing', value: 1 }) + store.addCollectionPreference({ path: 'collections.testing', value: 2 }) + store.addCollectionPreference({ path: 'collections.testing', value: 2 }) + store.updateCache({ username: 'test' }) + expect(store.prefsStorage.simple.testing).to.eql(1) + expect(store.prefsStorage.collections.testing).to.eql([2]) + expect(store.prefsStorage._journal.length).to.eql(2) }) it('should remove depth = 3 set/unset entries from journal', () => { - const state = cloneDeep(defaultState) - setPreference(state, { path: 'simple.object.foo', value: 1 }) - unsetPreference(state, { path: 'simple.object.foo' }) - updateCache(state, { username: 'test' }) - expect(state.prefsStorage.simple.object).to.not.have.property('foo') - expect(state.prefsStorage._journal.length).to.eql(1) + const store = useServerSideStorageStore() + store.setPreference({ path: 'simple.object.foo', value: 1 }) + store.unsetPreference({ path: 'simple.object.foo' }) + store.updateCache(store, { username: 'test' }) + expect(store.prefsStorage.simple.object).to.not.have.property('foo') + expect(store.prefsStorage._journal.length).to.eql(1) }) it('should not allow unsetting depth <= 2', () => { - const state = cloneDeep(defaultState) - setPreference(state, { path: 'simple.object.foo', value: 1 }) - expect(() => unsetPreference(state, { path: 'simple' })).to.throw() - expect(() => unsetPreference(state, { path: 'simple.object' })).to.throw() + const store = useServerSideStorageStore() + store.setPreference({ path: 'simple.object.foo', value: 1 }) + expect(() => store.unsetPreference({ path: 'simple' })).to.throw() + expect(() => store.unsetPreference({ path: 'simple.object' })).to.throw() }) it('should not allow (un)setting depth > 3', () => { - const state = cloneDeep(defaultState) - setPreference(state, { path: 'simple.object', value: {} }) - expect(() => setPreference(state, { path: 'simple.object.lv3', value: 1 })).to.not.throw() - expect(() => setPreference(state, { path: 'simple.object.lv3.lv4', value: 1})).to.throw() - expect(() => unsetPreference(state, { path: 'simple.object.lv3', value: 1 })).to.not.throw() - expect(() => unsetPreference(state, { path: 'simple.object.lv3.lv4', value: 1})).to.throw() + const store = useServerSideStorageStore() + store.setPreference({ path: 'simple.object', value: {} }) + expect(() => store.setPreference({ path: 'simple.object.lv3', value: 1 })).to.not.throw() + expect(() => store.setPreference({ path: 'simple.object.lv3.lv4', value: 1})).to.throw() + expect(() => store.unsetPreference({ path: 'simple.object.lv3', value: 1 })).to.not.throw() + expect(() => store.unsetPreference({ path: 'simple.object.lv3.lv4', value: 1})).to.throw() }) }) }) From 7115b0e22c4111eb70a5ee44696831dd67629558 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 24 Mar 2025 01:12:26 +0200 Subject: [PATCH 15/22] reorder code to make more sense --- src/stores/serverSideStorage.js | 142 ++++++++++++++++---------------- 1 file changed, 71 insertions(+), 71 deletions(-) diff --git a/src/stores/serverSideStorage.js b/src/stores/serverSideStorage.js index 2a19b2cf2..e9ab571e3 100644 --- a/src/stores/serverSideStorage.js +++ b/src/stores/serverSideStorage.js @@ -329,77 +329,6 @@ export const useServerSideStorageStore = defineStore('serverSideStorage', { return cloneDeep(defaultState) }, actions: { - clearServerSideStorage () { - const blankState = { ...cloneDeep(defaultState) } - Object.keys(this).forEach(k => { - this[k] = blankState[k] - }) - }, - setServerSideStorage (userData) { - const live = userData.storage - this.raw = live - let cache = this.cache - if (cache && cache._user !== userData.fqn) { - console.warn('Cache belongs to another user! reinitializing local cache!') - cache = null - } - - cache = _doMigrations(cache) - - let { recent, stale, needUpload } = _getRecentData(cache, live) - - const userNew = userData.created_at > NEW_USER_DATE - const flagsTemplate = userNew ? newUserFlags : defaultState.flagStorage - let dirty = false - - if (recent === null) { - console.debug(`Data is empty, initializing for ${userNew ? 'new' : 'existing'} user`) - recent = _wrapData({ - flagStorage: { ...flagsTemplate }, - prefsStorage: { ...defaultState.prefsStorage } - }) - } - - if (!needUpload && recent && stale) { - console.debug('Checking if data needs merging...') - // discarding timestamps and versions - /* eslint-disable no-unused-vars */ - const { _timestamp: _0, _version: _1, ...recentData } = recent - const { _timestamp: _2, _version: _3, ...staleData } = stale - /* eslint-enable no-unused-vars */ - dirty = !isEqual(recentData, staleData) - console.debug(`Data ${dirty ? 'needs' : 'doesn\'t need'} merging`) - } - - const allFlagKeys = _getAllFlags(recent, stale) - let totalFlags - let totalPrefs - if (dirty) { - // Merge the flags - console.debug('Merging the data...') - totalFlags = _mergeFlags(recent, stale, allFlagKeys) - _verifyPrefs(recent) - _verifyPrefs(stale) - totalPrefs = _mergePrefs(recent.prefsStorage, stale.prefsStorage) - } else { - totalFlags = recent.flagStorage - totalPrefs = recent.prefsStorage - } - - totalFlags = _resetFlags(totalFlags) - - recent.flagStorage = { ...flagsTemplate, ...totalFlags } - recent.prefsStorage = { ...defaultState.prefsStorage, ...totalPrefs } - - this.dirty = dirty || needUpload - this.cache = recent - // set local timestamp to smaller one if we don't have any changes - if (stale && recent && !this.dirty) { - this.cache._timestamp = Math.min(stale._timestamp, recent._timestamp) - } - this.flagStorage = this.cache.flagStorage - this.prefsStorage = this.cache.prefsStorage - }, setFlag ({ flag, value }) { this.flagStorage[flag] = value this.dirty = true @@ -501,6 +430,77 @@ export const useServerSideStorageStore = defineStore('serverSideStorage', { prefsStorage: toRaw(this.prefsStorage) }, username) }, + clearServerSideStorage () { + const blankState = { ...cloneDeep(defaultState) } + Object.keys(this).forEach(k => { + this[k] = blankState[k] + }) + }, + setServerSideStorage (userData) { + const live = userData.storage + this.raw = live + let cache = this.cache + if (cache && cache._user !== userData.fqn) { + console.warn('Cache belongs to another user! reinitializing local cache!') + cache = null + } + + cache = _doMigrations(cache) + + let { recent, stale, needUpload } = _getRecentData(cache, live) + + const userNew = userData.created_at > NEW_USER_DATE + const flagsTemplate = userNew ? newUserFlags : defaultState.flagStorage + let dirty = false + + if (recent === null) { + console.debug(`Data is empty, initializing for ${userNew ? 'new' : 'existing'} user`) + recent = _wrapData({ + flagStorage: { ...flagsTemplate }, + prefsStorage: { ...defaultState.prefsStorage } + }) + } + + if (!needUpload && recent && stale) { + console.debug('Checking if data needs merging...') + // discarding timestamps and versions + /* eslint-disable no-unused-vars */ + const { _timestamp: _0, _version: _1, ...recentData } = recent + const { _timestamp: _2, _version: _3, ...staleData } = stale + /* eslint-enable no-unused-vars */ + dirty = !isEqual(recentData, staleData) + console.debug(`Data ${dirty ? 'needs' : 'doesn\'t need'} merging`) + } + + const allFlagKeys = _getAllFlags(recent, stale) + let totalFlags + let totalPrefs + if (dirty) { + // Merge the flags + console.debug('Merging the data...') + totalFlags = _mergeFlags(recent, stale, allFlagKeys) + _verifyPrefs(recent) + _verifyPrefs(stale) + totalPrefs = _mergePrefs(recent.prefsStorage, stale.prefsStorage) + } else { + totalFlags = recent.flagStorage + totalPrefs = recent.prefsStorage + } + + totalFlags = _resetFlags(totalFlags) + + recent.flagStorage = { ...flagsTemplate, ...totalFlags } + recent.prefsStorage = { ...defaultState.prefsStorage, ...totalPrefs } + + this.dirty = dirty || needUpload + this.cache = recent + // set local timestamp to smaller one if we don't have any changes + if (stale && recent && !this.dirty) { + this.cache._timestamp = Math.min(stale._timestamp, recent._timestamp) + } + this.flagStorage = this.cache.flagStorage + this.prefsStorage = this.cache.prefsStorage + }, pushServerSideStorage ({ force = false } = {}) { const needPush = this.dirty || force if (!needPush) return From 5d47ac04b0febff479556db0644010e65e185854 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 25 Mar 2025 11:56:17 +0200 Subject: [PATCH 16/22] implement migration --- package.json | 1 + src/lib/persisted_state.js | 1 - src/modules/users.js | 37 +++++++++++++++++++++++++++++++-- src/stores/serverSideStorage.js | 2 +- 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 10c0ce613..cb5378a86 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "querystring-es3": "0.2.1", "url": "0.11.4", "utf8": "3.0.0", + "uuid": "8.3.2", "vue": "3.5.13", "vue-i18n": "10", "vue-router": "4.5.0", diff --git a/src/lib/persisted_state.js b/src/lib/persisted_state.js index e6ed05f28..878d95aa8 100644 --- a/src/lib/persisted_state.js +++ b/src/lib/persisted_state.js @@ -18,7 +18,6 @@ const saveImmedeatelyActions = [ 'markNotificationsAsSeen', 'clearCurrentUser', 'setCurrentUser', - 'setServerSideStorage', 'setHighlight', 'setOption', 'setClientData', diff --git a/src/modules/users.js b/src/modules/users.js index f6c05ca21..6a25ba832 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -1,13 +1,15 @@ +import { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash' +import { v4 as uuidv4 } from 'uuid'; + import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js' import { windowWidth, windowHeight } from '../services/window_utils/window_utils' import apiService from '../services/api/api.service.js' import oauthApi from '../services/new_api/oauth.js' -import { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash' import { registerPushNotifications, unregisterPushNotifications } from '../services/sw/sw.js' import { useInterfaceStore } from 'src/stores/interface.js' import { useOAuthStore } from 'src/stores/oauth.js' -import { useServerSideStorageStore } from 'src/stores/serverSideStorage' +import { useServerSideStorageStore, CONFIG_MIGRATION } from 'src/stores/serverSideStorage' // TODO: Unify with mergeOrAdd in statuses.js export const mergeOrAdd = (arr, obj, item) => { @@ -618,6 +620,37 @@ const users = { // Set our new backend interactor commit('setBackendInteractor', backendInteractorService(accessToken)) + + // Do server-side storage migrations + + const { configMigration } = useServerSideStorageStore().flagStorage + + // Wordfilter migration + if (configMigration < 1) { + // Debug snippet to clean up storage + /* + Object.keys(useServerSideStorageStore().prefsStorage.simple.muteFilters).forEach(key => { + useServerSideStorageStore().unsetPreference({ path: 'simple.muteFilters.' + key, value: null }) + }) + */ + + // Convert existing wordfilter into synced one + store.rootState.config.muteWords.forEach(word => { + const uniqueId = uuidv4() + + useServerSideStorageStore().setPreference({ + path: 'simple.muteFilters.' + uniqueId, + value: { + type: 'word', + value: word + } + }) + }) + } + + + // Update the flag + useServerSideStorageStore().setflag({ flag: 'configMigration', value: CONFIG_MIGRATION }) useServerSideStorageStore().pushServerSideStorage() if (user.token) { diff --git a/src/stores/serverSideStorage.js b/src/stores/serverSideStorage.js index e9ab571e3..1f71803ac 100644 --- a/src/stores/serverSideStorage.js +++ b/src/stores/serverSideStorage.js @@ -38,7 +38,7 @@ export const defaultState = { simple: { dontShowUpdateNotifs: false, collapseNav: false, - filters: {} + muteFilters: {} }, collections: { pinnedStatusActions: ['reply', 'retweet', 'favorite', 'emoji'], From 57aa8818a93f77ab8a765c6872f2e9c309c2d9dc Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 25 Mar 2025 19:01:32 +0200 Subject: [PATCH 17/22] UI for new filters --- .../settings_modal/helpers/setting.js | 1 - .../settings_modal/tabs/filtering_tab.js | 107 ++++++++++-- .../settings_modal/tabs/filtering_tab.scss | 61 +++++++ .../settings_modal/tabs/filtering_tab.vue | 152 +++++++++++++++++- src/i18n/en.json | 17 ++ src/modules/users.js | 38 +++-- src/stores/serverSideStorage.js | 2 + 7 files changed, 339 insertions(+), 39 deletions(-) create mode 100644 src/components/settings_modal/tabs/filtering_tab.scss diff --git a/src/components/settings_modal/helpers/setting.js b/src/components/settings_modal/helpers/setting.js index 2dc9653ea..df137157a 100644 --- a/src/components/settings_modal/helpers/setting.js +++ b/src/components/settings_modal/helpers/setting.js @@ -78,7 +78,6 @@ export default { }, computed: { draft: { - // TODO allow passing shared draft object? get () { if (this.realSource === 'admin' || this.path == null) { return get(this.$store.state.adminSettings.draft, this.canonPath) diff --git a/src/components/settings_modal/tabs/filtering_tab.js b/src/components/settings_modal/tabs/filtering_tab.js index fbace15df..8517e0135 100644 --- a/src/components/settings_modal/tabs/filtering_tab.js +++ b/src/components/settings_modal/tabs/filtering_tab.js @@ -1,15 +1,19 @@ -import { filter, trim, debounce } from 'lodash' +import { mapState, mapActions } from 'pinia' +import { useServerSideStorageStore } from 'src/stores/serverSideStorage' +import { v4 as uuidv4 } from 'uuid'; + import BooleanSetting from '../helpers/boolean_setting.vue' import ChoiceSetting from '../helpers/choice_setting.vue' import UnitSetting from '../helpers/unit_setting.vue' import IntegerSetting from '../helpers/integer_setting.vue' +import Checkbox from 'src/components/checkbox/checkbox.vue' +import Select from 'src/components/select/select.vue' import SharedComputedObject from '../helpers/shared_computed_object.js' const FilteringTab = { data () { return { - muteWordsStringLocal: this.$store.getters.mergedConfig.muteWords.join('\n'), replyVisibilityOptions: ['all', 'following', 'self'].map(mode => ({ key: mode, value: mode, @@ -21,26 +25,95 @@ const FilteringTab = { BooleanSetting, ChoiceSetting, UnitSetting, - IntegerSetting + IntegerSetting, + Checkbox, + Select }, computed: { ...SharedComputedObject(), - muteWordsString: { - get () { - return this.muteWordsStringLocal - }, - set (value) { - this.muteWordsStringLocal = value - this.debouncedSetMuteWords(value) + ...mapState( + useServerSideStorageStore, + { + muteFilters: store => Object.entries(store.prefsStorage.simple.muteFilters), + muteFiltersObject: store => store.prefsStorage.simple.muteFilters } + ) + }, + methods: { + ...mapActions(useServerSideStorageStore, ['setPreference', 'unsetPreference', 'pushServerSideStorage']), + getDatetimeLocal (timestamp) { + const date = new Date(timestamp) + const datetime = [ + date.getFullYear(), + '-', + date.getMonth() < 9 ? ('0' + (date.getMonth() + 1)) : (date.getMonth() + 1), + '-', + date.getDate() < 10 ? ('0' + date.getDate()) : date.getDate(), + 'T', + date.getHours() < 10 ? ('0' + date.getHours()) : date.getHours(), + ':', + date.getMinutes() < 10 ? ('0' + date.getMinutes()) : date.getMinutes(), + ].join('') + return datetime }, - debouncedSetMuteWords () { - return debounce((value) => { - this.$store.dispatch('setOption', { - name: 'muteWords', - value: filter(value.split('\n'), (word) => trim(word).length > 0) - }) - }, 1000) + checkRegexValid (id) { + const filter = this.muteFiltersObject[id] + if (filter.type !== 'regexp') return true + const { value } = filter + let valid = true + try { + new RegExp(value) + } catch (e) { + valid = false + console.error('Invalid RegExp: ' + value) + } + return valid + }, + createFilter () { + const filter = { + type: 'word', + value: '', + name: 'New Filter', + enabled: true, + expires: null, + hide: false, + order: this.muteFilters.length + 2 + } + const newId = uuidv4() + + this.setPreference({ path: 'simple.muteFilters.' + newId , value: filter }) + this.pushServerSideStorage() + }, + copyFilter (id) { + const filter = { ...this.muteFiltersObject[id] } + const newId = uuidv4() + + this.setPreference({ path: 'simple.muteFilters.' + newId , value: filter }) + this.pushServerSideStorage() + }, + deleteFilter (id) { + this.unsetPreference({ path: 'simple.muteFilters.' + id , value: null }) + this.pushServerSideStorage() + }, + updateFilter(id, field, value) { + const filter = { ...this.muteFiltersObject[id] } + if (field === 'expires-never') { + // filter[field] = value + if (!value) { + const offset = 1000 * 60 * 60 * 24 * 14 // 2 weeks + const date = Date.now() + offset + filter.expires = date + } else { + filter.expires = null + } + } else if (field === 'expires') { + const parsed = Date.parse(value) + filter.expires = parsed.valueOf() + } else { + filter[field] = value + } + this.setPreference({ path: 'simple.muteFilters.' + id , value: filter }) + this.pushServerSideStorage() } }, // Updating nested properties diff --git a/src/components/settings_modal/tabs/filtering_tab.scss b/src/components/settings_modal/tabs/filtering_tab.scss new file mode 100644 index 000000000..ec98e094d --- /dev/null +++ b/src/components/settings_modal/tabs/filtering_tab.scss @@ -0,0 +1,61 @@ +.filtering-tab { + .muteFilterContainer { + border: 1px solid var(--border); + border-radius: var(--roundness); + + height: 20vh; + overflow-y: auto; + } + + .mute-filter { + border: 1px solid var(--border); + border-radius: var(--roundness); + margin: 0.5em; + padding: 0.5em; + + display: grid; + grid-template-columns: fit-content() 1fr fit-content(); + align-items: baseline; + grid-gap: 0.5em; + } + + .filter-name { + grid-column: 1 / span 2; + grid-row: 1; + } + + .alert, .button-default { + display: inline-block; + line-height: 2; + padding: 0 0.5em; + } + + .filter-enabled { + grid-column: 3; + grid-row: 1; + + text-align: right; + } + + .filter-field { + display: grid; + grid-template-columns: subgrid; + grid-template-rows: subgrid; + grid-column: 1 / span 3; + align-items: baseline; + + label { + grid-column: 1; + text-align: right; + } + + .filter-field-value { + grid-column: 2 / span 2; + } + } + + .filter-buttons { + grid-column: 1 / span 3; + justify-self: end; + } +} diff --git a/src/components/settings_modal/tabs/filtering_tab.vue b/src/components/settings_modal/tabs/filtering_tab.vue index 32325d423..538ab047c 100644 --- a/src/components/settings_modal/tabs/filtering_tab.vue +++ b/src/components/settings_modal/tabs/filtering_tab.vue @@ -1,5 +1,5 @@