From 6cb5c9e1297412a08667996231b2fe6d5f370504 Mon Sep 17 00:00:00 2001 From: Alex Perry Date: Mon, 27 Jan 2025 15:04:27 +0100 Subject: [PATCH] feat: address monitor and btc tx notifications --- pnpm-lock.yaml | 969 ++++++++---------- scripts/generate-manifest.js | 2 +- .../use-monitorable-addresses.ts | 79 ++ .../use-sync-address-monitor.ts | 29 + src/app/features/container/container.tsx | 3 +- .../bitcoin/native-segwit-account.hooks.ts | 4 +- .../bitcoin/taproot-account.hooks.ts | 4 + src/background/background.ts | 5 + .../internal-methods/message-handler.ts | 14 + src/background/monitors/address-monitor.ts | 43 + .../bitcoin-transaction-monitor.ts | 177 ++++ .../mempool-ws.spec.ts | 84 ++ .../bitcoin-transaction-monitor/mempool-ws.ts | 72 ++ src/shared/message-types.ts | 5 +- src/shared/messages.ts | 9 +- 15 files changed, 937 insertions(+), 562 deletions(-) create mode 100644 src/app/features/address-monitor/use-monitorable-addresses.ts create mode 100644 src/app/features/address-monitor/use-sync-address-monitor.ts create mode 100644 src/background/monitors/address-monitor.ts create mode 100644 src/background/monitors/address-monitors/bitcoin-transaction-monitor.ts create mode 100644 src/background/monitors/address-monitors/bitcoin-transaction-monitor/mempool-ws.spec.ts create mode 100644 src/background/monitors/address-monitors/bitcoin-transaction-monitor/mempool-ws.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48c446a6cbc..f90b29843d8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -160,7 +160,7 @@ importers: version: 1.2.8(react@18.3.1) '@storybook/addon-styling-webpack': specifier: 1.0.1 - version: 1.0.1(storybook@8.4.4(prettier@3.3.3))(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 1.0.1(storybook@8.4.4(prettier@3.3.3))(webpack@5.94.0) '@styled-system/theme-get': specifier: 5.1.2 version: 5.1.2 @@ -235,7 +235,7 @@ importers: version: 4.0.0(encoding@0.1.13) css-loader: specifier: 7.1.2 - version: 7.1.2(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 7.1.2(webpack@5.94.0) dayjs: specifier: 1.11.8 version: 1.11.8 @@ -331,7 +331,7 @@ importers: version: 1.2.4(react@18.3.1) react-qr-code: specifier: 2.0.12 - version: 2.0.12(react-native-svg@15.11.1(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0))(react@18.3.1))(react@18.3.1) + version: 2.0.12(react-native-svg@15.9.0(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0))(react@18.3.1))(react@18.3.1) react-redux: specifier: 9.1.2 version: 9.1.2(@types/react@18.3.10)(react@18.3.1)(redux@5.0.1) @@ -355,7 +355,7 @@ importers: version: 0.3.1(encoding@0.1.13) style-loader: specifier: 3.3.4 - version: 3.3.4(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 3.3.4(webpack@5.94.0) ts-debounce: specifier: 4.0.0 version: 4.0.0 @@ -416,7 +416,7 @@ importers: version: 2.2.3 '@mdx-js/loader': specifier: 3.0.0 - version: 3.0.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 3.0.0(webpack@5.94.0) '@pandacss/dev': specifier: 0.46.1 version: 0.46.1(jsdom@22.1.0)(typescript@5.4.5) @@ -425,7 +425,7 @@ importers: version: 1.48.2 '@pmmmwh/react-refresh-webpack-plugin': specifier: 0.5.13 - version: 0.5.13(@types/webpack@5.28.5(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)))(react-refresh@0.16.0)(type-fest@4.30.2)(webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.94.0))(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 0.5.13(@types/webpack@5.28.5(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4))(react-refresh@0.14.2)(type-fest@4.30.2)(webpack-dev-server@4.15.1)(webpack-hot-middleware@2.26.1)(webpack@5.94.0) '@redux-devtools/cli': specifier: 4.0.0 version: 4.0.0(@babel/core@7.26.0)(@reduxjs/toolkit@2.2.7(react-redux@9.1.2(@types/react@18.3.10)(react@18.3.1)(redux@5.0.1))(react@18.3.1))(@types/react-dom@18.3.0)(@types/styled-components@5.1.34)(encoding@0.1.13)(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0)) @@ -440,7 +440,7 @@ importers: version: 8.26.0(react@18.3.1) '@sentry/webpack-plugin': specifier: 2.17.0 - version: 2.17.0(encoding@0.1.13)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 2.17.0(encoding@0.1.13)(webpack@5.94.0) '@stacks/connect-react': specifier: 22.2.0 version: 22.2.0(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -464,7 +464,7 @@ importers: version: 8.4.4(react@18.3.1)(storybook@8.4.4(prettier@3.3.3)) '@storybook/addon-webpack5-compiler-swc': specifier: 1.0.5 - version: 1.0.5(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 1.0.5(webpack@5.94.0) '@storybook/blocks': specifier: 8.4.4 version: 8.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.3.3)) @@ -473,7 +473,7 @@ importers: version: 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5) '@storybook/react-webpack5': specifier: 8.4.4 - version: 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.3.3)))(@swc/core@1.7.18)(esbuild@0.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + version: 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.3.3)))(@swc/core@1.7.18)(esbuild@0.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5)(webpack-cli@5.1.4) '@storybook/test': specifier: 8.4.4 version: 8.4.4(storybook@8.4.4(prettier@3.3.3)) @@ -548,7 +548,7 @@ importers: version: 0.10.4 '@types/webpack': specifier: 5.28.5 - version: 5.28.5(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + version: 5.28.5(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) '@types/zxcvbn': specifier: 4.4.5 version: 4.4.5 @@ -557,7 +557,7 @@ importers: version: 7.5.0(eslint@8.56.0)(typescript@5.4.5) '@vitest/coverage-istanbul': specifier: 2.0.5 - version: 2.0.5(vitest@2.0.5(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.29.1)(terser@5.37.0)) + version: 2.0.5(vitest@2.0.5(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.28.1)(terser@5.36.0)) audit-ci: specifier: 6.6.1 version: 6.6.1 @@ -581,7 +581,7 @@ importers: version: 2.2.2 clean-webpack-plugin: specifier: 4.0.0 - version: 4.0.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 4.0.0(webpack@5.94.0) concurrently: specifier: 8.2.2 version: 8.2.2 @@ -590,7 +590,7 @@ importers: version: 7.0.2 copy-webpack-plugin: specifier: 12.0.2 - version: 12.0.2(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 12.0.2(webpack@5.94.0) cross-env: specifier: 7.0.3 version: 7.0.3 @@ -605,13 +605,13 @@ importers: version: 16.4.2 dotenv-webpack: specifier: 8.1.0 - version: 8.1.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 8.1.0(webpack@5.94.0) esbuild: specifier: 0.24.0 version: 0.24.0 esbuild-loader: specifier: 4.2.2 - version: 4.2.2(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 4.2.2(webpack@5.94.0) eslint-plugin-deprecation: specifier: 2.0.0 version: 2.0.0(eslint@8.56.0)(typescript@5.4.5) @@ -629,13 +629,13 @@ importers: version: 0.11.1(eslint@8.56.0)(typescript@5.4.5) file-loader: specifier: 6.2.0 - version: 6.2.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 6.2.0(webpack@5.94.0) generate-json-webpack-plugin: specifier: 2.0.0 version: 2.0.0 html-webpack-plugin: specifier: 5.6.0 - version: 5.6.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 5.6.0(webpack@5.94.0) jsdom: specifier: 22.1.0 version: 22.1.0 @@ -644,7 +644,7 @@ importers: version: 8.4.47 postcss-loader: specifier: 8.1.1 - version: 8.1.1(postcss@8.4.47)(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 8.1.1(postcss@8.4.47)(typescript@5.4.5)(webpack@5.94.0) prettier: specifier: 3.3.3 version: 3.3.3 @@ -653,16 +653,16 @@ importers: version: 0.11.10 progress-bar-webpack-plugin: specifier: 2.1.0 - version: 2.1.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 2.1.0(webpack@5.94.0) react-dev-utils: specifier: 12.0.1 - version: 12.0.1(eslint@8.56.0)(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 12.0.1(eslint@8.56.0)(typescript@5.4.5)(webpack@5.94.0) schema-inspector: specifier: 2.0.2 version: 2.0.2 speed-measure-webpack-plugin: specifier: 1.5.0 - version: 1.5.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + version: 1.5.0(webpack@5.94.0) storybook: specifier: 8.4.4 version: 8.4.4(prettier@3.3.3) @@ -686,7 +686,7 @@ importers: version: 5.4.5 vitest: specifier: 2.0.5 - version: 2.0.5(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.29.1)(terser@5.37.0) + version: 2.0.5(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.28.1)(terser@5.36.0) vm-browserify: specifier: 1.1.2 version: 1.1.2 @@ -698,7 +698,7 @@ importers: version: 7.8.0(body-parser@1.20.3) webpack: specifier: 5.94.0 - version: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + version: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) webpack-bundle-analyzer: specifier: 4.10.2 version: 4.10.2 @@ -836,10 +836,6 @@ packages: resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.5': - resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} - engines: {node: '>=6.9.0'} - '@babel/core@7.25.2': resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} @@ -863,10 +859,6 @@ packages: resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.5': - resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} - engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} @@ -879,6 +871,10 @@ packages: resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} engines: {node: '>=6.9.0'} + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': + resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.2': resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} @@ -887,10 +883,6 @@ packages: resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.26.5': - resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} - engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.25.4': resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} engines: {node: '>=6.9.0'} @@ -909,8 +901,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.26.3': - resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} + '@babel/helper-create-regexp-features-plugin@7.25.9': + resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -981,10 +973,6 @@ packages: resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.26.5': - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} - engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.25.0': resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} engines: {node: '>=6.9.0'} @@ -1003,16 +991,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.26.5': - resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.24.7': resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} + '@babel/helper-simple-access@7.25.9': + resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} @@ -1096,11 +1082,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.26.5': - resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3': resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} engines: {node: '>=6.9.0'} @@ -1427,8 +1408,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.26.5': - resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} + '@babel/plugin-transform-block-scoped-functions@7.25.9': + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1559,8 +1540,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.26.3': - resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} + '@babel/plugin-transform-exponentiation-operator@7.25.9': + resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1673,8 +1654,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.26.3': - resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + '@babel/plugin-transform-modules-commonjs@7.25.9': + resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1733,8 +1714,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': - resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2157,10 +2138,6 @@ packages: resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.5': - resolution: {integrity: sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==} - engines: {node: '>=6.9.0'} - '@babel/types@7.17.0': resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} engines: {node: '>=6.9.0'} @@ -2177,10 +2154,6 @@ packages: resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.5': - resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} - engines: {node: '>=6.9.0'} - '@bitcoinerlab/descriptors@1.1.1': resolution: {integrity: sha512-AMFkbBBg9T1iWtEmWB23oADk7zaOQix6wUPLXalhTyFDjhkFXDd6pCRfto/HAdaPg/ccM4GMTVgYLee9WdYFyQ==} peerDependencies: @@ -3276,10 +3249,6 @@ packages: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -6452,9 +6421,6 @@ packages: '@types/hoist-non-react-statics@3.3.5': resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} - '@types/hoist-non-react-statics@3.3.6': - resolution: {integrity: sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==} - '@types/html-minifier-terser@6.1.0': resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} @@ -7704,11 +7670,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - bs58@4.0.1: resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} @@ -7864,9 +7825,6 @@ packages: caniuse-lite@1.0.30001680: resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==} - caniuse-lite@1.0.30001695: - resolution: {integrity: sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==} - case-sensitive-paths-webpack-plugin@2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} engines: {node: '>=4'} @@ -8010,8 +7968,8 @@ packages: cjs-module-lexer@1.3.1: resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} - clarity-codegen@0.5.3: - resolution: {integrity: sha512-SmcGEJVCsx2ljD7hGzcIv4W3lUzJl2k3zuH5kHDI0lgO2N6sTPRv+WyXzxmMsJvGCsdggkvVU9ebc2cR/Z+h+g==} + clarity-codegen@0.5.2: + resolution: {integrity: sha512-t0uvboeZTII7n2lgobAxcQnhyjXwbUKYdUKJA3yjoaOXPvtr5i2zFV7H1E6ZeDMfqd3vIksMPvpdFfXum9SoNQ==} hasBin: true peerDependencies: '@stacks/transactions': '*' @@ -8286,8 +8244,8 @@ packages: core-js-compat@3.38.1: resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} - core-js-compat@3.40.0: - resolution: {integrity: sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==} + core-js-compat@3.39.0: + resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} core-js-pure@3.38.1: resolution: {integrity: sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==} @@ -8710,15 +8668,6 @@ packages: supports-color: optional: true - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} @@ -9023,9 +8972,6 @@ packages: electron-to-chromium@1.5.63: resolution: {integrity: sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA==} - electron-to-chromium@1.5.86: - resolution: {integrity: sha512-/D7GAAaCRBQFBBcop6SfAAGH37djtpWkOuYhyAajw0l5vsfeSsUQYxaFPwr1c/mC/flARCDdKFo5gpFqNI+18w==} - electron@27.3.11: resolution: {integrity: sha512-E1SiyEoI8iW5LW/MigCr7tJuQe7+0105UjqY7FkmCD12e2O6vtUbQ0j05HaBh2YgvkcEVgvQ2A8suIq5b5m6Gw==} engines: {node: '>= 12.20.55'} @@ -10977,11 +10923,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -11203,8 +11144,8 @@ packages: cpu: [arm64] os: [darwin] - lightningcss-darwin-arm64@1.29.1: - resolution: {integrity: sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==} + lightningcss-darwin-arm64@1.28.1: + resolution: {integrity: sha512-VG3vvzM0m/rguCdm76DdobNeNJnHK+jWcdkNLFWHLh9YCotRvbRIt45JxwcHlIF8TDqWStVLTdghq5NaigVCBQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] @@ -11221,8 +11162,8 @@ packages: cpu: [x64] os: [darwin] - lightningcss-darwin-x64@1.29.1: - resolution: {integrity: sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==} + lightningcss-darwin-x64@1.28.1: + resolution: {integrity: sha512-O7ORdislvKfMohFl4Iq7fxKqdJOuuxArcglVI3amuFO5DJ0wfV3Gxgi1JRo49slfr7OVzJQEHLG4muTWYM5cTQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] @@ -11233,8 +11174,8 @@ packages: cpu: [x64] os: [freebsd] - lightningcss-freebsd-x64@1.29.1: - resolution: {integrity: sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==} + lightningcss-freebsd-x64@1.28.1: + resolution: {integrity: sha512-b7sF89B31kYYijxVcFO7l5u6UNA862YstNu+3YbLl/IQKzveL4a5cwR5cdpG+OOhErg/c2u9WCmzZoX2I5GBvw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] @@ -11251,8 +11192,8 @@ packages: cpu: [arm] os: [linux] - lightningcss-linux-arm-gnueabihf@1.29.1: - resolution: {integrity: sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==} + lightningcss-linux-arm-gnueabihf@1.28.1: + resolution: {integrity: sha512-p61kXwvhUDLLzkWHjzSFfUBW/F0iy3jr3CWi3k8SKULtJEsJXTI9DqRm9EixxMSe2AMBQBt4auTYiQL4B1N51A==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] @@ -11269,8 +11210,8 @@ packages: cpu: [arm64] os: [linux] - lightningcss-linux-arm64-gnu@1.29.1: - resolution: {integrity: sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==} + lightningcss-linux-arm64-gnu@1.28.1: + resolution: {integrity: sha512-iO+fN9hOMmzfwqcG2/BgUtMKD48H2JO/SXU44fyIwpY2veb65QF5xiRrQ9l1FwIxbGK3231KBYCtAqv+xf+NsQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -11287,8 +11228,8 @@ packages: cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.29.1: - resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==} + lightningcss-linux-arm64-musl@1.28.1: + resolution: {integrity: sha512-dnMHeXEmCUzHHZjaDpQBYuBKcN9nPC3nPFKl70bcj5Bkn5EmkcgEqm5p035LKOgvAwk1XwLpQCML6pXmCwz0NQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -11305,8 +11246,8 @@ packages: cpu: [x64] os: [linux] - lightningcss-linux-x64-gnu@1.29.1: - resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==} + lightningcss-linux-x64-gnu@1.28.1: + resolution: {integrity: sha512-7vWDISaMUn+oo2TwRdf2hl/BLdPxvywv9JKEqNZB/0K7bXwV4XE9wN/C2sAp1gGuh6QBA8lpjF4JIPt3HNlCHA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -11323,14 +11264,14 @@ packages: cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.29.1: - resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==} + lightningcss-linux-x64-musl@1.28.1: + resolution: {integrity: sha512-IHCu9tVGP+x5BCpA2rF3D04DBokcBza/a8AuHQU+1AiMKubuMegPwcL7RatBgK4ztFHeYnnD5NdhwhRfYMAtNA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.29.1: - resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==} + lightningcss-win32-arm64-msvc@1.28.1: + resolution: {integrity: sha512-Erm72kHmMg/3h350PTseskz+eEGBM17Fuu79WW2Qqt0BfWSF1jHHc12lkJCWMYl5jcBHPs5yZdgNHtJ7IJS3Uw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] @@ -11347,8 +11288,8 @@ packages: cpu: [x64] os: [win32] - lightningcss-win32-x64-msvc@1.29.1: - resolution: {integrity: sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==} + lightningcss-win32-x64-msvc@1.28.1: + resolution: {integrity: sha512-ZPQtvx+uQBzrSdHH8p4H3M9Alue+x369TPZAA3b4K3d92FPhpZCuBG04+HQzspam9sVeID9mI6f3VRAs2ezaEA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] @@ -11361,8 +11302,8 @@ packages: resolution: {integrity: sha512-V0RMVZzK1+rCHpymRv4URK2lNhIRyO8g7U7zOFwVAhJuat74HtkjIQpQRKNCwFEYkRGpafOpmXXLoaoBcyVtBg==} engines: {node: '>= 12.0.0'} - lightningcss@1.29.1: - resolution: {integrity: sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==} + lightningcss@1.28.1: + resolution: {integrity: sha512-KRDkHlLlNj3DWh79CDt93fPlRJh2W1AuHV0ZSZAMMuN7lqlsZTV5842idfS1urWG8q9tc17velp1gCXhY7sLnQ==} engines: {node: '>= 12.0.0'} lines-and-columns@1.2.4: @@ -11546,9 +11487,6 @@ packages: magic-string@0.30.13: resolution: {integrity: sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==} - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - magic-string@0.30.8: resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} engines: {node: '>=12'} @@ -12264,9 +12202,6 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - node-stream-zip@1.15.0: resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} engines: {node: '>=0.12.0'} @@ -12589,8 +12524,8 @@ packages: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} - p-timeout@6.1.4: - resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + p-timeout@6.1.3: + resolution: {integrity: sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw==} engines: {node: '>=14.16'} p-try@2.2.0: @@ -13095,8 +13030,8 @@ packages: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.1: - resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} prebuild-install@7.1.2: @@ -13458,14 +13393,14 @@ packages: react: '*' react-native: '*' - react-native-svg@15.11.1: - resolution: {integrity: sha512-Qmwx/yJKt+AHUr4zjxx/Q69qwKtRfr1+uIfFMQoq3WFRhqU76aL9db1DyvPiY632DAsVGba1pHf92OZPkpjrdQ==} + react-native-svg@15.2.0: + resolution: {integrity: sha512-R0E6IhcJfVLsL0lRmnUSm72QO+mTqcAOM5Jb8FVGxJqX3NfJMlMP0YyvcajZiaRR8CqQUpEoqrY25eyZb006kw==} peerDependencies: react: '*' react-native: '*' - react-native-svg@15.2.0: - resolution: {integrity: sha512-R0E6IhcJfVLsL0lRmnUSm72QO+mTqcAOM5Jb8FVGxJqX3NfJMlMP0YyvcajZiaRR8CqQUpEoqrY25eyZb006kw==} + react-native-svg@15.9.0: + resolution: {integrity: sha512-pwo7hteAM0P8jNpPGQtiSd0SnbBhE8tNd94LT8AcZcbnH5AJdXBIcXU4+tWYYeGUjiNAH2E5d0T5XIfnvaz1gA==} peerDependencies: react: '*' react-native: '*' @@ -13533,10 +13468,6 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-refresh@0.16.0: - resolution: {integrity: sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A==} - engines: {node: '>=0.10.0'} - react-remove-scroll-bar@2.3.6: resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} engines: {node: '>=10'} @@ -13757,8 +13688,8 @@ packages: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} - regexpu-core@6.2.0: - resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + regexpu-core@6.1.1: + resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==} engines: {node: '>=4'} registry-auth-token@5.0.2: @@ -13772,8 +13703,8 @@ packages: regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + regjsparser@0.11.2: + resolution: {integrity: sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==} hasBin: true regjsparser@0.9.1: @@ -14658,8 +14589,8 @@ packages: engines: {node: '>=10'} hasBin: true - terser@5.37.0: - resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} + terser@5.36.0: + resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} engines: {node: '>=10'} hasBin: true @@ -15151,12 +15082,6 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - update-browserslist-db@1.1.2: - resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} engines: {node: '>=14.16'} @@ -15965,8 +15890,6 @@ snapshots: '@babel/compat-data@7.26.2': {} - '@babel/compat-data@7.26.5': {} - '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 @@ -16015,7 +15938,7 @@ snapshots: '@babel/generator@7.2.0': dependencies: - '@babel/types': 7.26.5 + '@babel/types': 7.26.0 jsesc: 2.5.2 lodash: 4.17.21 source-map: 0.5.7 @@ -16036,21 +15959,13 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 - '@babel/generator@7.26.5': - dependencies: - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.24.7': dependencies: '@babel/types': 7.25.4 '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.26.5 + '@babel/types': 7.26.0 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: @@ -16059,6 +15974,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-compilation-targets@7.25.2': dependencies: '@babel/compat-data': 7.25.4 @@ -16075,14 +15997,6 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-compilation-targets@7.26.5': - dependencies: - '@babel/compat-data': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -16102,9 +16016,9 @@ snapshots: '@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.26.5(@babel/core@7.26.0) + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.26.5 + '@babel/traverse': 7.25.9 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -16123,11 +16037,11 @@ snapshots: regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.0)': + '@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 - regexpu-core: 6.2.0 + regexpu-core: 6.1.1 semver: 6.3.1 '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': @@ -16155,9 +16069,9 @@ snapshots: '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 - debug: 4.4.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + debug: 4.3.7 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -16235,8 +16149,6 @@ snapshots: '@babel/helper-plugin-utils@7.25.9': {} - '@babel/helper-plugin-utils@7.26.5': {} - '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -16251,7 +16163,7 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.26.5 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color @@ -16264,12 +16176,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.0)': + '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.26.5 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color @@ -16280,6 +16192,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-simple-access@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: '@babel/traverse': 7.25.4(supports-color@5.5.0) @@ -16289,8 +16208,8 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -16323,8 +16242,8 @@ snapshots: '@babel/helper-wrap-function@7.25.9': dependencies: '@babel/template': 7.25.9 - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -16370,10 +16289,6 @@ snapshots: dependencies: '@babel/types': 7.26.0 - '@babel/parser@7.26.5': - dependencies: - '@babel/types': 7.26.5 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -16385,8 +16300,8 @@ snapshots: '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color @@ -16398,7 +16313,7 @@ snapshots: '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.25.2)': dependencies: @@ -16408,7 +16323,7 @@ snapshots: '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2)': dependencies: @@ -16422,7 +16337,7 @@ snapshots: '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: @@ -16439,8 +16354,8 @@ snapshots: '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color @@ -16448,7 +16363,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) transitivePeerDependencies: @@ -16458,7 +16373,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color @@ -16466,7 +16381,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color @@ -16474,45 +16389,45 @@ snapshots: '@babel/plugin-proposal-export-default-from@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.0)': dependencies: - '@babel/compat-data': 7.26.5 + '@babel/compat-data': 7.26.2 '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) transitivePeerDependencies: @@ -16549,7 +16464,7 @@ snapshots: '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': dependencies: @@ -16564,7 +16479,7 @@ snapshots: '@babel/plugin-syntax-export-default-from@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': dependencies: @@ -16574,7 +16489,7 @@ snapshots: '@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.25.2)': dependencies: @@ -16584,7 +16499,7 @@ snapshots: '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': dependencies: @@ -16594,7 +16509,7 @@ snapshots: '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': dependencies: @@ -16619,7 +16534,7 @@ snapshots: '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': dependencies: @@ -16699,7 +16614,7 @@ snapshots: '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': dependencies: @@ -16721,7 +16636,7 @@ snapshots: '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-async-generator-functions@7.25.4(@babel/core@7.25.2)': dependencies: @@ -16736,9 +16651,9 @@ snapshots: '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.26.5 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color @@ -16755,7 +16670,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color @@ -16765,10 +16680,10 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.0)': + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.2)': dependencies: @@ -16778,7 +16693,7 @@ snapshots: '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-class-properties@7.25.4(@babel/core@7.25.2)': dependencies: @@ -16792,7 +16707,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color @@ -16809,7 +16724,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color @@ -16829,10 +16744,10 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) - '@babel/traverse': 7.26.5 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -16846,7 +16761,7 @@ snapshots: '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/template': 7.25.9 '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.2)': @@ -16857,7 +16772,7 @@ snapshots: '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2)': dependencies: @@ -16868,8 +16783,8 @@ snapshots: '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2)': dependencies: @@ -16879,7 +16794,7 @@ snapshots: '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.25.2)': dependencies: @@ -16890,8 +16805,8 @@ snapshots: '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2)': dependencies: @@ -16902,7 +16817,7 @@ snapshots: '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2)': dependencies: @@ -16912,10 +16827,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.0)': + '@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2)': dependencies: @@ -16926,12 +16844,12 @@ snapshots: '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-flow-strip-types@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0) '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': @@ -16945,7 +16863,7 @@ snapshots: '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color @@ -16962,9 +16880,9 @@ snapshots: '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.5 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color @@ -16977,7 +16895,7 @@ snapshots: '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.2)': dependencies: @@ -16987,7 +16905,7 @@ snapshots: '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2)': dependencies: @@ -16998,7 +16916,7 @@ snapshots: '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17008,7 +16926,7 @@ snapshots: '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17022,7 +16940,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color @@ -17035,11 +16953,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.0)': + '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-simple-access': 7.25.9 transitivePeerDependencies: - supports-color @@ -17057,9 +16976,9 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.5 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color @@ -17075,7 +16994,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color @@ -17088,8 +17007,8 @@ snapshots: '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17099,7 +17018,7 @@ snapshots: '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17107,10 +17026,10 @@ snapshots: '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.26.0)': + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17121,7 +17040,7 @@ snapshots: '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17134,8 +17053,8 @@ snapshots: '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2)': @@ -17149,8 +17068,8 @@ snapshots: '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color @@ -17163,7 +17082,7 @@ snapshots: '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.25.2)': dependencies: @@ -17177,7 +17096,7 @@ snapshots: '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color @@ -17190,7 +17109,7 @@ snapshots: '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-private-methods@7.25.4(@babel/core@7.25.2)': dependencies: @@ -17204,7 +17123,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color @@ -17223,7 +17142,7 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color @@ -17235,7 +17154,7 @@ snapshots: '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-react-constant-elements@7.25.1(@babel/core@7.25.2)': dependencies: @@ -17250,7 +17169,7 @@ snapshots: '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17269,12 +17188,12 @@ snapshots: '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)': dependencies: @@ -17292,9 +17211,9 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.5 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -17308,7 +17227,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17319,14 +17238,14 @@ snapshots: '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 regenerator-transform: 0.15.2 '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17336,13 +17255,13 @@ snapshots: '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-runtime@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) @@ -17358,7 +17277,7 @@ snapshots: '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17371,7 +17290,7 @@ snapshots: '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color @@ -17384,7 +17303,7 @@ snapshots: '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17394,7 +17313,7 @@ snapshots: '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.25.2)': dependencies: @@ -17404,7 +17323,7 @@ snapshots: '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)': dependencies: @@ -17422,7 +17341,7 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: @@ -17436,7 +17355,7 @@ snapshots: '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17447,8 +17366,8 @@ snapshots: '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2)': dependencies: @@ -17459,8 +17378,8 @@ snapshots: '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-unicode-sets-regex@7.25.4(@babel/core@7.25.2)': dependencies: @@ -17471,8 +17390,8 @@ snapshots: '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 '@babel/preset-env@7.25.4(@babel/core@7.25.2)': dependencies: @@ -17565,10 +17484,10 @@ snapshots: '@babel/preset-env@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/compat-data': 7.26.5 + '@babel/compat-data': 7.26.2 '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) @@ -17582,7 +17501,7 @@ snapshots: '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) @@ -17593,7 +17512,7 @@ snapshots: '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) @@ -17602,12 +17521,12 @@ snapshots: '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) @@ -17633,7 +17552,7 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) - core-js-compat: 3.40.0 + core-js-compat: 3.39.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -17641,7 +17560,7 @@ snapshots: '@babel/preset-flow@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0) @@ -17674,7 +17593,7 @@ snapshots: '@babel/preset-react@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) @@ -17697,10 +17616,10 @@ snapshots: '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color @@ -17779,18 +17698,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/traverse@7.26.5': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.5 - '@babel/parser': 7.26.5 - '@babel/template': 7.25.9 - '@babel/types': 7.26.5 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/types@7.17.0': dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -17813,11 +17720,6 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.26.5': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@bitcoinerlab/descriptors@1.1.1(ledger-bitcoin@0.2.3)': dependencies: '@bitcoinerlab/miniscript': 1.4.0 @@ -18566,7 +18468,7 @@ snapshots: chalk: 4.1.2 ci-info: 3.9.0 connect: 3.7.0 - debug: 4.4.0 + debug: 4.3.7 env-editor: 0.4.2 fast-glob: 3.3.2 find-yarn-workspace-root: 2.0.0 @@ -18634,7 +18536,7 @@ snapshots: '@expo/plist': 0.1.3 '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 - debug: 4.4.0 + debug: 4.3.7 find-up: 5.0.0 getenv: 1.0.0 glob: 7.1.6 @@ -18654,7 +18556,7 @@ snapshots: '@expo/plist': 0.1.3 '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 - debug: 4.4.0 + debug: 4.3.7 find-up: 5.0.0 getenv: 1.0.0 glob: 7.1.6 @@ -18721,7 +18623,7 @@ snapshots: '@expo/env@0.3.0': dependencies: chalk: 4.1.2 - debug: 4.4.0 + debug: 4.3.7 dotenv: 16.4.5 dotenv-expand: 11.0.7 getenv: 1.0.0 @@ -18758,15 +18660,15 @@ snapshots: '@expo/metro-config@0.18.11': dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.5 - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@expo/config': 9.0.4 '@expo/env': 0.3.0 '@expo/json-file': 8.3.3 '@expo/spawn-async': 1.7.2 chalk: 4.1.2 - debug: 4.4.0 + debug: 4.3.7 find-yarn-workspace-root: 2.0.0 fs-extra: 9.1.0 getenv: 1.0.0 @@ -18812,7 +18714,7 @@ snapshots: '@expo/image-utils': 0.5.1(encoding@0.1.13) '@expo/json-file': 8.3.3 '@react-native/normalize-colors': 0.74.88 - debug: 4.4.0 + debug: 4.3.7 expo-modules-autolinking: 1.11.1 fs-extra: 9.1.0 resolve-from: 5.0.0 @@ -18830,7 +18732,7 @@ snapshots: '@expo/image-utils': 0.5.1(encoding@0.1.13) '@expo/json-file': 8.3.3 '@react-native/normalize-colors': 0.74.85 - debug: 4.4.0 + debug: 4.3.7 expo-modules-autolinking: 1.11.1 fs-extra: 9.1.0 resolve-from: 5.0.0 @@ -19055,12 +18957,6 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} @@ -19318,11 +19214,11 @@ snapshots: '@mdn/browser-compat-data@5.3.14': {} - '@mdx-js/loader@3.0.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)))': + '@mdx-js/loader@3.0.0(webpack@5.94.0)': dependencies: '@mdx-js/mdx': 3.0.1 source-map: 0.7.4 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) transitivePeerDependencies: - supports-color @@ -19627,19 +19523,19 @@ snapshots: dependencies: playwright: 1.48.2 - '@pmmmwh/react-refresh-webpack-plugin@0.5.13(@types/webpack@5.28.5(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)))(react-refresh@0.16.0)(type-fest@4.30.2)(webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.94.0))(webpack-hot-middleware@2.26.1)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.13(@types/webpack@5.28.5(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4))(react-refresh@0.14.2)(type-fest@4.30.2)(webpack-dev-server@4.15.1)(webpack-hot-middleware@2.26.1)(webpack@5.94.0)': dependencies: ansi-html-community: 0.0.8 core-js-pure: 3.38.1 error-stack-parser: 2.1.4 html-entities: 2.5.2 loader-utils: 2.0.4 - react-refresh: 0.16.0 + react-refresh: 0.14.2 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) optionalDependencies: - '@types/webpack': 5.28.5(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + '@types/webpack': 5.28.5(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) type-fest: 4.30.2 webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.94.0) webpack-hot-middleware: 2.26.1 @@ -21306,7 +21202,7 @@ snapshots: '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) @@ -21355,7 +21251,7 @@ snapshots: '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) @@ -21404,7 +21300,7 @@ snapshots: '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) @@ -21429,7 +21325,7 @@ snapshots: '@react-native/codegen@0.73.3(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@babel/parser': 7.26.5 + '@babel/parser': 7.26.2 '@babel/preset-env': 7.26.0(@babel/core@7.26.0) flow-parser: 0.206.0 glob: 7.2.3 @@ -21442,7 +21338,7 @@ snapshots: '@react-native/codegen@0.74.83(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@babel/parser': 7.26.5 + '@babel/parser': 7.26.2 '@babel/preset-env': 7.26.0(@babel/core@7.26.0) glob: 7.2.3 hermes-parser: 0.19.1 @@ -21455,7 +21351,7 @@ snapshots: '@react-native/codegen@0.74.87(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@babel/parser': 7.26.5 + '@babel/parser': 7.26.2 '@babel/preset-env': 7.26.0(@babel/core@7.26.0) glob: 7.2.3 hermes-parser: 0.19.1 @@ -22230,12 +22126,12 @@ snapshots: dependencies: '@sentry/types': 8.26.0 - '@sentry/webpack-plugin@2.17.0(encoding@0.1.13)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)))': + '@sentry/webpack-plugin@2.17.0(encoding@0.1.13)(webpack@5.94.0)': dependencies: '@sentry/bundler-plugin-core': 2.17.0(encoding@0.1.13) unplugin: 1.0.1 uuid: 9.0.1 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) transitivePeerDependencies: - encoding - supports-color @@ -23240,10 +23136,10 @@ snapshots: storybook: 8.4.4(prettier@3.3.3) ts-dedent: 2.2.0 - '@storybook/addon-styling-webpack@1.0.1(storybook@8.4.4(prettier@3.3.3))(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)))': + '@storybook/addon-styling-webpack@1.0.1(storybook@8.4.4(prettier@3.3.3))(webpack@5.94.0)': dependencies: '@storybook/node-logger': 8.2.9(storybook@8.4.4(prettier@3.3.3)) - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) transitivePeerDependencies: - storybook @@ -23256,10 +23152,10 @@ snapshots: memoizerific: 1.11.3 storybook: 8.4.4(prettier@3.3.3) - '@storybook/addon-webpack5-compiler-swc@1.0.5(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)))': + '@storybook/addon-webpack5-compiler-swc@1.0.5(webpack@5.94.0)': dependencies: '@swc/core': 1.7.18 - swc-loader: 0.2.6(@swc/core@1.7.18)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + swc-loader: 0.2.6(@swc/core@1.7.18)(webpack@5.94.0) transitivePeerDependencies: - '@swc/helpers' - webpack @@ -23274,7 +23170,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-webpack5@8.4.4(@swc/core@1.7.18)(esbuild@0.24.0)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))': + '@storybook/builder-webpack5@8.4.4(@swc/core@1.7.18)(esbuild@0.24.0)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5)(webpack-cli@5.1.4)': dependencies: '@storybook/core-webpack': 8.4.4(storybook@8.4.4(prettier@3.3.3)) '@types/node': 22.9.0 @@ -23283,23 +23179,23 @@ snapshots: case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.3.1 constants-browserify: 1.0.0 - css-loader: 6.11.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + css-loader: 6.11.0(webpack@5.94.0) es-module-lexer: 1.5.4 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) - html-webpack-plugin: 5.6.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.4.5)(webpack@5.94.0) + html-webpack-plugin: 5.6.0(webpack@5.94.0) magic-string: 0.30.13 path-browserify: 1.0.1 process: 0.11.10 semver: 7.6.3 storybook: 8.4.4(prettier@3.3.3) - style-loader: 3.3.4(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) - terser-webpack-plugin: 5.3.10(@swc/core@1.7.18)(esbuild@0.24.0)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + style-loader: 3.3.4(webpack@5.94.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.18)(esbuild@0.24.0)(webpack@5.94.0) ts-dedent: 2.2.0 url: 0.11.3 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) - webpack-dev-middleware: 5.3.4(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack-dev-middleware: 5.3.4(webpack@5.94.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -23371,11 +23267,11 @@ snapshots: dependencies: storybook: 8.4.4(prettier@3.3.3) - '@storybook/preset-react-webpack@8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.3.3)))(@swc/core@1.7.18)(esbuild@0.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))': + '@storybook/preset-react-webpack@8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.3.3)))(@swc/core@1.7.18)(esbuild@0.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5)(webpack-cli@5.1.4)': dependencies: '@storybook/core-webpack': 8.4.4(storybook@8.4.4(prettier@3.3.3)) '@storybook/react': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.4.5)(webpack@5.94.0) '@types/node': 22.9.0 '@types/semver': 7.5.8 find-up: 5.0.0 @@ -23387,7 +23283,7 @@ snapshots: semver: 7.6.3 storybook: 8.4.4(prettier@3.3.3) tsconfig-paths: 4.2.0 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -23402,7 +23298,7 @@ snapshots: dependencies: storybook: 8.4.4(prettier@3.3.3) - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)))': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.4.5)(webpack@5.94.0)': dependencies: debug: 4.3.7 endent: 2.1.0 @@ -23412,7 +23308,7 @@ snapshots: react-docgen-typescript: 2.2.2(typescript@5.4.5) tslib: 2.8.1 typescript: 5.4.5 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) transitivePeerDependencies: - supports-color @@ -23422,10 +23318,10 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 8.4.4(prettier@3.3.3) - '@storybook/react-webpack5@8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.3.3)))(@swc/core@1.7.18)(esbuild@0.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))': + '@storybook/react-webpack5@8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.3.3)))(@swc/core@1.7.18)(esbuild@0.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5)(webpack-cli@5.1.4)': dependencies: - '@storybook/builder-webpack5': 8.4.4(@swc/core@1.7.18)(esbuild@0.24.0)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) - '@storybook/preset-react-webpack': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.3.3)))(@swc/core@1.7.18)(esbuild@0.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + '@storybook/builder-webpack5': 8.4.4(@swc/core@1.7.18)(esbuild@0.24.0)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5)(webpack-cli@5.1.4) + '@storybook/preset-react-webpack': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.3.3)))(@swc/core@1.7.18)(esbuild@0.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5)(webpack-cli@5.1.4) '@storybook/react': 8.4.4(@storybook/test@8.4.4(storybook@8.4.4(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.4(prettier@3.3.3))(typescript@5.4.5) '@types/node': 22.9.0 react: 18.3.1 @@ -24008,11 +23904,6 @@ snapshots: '@types/react': 18.3.10 hoist-non-react-statics: 3.3.2 - '@types/hoist-non-react-statics@3.3.6': - dependencies: - '@types/react': 18.3.10 - hoist-non-react-statics: 3.3.2 - '@types/html-minifier-terser@6.1.0': {} '@types/html-minifier@4.0.5': @@ -24232,7 +24123,7 @@ snapshots: '@types/styled-components@5.1.34': dependencies: - '@types/hoist-non-react-statics': 3.3.6 + '@types/hoist-non-react-statics': 3.3.5 '@types/react': 18.3.10 csstype: 3.1.3 @@ -24279,11 +24170,11 @@ snapshots: anymatch: 3.1.3 source-map: 0.6.1 - '@types/webpack@5.28.5(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))': + '@types/webpack@5.28.5(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4)': dependencies: '@types/node': 20.12.12 tapable: 2.2.1 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -24584,7 +24475,7 @@ snapshots: graphql: 15.8.0 wonka: 4.0.15 - '@vitest/coverage-istanbul@2.0.5(vitest@2.0.5(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.29.1)(terser@5.37.0))': + '@vitest/coverage-istanbul@2.0.5(vitest@2.0.5(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.28.1)(terser@5.36.0))': dependencies: '@istanbuljs/schema': 0.1.3 debug: 4.3.6(supports-color@5.5.0) @@ -24596,7 +24487,7 @@ snapshots: magicast: 0.3.4 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.0.5(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.29.1)(terser@5.37.0) + vitest: 2.0.5(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.28.1)(terser@5.36.0) transitivePeerDependencies: - supports-color @@ -24653,7 +24544,7 @@ snapshots: '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.26.5 + '@babel/parser': 7.26.2 '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 @@ -24685,14 +24576,14 @@ snapshots: '@vue/compiler-sfc@3.5.13': dependencies: - '@babel/parser': 7.26.5 + '@babel/parser': 7.26.2 '@vue/compiler-core': 3.5.13 '@vue/compiler-dom': 3.5.13 '@vue/compiler-ssr': 3.5.13 '@vue/shared': 3.5.13 estree-walker: 2.0.2 - magic-string: 0.30.17 - postcss: 8.5.1 + magic-string: 0.30.13 + postcss: 8.4.49 source-map-js: 1.2.1 optional: true @@ -24788,19 +24679,19 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.94.0)': dependencies: - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.94.0)': dependencies: - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.1)(webpack@5.94.0)': dependencies: - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0) optionalDependencies: webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.94.0) @@ -25009,7 +24900,7 @@ snapshots: dependencies: '@stacks/network': 7.0.2(encoding@0.1.13) '@stacks/transactions': 7.0.2(encoding@0.1.13) - clarity-codegen: 0.5.3(@stacks/transactions@7.0.2(encoding@0.1.13)) + clarity-codegen: 0.5.2(@stacks/transactions@7.0.2(encoding@0.1.13)) transitivePeerDependencies: - debug @@ -25288,7 +25179,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): dependencies: - '@babel/compat-data': 7.26.5 + '@babel/compat-data': 7.26.2 '@babel/core': 7.26.0 '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) semver: 6.3.1 @@ -25328,7 +25219,7 @@ snapshots: babel-plugin-react-compiler@0.0.0-experimental-592953e-20240517: dependencies: '@babel/generator': 7.2.0 - '@babel/types': 7.26.5 + '@babel/types': 7.26.0 chalk: 4.1.2 invariant: 2.2.4 pretty-format: 24.9.0 @@ -25634,13 +25525,6 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) - browserslist@4.24.4: - dependencies: - caniuse-lite: 1.0.30001695 - electron-to-chromium: 1.5.86 - node-releases: 2.0.19 - update-browserslist-db: 1.1.2(browserslist@4.24.4) - bs58@4.0.1: dependencies: base-x: 3.0.10 @@ -25842,8 +25726,6 @@ snapshots: caniuse-lite@1.0.30001680: {} - caniuse-lite@1.0.30001695: {} - case-sensitive-paths-webpack-plugin@2.4.0: {} caseless@0.12.0: {} @@ -25981,7 +25863,7 @@ snapshots: cjs-module-lexer@1.3.1: {} - clarity-codegen@0.5.3(@stacks/transactions@7.0.2(encoding@0.1.13)): + clarity-codegen@0.5.2(@stacks/transactions@7.0.2(encoding@0.1.13)): dependencies: '@stacks/stacks-blockchain-api-types': 7.8.2 '@stacks/transactions': 7.0.2(encoding@0.1.13) @@ -26000,10 +25882,10 @@ snapshots: clean-stack@2.2.0: {} - clean-webpack-plugin@4.0.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + clean-webpack-plugin@4.0.0(webpack@5.94.0): dependencies: del: 4.1.1 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) cli-boxes@3.0.0: {} @@ -26256,7 +26138,7 @@ snapshots: cookie@0.6.0: {} - copy-webpack-plugin@12.0.2(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + copy-webpack-plugin@12.0.2(webpack@5.94.0): dependencies: fast-glob: 3.3.2 glob-parent: 6.0.2 @@ -26264,15 +26146,15 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) core-js-compat@3.38.1: dependencies: browserslist: 4.23.3 - core-js-compat@3.40.0: + core-js-compat@3.39.0: dependencies: - browserslist: 4.24.4 + browserslist: 4.24.2 core-js-pure@3.38.1: {} @@ -26422,7 +26304,7 @@ snapshots: postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - css-loader@6.11.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + css-loader@6.11.0(webpack@5.94.0): dependencies: icss-utils: 5.1.0(postcss@8.4.47) postcss: 8.4.47 @@ -26433,9 +26315,9 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) - css-loader@7.1.2(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + css-loader@7.1.2(webpack@5.94.0): dependencies: icss-utils: 5.1.0(postcss@8.4.47) postcss: 8.4.47 @@ -26446,7 +26328,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.3 optionalDependencies: - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) css-prefers-color-scheme@10.0.0(postcss@8.4.47): dependencies: @@ -26741,10 +26623,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.4.0: - dependencies: - ms: 2.1.3 - decamelize-keys@1.1.1: dependencies: decamelize: 1.2.0 @@ -27017,10 +26895,10 @@ snapshots: dependencies: dotenv: 16.4.5 - dotenv-webpack@8.1.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + dotenv-webpack@8.1.0(webpack@5.94.0): dependencies: dotenv-defaults: 2.0.2 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) dotenv@16.4.5: {} @@ -27060,8 +26938,6 @@ snapshots: electron-to-chromium@1.5.63: {} - electron-to-chromium@1.5.86: {} - electron@27.3.11: dependencies: '@electron/get': 2.0.3 @@ -27301,12 +27177,12 @@ snapshots: get-value: 2.0.6 sliced: 1.0.1 - esbuild-loader@4.2.2(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + esbuild-loader@4.2.2(webpack@5.94.0): dependencies: esbuild: 0.21.5 get-tsconfig: 4.8.1 loader-utils: 2.0.4 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) webpack-sources: 1.4.3 esbuild-register@3.6.0(esbuild@0.21.5): @@ -27930,11 +27806,11 @@ snapshots: dependencies: flat-cache: 3.2.0 - file-loader@6.2.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + file-loader@6.2.0(webpack@5.94.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) file-size@1.0.0: {} @@ -28054,7 +27930,7 @@ snapshots: forever-agent@0.6.1: {} - fork-ts-checker-webpack-plugin@6.5.3(eslint@8.56.0)(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + fork-ts-checker-webpack-plugin@6.5.3(eslint@8.56.0)(typescript@5.4.5)(webpack@5.94.0): dependencies: '@babel/code-frame': 7.24.7 '@types/json-schema': 7.0.15 @@ -28070,11 +27946,11 @@ snapshots: semver: 7.6.3 tapable: 1.1.3 typescript: 5.4.5 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) optionalDependencies: eslint: 8.56.0 - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.4.5)(webpack@5.94.0): dependencies: '@babel/code-frame': 7.26.2 chalk: 4.1.2 @@ -28089,7 +27965,7 @@ snapshots: semver: 7.6.3 tapable: 2.2.1 typescript: 5.4.5 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) form-data-encoder@2.1.4: {} @@ -28685,7 +28561,7 @@ snapshots: relateurl: 0.2.7 terser: 5.31.6 - html-webpack-plugin@5.6.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + html-webpack-plugin@5.6.0(webpack@5.94.0): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -28693,7 +28569,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) htmlparser2@6.1.0: dependencies: @@ -29382,11 +29258,11 @@ snapshots: jscodeshift@0.14.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)): dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.5 + '@babel/parser': 7.26.2 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) '@babel/preset-env': 7.26.0(@babel/core@7.26.0) '@babel/preset-flow': 7.25.9(@babel/core@7.26.0) '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) @@ -29442,8 +29318,6 @@ snapshots: jsesc@3.0.2: {} - jsesc@3.1.0: {} - json-buffer@3.0.1: {} json-merge-patch@1.0.2: @@ -29715,7 +29589,7 @@ snapshots: lightningcss-darwin-arm64@1.25.1: optional: true - lightningcss-darwin-arm64@1.29.1: + lightningcss-darwin-arm64@1.28.1: optional: true lightningcss-darwin-x64@1.19.0: @@ -29724,13 +29598,13 @@ snapshots: lightningcss-darwin-x64@1.25.1: optional: true - lightningcss-darwin-x64@1.29.1: + lightningcss-darwin-x64@1.28.1: optional: true lightningcss-freebsd-x64@1.25.1: optional: true - lightningcss-freebsd-x64@1.29.1: + lightningcss-freebsd-x64@1.28.1: optional: true lightningcss-linux-arm-gnueabihf@1.19.0: @@ -29739,7 +29613,7 @@ snapshots: lightningcss-linux-arm-gnueabihf@1.25.1: optional: true - lightningcss-linux-arm-gnueabihf@1.29.1: + lightningcss-linux-arm-gnueabihf@1.28.1: optional: true lightningcss-linux-arm64-gnu@1.19.0: @@ -29748,7 +29622,7 @@ snapshots: lightningcss-linux-arm64-gnu@1.25.1: optional: true - lightningcss-linux-arm64-gnu@1.29.1: + lightningcss-linux-arm64-gnu@1.28.1: optional: true lightningcss-linux-arm64-musl@1.19.0: @@ -29757,7 +29631,7 @@ snapshots: lightningcss-linux-arm64-musl@1.25.1: optional: true - lightningcss-linux-arm64-musl@1.29.1: + lightningcss-linux-arm64-musl@1.28.1: optional: true lightningcss-linux-x64-gnu@1.19.0: @@ -29766,7 +29640,7 @@ snapshots: lightningcss-linux-x64-gnu@1.25.1: optional: true - lightningcss-linux-x64-gnu@1.29.1: + lightningcss-linux-x64-gnu@1.28.1: optional: true lightningcss-linux-x64-musl@1.19.0: @@ -29775,10 +29649,10 @@ snapshots: lightningcss-linux-x64-musl@1.25.1: optional: true - lightningcss-linux-x64-musl@1.29.1: + lightningcss-linux-x64-musl@1.28.1: optional: true - lightningcss-win32-arm64-msvc@1.29.1: + lightningcss-win32-arm64-msvc@1.28.1: optional: true lightningcss-win32-x64-msvc@1.19.0: @@ -29787,7 +29661,7 @@ snapshots: lightningcss-win32-x64-msvc@1.25.1: optional: true - lightningcss-win32-x64-msvc@1.29.1: + lightningcss-win32-x64-msvc@1.28.1: optional: true lightningcss@1.19.0: @@ -29817,20 +29691,20 @@ snapshots: lightningcss-linux-x64-musl: 1.25.1 lightningcss-win32-x64-msvc: 1.25.1 - lightningcss@1.29.1: + lightningcss@1.28.1: dependencies: detect-libc: 1.0.3 optionalDependencies: - lightningcss-darwin-arm64: 1.29.1 - lightningcss-darwin-x64: 1.29.1 - lightningcss-freebsd-x64: 1.29.1 - lightningcss-linux-arm-gnueabihf: 1.29.1 - lightningcss-linux-arm64-gnu: 1.29.1 - lightningcss-linux-arm64-musl: 1.29.1 - lightningcss-linux-x64-gnu: 1.29.1 - lightningcss-linux-x64-musl: 1.29.1 - lightningcss-win32-arm64-msvc: 1.29.1 - lightningcss-win32-x64-msvc: 1.29.1 + lightningcss-darwin-arm64: 1.28.1 + lightningcss-darwin-x64: 1.28.1 + lightningcss-freebsd-x64: 1.28.1 + lightningcss-linux-arm-gnueabihf: 1.28.1 + lightningcss-linux-arm64-gnu: 1.28.1 + lightningcss-linux-arm64-musl: 1.28.1 + lightningcss-linux-x64-gnu: 1.28.1 + lightningcss-linux-x64-musl: 1.28.1 + lightningcss-win32-arm64-msvc: 1.28.1 + lightningcss-win32-x64-msvc: 1.28.1 optional: true lines-and-columns@1.2.4: {} @@ -29987,11 +29861,6 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - magic-string@0.30.17: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - optional: true - magic-string@0.30.8: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -30442,11 +30311,11 @@ snapshots: metro-minify-terser@0.80.12: dependencies: flow-enums-runtime: 0.0.6 - terser: 5.37.0 + terser: 5.36.0 metro-minify-terser@0.80.5: dependencies: - terser: 5.37.0 + terser: 5.36.0 metro-resolver@0.80.12: dependencies: @@ -30465,8 +30334,8 @@ snapshots: metro-source-map@0.80.12: dependencies: - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.80.12 @@ -30479,8 +30348,8 @@ snapshots: metro-source-map@0.80.5: dependencies: - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 invariant: 2.2.4 metro-symbolicate: 0.80.5 nullthrows: 1.1.1 @@ -30516,9 +30385,9 @@ snapshots: metro-transform-plugins@0.80.12: dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.5 + '@babel/generator': 7.26.2 '@babel/template': 7.25.9 - '@babel/traverse': 7.26.5 + '@babel/traverse': 7.25.9 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -30527,9 +30396,9 @@ snapshots: metro-transform-plugins@0.80.5: dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.5 + '@babel/generator': 7.26.2 '@babel/template': 7.25.9 - '@babel/traverse': 7.26.5 + '@babel/traverse': 7.25.9 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color @@ -30537,9 +30406,9 @@ snapshots: metro-transform-worker@0.80.12: dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.5 - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 flow-enums-runtime: 0.0.6 metro: 0.80.12 metro-babel-transformer: 0.80.12 @@ -30557,9 +30426,9 @@ snapshots: metro-transform-worker@0.80.5(encoding@0.1.13): dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.5 - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 metro: 0.80.5(encoding@0.1.13) metro-babel-transformer: 0.80.5 metro-cache: 0.80.5 @@ -30578,11 +30447,11 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.26.0 - '@babel/generator': 7.26.5 - '@babel/parser': 7.26.5 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -30627,11 +30496,11 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.26.0 - '@babel/generator': 7.26.5 - '@babel/parser': 7.26.5 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 - '@babel/traverse': 7.26.5 - '@babel/types': 7.26.5 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -31225,8 +31094,6 @@ snapshots: node-releases@2.0.18: {} - node-releases@2.0.19: {} - node-stream-zip@1.15.0: {} nopt@5.0.0: @@ -31556,14 +31423,14 @@ snapshots: p-queue@8.0.1: dependencies: eventemitter3: 5.0.1 - p-timeout: 6.1.4 + p-timeout: 6.1.3 p-retry@4.6.2: dependencies: '@types/retry': 0.12.0 retry: 0.13.1 - p-timeout@6.1.4: {} + p-timeout@6.1.3: {} p-try@2.2.0: {} @@ -31952,14 +31819,14 @@ snapshots: '@csstools/utilities': 2.0.0(postcss@8.4.47) postcss: 8.4.47 - postcss-loader@8.1.1(postcss@8.4.47)(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + postcss-loader@8.1.1(postcss@8.4.47)(typescript@5.4.5)(webpack@5.94.0): dependencies: cosmiconfig: 9.0.0(typescript@5.4.5) jiti: 1.21.6 postcss: 8.4.47 semver: 7.6.3 optionalDependencies: - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) transitivePeerDependencies: - typescript @@ -32141,7 +32008,7 @@ snapshots: picocolors: 1.1.0 source-map-js: 1.2.1 - postcss@8.5.1: + postcss@8.4.49: dependencies: nanoid: 3.3.4 picocolors: 1.1.1 @@ -32226,11 +32093,11 @@ snapshots: process@0.11.10: {} - progress-bar-webpack-plugin@2.1.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + progress-bar-webpack-plugin@2.1.0(webpack@5.94.0): dependencies: chalk: 3.0.0 progress: 2.0.3 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) progress@2.0.3: {} @@ -32390,7 +32257,7 @@ snapshots: react: 18.3.1 tween-functions: 1.2.0 - react-dev-utils@12.0.1(eslint@8.56.0)(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + react-dev-utils@12.0.1(eslint@8.56.0)(typescript@5.4.5)(webpack@5.94.0): dependencies: '@babel/code-frame': 7.24.7 address: 1.2.2 @@ -32401,7 +32268,7 @@ snapshots: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.56.0)(typescript@5.4.5)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.56.0)(typescript@5.4.5)(webpack@5.94.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -32416,7 +32283,7 @@ snapshots: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -32529,7 +32396,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) @@ -32546,21 +32413,21 @@ snapshots: react: 18.2.0 react-native: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.3.1) - react-native-svg@15.11.1(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0))(react@18.3.1): + react-native-svg@15.2.0(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0))(react@18.2.0): dependencies: css-select: 5.1.0 css-tree: 1.1.3 - react: 18.3.1 + react: 18.2.0 react-native: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.3.1) - warn-once: 0.1.1 - optional: true - react-native-svg@15.2.0(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0))(react@18.2.0): + react-native-svg@15.9.0(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0))(react@18.3.1): dependencies: css-select: 5.1.0 css-tree: 1.1.3 - react: 18.2.0 + react: 18.3.1 react-native: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.3.1) + warn-once: 0.1.1 + optional: true react-native-webview@13.8.6(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0))(react@18.2.0): dependencies: @@ -32619,13 +32486,13 @@ snapshots: - supports-color - utf-8-validate - react-qr-code@2.0.12(react-native-svg@15.11.1(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0))(react@18.3.1))(react@18.3.1): + react-qr-code@2.0.12(react-native-svg@15.9.0(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0))(react@18.3.1))(react@18.3.1): dependencies: prop-types: 15.8.1 qr.js: 0.0.0 react: 18.3.1 optionalDependencies: - react-native-svg: 15.11.1(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0))(react@18.3.1) + react-native-svg: 15.9.0(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0))(react@18.3.1) react-redux@8.1.3(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.10)(encoding@0.1.13)(react@18.2.0))(react@18.3.1)(redux@4.2.1): dependencies: @@ -32654,8 +32521,6 @@ snapshots: react-refresh@0.14.2: {} - react-refresh@0.16.0: {} - react-remove-scroll-bar@2.3.6(@types/react@18.3.10)(react@18.2.0): dependencies: react: 18.2.0 @@ -32961,12 +32826,12 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - regexpu-core@6.2.0: + regexpu-core@6.1.1: dependencies: regenerate: 1.4.2 regenerate-unicode-properties: 10.2.0 regjsgen: 0.8.0 - regjsparser: 0.12.0 + regjsparser: 0.11.2 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.0 @@ -32980,7 +32845,7 @@ snapshots: regjsgen@0.8.0: {} - regjsparser@0.12.0: + regjsparser@0.11.2: dependencies: jsesc: 3.0.2 @@ -33661,10 +33526,10 @@ snapshots: transitivePeerDependencies: - supports-color - speed-measure-webpack-plugin@1.5.0(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + speed-measure-webpack-plugin@1.5.0(webpack@5.94.0): dependencies: chalk: 4.1.2 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) split2@4.2.0: {} @@ -33889,9 +33754,9 @@ snapshots: structured-headers@0.4.1: {} - style-loader@3.3.4(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + style-loader@3.3.4(webpack@5.94.0): dependencies: - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) style-to-object@0.4.4: dependencies: @@ -33923,7 +33788,7 @@ snapshots: sucrase@3.34.0: dependencies: - '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 glob: 7.1.6 lines-and-columns: 1.2.4 @@ -33976,11 +33841,11 @@ snapshots: csso: 5.0.5 picocolors: 1.1.0 - swc-loader@0.2.6(@swc/core@1.7.18)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + swc-loader@0.2.6(@swc/core@1.7.18)(webpack@5.94.0): dependencies: '@swc/core': 1.7.18 '@swc/counter': 0.1.3 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) symbol-tree@3.2.4: {} @@ -34048,14 +33913,14 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.10(@swc/core@1.7.18)(esbuild@0.24.0)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + terser-webpack-plugin@5.3.10(@swc/core@1.7.18)(esbuild@0.24.0)(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.6 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) optionalDependencies: '@swc/core': 1.7.18 esbuild: 0.24.0 @@ -34067,7 +33932,7 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - terser@5.37.0: + terser@5.36.0: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.14.0 @@ -34559,12 +34424,6 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.0 - update-browserslist-db@1.1.2(browserslist@4.24.4): - dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - update-notifier@6.0.2: dependencies: boxen: 7.1.1 @@ -34769,13 +34628,13 @@ snapshots: bl: 1.2.3 through2: 2.0.5 - vite-node@2.0.5(@types/node@20.12.12)(lightningcss@1.29.1)(terser@5.37.0): + vite-node@2.0.5(@types/node@20.12.12)(lightningcss@1.28.1)(terser@5.36.0): dependencies: cac: 6.7.14 debug: 4.3.6(supports-color@5.5.0) pathe: 1.1.2 tinyrainbow: 1.2.0 - vite: 5.4.2(@types/node@20.12.12)(lightningcss@1.29.1)(terser@5.37.0) + vite: 5.4.2(@types/node@20.12.12)(lightningcss@1.28.1)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - less @@ -34787,7 +34646,7 @@ snapshots: - supports-color - terser - vite@5.4.2(@types/node@20.12.12)(lightningcss@1.29.1)(terser@5.37.0): + vite@5.4.2(@types/node@20.12.12)(lightningcss@1.28.1)(terser@5.36.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -34795,10 +34654,10 @@ snapshots: optionalDependencies: '@types/node': 20.12.12 fsevents: 2.3.3 - lightningcss: 1.29.1 - terser: 5.37.0 + lightningcss: 1.28.1 + terser: 5.36.0 - vitest@2.0.5(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.29.1)(terser@5.37.0): + vitest@2.0.5(@types/node@20.12.12)(jsdom@22.1.0)(lightningcss@1.28.1)(terser@5.36.0): dependencies: '@ampproject/remapping': 2.3.0 '@vitest/expect': 2.0.5 @@ -34816,8 +34675,8 @@ snapshots: tinybench: 2.9.0 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.2(@types/node@20.12.12)(lightningcss@1.29.1)(terser@5.37.0) - vite-node: 2.0.5(@types/node@20.12.12)(lightningcss@1.29.1)(terser@5.37.0) + vite: 5.4.2(@types/node@20.12.12)(lightningcss@1.28.1)(terser@5.36.0) + vite-node: 2.0.5(@types/node@20.12.12)(lightningcss@1.28.1)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.12.12 @@ -34953,9 +34812,9 @@ snapshots: webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.94.0))(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.94.0) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.94.0) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.1)(webpack@5.94.0) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.5 @@ -34964,20 +34823,20 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: webpack-bundle-analyzer: 4.10.2 webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.94.0) - webpack-dev-middleware@5.3.4(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))): + webpack-dev-middleware@5.3.4(webpack@5.94.0): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.94.0): dependencies: @@ -35009,10 +34868,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + webpack-dev-middleware: 5.3.4(webpack@5.94.0) ws: 8.17.1 optionalDependencies: - webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) + webpack: 5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0) transitivePeerDependencies: - bufferutil @@ -35044,7 +34903,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)): + webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4): dependencies: '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 @@ -35066,7 +34925,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.7.18)(esbuild@0.24.0)(webpack@5.94.0(@swc/core@1.7.18)(esbuild@0.24.0)(webpack-cli@5.1.4(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) + terser-webpack-plugin: 5.3.10(@swc/core@1.7.18)(esbuild@0.24.0)(webpack@5.94.0) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: diff --git a/scripts/generate-manifest.js b/scripts/generate-manifest.js index a1683be0e74..b5bc847deda 100644 --- a/scripts/generate-manifest.js +++ b/scripts/generate-manifest.js @@ -69,7 +69,7 @@ const manifest = { manifest_version: 3, author: 'Leather Wallet, LLC', description: 'Leather Bitcoin Wallet - Your Bitcoin Wallet for DeFi, NFTs, Ordinals, and dApps', - permissions: ['contextMenus', 'storage', 'unlimitedStorage'], + permissions: ['contextMenus', 'storage', 'unlimitedStorage', 'notifications'], commands: { _execute_browser_action: { suggested_key: { diff --git a/src/app/features/address-monitor/use-monitorable-addresses.ts b/src/app/features/address-monitor/use-monitorable-addresses.ts new file mode 100644 index 00000000000..0e21ed0277d --- /dev/null +++ b/src/app/features/address-monitor/use-monitorable-addresses.ts @@ -0,0 +1,79 @@ +import { useMemo } from 'react'; + +import type { HDKey } from '@scure/bip32'; +import type { P2Ret } from '@scure/btc-signer/payment'; + +import { + type SupportedPaymentType, + deriveAddressIndexZeroFromAccount, + getNativeSegwitPaymentFromAddressIndex, + getTaprootPaymentFromAddressIndex, +} from '@leather.io/bitcoin'; +import type { BitcoinNetworkModes } from '@leather.io/models'; +import { createNullArrayOfLength, isDefined } from '@leather.io/utils'; + +import { useCurrentAccountIndex } from '@app/store/accounts/account'; +import { useGenerateNativeSegwitAccount } from '@app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks'; +import { useGenerateTaprootAccount } from '@app/store/accounts/blockchain/bitcoin/taproot-account.hooks'; +import { useStacksAccounts } from '@app/store/accounts/blockchain/stacks/stacks-account.hooks'; +import { useCurrentNetworkId } from '@app/store/networks/networks.selectors'; +import type { MonitoredAddress } from '@background/monitors/address-monitor'; + +const paymentFnMap: Record< + SupportedPaymentType, + (keychain: HDKey, network: BitcoinNetworkModes) => P2Ret +> = { + p2tr: getTaprootPaymentFromAddressIndex, + p2wpkh: getNativeSegwitPaymentFromAddressIndex, +}; + +export function useMonitorableAddresses() { + const currentAccountIndex = useCurrentAccountIndex(); + const currentNetworkId = useCurrentNetworkId(); + const createNativeSegwitAccount = useGenerateNativeSegwitAccount(); + const createTaprootAccount = useGenerateTaprootAccount(); + + const stacksAccounts = useStacksAccounts(); + + return useMemo(() => { + if (!stacksAccounts || !currentNetworkId) return; + + const stacksAddresses = stacksAccounts.map( + account => + ({ + accountIndex: account.index, + address: account.address, + chain: 'stacks', + isCurrent: account.index === currentAccountIndex, + }) satisfies MonitoredAddress + ); + const btcAddresses = createNullArrayOfLength(stacksAccounts.length).flatMap((_, index) => + [createNativeSegwitAccount(index), createTaprootAccount(index)] + .filter(isDefined) + .map(account => { + const addressIndexKeychain = deriveAddressIndexZeroFromAccount(account.keychain); + if (account.type !== 'p2tr' && account.type !== 'p2wpkh') return undefined; + const payment = paymentFnMap[account.type](addressIndexKeychain, 'mainnet'); + if (!payment.address) return undefined; + return { + accountIndex: index, + address: payment.address, + chain: 'bitcoin', + isCurrent: index === currentAccountIndex, + } satisfies MonitoredAddress; + }) + .filter(isDefined) + ); + // if one address array is empty and the other not, we're in an intermediate state + return (stacksAddresses.length === 0 && btcAddresses.length > 0) || + (btcAddresses.length === 0 && stacksAddresses.length > 0) + ? undefined + : [...stacksAddresses, ...btcAddresses]; + }, [ + createNativeSegwitAccount, + createTaprootAccount, + stacksAccounts, + currentNetworkId, + currentAccountIndex, + ]); +} diff --git a/src/app/features/address-monitor/use-sync-address-monitor.ts b/src/app/features/address-monitor/use-sync-address-monitor.ts new file mode 100644 index 00000000000..d420d1e6abb --- /dev/null +++ b/src/app/features/address-monitor/use-sync-address-monitor.ts @@ -0,0 +1,29 @@ +import { useEffect, useRef } from 'react'; + +import isEqual from 'lodash.isequal'; + +import { logger } from '@shared/logger'; +import { InternalMethods } from '@shared/message-types'; +import { sendMessage } from '@shared/messages'; + +import { useMonitorableAddresses } from '@app/features/address-monitor/use-monitorable-addresses'; +import type { MonitoredAddress } from '@background/monitors/address-monitor'; + +export function useSyncAddressMonitor() { + const addresses = useMonitorableAddresses(); + const prevAddresses = useRef([]); + + useEffect(() => { + if (addresses && !isEqual(addresses, prevAddresses.current)) { + prevAddresses.current = addresses; + + logger.debug('Syncing Monitored Addresses: ', addresses); + sendMessage({ + method: InternalMethods.AddressMonitorUpdated, + payload: { + addresses, + }, + }); + } + }, [addresses]); +} diff --git a/src/app/features/container/container.tsx b/src/app/features/container/container.tsx index bc819ce393a..904417fe2ae 100644 --- a/src/app/features/container/container.tsx +++ b/src/app/features/container/container.tsx @@ -19,6 +19,7 @@ import { useOnWalletLock } from '@app/routes/hooks/use-on-wallet-lock'; import { useAppDispatch, useHasStateRehydrated } from '@app/store'; import { stxChainSlice } from '@app/store/chains/stx-chain.slice'; +import { useSyncAddressMonitor } from '../address-monitor/use-sync-address-monitor'; import { useRestoreFormState } from '../popup-send-form-restoration/use-restore-form-state'; export function Container() { @@ -28,7 +29,7 @@ export function Container() { const dispatch = useAppDispatch(); const hasStateRehydrated = useHasStateRehydrated(); - + useSyncAddressMonitor(); useOnWalletLock(() => closeWindow()); useOnSignOut(() => closeWindow()); useRestoreFormState(); diff --git a/src/app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks.ts b/src/app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks.ts index 7b102daf32c..f7ee892e687 100644 --- a/src/app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks.ts +++ b/src/app/store/accounts/blockchain/bitcoin/native-segwit-account.hooks.ts @@ -45,7 +45,7 @@ const selectCurrentNetworkNativeSegwitAccountBuilder = createSelector( nativeSegwitKeychains[bitcoinNetworkToNetworkMode(network.chain.bitcoin.bitcoinNetwork)] ); -function useNativeSegwitAccountBuilder() { +export function useGenerateNativeSegwitAccount() { return useSelector(selectCurrentNetworkNativeSegwitAccountBuilder); } @@ -72,7 +72,7 @@ export function useNativeSegwitNetworkSigners() { } export function useNativeSegwitSigner(accountIndex: number) { - const account = useNativeSegwitAccountBuilder()(accountIndex); + const account = useGenerateNativeSegwitAccount()(accountIndex); const extendedPublicKeyVersions = useBitcoinExtendedPublicKeyVersions(); return useMemo(() => { diff --git a/src/app/store/accounts/blockchain/bitcoin/taproot-account.hooks.ts b/src/app/store/accounts/blockchain/bitcoin/taproot-account.hooks.ts index 26c5a08acc1..362a396d671 100644 --- a/src/app/store/accounts/blockchain/bitcoin/taproot-account.hooks.ts +++ b/src/app/store/accounts/blockchain/bitcoin/taproot-account.hooks.ts @@ -45,6 +45,10 @@ const selectCurrentTaprootAccount = createSelector( (taprootKeychain, accountIndex) => taprootKeychain(accountIndex) ); +export function useGenerateTaprootAccount() { + return useSelector(selectCurrentNetworkTaprootAccountBuilder); +} + export function useTaprootAccount(accountIndex: number) { const generateTaprootAccount = useSelector(selectCurrentNetworkTaprootAccountBuilder); return useMemo( diff --git a/src/background/background.ts b/src/background/background.ts index 81e9d6ec221..10fb4f7aa68 100755 --- a/src/background/background.ts +++ b/src/background/background.ts @@ -13,6 +13,7 @@ import { isLegacyMessage, } from './messaging/legacy/legacy-external-message-handler'; import { rpcMessageHandler } from './messaging/rpc-message-handler'; +import { initAddressMonitor } from './monitors/address-monitor'; initContextMenuActions(); warnUsersAboutDevToolsDangers(); @@ -59,3 +60,7 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { // Listener fn must return `true` to indicate the response will be async return true; }); + +initAddressMonitor().catch(e => { + logger.error('Unable to Initialise Address Monitor: ', e); +}); diff --git a/src/background/messaging/internal-methods/message-handler.ts b/src/background/messaging/internal-methods/message-handler.ts index a4aa99cd3cd..3689bbffad2 100644 --- a/src/background/messaging/internal-methods/message-handler.ts +++ b/src/background/messaging/internal-methods/message-handler.ts @@ -1,6 +1,9 @@ import { logger } from '@shared/logger'; +import { InternalMethods } from '@shared/message-types'; import { BackgroundMessages } from '@shared/messages'; +import { syncAddressMonitor } from '@background/monitors/address-monitor'; + function validateMessagesAreFromExtension(sender: chrome.runtime.MessageSender) { // Only respond to internal messages from our UI, not content scripts in other applications return sender.url?.startsWith(chrome.runtime.getURL('')); @@ -28,5 +31,16 @@ export async function internalBackgroundMessageHandler( return; } logger.debug('Internal message', message); + + switch (message.method) { + case InternalMethods.AddressMonitorUpdated: + await syncAddressMonitor(message.payload.addresses); + break; + } + + if (message.method.includes('bitcoinKeys/signOut')) { + await syncAddressMonitor([]); + } + sendResponse(); } diff --git a/src/background/monitors/address-monitor.ts b/src/background/monitors/address-monitor.ts new file mode 100644 index 00000000000..06d51caa7ab --- /dev/null +++ b/src/background/monitors/address-monitor.ts @@ -0,0 +1,43 @@ +/* eslint-disable no-console */ +import { z } from 'zod'; + +import { createBitcoinTransactionMonitor } from './address-monitors/bitcoin-transaction-monitor'; + +const monitoredAddressSchema = z.object({ + chain: z.enum(['bitcoin', 'stacks']), + accountIndex: z.number(), + isCurrent: z.boolean(), + address: z.string(), +}); + +export type MonitoredAddress = z.infer; + +export interface AddressMonitor { + syncAddresses(addresses: MonitoredAddress[]): void; +} + +const monitors: AddressMonitor[] = []; + +export async function initAddressMonitor() { + const addresses = await readMonitoredAddressStore(); + monitors.push(createBitcoinTransactionMonitor(addresses)); +} + +export async function syncAddressMonitor(addresses: MonitoredAddress[]) { + await writeMonitoredAddressStore(addresses); + monitors.forEach(monitor => monitor.syncAddresses(addresses)); +} + +const ADDRESS_MONITOR_STORE = 'addressMonitorStore'; + +async function readMonitoredAddressStore() { + const result = await chrome.storage.local.get(ADDRESS_MONITOR_STORE); + const addresses = result[ADDRESS_MONITOR_STORE] || []; + return addresses; +} + +async function writeMonitoredAddressStore(addresses: MonitoredAddress[]) { + await chrome.storage.local.set({ + [ADDRESS_MONITOR_STORE]: addresses, + }); +} diff --git a/src/background/monitors/address-monitors/bitcoin-transaction-monitor.ts b/src/background/monitors/address-monitors/bitcoin-transaction-monitor.ts new file mode 100644 index 00000000000..0f6323c8cc6 --- /dev/null +++ b/src/background/monitors/address-monitors/bitcoin-transaction-monitor.ts @@ -0,0 +1,177 @@ +import axios from 'axios'; + +import { isDefined } from '@leather.io/utils'; + +import { logger } from '@shared/logger'; + +import type { AddressMonitor, MonitoredAddress } from '../address-monitor'; +import { + type MempoolWsBitcoinTxMessage, + type MempoolWsBtcPrice, + readMempooWsBtcPriceUsd, + readMempoolWsBitcoinTxAddressResult, +} from './bitcoin-transaction-monitor/mempool-ws'; + +export function createBitcoinTransactionMonitor(addresses: MonitoredAddress[]): AddressMonitor { + let _ws: WebSocket | null = null; + let _addresses: MonitoredAddress[]; + let _keepAliveInterval: NodeJS.Timeout | null = null; + let _btcPriceUsd: number = 0; + + _addresses = filterAddresses(addresses); + + // only connect if we have addresses at initialization + if (addresses.length > 0) { + connect(); + } + + function syncAddresses(addresses: MonitoredAddress[]) { + _addresses = filterAddresses(addresses); + + if (_addresses.length > 0) { + if (!_ws || (_ws.readyState !== _ws.CONNECTING && _ws.readyState !== _ws.OPEN)) { + connect(); + } else if (_ws.readyState === _ws.OPEN) { + sendWsTrackAddressSubscribe(); + } + } else { + logger.debug('Disconnecting Bitcon Tx Monitor'); + cleanup(); + } + } + + function filterAddresses(addresses: MonitoredAddress[]) { + return addresses.filter(a => a.chain === 'bitcoin'); + } + + function startKeepAlive() { + if (_keepAliveInterval) { + clearInterval(_keepAliveInterval); + } + + _keepAliveInterval = setInterval(() => { + if (_ws?.readyState === WebSocket.OPEN) { + _ws.send( + JSON.stringify({ + ping: 'keep-alive', + }) + ); + } + }, 20 * 1000); + } + + function sendWsTrackAddressSubscribe() { + const addresses = _addresses.map(a => a.address); + logger.debug(`Subscribing to ${addresses.length} Track Addresses`); + _ws!.send( + JSON.stringify({ + 'track-addresses': addresses, + }) + ); + } + + function cleanup() { + if (_keepAliveInterval) { + clearInterval(_keepAliveInterval); + _keepAliveInterval = null; + } + + if (_ws) { + _ws.close(); + _ws = null; + } + } + + function connect() { + logger.debug('Connecting Bitcoin Tx Monitor'); + + cleanup(); + + _ws = new WebSocket('wss://leather.mempool.space/api/v1/ws'); + + _ws.onopen = async () => { + logger.debug('Connected to Mempool WebSocket'); + sendWsTrackAddressSubscribe(); + startKeepAlive(); + fetchBtcPrice(); + }; + + _ws.onmessage = async event => { + await handleMessageEvent(event); + }; + + _ws.onerror = error => { + logger.error('Mempool WebSocket Error, ', error); + }; + + _ws.onclose = event => { + logger.debug('Disconnected from Mempool WebSocket.', event.reason); + if (_addresses.length > 0) { + setTimeout(() => { + connect(); + }, 300); + } + }; + } + + function fetchBtcPrice() { + axios + .get('https://leather.mempool.space/api/v1/prices') + .then(res => { + _btcPriceUsd = readMempooWsBtcPriceUsd(res.data); + }) + .catch(e => { + logger.debug('Unable to fetch BTC price, ', e); + }); + } + + async function handleMessageEvent(event: MessageEvent) { + const message = JSON.parse(event.data); + if (message['multi-address-transactions']) { + await handleTransactionMessage(message); + } else if (message['conversions']) { + _btcPriceUsd = readMempooWsBtcPriceUsd(message['conversions']); + } else { + logger.debug('Unrecognized Message Type: ', event.data); + } + } + + async function handleTransactionMessage(msg: MempoolWsBitcoinTxMessage) { + try { + for (const address of Object.keys(msg['multi-address-transactions']) + .filter(address => msg['multi-address-transactions'][address].confirmed.length > 0) // only confirmed transactions + .map(address => _addresses.find(a => a.address === address)) // only currently monitored addresses + .filter(isDefined)) { + const transaction = msg['multi-address-transactions'][address.address].confirmed[0]; + + const result = readMempoolWsBitcoinTxAddressResult(address.address, transaction); + + if (result.satValue > 0) { + const btcValue = result.satValue / 100_000_000; + const usdValue = btcValue * _btcPriceUsd; + await sendNotification( + `You ${result.isSender ? 'sent' : 'received'} Bitcoin!`, + `Account ${address.accountIndex + 1} ${result.isSender ? 'sent' : 'received'} ${btcValue} BTC ($${usdValue.toFixed(2)})` + ); + } + } + } catch (e) { + logger.error('Unable to handle WS message: ', e); + } + } + + async function sendNotification(title: string, message: string) { + const iconUrl = chrome.runtime.getURL('assets/icons/leather-icon-128.png'); + chrome.notifications.create({ + type: 'basic', + iconUrl, + title, + message, + priority: 0, + }); + } + + return { + syncAddresses, + }; +} diff --git a/src/background/monitors/address-monitors/bitcoin-transaction-monitor/mempool-ws.spec.ts b/src/background/monitors/address-monitors/bitcoin-transaction-monitor/mempool-ws.spec.ts new file mode 100644 index 00000000000..91c53b59ea1 --- /dev/null +++ b/src/background/monitors/address-monitors/bitcoin-transaction-monitor/mempool-ws.spec.ts @@ -0,0 +1,84 @@ +import { describe, expect, it } from 'vitest'; + +import { + type MempoolWsBitcoinTx, + type MempoolWsBtcPrice, + readMempooWsBtcPriceUsd, + readMempoolWsBitcoinTxAddressResult, +} from './mempool-ws'; + +describe('readMempooWsBtcPriceUsd', () => { + const mockMempoolWsBtcPrice: MempoolWsBtcPrice = { + time: 1234567890, + USD: 99000, + }; + + it('should return USD price as a number', () => { + const price = readMempooWsBtcPriceUsd(mockMempoolWsBtcPrice); + expect(price).toBe(99000); + }); +}); + +describe('readMempoolWsBitcoinTxAddressResult', () => { + const senderAddress = 'bc1sender'; + const receiverAddress1 = 'bc1receiver'; + const receiverAddress2 = 'bc2receiver'; + const sentAmount = 1000000; + const receivedAmount1 = 100000; + const receivedAmount2 = 200000; + const feeAmount = 10000; + const blockHeight = 123456; + + const mockMempoolWsBitcoinTx: MempoolWsBitcoinTx = { + txid: 'tx1', + vin: [ + { + txid: 'prevtx', + prevout: { + scriptpubkey_address: senderAddress, + value: sentAmount, + }, + }, + ], + vout: [ + { + scriptpubkey_address: senderAddress, + value: sentAmount - receivedAmount1 - receivedAmount2 - feeAmount, + }, + { + scriptpubkey_address: receiverAddress1, + value: receivedAmount1, + }, + { + scriptpubkey_address: receiverAddress2, + value: receivedAmount2, + }, + ], + fee: feeAmount, + status: { + confirmed: true, + block_height: blockHeight, + }, + }; + + it('identifies sender and calculates value as sum of vouts to non-sender addresses', () => { + const result = readMempoolWsBitcoinTxAddressResult(senderAddress, mockMempoolWsBitcoinTx); + expect(result.isSender).toEqual(true); + expect(result.satValue).toEqual(receivedAmount1 + receivedAmount2); + }); + + it('identifies receiver and calculates value as of matching vout address', () => { + const result1 = readMempoolWsBitcoinTxAddressResult(receiverAddress1, mockMempoolWsBitcoinTx); + const result2 = readMempoolWsBitcoinTxAddressResult(receiverAddress2, mockMempoolWsBitcoinTx); + expect(result1.isSender).toEqual(false); + expect(result1.satValue).toEqual(receivedAmount1); + expect(result2.isSender).toEqual(false); + expect(result2.satValue).toEqual(receivedAmount2); + }); + + it('correctly reads the fee and block height', () => { + const result = readMempoolWsBitcoinTxAddressResult(receiverAddress1, mockMempoolWsBitcoinTx); + expect(result.fee).toEqual(feeAmount); + expect(result.blockHeight).toEqual(blockHeight); + }); +}); diff --git a/src/background/monitors/address-monitors/bitcoin-transaction-monitor/mempool-ws.ts b/src/background/monitors/address-monitors/bitcoin-transaction-monitor/mempool-ws.ts new file mode 100644 index 00000000000..21f1fbd2b04 --- /dev/null +++ b/src/background/monitors/address-monitors/bitcoin-transaction-monitor/mempool-ws.ts @@ -0,0 +1,72 @@ +import { sumNumbers } from '@leather.io/utils'; + +export interface MempoolWsBitcoinTxMessage { + 'multi-address-transactions': { + [address: string]: { + mempool: MempoolWsBitcoinTx[]; + confirmed: MempoolWsBitcoinTx[]; + removed: MempoolWsBitcoinTx[]; + }; + }; +} + +export interface MempoolWsBitcoinTx { + txid: string; + vin: MempoolWsBitcoinVin[]; + vout: MempoolWsBitcoinVout[]; + fee: number; + status: { + confirmed: boolean; + block_height?: number; + }; +} + +interface MempoolWsBitcoinVin { + txid: string; + prevout: MempoolWsBitcoinVout; +} + +interface MempoolWsBitcoinVout { + scriptpubkey_address: string; + value: number; +} + +export interface MempoolWsBtcPrice { + time: number; + USD: number; +} + +export function readMempooWsBtcPriceUsd(mempoolWsPrice: MempoolWsBtcPrice) { + return mempoolWsPrice.USD; +} + +export function readMempoolWsBitcoinTxAddressResult( + address: string, + transaction: MempoolWsBitcoinTx +) { + let satValue = 0; + let isSender = false; + + const vin = transaction.vin.find(vin => vin.prevout.scriptpubkey_address === address); + + if (vin) { + // address is sender, value is sum of all vouts not to same address + isSender = true; + satValue = sumNumbers( + transaction.vout.filter(vout => vout.scriptpubkey_address !== address).map(vout => vout.value) + ).toNumber(); + } else { + const vout = transaction.vout.find(vout => vout.scriptpubkey_address === address); + if (vout) { + // address is receiver, value is in matching vout + isSender = false; + satValue = vout.value; + } + } + return { + isSender, + satValue, + fee: transaction.fee, + blockHeight: transaction.status.block_height ?? 0, + }; +} diff --git a/src/shared/message-types.ts b/src/shared/message-types.ts index d59379e500b..e8752736b1b 100644 --- a/src/shared/message-types.ts +++ b/src/shared/message-types.ts @@ -6,9 +6,9 @@ import { } from '@stacks/connect'; import { PublicProfile } from '@stacks/profile'; -export const MESSAGE_SOURCE = 'stacks-wallet' as const; +export const MESSAGE_SOURCE = 'stacks-wallet'; -export const CONTENT_SCRIPT_PORT = 'content-script' as const; +export const CONTENT_SCRIPT_PORT = 'content-script'; export enum ExternalMethods { transactionRequest = 'hiroWalletTransactionRequest', @@ -29,6 +29,7 @@ export enum InternalMethods { RequestDerivedStxAccounts = 'RequestDerivedStxAccounts', OriginatingTabClosed = 'OriginatingTabClosed', AccountChanged = 'AccountChanged', + AddressMonitorUpdated = 'AddressMonitorUpdated', } export type ExtensionMethods = ExternalMethods | InternalMethods; diff --git a/src/shared/messages.ts b/src/shared/messages.ts index 90418eb7306..42c03fd3805 100644 --- a/src/shared/messages.ts +++ b/src/shared/messages.ts @@ -1,5 +1,7 @@ import { ExtensionMethods, InternalMethods, Message } from '@shared/message-types'; +import type { MonitoredAddress } from '@background/monitors/address-monitor'; + /** * Popup <-> Background Script */ @@ -15,7 +17,12 @@ type OriginatingTabClosed = BackgroundMessage< type AccountChanged = BackgroundMessage; -export type BackgroundMessages = OriginatingTabClosed | AccountChanged; +type AddressMonitorUpdated = BackgroundMessage< + InternalMethods.AddressMonitorUpdated, + { addresses: MonitoredAddress[] } +>; + +export type BackgroundMessages = OriginatingTabClosed | AccountChanged | AddressMonitorUpdated; export function sendMessage(message: BackgroundMessages) { return chrome.runtime.sendMessage(message);