From 0220d2b31f2011d0ee714ae198bebeafef2d1bcd Mon Sep 17 00:00:00 2001 From: muXxer Date: Thu, 19 Sep 2024 18:45:32 +0200 Subject: [PATCH 01/11] chore(tooling-sdk): update turbo to new major (#2749) --- apps/wallet/turbo.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 867 ++++++++++++++++++----------------------- pnpm-workspace.yaml | 18 +- turbo.json | 96 +++-- 5 files changed, 459 insertions(+), 526 deletions(-) diff --git a/apps/wallet/turbo.json b/apps/wallet/turbo.json index 6f9aa798600..11e3162d078 100644 --- a/apps/wallet/turbo.json +++ b/apps/wallet/turbo.json @@ -1,6 +1,6 @@ { "extends": ["//"], - "pipeline": { + "tasks": { "build:prod": { "dependsOn": ["^build"], "outputs": ["dist/**"] diff --git a/package.json b/package.json index 749174ec00b..b5bca737fe1 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "prettier": "^3.3.1", "prettier-plugin-tailwindcss": "^0.4.1", "tsx": "^3.12.7", - "turbo": "^1.10.8", + "turbo": "^2.1.2", "typescript": "^5.3.3", "typescript-eslint": "^7.12.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eea713d4a6b..a028377fe57 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,8 +96,8 @@ importers: specifier: ^3.12.7 version: 3.14.0 turbo: - specifier: ^1.10.8 - version: 1.10.8 + specifier: ^2.1.2 + version: 2.1.2 typescript: specifier: ^5.3.3 version: 5.4.5 @@ -137,7 +137,7 @@ importers: devDependencies: '@nestjs/cli': specifier: ^10.0.0 - version: 10.3.2(@swc/core@1.3.92) + version: 10.3.2(@swc/core@1.3.92(@swc/helpers@0.5.5)) '@nestjs/schematics': specifier: ^10.0.0 version: 10.1.1(chokidar@3.6.0)(typescript@5.3.3) @@ -173,7 +173,7 @@ importers: version: 5.1.3(@types/eslint@8.37.0)(eslint-config-prettier@9.1.0(eslint@8.45.0))(eslint@8.45.0)(prettier@3.3.2) jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + version: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) prettier: specifier: ^3.3.1 version: 3.3.2 @@ -185,13 +185,13 @@ importers: version: 6.3.4 ts-jest: specifier: ^29.1.0 - version: 29.1.3(@babel/core@7.23.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)))(typescript@5.3.3) + version: 29.1.3(@babel/core@7.23.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)))(typescript@5.3.3) ts-loader: specifier: ^9.4.4 - version: 9.4.4(typescript@5.3.3)(webpack@5.90.1(@swc/core@1.3.92)) + version: 9.4.4(typescript@5.3.3)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) ts-node: specifier: ^10.9.1 - version: 10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3) + version: 10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -255,25 +255,25 @@ importers: devDependencies: '@headlessui/tailwindcss': specifier: ^0.1.3 - version: 0.1.3(tailwindcss@3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))) + version: 0.1.3(tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))) '@tailwindcss/aspect-ratio': specifier: ^0.4.2 - version: 0.4.2(tailwindcss@3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))) + version: 0.4.2(tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))) '@tailwindcss/forms': specifier: ^0.5.4 - version: 0.5.4(tailwindcss@3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))) + version: 0.5.4(tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))) '@types/react': specifier: ^18.3.3 version: 18.3.3 '@vanilla-extract/vite-plugin': specifier: ^3.9.0 - version: 3.9.0(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))(vite@4.4.4(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)) + version: 3.9.0(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))(vite@4.4.4(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)) postcss: specifier: ^8.4.31 version: 8.4.31 tailwindcss: specifier: ^3.3.3 - version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -502,7 +502,7 @@ importers: version: 2.0.0 tailwindcss: specifier: ^3.3.3 - version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -611,7 +611,7 @@ importers: version: 7.1.0 tailwindcss: specifier: ^3.3.3 - version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -690,7 +690,7 @@ importers: version: 7.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.4.5)(vite@4.4.11(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)) '@storybook/test': specifier: ^8.1.11 - version: 8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.3)(jest@29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)))(vitest@0.33.0(sass@1.63.6)(terser@5.31.0)) + version: 8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.3)(jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)))(vitest@0.33.0(@vitest/ui@0.33.0)(happy-dom@10.5.1)(jsdom@23.0.0)(playwright@1.46.1)(sass@1.63.6)(terser@5.31.0)) '@types/lodash.merge': specifier: ^4.6.9 version: 4.6.9 @@ -723,7 +723,7 @@ importers: version: 4.0.2(@types/react-dom@18.2.7)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tailwindcss: specifier: ^3.3.3 - version: 3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)) + version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)) typescript: specifier: ^5.3.3 version: 5.4.5 @@ -994,7 +994,7 @@ importers: version: 0.10.1 '@types/webpack': specifier: ^5.28.1 - version: 5.28.1(@swc/core@1.3.92)(webpack-cli@5.0.1(webpack@5.79.0)) + version: 5.28.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1(webpack@5.79.0)) '@types/zxcvbn': specifier: ^4.4.1 version: 4.4.1 @@ -1003,19 +1003,19 @@ importers: version: 4.0.3(vite@4.4.4(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)) copy-webpack-plugin: specifier: ^11.0.0 - version: 11.0.0(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)) + version: 11.0.0(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)) cross-env: specifier: ^7.0.3 version: 7.0.3 css-loader: specifier: ^6.7.3 - version: 6.7.3(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)) + version: 6.7.3(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)) dotenv: specifier: ^16.4.5 version: 16.4.5 eslint-webpack-plugin: specifier: ^4.0.1 - version: 4.0.1(eslint@8.57.0)(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)) + version: 4.0.1(eslint@8.57.0)(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)) git-rev-sync: specifier: ^3.0.2 version: 3.0.2 @@ -1024,10 +1024,10 @@ importers: version: 10.5.1 html-webpack-plugin: specifier: ^5.5.3 - version: 5.5.3(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)) + version: 5.5.3(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)) mini-css-extract-plugin: specifier: ^2.7.6 - version: 2.7.6(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)) + version: 2.7.6(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)) onchange: specifier: ^7.1.0 version: 7.1.0 @@ -1036,7 +1036,7 @@ importers: version: 8.4.31 postcss-loader: specifier: ^7.3.3 - version: 7.3.3(postcss@8.4.31)(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)) + version: 7.3.3(postcss@8.4.31)(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)) postcss-preset-env: specifier: ^9.0.0 version: 9.0.0(postcss@8.4.31) @@ -1045,19 +1045,19 @@ importers: version: 1.63.6 sass-loader: specifier: ^13.3.2 - version: 13.3.2(sass@1.63.6)(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)) + version: 13.3.2(sass@1.63.6)(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)) tailwindcss: specifier: ^3.3.3 - version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) tailwindcss-animate: specifier: ^1.0.6 - version: 1.0.6(tailwindcss@3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))) + version: 1.0.6(tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))) ts-loader: specifier: ^9.4.4 - version: 9.4.4(typescript@5.3.3)(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)) + version: 9.4.4(typescript@5.3.3)(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)) ts-node: specifier: ^10.9.1 - version: 10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3) + version: 10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -1078,7 +1078,7 @@ importers: version: 7.6.2(body-parser@1.20.3)(express@4.18.2) webpack: specifier: ^5.79.0 - version: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + version: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) webpack-cli: specifier: ^5.0.1 version: 5.0.1(webpack@5.79.0) @@ -1133,16 +1133,16 @@ importers: version: 14.2.3(eslint@8.45.0)(typescript@5.3.3) jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + version: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) postcss: specifier: ^8.4.31 version: 8.4.31 tailwindcss: specifier: ^3.3.3 - version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) ts-jest: specifier: ^29.1.0 - version: 29.1.3(@babel/core@7.23.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)))(typescript@5.3.3) + version: 29.1.3(@babel/core@7.23.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)))(typescript@5.3.3) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -1182,7 +1182,7 @@ importers: devDependencies: '@headlessui/tailwindcss': specifier: ^0.1.3 - version: 0.1.3(tailwindcss@3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))) + version: 0.1.3(tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))) '@types/react': specifier: ^18.3.3 version: 18.3.3 @@ -1200,7 +1200,7 @@ importers: version: 8.4.31 tailwindcss: specifier: ^3.3.3 - version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -1294,7 +1294,7 @@ importers: version: link:../../sdk/typescript '@tailwindcss/forms': specifier: ^0.5.4 - version: 0.5.4(tailwindcss@3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))) + version: 0.5.4(tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))) '@types/react': specifier: ^18.3.3 version: 18.3.3 @@ -1312,10 +1312,10 @@ importers: version: 8.4.31 tailwindcss: specifier: ^3.3.3 - version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) tailwindcss-animate: specifier: ^1.0.6 - version: 1.0.6(tailwindcss@3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))) + version: 1.0.6(tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -1361,7 +1361,7 @@ importers: version: 8.4.31 tailwindcss: specifier: ^3.3.3 - version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + version: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) typescript: specifier: ^5.3.3 version: 5.3.3 @@ -1379,22 +1379,22 @@ importers: version: 3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/core': specifier: 3.4.0 - version: 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + version: 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@docusaurus/preset-classic': specifier: 3.4.0 - version: 3.4.0(@algolia/client-search@4.23.3)(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + version: 3.4.0(@algolia/client-search@4.23.3)(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@docusaurus/remark-plugin-npm2yarn': specifier: ^3.4.0 version: 3.4.0 '@docusaurus/theme-common': specifier: ^3.4.0 - version: 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + version: 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@docusaurus/theme-mermaid': specifier: ^3.4.0 - version: 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + version: 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@docusaurus/theme-search-algolia': specifier: ^3.4.0 - version: 3.4.0(@algolia/client-search@4.23.3)(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + version: 3.4.0(@algolia/client-search@4.23.3)(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@emotion/react': specifier: ^11.11.4 version: 11.11.4(@types/react@18.3.3)(react@18.3.1) @@ -1403,7 +1403,7 @@ importers: version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1) '@graphql-markdown/docusaurus': specifier: ^1.24.1 - version: 1.24.2(@docusaurus/logger@3.4.0)(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql-config@5.0.3(@types/node@20.4.2)(graphql@16.8.1))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5) + version: 1.24.2(@docusaurus/logger@3.4.0)(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(graphql-config@5.0.3(@types/node@20.4.2)(graphql@16.8.1))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5) '@graphql-tools/graphql-file-loader': specifier: ^8.0.1 version: 8.0.1(graphql@16.8.1) @@ -1436,7 +1436,7 @@ importers: version: 3.2.0 docusaurus-theme-search-typesense: specifier: 0.20.0-0 - version: 0.20.0-0(@algolia/client-search@4.23.3)(@babel/runtime@7.23.9)(@docusaurus/core@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16))(@docusaurus/theme-common@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16))(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(algoliasearch@4.23.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + version: 0.20.0-0(@algolia/client-search@4.23.3)(@babel/runtime@7.23.9)(@docusaurus/core@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16))(@docusaurus/theme-common@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16))(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/react@18.3.3)(algoliasearch@4.23.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -1490,7 +1490,7 @@ importers: version: 6.0.0 tailwindcss: specifier: ^3.3.3 - version: 3.4.4(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)) + version: 3.4.4(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)) web3: specifier: ^4.2.2 version: 4.11.0(typescript@5.4.5)(zod@3.21.4) @@ -1500,13 +1500,13 @@ importers: version: 7.24.7(@babel/core@7.23.9) '@docusaurus/module-type-aliases': specifier: 3.4.0 - version: 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/tsconfig': specifier: 3.4.0 version: 3.4.0 '@docusaurus/types': specifier: 3.4.0 - version: 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@metamask/providers': specifier: ^10.2.1 version: 10.2.1 @@ -1782,7 +1782,7 @@ importers: version: 2.3.0(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0) '@vanilla-extract/vite-plugin': specifier: ^3.9.0 - version: 3.9.0(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))(vite@4.4.11(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)) + version: 3.9.0(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))(vite@4.4.11(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -16511,38 +16511,38 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - turbo-darwin-64@1.10.8: - resolution: {integrity: sha512-FOK3qrLZE2Yq7/2DkAnAzghisGQroZJs85Rui3IXM/2e7rTtBADmU9w36d4k0Yw7RHEiOo8U4eAYUl52OWRwJQ==} + turbo-darwin-64@2.1.2: + resolution: {integrity: sha512-3TEBxHWh99h2yIzkuIigMEOXt/ItYQp0aPiJjPd1xN4oDcsKK5AxiFKPH9pdtfIBzYsY59kQhZiFj0ELnSP7Bw==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@1.10.8: - resolution: {integrity: sha512-8mbgH8oBycusa8RnbHlvrpHxfZsgNrk6CXMu/KJECpajYT3nSOMK2Rrs+422HqLDTVUw4GAqmTr26nUx8yJoyA==} + turbo-darwin-arm64@2.1.2: + resolution: {integrity: sha512-he0miWNq2WxJzsH82jS2Z4MXpnkzn9SH8a79iPXiJkq25QREImucscM4RPasXm8wARp91pyysJMq6aasD45CeA==} cpu: [arm64] os: [darwin] - turbo-linux-64@1.10.8: - resolution: {integrity: sha512-eJ1ND3LuILw28gd+9f3Ews7Eika9WOxp+/PxJI+EPHseTrbLMLYqSPAunmZdOx840Pq0Sk5j4Nik7NCzuCWXkg==} + turbo-linux-64@2.1.2: + resolution: {integrity: sha512-fKUBcc0rK8Vdqv5a/E3CSpMBLG1bzwv+Q0Q83F8fG2ZfNCNKGbcEYABdonNZkkx141Rj03cZQFCgxu3MVEGU+A==} cpu: [x64] os: [linux] - turbo-linux-arm64@1.10.8: - resolution: {integrity: sha512-3+pVaOzGP/5GFvQakxuHDMsj43Y6bmaq5/84tvgGL0FgtKpsQvBfdaDs12HX5cb/zUnd2/jdQPNiGJwVeC/McA==} + turbo-linux-arm64@2.1.2: + resolution: {integrity: sha512-sV8Bpmm0WiuxgbhxymcC7wSsuxfBBieI98GegSwbr/bs1ANAgzCg93urIrdKdQ3/b31zZxQwcaP4FBF1wx1Qdg==} cpu: [arm64] os: [linux] - turbo-windows-64@1.10.8: - resolution: {integrity: sha512-LdryI+ZQsVrW4hWZw5G5vJz0syjWxyc0tnieZRefy+d9Ti1du/qCYLP0KQRgL9Yuh1klbH/tzmx70upGARgWKQ==} + turbo-windows-64@2.1.2: + resolution: {integrity: sha512-wcmIJZI9ORT9ykHGliFE6kWRQrlH930QGSjSgWC8uFChFFuOyUlvC7ttcxuSvU9VqC7NF4C+GVAcFJQ8lTjN7g==} cpu: [x64] os: [win32] - turbo-windows-arm64@1.10.8: - resolution: {integrity: sha512-whHnhM84KIa2Ly/fcw2Ujw2Rr/9wh8ynAdZ9bdvZoZKAbOr3tXKft0tmy50jQ6IsNr6Cj0XD4cuSTKhvqoGtYA==} + turbo-windows-arm64@2.1.2: + resolution: {integrity: sha512-zdnXjrhk7YO6CP+Q5wPueEvOCLH4lDa6C4rrwiakcWcPgcQGbVozJlo4uaQ6awo8HLWQEvOwu84RkWTdLAc/Hw==} cpu: [arm64] os: [win32] - turbo@1.10.8: - resolution: {integrity: sha512-lmPKkeRMC/3gjTVxICt93A8zAzjGjbZINdekjzivn4g/rOjpHVNuOuVANU5L4H4R1bzQr8FFvZNQeQaElOjz/Q==} + turbo@2.1.2: + resolution: {integrity: sha512-Jb0rbU4iHEVQ18An/YfakdIv9rKnd3zUfSE117EngrfWXFHo3RndVH96US3GsT8VHpwTncPePDBT2t06PaFLrw==} hasBin: true tween-functions@1.2.0: @@ -20412,7 +20412,7 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/core@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/core@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: '@babel/core': 7.23.9 '@babel/generator': 7.23.6 @@ -20426,12 +20426,12 @@ snapshots: '@babel/traverse': 7.23.9 '@docusaurus/cssnano-preset': 3.4.0 '@docusaurus/logger': 3.4.0 - '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) autoprefixer: 10.4.19(postcss@8.4.38) - babel-loader: 9.1.3(@babel/core@7.23.9)(webpack@5.90.1) + babel-loader: 9.1.3(@babel/core@7.23.9)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 @@ -20440,34 +20440,34 @@ snapshots: cli-table3: 0.6.3 combine-promises: 1.2.0 commander: 5.1.0 - copy-webpack-plugin: 11.0.0(webpack@5.90.1) + copy-webpack-plugin: 11.0.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) core-js: 3.37.1 - css-loader: 6.11.0(webpack@5.90.1) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.2)(webpack@5.90.1) + css-loader: 6.11.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.2)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) cssnano: 6.1.2(postcss@8.4.38) del: 6.1.1 detect-port: 1.5.1 escape-html: 1.0.3 eta: 2.2.0 eval: 0.1.8 - file-loader: 6.2.0(webpack@5.90.1) + file-loader: 6.2.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) fs-extra: 11.1.1 html-minifier-terser: 7.2.0 html-tags: 3.3.1 - html-webpack-plugin: 5.5.3(webpack@5.90.1) + html-webpack-plugin: 5.5.3(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) leven: 3.1.0 lodash: 4.17.21 - mini-css-extract-plugin: 2.7.6(webpack@5.90.1) + mini-css-extract-plugin: 2.7.6(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) p-map: 4.0.0 postcss: 8.4.38 - postcss-loader: 7.3.3(postcss@8.4.38)(webpack@5.90.1) + postcss-loader: 7.3.3(postcss@8.4.38)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) prompts: 2.4.2 react: 18.3.1 - react-dev-utils: 12.0.1(eslint@8.57.0)(typescript@5.4.5)(vue-template-compiler@2.7.16)(webpack@5.90.1) + react-dev-utils: 12.0.1(eslint@8.57.0)(typescript@5.4.5)(vue-template-compiler@2.7.16)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.90.1) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) react-router: 5.3.4(react@18.3.1) react-router-config: 5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1) react-router-dom: 5.3.4(react@18.3.1) @@ -20475,15 +20475,15 @@ snapshots: semver: 7.6.0 serve-handler: 6.1.5 shelljs: 0.8.5 - terser-webpack-plugin: 5.3.10(webpack@5.90.1) + terser-webpack-plugin: 5.3.10(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) tslib: 2.6.2 update-notifier: 6.0.2 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.90.1))(webpack@5.90.1) - webpack: 5.90.1 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))))(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2(webpack@5.90.1) + webpack-dev-server: 4.15.2(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) webpack-merge: 5.10.0 - webpackbar: 5.0.2(webpack@5.90.1) + webpackbar: 5.0.2(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) transitivePeerDependencies: - '@docusaurus/types' - '@parcel/css' @@ -20515,16 +20515,16 @@ snapshots: chalk: 4.1.2 tslib: 2.6.2 - '@docusaurus/mdx-loader@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': + '@docusaurus/mdx-loader@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)': dependencies: '@docusaurus/logger': 3.4.0 - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) '@mdx-js/mdx': 3.0.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.1.2 - file-loader: 6.2.0(webpack@5.90.1) + file-loader: 6.2.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) fs-extra: 11.1.1 image-size: 1.0.2 mdast-util-mdx: 3.0.0 @@ -20540,9 +20540,9 @@ snapshots: tslib: 2.6.2 unified: 11.0.5 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.90.1))(webpack@5.90.1) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))))(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) vfile: 6.0.1 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) transitivePeerDependencies: - '@docusaurus/types' - '@swc/core' @@ -20552,9 +20552,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/module-type-aliases@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 '@types/react': 18.3.3 '@types/react-router-config': 5.0.11 @@ -20570,15 +20570,15 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-content-blog@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@docusaurus/logger': 3.4.0 - '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.1.1 @@ -20590,7 +20590,7 @@ snapshots: tslib: 2.6.2 unist-util-visit: 5.0.0 utility-types: 3.11.0 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -20609,16 +20609,16 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-docs@3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-content-docs@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@docusaurus/logger': 3.4.0 - '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) - '@docusaurus/module-type-aliases': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/module-type-aliases': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.2.0 @@ -20628,7 +20628,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 utility-types: 3.11.0 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -20647,18 +20647,18 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-content-pages@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) fs-extra: 11.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -20677,11 +20677,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-debug@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) fs-extra: 11.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -20705,11 +20705,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-google-analytics@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 @@ -20731,11 +20731,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-google-gtag@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) '@types/gtag.js': 0.0.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -20758,11 +20758,11 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-google-tag-manager@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 @@ -20784,14 +20784,14 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/plugin-sitemap@3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/plugin-sitemap@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@docusaurus/logger': 3.4.0 - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) fs-extra: 11.1.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -20815,21 +20815,21 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.4.0(@algolia/client-search@4.23.3)(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': - dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-content-blog': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-content-docs': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-content-pages': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-debug': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-google-analytics': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-google-gtag': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-google-tag-manager': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-sitemap': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/theme-classic': 3.4.0(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/theme-search-algolia': 3.4.0(@algolia/client-search@4.23.3)(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/preset-classic@3.4.0(@algolia/client-search@4.23.3)(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + dependencies: + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-blog': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-docs': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-pages': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-debug': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-google-analytics': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-google-gtag': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-google-tag-manager': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-sitemap': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/theme-classic': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/theme-search-algolia': 3.4.0(@algolia/client-search@4.23.3)(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: @@ -20868,20 +20868,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@docusaurus/theme-classic@3.4.0(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/theme-classic@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) - '@docusaurus/module-type-aliases': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-content-docs': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-content-pages': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/module-type-aliases': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-docs': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-pages': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@docusaurus/theme-translations': 3.4.0 - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) '@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.3.1) clsx: 2.1.1 copy-text-to-clipboard: 3.2.0 @@ -20916,15 +20916,15 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-common@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/theme-common@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) - '@docusaurus/module-type-aliases': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-content-docs': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/plugin-content-pages': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/mdx-loader': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5) + '@docusaurus/module-type-aliases': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-docs': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-pages': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@types/history': 4.7.11 '@types/react': 18.3.3 '@types/react-router-config': 5.0.11 @@ -20954,13 +20954,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-mermaid@3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/theme-mermaid@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/module-type-aliases': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/module-type-aliases': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) mermaid: 10.9.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -20983,16 +20983,16 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-search-algolia@3.4.0(@algolia/client-search@4.23.3)(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': + '@docusaurus/theme-search-algolia@3.4.0(@algolia/client-search@4.23.3)(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/react@18.3.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16)': dependencies: '@docsearch/react': 3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@docusaurus/logger': 3.4.0 - '@docusaurus/plugin-content-docs': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-docs': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@docusaurus/theme-translations': 3.4.0 - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) algoliasearch: 4.23.3 algoliasearch-helper: 3.22.1(algoliasearch@4.23.3) clsx: 2.1.1 @@ -21032,7 +21032,7 @@ snapshots: '@docusaurus/tsconfig@3.4.0': {} - '@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@mdx-js/mdx': 3.0.1 '@types/history': 4.7.11 @@ -21043,7 +21043,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) utility-types: 3.11.0 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -21052,17 +21052,17 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': + '@docusaurus/utils-common@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: tslib: 2.6.2 optionalDependencies: - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5)': + '@docusaurus/utils-validation@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5)': dependencies: '@docusaurus/logger': 3.4.0 - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) fs-extra: 11.2.0 joi: 17.13.3 js-yaml: 4.1.0 @@ -21077,13 +21077,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5)': + '@docusaurus/utils@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5)': dependencies: '@docusaurus/logger': 3.4.0 - '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + '@docusaurus/utils-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@svgr/webpack': 8.1.0(typescript@5.4.5) escape-string-regexp: 4.0.0 - file-loader: 6.2.0(webpack@5.90.1) + file-loader: 6.2.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) fs-extra: 11.2.0 github-slugger: 1.5.0 globby: 11.1.0 @@ -21096,11 +21096,11 @@ snapshots: resolve-pathname: 3.0.0 shelljs: 0.8.5 tslib: 2.6.2 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.90.1))(webpack@5.90.1) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))))(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) utility-types: 3.11.0 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) optionalDependencies: - '@docusaurus/types': 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -21686,24 +21686,24 @@ snapshots: - encoding - supports-color - '@graphql-markdown/core@1.10.2(@graphql-markdown/printer-legacy@1.8.2(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5))(graphql-config@5.0.3(@types/node@20.4.2)(graphql@16.8.1))(graphql@16.8.1)(prettier@3.3.2)': + '@graphql-markdown/core@1.10.2(@graphql-markdown/printer-legacy@1.8.2(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5))(graphql-config@5.0.3(@types/node@20.4.2)(graphql@16.8.1))(graphql@16.8.1)(prettier@3.3.2)': dependencies: '@graphql-markdown/graphql': 1.1.3(graphql@16.8.1)(prettier@3.3.2) '@graphql-markdown/logger': 1.0.3 '@graphql-markdown/utils': 1.6.5(prettier@3.3.2) optionalDependencies: - '@graphql-markdown/printer-legacy': 1.8.2(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5) + '@graphql-markdown/printer-legacy': 1.8.2(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5) graphql-config: 5.0.3(@types/node@20.4.2)(graphql@16.8.1) transitivePeerDependencies: - graphql - prettier - '@graphql-markdown/docusaurus@1.24.2(@docusaurus/logger@3.4.0)(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql-config@5.0.3(@types/node@20.4.2)(graphql@16.8.1))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5)': + '@graphql-markdown/docusaurus@1.24.2(@docusaurus/logger@3.4.0)(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(graphql-config@5.0.3(@types/node@20.4.2)(graphql@16.8.1))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5)': dependencies: '@docusaurus/logger': 3.4.0 - '@graphql-markdown/core': 1.10.2(@graphql-markdown/printer-legacy@1.8.2(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5))(graphql-config@5.0.3(@types/node@20.4.2)(graphql@16.8.1))(graphql@16.8.1)(prettier@3.3.2) + '@graphql-markdown/core': 1.10.2(@graphql-markdown/printer-legacy@1.8.2(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5))(graphql-config@5.0.3(@types/node@20.4.2)(graphql@16.8.1))(graphql@16.8.1)(prettier@3.3.2) '@graphql-markdown/logger': 1.0.3 - '@graphql-markdown/printer-legacy': 1.8.2(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5) + '@graphql-markdown/printer-legacy': 1.8.2(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5) transitivePeerDependencies: - '@docusaurus/types' - '@graphql-markdown/diff' @@ -21728,9 +21728,9 @@ snapshots: '@graphql-markdown/logger@1.0.3': {} - '@graphql-markdown/printer-legacy@1.8.2(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5)': + '@graphql-markdown/printer-legacy@1.8.2(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(graphql@16.8.1)(prettier@3.3.2)(typescript@5.4.5)': dependencies: - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) '@graphql-markdown/graphql': 1.1.3(graphql@16.8.1)(prettier@3.3.2) '@graphql-markdown/utils': 1.6.5(prettier@3.3.2) transitivePeerDependencies: @@ -22063,9 +22063,9 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@headlessui/tailwindcss@0.1.3(tailwindcss@3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)))': + '@headlessui/tailwindcss@0.1.3(tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)))': dependencies: - tailwindcss: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + tailwindcss: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) '@hookform/resolvers@3.1.1(react-hook-form@7.45.2(react@18.3.1))': dependencies: @@ -22123,7 +22123,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0(node-notifier@10.0.0) @@ -22137,7 +22137,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + jest-config: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -22160,7 +22160,7 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0(node-notifier@10.0.0) @@ -22174,7 +22174,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -22190,6 +22190,8 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 + optionalDependencies: + node-notifier: 10.0.0 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -22762,7 +22764,7 @@ snapshots: cache-manager: 5.6.1 rxjs: 7.8.1 - '@nestjs/cli@10.3.2(@swc/core@1.3.92)': + '@nestjs/cli@10.3.2(@swc/core@1.3.92(@swc/helpers@0.5.5))': dependencies: '@angular-devkit/core': 17.1.2(chokidar@3.6.0) '@angular-devkit/schematics': 17.1.2(chokidar@3.6.0) @@ -22772,7 +22774,7 @@ snapshots: chokidar: 3.6.0 cli-table3: 0.6.3 commander: 4.1.1 - fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.90.1(@swc/core@1.3.92)) + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) glob: 10.3.10 inquirer: 8.2.6 node-emoji: 1.11.0 @@ -22784,7 +22786,7 @@ snapshots: tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.1.0 typescript: 5.3.3 - webpack: 5.90.1(@swc/core@1.3.92) + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) webpack-node-externals: 3.0.0 optionalDependencies: '@swc/core': 1.3.92(@swc/helpers@0.5.5) @@ -24889,7 +24891,7 @@ snapshots: '@types/cross-spawn': 6.0.2 cross-spawn: 7.0.3 globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.22.9(@babel/core@7.23.9)) + jscodeshift: 0.14.0(@babel/preset-env@7.22.9(@babel/core@7.22.9)) lodash: 4.17.21 prettier: 2.8.8 recast: 0.23.3 @@ -25308,14 +25310,14 @@ snapshots: - encoding - supports-color - '@storybook/test@8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.3)(jest@29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)))(vitest@0.33.0(sass@1.63.6)(terser@5.31.0))': + '@storybook/test@8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.3)(jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)))(vitest@0.33.0(@vitest/ui@0.33.0)(happy-dom@10.5.1)(jsdom@23.0.0)(playwright@1.46.1)(sass@1.63.6)(terser@5.31.0))': dependencies: '@storybook/client-logger': 8.1.11 '@storybook/core-events': 8.1.11 '@storybook/instrumenter': 8.1.11 '@storybook/preview-api': 8.1.11 '@testing-library/dom': 10.1.0 - '@testing-library/jest-dom': 6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.3)(jest@29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)))(vitest@0.33.0(sass@1.63.6)(terser@5.31.0)) + '@testing-library/jest-dom': 6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.3)(jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)))(vitest@0.33.0(@vitest/ui@0.33.0)(happy-dom@10.5.1)(jsdom@23.0.0)(playwright@1.46.1)(sass@1.63.6)(terser@5.31.0)) '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) '@vitest/expect': 1.6.0 '@vitest/spy': 1.6.0 @@ -25629,14 +25631,14 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)))': + '@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)))': dependencies: - tailwindcss: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + tailwindcss: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) - '@tailwindcss/forms@0.5.4(tailwindcss@3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)))': + '@tailwindcss/forms@0.5.4(tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)))': dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + tailwindcss: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) '@tanstack/eslint-plugin-query@5.43.1(eslint@8.57.0)(typescript@5.4.5)': dependencies: @@ -25726,7 +25728,7 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.3)(jest@29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)))(vitest@0.33.0(sass@1.63.6)(terser@5.31.0))': + '@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.3)(jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)))(vitest@0.33.0(@vitest/ui@0.33.0)(happy-dom@10.5.1)(jsdom@23.0.0)(playwright@1.46.1)(sass@1.63.6)(terser@5.31.0))': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.23.9 @@ -25739,7 +25741,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 '@types/jest': 29.5.3 - jest: 29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)) + jest: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)) vitest: 0.33.0(@vitest/ui@0.33.0)(happy-dom@10.5.1)(jsdom@23.0.0)(playwright@1.46.1)(sass@1.63.6)(terser@5.31.0) '@testing-library/react@14.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -26165,11 +26167,11 @@ snapshots: '@types/webextension-polyfill@0.10.1': {} - '@types/webpack@5.28.1(@swc/core@1.3.92)(webpack-cli@5.0.1(webpack@5.79.0))': + '@types/webpack@5.28.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1(webpack@5.79.0))': dependencies: '@types/node': 20.4.2 tapable: 2.2.1 - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -26631,12 +26633,12 @@ snapshots: dependencies: '@vanilla-extract/css': 1.13.0 - '@vanilla-extract/vite-plugin@3.9.0(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))(vite@4.4.11(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0))': + '@vanilla-extract/vite-plugin@3.9.0(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))(vite@4.4.11(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0))': dependencies: '@vanilla-extract/integration': 6.2.2(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0) outdent: 0.8.0 postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) vite: 4.4.11(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0) transitivePeerDependencies: - '@types/node' @@ -26649,12 +26651,12 @@ snapshots: - terser - ts-node - '@vanilla-extract/vite-plugin@3.9.0(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))(vite@4.4.4(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0))': + '@vanilla-extract/vite-plugin@3.9.0(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))(vite@4.4.4(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0))': dependencies: '@vanilla-extract/integration': 6.2.2(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0) outdent: 0.8.0 postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) vite: 4.4.4(@types/node@20.4.2)(sass@1.63.6)(terser@5.31.0) transitivePeerDependencies: - '@types/node' @@ -27109,19 +27111,19 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.0.1(webpack-cli@5.0.1(webpack@5.79.0))(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1))': + '@webpack-cli/configtest@2.0.1(webpack-cli@5.0.1(webpack@5.79.0))(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1))': dependencies: - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) webpack-cli: 5.0.1(webpack@5.79.0) - '@webpack-cli/info@2.0.1(webpack-cli@5.0.1(webpack@5.79.0))(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1))': + '@webpack-cli/info@2.0.1(webpack-cli@5.0.1(webpack@5.79.0))(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1))': dependencies: - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) webpack-cli: 5.0.1(webpack@5.79.0) - '@webpack-cli/serve@2.0.1(webpack-cli@5.0.1(webpack@5.79.0))(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1))': + '@webpack-cli/serve@2.0.1(webpack-cli@5.0.1(webpack@5.79.0))(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1))': dependencies: - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) webpack-cli: 5.0.1(webpack@5.79.0) '@whatwg-node/events@0.0.3': {} @@ -27665,12 +27667,12 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.1): + babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: '@babel/core': 7.23.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) babel-plugin-dynamic-import-node@2.3.3: dependencies: @@ -28596,7 +28598,7 @@ snapshots: copy-text-to-clipboard@3.2.0: {} - copy-webpack-plugin@11.0.0(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)): + copy-webpack-plugin@11.0.0(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)): dependencies: fast-glob: 3.2.12 glob-parent: 6.0.2 @@ -28604,9 +28606,9 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.0.0 serialize-javascript: 6.0.1 - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) - copy-webpack-plugin@11.0.0(webpack@5.90.1): + copy-webpack-plugin@11.0.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: fast-glob: 3.2.12 glob-parent: 6.0.2 @@ -28614,7 +28616,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.0.0 serialize-javascript: 6.0.1 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) core-js-compat@3.31.1: dependencies: @@ -28693,13 +28695,13 @@ snapshots: crc-32@1.2.2: {} - create-jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)): + create-jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + jest-config: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -28708,13 +28710,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)): + create-jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -28799,7 +28801,7 @@ snapshots: postcss-selector-parser: 6.1.0 postcss-value-parser: 4.2.0 - css-loader@6.11.0(webpack@5.90.1): + css-loader@6.11.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: icss-utils: 5.1.0(postcss@8.4.38) postcss: 8.4.38 @@ -28810,9 +28812,9 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.0 optionalDependencies: - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) - css-loader@6.7.3(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)): + css-loader@6.7.3(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)): dependencies: icss-utils: 5.1.0(postcss@8.4.38) postcss: 8.4.38 @@ -28822,9 +28824,9 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 semver: 7.5.4 - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.2)(webpack@5.90.1): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.2)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: '@jridgewell/trace-mapping': 0.3.22 cssnano: 6.1.2(postcss@8.4.38) @@ -28832,7 +28834,7 @@ snapshots: postcss: 8.4.38 schema-utils: 4.2.0 serialize-javascript: 6.0.1 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) optionalDependencies: clean-css: 5.3.2 @@ -29400,15 +29402,15 @@ snapshots: dependencies: esutils: 2.0.3 - docusaurus-theme-search-typesense@0.20.0-0(@algolia/client-search@4.23.3)(@babel/runtime@7.23.9)(@docusaurus/core@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16))(@docusaurus/theme-common@3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16))(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(algoliasearch@4.23.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16): + docusaurus-theme-search-typesense@0.20.0-0(@algolia/client-search@4.23.3)(@babel/runtime@7.23.9)(@docusaurus/core@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16))(@docusaurus/theme-common@3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16))(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/react@18.3.3)(algoliasearch@4.23.3)(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16): dependencies: - '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/core': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@docusaurus/logger': 3.4.0 - '@docusaurus/plugin-content-docs': 3.4.0(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) - '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/plugin-content-docs': 3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) + '@docusaurus/theme-common': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(eslint@8.57.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)(vue-template-compiler@2.7.16) '@docusaurus/theme-translations': 3.4.0 - '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) - '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.4.5) + '@docusaurus/utils': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) + '@docusaurus/utils-validation': 3.4.0(@docusaurus/types@3.4.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/core@1.3.92(@swc/helpers@0.5.5))(typescript@5.4.5) algoliasearch-helper: 3.22.1(algoliasearch@4.23.3) clsx: 1.2.1 eta: 2.2.0 @@ -29885,8 +29887,8 @@ snapshots: '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.3.3) eslint: 8.45.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.45.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.5.5)(eslint@8.45.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.45.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.45.0))(eslint@8.45.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.45.0) eslint-plugin-react: 7.34.1(eslint@8.45.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.45.0) @@ -29903,8 +29905,8 @@ snapshots: '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.1(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) @@ -29938,13 +29940,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.45.0): + eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.45.0): dependencies: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.45.0 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.45.0))(eslint@8.45.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.5.5)(eslint@8.45.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.45.0))(eslint@8.45.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) get-tsconfig: 4.6.2 globby: 13.2.0 is-core-module: 2.13.1 @@ -29956,13 +29958,13 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.57.0 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) get-tsconfig: 4.6.2 globby: 13.2.0 is-core-module: 2.13.1 @@ -29991,47 +29993,47 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.7.4(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.45.0))(eslint@8.45.0): + eslint-module-utils@2.7.4(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.45.0))(eslint@8.45.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.45.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.45.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.45.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.7.4(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.7.4(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.45.0))(eslint@8.45.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.45.0))(eslint@8.45.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.45.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.45.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.45.0) transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - supports-color @@ -30050,7 +30052,7 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.5.5)(eslint@8.45.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.45.0))(eslint@8.45.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -30060,7 +30062,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.45.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.45.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.45.0))(eslint@8.45.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.45.0))(eslint@8.45.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -30071,13 +30073,13 @@ snapshots: semver: 7.6.0 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.45.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.5.5)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -30087,7 +30089,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -30283,7 +30285,7 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-webpack-plugin@4.0.1(eslint@8.57.0)(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)): + eslint-webpack-plugin@4.0.1(eslint@8.57.0)(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)): dependencies: '@types/eslint': 8.37.0 eslint: 8.57.0 @@ -30291,7 +30293,7 @@ snapshots: micromatch: 4.0.5 normalize-path: 3.0.0 schema-utils: 4.0.0 - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) eslint@8.36.0: dependencies: @@ -30802,11 +30804,11 @@ snapshots: dependencies: flat-cache: 3.0.4 - file-loader@6.2.0(webpack@5.90.1): + file-loader@6.2.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) file-system-cache@2.3.0: dependencies: @@ -30923,7 +30925,7 @@ snapshots: forever-agent@0.6.1: {} - fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.0)(typescript@5.4.5)(vue-template-compiler@2.7.16)(webpack@5.90.1): + fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.0)(typescript@5.4.5)(vue-template-compiler@2.7.16)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: '@babel/code-frame': 7.23.5 '@types/json-schema': 7.0.14 @@ -30939,12 +30941,12 @@ snapshots: semver: 7.6.0 tapable: 1.1.3 typescript: 5.4.5 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) optionalDependencies: eslint: 8.57.0 vue-template-compiler: 2.7.16 - fork-ts-checker-webpack-plugin@9.0.2(typescript@5.3.3)(webpack@5.90.1(@swc/core@1.3.92)): + fork-ts-checker-webpack-plugin@9.0.2(typescript@5.3.3)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: '@babel/code-frame': 7.23.5 chalk: 4.1.2 @@ -30959,7 +30961,7 @@ snapshots: semver: 7.6.0 tapable: 2.2.1 typescript: 5.3.3 - webpack: 5.90.1(@swc/core@1.3.92) + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) form-data-encoder@2.1.4: {} @@ -31731,23 +31733,23 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.5.3(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)): + html-webpack-plugin@5.5.3(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) - html-webpack-plugin@5.5.3(webpack@5.90.1): + html-webpack-plugin@5.5.3(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) htmlparser2@6.1.0: dependencies: @@ -32436,16 +32438,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)): + jest-cli@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + create-jest: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + jest-config: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -32457,19 +32459,21 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)): + jest-cli@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)) + create-jest: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)) + jest-config: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 + optionalDependencies: + node-notifier: 10.0.0 transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -32477,7 +32481,7 @@ snapshots: - ts-node optional: true - jest-config@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)): + jest-config@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)): dependencies: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 @@ -32503,12 +32507,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.4.2 - ts-node: 10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3) + ts-node: 10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)): + jest-config@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)): dependencies: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 @@ -32534,7 +32538,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.4.2 - ts-node: 10.9.1(@types/node@20.4.2)(typescript@5.4.5) + ts-node: 10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -32801,12 +32805,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)): + jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + jest-cli: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) optionalDependencies: node-notifier: 10.0.0 transitivePeerDependencies: @@ -32815,12 +32819,12 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)): + jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) + jest-cli: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)) optionalDependencies: node-notifier: 10.0.0 transitivePeerDependencies: @@ -32828,18 +32832,6 @@ snapshots: - babel-plugin-macros - supports-color - ts-node - - jest@29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)) - '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.4.2)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node optional: true jiti@1.19.1: {} @@ -32908,31 +32900,6 @@ snapshots: transitivePeerDependencies: - supports-color - jscodeshift@0.14.0(@babel/preset-env@7.22.9(@babel/core@7.23.9)): - dependencies: - '@babel/core': 7.23.9 - '@babel/parser': 7.24.5 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.23.9) - '@babel/preset-env': 7.22.9(@babel/core@7.23.9) - '@babel/preset-flow': 7.22.5(@babel/core@7.23.9) - '@babel/preset-typescript': 7.22.5(@babel/core@7.23.9) - '@babel/register': 7.22.5(@babel/core@7.23.9) - babel-core: 7.0.0-bridge.0(@babel/core@7.23.9) - chalk: 4.1.2 - flow-parser: 0.212.0 - graceful-fs: 4.2.11 - micromatch: 4.0.7 - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.21.5 - temp: 0.8.4 - write-file-atomic: 2.4.3 - transitivePeerDependencies: - - supports-color - jsdom@23.0.0: dependencies: cssstyle: 3.0.0 @@ -34163,15 +34130,15 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.7.6(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)): + mini-css-extract-plugin@2.7.6(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)): dependencies: schema-utils: 4.2.0 - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) - mini-css-extract-plugin@2.7.6(webpack@5.90.1): + mini-css-extract-plugin@2.7.6(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: schema-utils: 4.2.0 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) mini-svg-data-uri@1.4.4: {} @@ -35121,45 +35088,45 @@ snapshots: '@csstools/postcss-progressive-custom-properties': 3.0.0(postcss@8.4.31) postcss: 8.4.31 - postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)): + postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)): dependencies: lilconfig: 2.1.0 yaml: 2.3.1 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3) + ts-node: 10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3) - postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)): + postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)): dependencies: lilconfig: 2.1.0 yaml: 2.3.1 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3) + ts-node: 10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3) - postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)): + postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)): dependencies: lilconfig: 2.1.0 yaml: 2.3.1 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.1(@types/node@20.4.2)(typescript@5.4.5) + ts-node: 10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5) - postcss-loader@7.3.3(postcss@8.4.31)(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)): + postcss-loader@7.3.3(postcss@8.4.31)(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)): dependencies: cosmiconfig: 8.2.0 jiti: 1.19.1 postcss: 8.4.31 semver: 7.5.4 - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) - postcss-loader@7.3.3(postcss@8.4.38)(webpack@5.90.1): + postcss-loader@7.3.3(postcss@8.4.38)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: cosmiconfig: 8.2.0 jiti: 1.19.1 postcss: 8.4.38 semver: 7.5.4 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) postcss-logical@7.0.0(postcss@8.4.31): dependencies: @@ -35705,7 +35672,7 @@ snapshots: react: 18.3.1 tween-functions: 1.2.0 - react-dev-utils@12.0.1(eslint@8.57.0)(typescript@5.4.5)(vue-template-compiler@2.7.16)(webpack@5.90.1): + react-dev-utils@12.0.1(eslint@8.57.0)(typescript@5.4.5)(vue-template-compiler@2.7.16)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: '@babel/code-frame': 7.23.5 address: 1.2.2 @@ -35716,7 +35683,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.57.0)(typescript@5.4.5)(vue-template-compiler@2.7.16)(webpack@5.90.1) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.0)(typescript@5.4.5)(vue-template-compiler@2.7.16)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -35731,7 +35698,7 @@ snapshots: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -35832,11 +35799,11 @@ snapshots: dependencies: react: 18.3.1 - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.90.1): + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: '@babel/runtime': 7.23.9 react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) react-number-format@5.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -36518,10 +36485,10 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@13.3.2(sass@1.63.6)(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)): + sass-loader@13.3.2(sass@1.63.6)(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)): dependencies: neo-async: 2.6.2 - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) optionalDependencies: sass: 1.63.6 @@ -37325,11 +37292,11 @@ snapshots: tailwind-merge@1.14.0: {} - tailwindcss-animate@1.0.6(tailwindcss@3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3))): + tailwindcss-animate@1.0.6(tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3))): dependencies: - tailwindcss: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + tailwindcss: 3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) - tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)): + tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -37348,7 +37315,7 @@ snapshots: postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.0.13 resolve: 1.22.2 @@ -37356,7 +37323,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.3.3(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)): + tailwindcss@3.3.3(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -37375,7 +37342,7 @@ snapshots: postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)) + postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)) postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.0.13 resolve: 1.22.2 @@ -37383,7 +37350,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.4.4(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)): + tailwindcss@3.4.4(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -37402,7 +37369,7 @@ snapshots: postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5)) + postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5)) postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.1.0 resolve: 1.22.8 @@ -37462,34 +37429,25 @@ snapshots: term-size@2.2.1: {} - terser-webpack-plugin@5.3.10(@swc/core@1.3.92)(webpack@5.90.1(@swc/core@1.3.92)): + terser-webpack-plugin@5.3.10(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: '@jridgewell/trace-mapping': 0.3.22 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.31.0 - webpack: 5.90.1(@swc/core@1.3.92) + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) optionalDependencies: '@swc/core': 1.3.92(@swc/helpers@0.5.5) - terser-webpack-plugin@5.3.10(webpack@5.90.1): - dependencies: - '@jridgewell/trace-mapping': 0.3.22 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.1 - terser: 5.31.0 - webpack: 5.90.1 - - terser-webpack-plugin@5.3.7(@swc/core@1.3.92)(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)): + terser-webpack-plugin@5.3.7(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)): dependencies: '@jridgewell/trace-mapping': 0.3.18 jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.1 terser: 5.16.9 - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) optionalDependencies: '@swc/core': 1.3.92(@swc/helpers@0.5.5) @@ -37658,11 +37616,11 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.1.3(@babel/core@7.23.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)))(typescript@5.3.3): + ts-jest@29.1.3(@babel/core@7.23.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)))(typescript@5.3.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3)) + jest: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3)) jest-util: 29.6.1 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -37676,45 +37634,27 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.23.9) - ts-jest@29.1.3(@babel/core@7.23.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.9))(jest@29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)))(typescript@5.3.3): - dependencies: - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.4.2)(babel-plugin-macros@3.1.0)(node-notifier@10.0.0)(ts-node@10.9.1(@types/node@20.4.2)(typescript@5.3.3)) - jest-util: 29.6.1 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.6.0 - typescript: 5.3.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.23.9 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.23.9) - - ts-loader@9.4.4(typescript@5.3.3)(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)): + ts-loader@9.4.4(typescript@5.3.3)(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)): dependencies: chalk: 4.1.2 enhanced-resolve: 5.15.0 micromatch: 4.0.7 semver: 7.6.0 typescript: 5.3.3 - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) - ts-loader@9.4.4(typescript@5.3.3)(webpack@5.90.1(@swc/core@1.3.92)): + ts-loader@9.4.4(typescript@5.3.3)(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: chalk: 4.1.2 enhanced-resolve: 5.15.0 micromatch: 4.0.7 semver: 7.6.0 typescript: 5.3.3 - webpack: 5.90.1(@swc/core@1.3.92) + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) ts-log@2.2.5: {} - ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.4.2)(typescript@5.3.3): + ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.3.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -37734,7 +37674,7 @@ snapshots: optionalDependencies: '@swc/core': 1.3.92(@swc/helpers@0.5.5) - ts-node@10.9.1(@types/node@20.4.2)(typescript@5.4.5): + ts-node@10.9.1(@swc/core@1.3.92(@swc/helpers@0.5.5))(@types/node@20.4.2)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -37751,6 +37691,8 @@ snapshots: typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.3.92(@swc/helpers@0.5.5) optional: true ts-retry-promise@0.7.0: {} @@ -37812,32 +37754,32 @@ snapshots: dependencies: safe-buffer: 5.2.1 - turbo-darwin-64@1.10.8: + turbo-darwin-64@2.1.2: optional: true - turbo-darwin-arm64@1.10.8: + turbo-darwin-arm64@2.1.2: optional: true - turbo-linux-64@1.10.8: + turbo-linux-64@2.1.2: optional: true - turbo-linux-arm64@1.10.8: + turbo-linux-arm64@2.1.2: optional: true - turbo-windows-64@1.10.8: + turbo-windows-64@2.1.2: optional: true - turbo-windows-arm64@1.10.8: + turbo-windows-arm64@2.1.2: optional: true - turbo@1.10.8: + turbo@2.1.2: optionalDependencies: - turbo-darwin-64: 1.10.8 - turbo-darwin-arm64: 1.10.8 - turbo-linux-64: 1.10.8 - turbo-linux-arm64: 1.10.8 - turbo-windows-64: 1.10.8 - turbo-windows-arm64: 1.10.8 + turbo-darwin-64: 2.1.2 + turbo-darwin-arm64: 2.1.2 + turbo-linux-64: 2.1.2 + turbo-linux-arm64: 2.1.2 + turbo-windows-64: 2.1.2 + turbo-windows-arm64: 2.1.2 tween-functions@1.2.0: {} @@ -38173,14 +38115,14 @@ snapshots: dependencies: punycode: 2.3.1 - url-loader@4.1.1(file-loader@6.2.0(webpack@5.90.1))(webpack@5.90.1): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))))(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) optionalDependencies: - file-loader: 6.2.0(webpack@5.90.1) + file-loader: 6.2.0(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) url-parse@1.5.10: dependencies: @@ -38846,9 +38788,9 @@ snapshots: webpack-cli@5.0.1(webpack@5.79.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.0.1(webpack-cli@5.0.1(webpack@5.79.0))(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)) - '@webpack-cli/info': 2.0.1(webpack-cli@5.0.1(webpack@5.79.0))(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)) - '@webpack-cli/serve': 2.0.1(webpack-cli@5.0.1(webpack@5.79.0))(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)) + '@webpack-cli/configtest': 2.0.1(webpack-cli@5.0.1(webpack@5.79.0))(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)) + '@webpack-cli/info': 2.0.1(webpack-cli@5.0.1(webpack@5.79.0))(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)) + '@webpack-cli/serve': 2.0.1(webpack-cli@5.0.1(webpack@5.79.0))(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)) colorette: 2.0.19 commander: 9.5.0 cross-spawn: 7.0.3 @@ -38857,19 +38799,19 @@ snapshots: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1) + webpack: 5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1) webpack-merge: 5.8.0 - webpack-dev-middleware@5.3.4(webpack@5.90.1): + webpack-dev-middleware@5.3.4(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): 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.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) - webpack-dev-server@4.15.2(webpack@5.90.1): + webpack-dev-server@4.15.2(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -38899,10 +38841,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.90.1) + webpack-dev-middleware: 5.3.4(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) ws: 8.17.1 optionalDependencies: - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) transitivePeerDependencies: - bufferutil - debug @@ -38926,7 +38868,7 @@ snapshots: webpack-virtual-modules@0.5.0: {} - webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1): + webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1): dependencies: '@types/eslint-scope': 3.7.4 '@types/estree': 1.0.0 @@ -38949,7 +38891,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.3.7(@swc/core@1.3.92)(webpack@5.79.0(@swc/core@1.3.92)(webpack-cli@5.0.1)) + terser-webpack-plugin: 5.3.7(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack@5.79.0(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack-cli@5.0.1)) watchpack: 2.4.0 webpack-sources: 3.2.3 optionalDependencies: @@ -38959,38 +38901,7 @@ snapshots: - esbuild - uglify-js - webpack@5.90.1: - dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.10.0 - acorn-import-assertions: 1.9.0(acorn@8.10.0) - browserslist: 4.22.3 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.2.1 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.90.1) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.90.1(@swc/core@1.3.92): + webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)): dependencies: '@types/eslint-scope': 3.7.4 '@types/estree': 1.0.5 @@ -39013,7 +38924,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.3.92)(webpack@5.90.1(@swc/core@1.3.92)) + terser-webpack-plugin: 5.3.10(@swc/core@1.3.92(@swc/helpers@0.5.5))(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -39021,13 +38932,13 @@ snapshots: - esbuild - uglify-js - webpackbar@5.0.2(webpack@5.90.1): + webpackbar@5.0.2(webpack@5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5))): dependencies: chalk: 4.1.2 consola: 2.15.3 pretty-time: 1.1.0 std-env: 3.3.3 - webpack: 5.90.1 + webpack: 5.90.1(@swc/core@1.3.92(@swc/helpers@0.5.5)) websocket-driver@0.7.4: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 13e3116437b..b2764c23587 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -6,19 +6,21 @@ packages: - "!**/dist/**" - "!**/.next/**" - "!sdk/create-dapp/templates" - - "!sdk/typescript/*/**" - - "!sdk/typescript/scripts" - - "!sdk/typescript/transactions" + - "!sdk/typescript/bcs" + - "!sdk/typescript/client" - "!sdk/typescript/cryptography" - "!sdk/typescript/faucet" - - "!sdk/typescript/transactions" - - "!sdk/typescript/client" - - "!sdk/typescript/verify" + - "!sdk/typescript/graphql" + - "!sdk/typescript/graphql/schemas/2024-01" + - "!sdk/typescript/keypairs/ed25519" + - "!sdk/typescript/keypairs/secp256k1" + - "!sdk/typescript/keypairs/secp256r1" - "!sdk/typescript/multisig" + - "!sdk/typescript/scripts" + - "!sdk/typescript/transactions" - "!sdk/typescript/utils" - - "!sdk/typescript/bcs" + - "!sdk/typescript/verify" - "!sdk/typescript/zklogin" - "!sdk/move-bytecode-template/pkg" - "!sdk/move-bytecode-template/pkg" - - "!sdk/typescript/graphql" - "!sdk/docs" diff --git a/turbo.json b/turbo.json index 424d1bb2d18..da9c0c668ba 100644 --- a/turbo.json +++ b/turbo.json @@ -1,40 +1,60 @@ { - "$schema": "https://turbo.build/schema.json", - "pipeline": { - "lint": { - "dependsOn": ["^build"] - }, - "prettier:fix": { - "cache": false - }, - "test": { - "dependsOn": ["^build", "build"], - "outputs": ["coverage/**"] - }, - "dev": { - "dependsOn": ["^build"], - "cache": false, - "persistent": true - }, - "build": { - "dependsOn": ["^build"], - "outputs": [ - "build/**", - "dist/**", - "storybook-static/**", - ".next/**", - "!.next/cache/**", - "pkg/**" - ] - } - }, - "globalEnv": [ - "VERCEL_ENV", - "VITE_VERCEL_ANALYTICS_ID", - "VITE_SENTRY_SAMPLE_RATE", - "DEFAULT_NETWORK", - "IOTA_NETWORKS" - ], - "globalDotEnv": ["sdk/.env", "sdk/.env.defaults"], - "globalDependencies": [".eslintrc.js", "prettier.config.js", ".prettierignore"] + "$schema": "https://turbo.build/schema.json", + "globalEnv": [ + "VERCEL_ENV", + "VITE_VERCEL_ANALYTICS_ID", + "VITE_SENTRY_SAMPLE_RATE", + "DEFAULT_NETWORK", + "IOTA_NETWORKS" + ], + "globalDependencies": [ + ".eslintrc.js", + "prettier.config.js", + ".prettierignore", + "sdk/.env", + "sdk/.env.defaults" + ], + "tasks": { + "lint": { + "dependsOn": [ + "^build" + ], + "outputs": [ + "dist/**", + "build/**" + ] + }, + "prettier:fix": { + "cache": false + }, + "test": { + "dependsOn": [ + "^build", + "build" + ], + "outputs": [ + "coverage/**" + ] + }, + "dev": { + "dependsOn": [ + "^build" + ], + "cache": false, + "persistent": true + }, + "build": { + "dependsOn": [ + "^build" + ], + "outputs": [ + "build/**", + "dist/**", + "storybook-static/**", + ".next/**", + "!.next/cache/**", + "pkg/**" + ] + } + } } From 7321872931834c20deb78ffb06fd9259cc96c1c5 Mon Sep 17 00:00:00 2001 From: "Eugene P." Date: Thu, 19 Sep 2024 19:46:10 +0300 Subject: [PATCH 02/11] feat(wallet): Add main badge to accounts with the `0/0/0` derivation path (#2664) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(explorer): bip path main label. Signed-off-by: Eugene Panteleymonchuk * feat(explorer): add badge "main" to manage accounts. Signed-off-by: Eugene Panteleymonchuk * feat(explorer): update badgeConfig variable; Signed-off-by: Eugene Panteleymonchuk --------- Signed-off-by: Eugene Panteleymonchuk Co-authored-by: Bran <52735957+brancoder@users.noreply.github.com> Co-authored-by: Begoña Álvarez de la Cruz --- .../background/account-sources/bip44Path.ts | 20 +++++++++++++ .../src/background/accounts/isMainAccount.ts | 28 +++++++++++++++++++ .../accounts/manage/AccountGroupItem.tsx | 17 ++++++++++- .../page-main-layout/PageMainLayout.tsx | 7 ++++- 4 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 apps/wallet/src/background/accounts/isMainAccount.ts diff --git a/apps/wallet/src/background/account-sources/bip44Path.ts b/apps/wallet/src/background/account-sources/bip44Path.ts index c4a6c647174..d9519b4b0d1 100644 --- a/apps/wallet/src/background/account-sources/bip44Path.ts +++ b/apps/wallet/src/background/account-sources/bip44Path.ts @@ -17,3 +17,23 @@ export function makeDerivationPath({ // currently returns only Ed25519 path return `m/44'/${bip44CoinType}'/${accountIndex}'/${changeIndex}'/${addressIndex}'`; } + +/** + * Parses a derivation path string and returns its components. + * + * @param path - The derivation path string (e.g., "m/44'/4218'/0'/0'/0'") + * @returns An object containing bip44CoinType, accountIndex, changeIndex, and addressIndex + */ +export function parseDerivationPath(path: string): MakeDerivationOptions { + const parts = path + .split("'/") + .slice(1) + .map((part) => parseInt(part, 10)); + + return { + bip44CoinType: parts[0], + accountIndex: parts[1], + changeIndex: parts[2], + addressIndex: parts[3], + }; +} diff --git a/apps/wallet/src/background/accounts/isMainAccount.ts b/apps/wallet/src/background/accounts/isMainAccount.ts new file mode 100644 index 00000000000..f329358f40b --- /dev/null +++ b/apps/wallet/src/background/accounts/isMainAccount.ts @@ -0,0 +1,28 @@ +// Copyright (c) 2024 IOTA Stiftung +// SPDX-License-Identifier: Apache-2.0 + +import { isLedgerAccountSerializedUI } from '_src/background/accounts/LedgerAccount'; +import { isMnemonicSerializedUiAccount } from '_src/background/accounts/MnemonicAccount'; +import { isSeedSerializedUiAccount } from '_src/background/accounts/SeedAccount'; +import { parseDerivationPath } from '_src/background/account-sources/bip44Path'; +import type { SerializedUIAccount } from '_src/background/accounts/Account'; + +export function isMainAccount(account: SerializedUIAccount | null) { + { + if (!account) { + return false; + } + + if ( + isLedgerAccountSerializedUI(account) || + isMnemonicSerializedUiAccount(account) || + isSeedSerializedUiAccount(account) + ) { + const { addressIndex, changeIndex, accountIndex } = parseDerivationPath( + account.derivationPath, + ); + + return addressIndex === 0 && changeIndex === 0 && accountIndex === 0; + } + } +} diff --git a/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroupItem.tsx b/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroupItem.tsx index dd694372aaa..dbc8c4a515b 100644 --- a/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroupItem.tsx +++ b/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroupItem.tsx @@ -10,11 +10,12 @@ import { useNavigate } from 'react-router-dom'; import { useAccounts } from '_app/hooks/useAccounts'; import { useExplorerLink } from '_app/hooks/useExplorerLink'; import toast from 'react-hot-toast'; -import { Account, Dropdown, ListItem } from '@iota/apps-ui-kit'; +import { Account, BadgeType, Dropdown, ListItem } from '@iota/apps-ui-kit'; import { OutsideClickHandler } from '_components/OutsideClickHandler'; import { IotaLogoMark, Ledger } from '@iota/ui-icons'; import { RemoveDialog } from './RemoveDialog'; import { useBackgroundClient } from '_app/hooks/useBackgroundClient'; +import { isMainAccount } from '_src/background/accounts/isMainAccount'; interface AccountGroupItemProps { account: SerializedUIAccount; @@ -83,6 +84,18 @@ export function AccountGroupItem({ account, isLast }: AccountGroupItemProps) { setDropdownOpen(true); } + const isMain = isMainAccount(account); + + const badgeConfig = isMain + ? { + type: BadgeType.PrimarySoft, + text: 'Main', + } + : { + type: undefined, + text: undefined, + }; + return (
@@ -94,6 +107,8 @@ export function AccountGroupItem({ account, isLast }: AccountGroupItemProps) { onOpen={handleOpen} avatarContent={() => } title={accountName} + badgeType={badgeConfig.type} + badgeText={badgeConfig.text} subtitle={formatAddress(account.address)} onCopy={handleCopySuccess} onOptionsClick={handleOptionsClick} diff --git a/apps/wallet/src/ui/app/shared/page-main-layout/PageMainLayout.tsx b/apps/wallet/src/ui/app/shared/page-main-layout/PageMainLayout.tsx index c15632a7009..420c62710e8 100644 --- a/apps/wallet/src/ui/app/shared/page-main-layout/PageMainLayout.tsx +++ b/apps/wallet/src/ui/app/shared/page-main-layout/PageMainLayout.tsx @@ -4,7 +4,8 @@ import { ErrorBoundary, MenuContent, Navigation, WalletSettingsButton } from '_components'; import cn from 'clsx'; -import { createContext, useState, type ReactNode } from 'react'; +import { BadgeType, Badge } from '@iota/apps-ui-kit'; +import { createContext, type ReactNode, useState } from 'react'; import { useAppSelector } from '../../hooks'; import { AppType } from '../../redux/slices/app/AppType'; import DappStatus from '../dapp-status'; @@ -16,6 +17,7 @@ import { Link } from 'react-router-dom'; import { formatAddress } from '@iota/iota-sdk/utils'; import { isLedgerAccountSerializedUI } from '_src/background/accounts/LedgerAccount'; import { type SerializedUIAccount } from '_src/background/accounts/Account'; +import { isMainAccount } from '_src/background/accounts/isMainAccount'; export const PageMainLayoutContext = createContext(null); @@ -93,6 +95,8 @@ function LeftContent({ isLedgerAccount: boolean | null; isLocked?: boolean; }) { + const isMain = isMainAccount(account); + const accountName = account?.nickname ?? formatAddress(account?.address || ''); const backgroundColor = isLocked ? 'bg-neutral-90' : 'bg-primary-30'; return ( @@ -109,6 +113,7 @@ function LeftContent({ {isLedgerAccount ? : }
{accountName} + {isMain && } ); } From f9a4f43dbc671c4b272265504e6a5bcc7eeb6d44 Mon Sep 17 00:00:00 2001 From: "Eugene P." Date: Fri, 20 Sep 2024 10:05:15 +0300 Subject: [PATCH 03/11] feat(wallet): Polish manage accounts. (#2740) * feat(explorer): Polish manage accounts. Signed-off-by: Eugene Panteleymonchuk * feat(explorer): account. Update comments & fix color. Signed-off-by: Eugene Panteleymonchuk * feat(explorer): revert changes Signed-off-by: Eugene Panteleymonchuk * feat(explorer): revert changes Signed-off-by: Eugene Panteleymonchuk --------- Signed-off-by: Eugene Panteleymonchuk --- .../components/molecules/account/Account.tsx | 53 ++++++++----------- apps/ui-kit/src/lib/styles/index.css | 18 ++++++- .../pages/accounts/manage/AccountGroup.tsx | 3 ++ .../accounts/manage/AccountGroupItem.tsx | 4 +- .../accounts/manage/ManageAccountsPage.tsx | 2 +- 5 files changed, 46 insertions(+), 34 deletions(-) diff --git a/apps/ui-kit/src/lib/components/molecules/account/Account.tsx b/apps/ui-kit/src/lib/components/molecules/account/Account.tsx index 477a630db3f..094076c8dca 100644 --- a/apps/ui-kit/src/lib/components/molecules/account/Account.tsx +++ b/apps/ui-kit/src/lib/components/molecules/account/Account.tsx @@ -3,7 +3,7 @@ import React from 'react'; import cx from 'classnames'; -import { Button, ButtonSize, ButtonType } from '../../atoms/button'; +import { ButtonUnstyled } from '../../atoms/button'; import { Badge, BadgeType } from '../../atoms'; import { LockLocked, LockUnlocked, MoreHoriz, CheckmarkFilled } from '@iota/ui-icons'; import { Address } from '../address'; @@ -65,6 +65,10 @@ interface AccountProps { * Show the selected checkbox. */ showSelected?: boolean; + /** + * Show background if account active (optional). + */ + isActive?: boolean; /** * The type of the badge. */ @@ -91,6 +95,7 @@ export function Account({ isCopyable, isExternal, isSelected, + isActive, showSelected, }: AccountProps): React.JSX.Element { const Avatar = avatarContent; @@ -99,6 +104,7 @@ export function Account({
{onOptionsClick && ( -
) : ( -
{showSelected && ( -
diff --git a/apps/ui-kit/src/lib/styles/index.css b/apps/ui-kit/src/lib/styles/index.css index 7579359862f..9e631fe05f2 100644 --- a/apps/ui-kit/src/lib/styles/index.css +++ b/apps/ui-kit/src/lib/styles/index.css @@ -49,17 +49,24 @@ @layer utilities { .state-layer, - .state-layer-inverted { + .state-layer-inverted, + .state-active { &::after { content: ''; border-radius: inherit; @apply absolute; @apply h-full w-full; @apply left-0 top-0; - @apply opacity-0; @apply transition-opacity duration-75; @apply pointer-events-none; } + } + + .state-layer, + .state-layer-inverted { + &::after { + @apply opacity-0; + } &:hover::after { @apply opacity-8; @@ -74,6 +81,7 @@ } } + .state-active, .state-layer { &::after { @apply bg-primary-60; @@ -85,6 +93,12 @@ @apply bg-primary-80; } } + + .state-active { + &::after { + @apply opacity-12; + } + } } @supports selector(::-webkit-scrollbar) { diff --git a/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroup.tsx b/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroup.tsx index 6dfa9568e06..af41429ca2d 100644 --- a/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroup.tsx +++ b/apps/wallet/src/ui/app/pages/accounts/manage/AccountGroup.tsx @@ -17,6 +17,7 @@ import { AccountGroupItem } from '_pages/accounts/manage/AccountGroupItem'; import { Collapsible } from '_app/shared/collapse'; import { useFeature } from '@growthbook/growthbook-react'; import { Feature } from '_shared/experimentation/features'; +import { useActiveAccount } from '_app/hooks/useActiveAccount'; const ACCOUNT_TYPE_TO_LABEL: Record = { [AccountType.MnemonicDerived]: 'Mnemonic', @@ -45,6 +46,7 @@ export function AccountGroup({ }) { const [isDropdownOpen, setDropdownOpen] = useState(false); const navigate = useNavigate(); + const activeAccount = useActiveAccount(); const createAccountMutation = useCreateAccountsMutation(); const isMnemonicDerivedGroup = type === AccountType.MnemonicDerived; const isSeedDerivedGroup = type === AccountType.SeedDerived; @@ -143,6 +145,7 @@ export function AccountGroup({ > {accounts.map((account, index) => ( -
+
+
+- Copyright © Mysten Labs, Inc. ++ Copyright © Mysten Labs, Inc., Modifications Copyright © 2024 IOTA Stiftung +
+ + +diff --git a/sdk/typescript/genversion.mjs b/sdk/typescript/genversion.mjs +index c5daa09..645895d 100644 +--- a/sdk/typescript/genversion.mjs ++++ b/sdk/typescript/genversion.mjs +@@ -4,7 +4,7 @@ + import { readFile, writeFile } from 'fs/promises'; + import TOML from '@iarna/toml'; + +-const LICENSE = '// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n'; ++const LICENSE = '// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\n'; + + const WARNING = '// This file is generated by genversion.mjs. Do not edit it directly.\n\n'; + +diff --git a/crates/iota-move/scripts/prover_setup.sh b/crates/iota-move/scripts/prover_setup.sh +index da0ec56..35ab871 100755 +--- a/crates/iota-move/scripts/prover_setup.sh ++++ b/crates/iota-move/scripts/prover_setup.sh +@@ -1,7 +1,4 @@ + # Copyright (c) Mysten Labs, Inc. +-# Modifications Copyright (c) 2024 IOTA Stiftung +-# SPDX-License-Identifier: Apache-2.0 +- + # Copyright (c) The Diem Core Contributors + # Copyright (c) The Move Contributors + # Modifications Copyright (c) 2024 IOTA Stiftung diff --git a/scripts/slipstream/patches_slipstream/dprint.patch b/scripts/slipstream/patches_slipstream/dprint.patch new file mode 100644 index 00000000000..93f6aaf64c6 --- /dev/null +++ b/scripts/slipstream/patches_slipstream/dprint.patch @@ -0,0 +1,14 @@ +diff --git a/dprint.json b/dprint.json +index 0f73d2ab..7a7be666 100644 +--- a/dprint.json ++++ b/dprint.json +@@ -20,7 +20,8 @@ + "narwhal/node/tests/staged/narwhal.yaml", + "**/pnpm-lock.yaml", + "external-crates/move/crates/move-stdlib/**/docs/**/*.md", +- "external-crates/move/move-execution/v0/crates/move-stdlib/**/docs/**/*.md" ++ "external-crates/move/move-execution/v0/crates/move-stdlib/**/docs/**/*.md", ++ "nre/helm/" + ], + "toml": { + "lineWidth": 80 diff --git a/scripts/slipstream/patches_slipstream/fix_invalid_comments.patch b/scripts/slipstream/patches_slipstream/fix_invalid_comments.patch new file mode 100644 index 00000000000..bbe7fc67bc7 --- /dev/null +++ b/scripts/slipstream/patches_slipstream/fix_invalid_comments.patch @@ -0,0 +1,264 @@ +diff --git a/crates/iota-json-rpc-api/src/coin.rs b/crates/iota-json-rpc-api/src/coin.rs +index ebd6ff06..2b0e61ee 100644 +--- a/crates/iota-json-rpc-api/src/coin.rs ++++ b/crates/iota-json-rpc-api/src/coin.rs +@@ -13,6 +13,7 @@ use iota_types::base_types::{ObjectID, IotaAddress}; + #[rpc(server, client, namespace = "iotax")] + pub trait CoinReadApi { + /// Return all Coin<`coin_type`> objects owned by an address. ++ #[rustfmt::skip] + #[method(name = "getCoins")] + async fn get_coins( + &self, +@@ -39,6 +40,7 @@ pub trait CoinReadApi { + ) -> RpcResult; + + /// Return the total coin balance for one coin type, owned by the address owner. ++ #[rustfmt::skip] + #[method(name = "getBalance")] + async fn get_balance( + &self, +@@ -57,6 +59,7 @@ pub trait CoinReadApi { + ) -> RpcResult>; + + /// Return metadata(e.g., symbol, decimals) for a coin ++ #[rustfmt::skip] + #[method(name = "getCoinMetadata")] + async fn get_coin_metadata( + &self, +@@ -65,6 +68,7 @@ pub trait CoinReadApi { + ) -> RpcResult>; + + /// Return total supply for a coin ++ #[rustfmt::skip] + #[method(name = "getTotalSupply")] + async fn get_total_supply( + &self, +diff --git a/crates/iota-json-rpc-api/src/extended.rs b/crates/iota-json-rpc-api/src/extended.rs +index 68f7d893..7ada25b2 100644 +--- a/crates/iota-json-rpc-api/src/extended.rs ++++ b/crates/iota-json-rpc-api/src/extended.rs +@@ -31,6 +31,7 @@ pub trait ExtendedApi { + async fn get_current_epoch(&self) -> RpcResult; + + /// Return the list of queried objects. Note that this is an enhanced full node only api. ++ #[rustfmt::skip] + #[method(name = "queryObjects")] + async fn query_objects( + &self, +diff --git a/crates/iota-json-rpc-api/src/indexer.rs b/crates/iota-json-rpc-api/src/indexer.rs +index 4522fe20..c7ad18c6 100644 +--- a/crates/iota-json-rpc-api/src/indexer.rs ++++ b/crates/iota-json-rpc-api/src/indexer.rs +@@ -25,6 +25,7 @@ pub trait IndexerApi { + /// the pagination is not accurate, because previous page may have been updated when + /// the next page is fetched. + /// Please use iotax_queryObjects if this is a concern. ++ #[rustfmt::skip] + #[method(name = "getOwnedObjects")] + async fn get_owned_objects( + &self, +@@ -39,6 +40,7 @@ pub trait IndexerApi { + ) -> RpcResult; + + /// Return list of transactions for a specified query criteria. ++ #[rustfmt::skip] + #[method(name = "queryTransactionBlocks")] + async fn query_transaction_blocks( + &self, +@@ -53,6 +55,7 @@ pub trait IndexerApi { + ) -> RpcResult; + + /// Return list of events for a specified query criteria. ++ #[rustfmt::skip] + #[method(name = "queryEvents")] + async fn query_events( + &self, +@@ -67,6 +70,7 @@ pub trait IndexerApi { + ) -> RpcResult; + + /// Subscribe to a stream of Iota event ++ #[rustfmt::skip] + #[subscription(name = "subscribeEvent", item = IotaEvent)] + fn subscribe_event( + &self, +@@ -79,6 +83,7 @@ pub trait IndexerApi { + fn subscribe_transaction(&self, filter: TransactionFilter); + + /// Return the list of dynamic field objects owned by an object. ++ #[rustfmt::skip] + #[method(name = "getDynamicFields")] + async fn get_dynamic_fields( + &self, +diff --git a/crates/iota-json-rpc-api/src/read.rs b/crates/iota-json-rpc-api/src/read.rs +index 995c7500..47926785 100644 +--- a/crates/iota-json-rpc-api/src/read.rs ++++ b/crates/iota-json-rpc-api/src/read.rs +@@ -64,6 +64,7 @@ pub trait ReadApi { + /// can be retrieved by this API, even if the object and version exists/existed. + /// The result may vary across nodes depending on their pruning policies. + /// Return the object information for a specified version ++ #[rustfmt::skip] + #[method(name = "tryGetPastObject")] + async fn try_get_past_object( + &self, +@@ -102,6 +103,7 @@ pub trait ReadApi { + ) -> RpcResult>; + + /// Return a checkpoint ++ #[rustfmt::skip] + #[method(name = "getCheckpoint")] + async fn get_checkpoint( + &self, +@@ -110,6 +112,7 @@ pub trait ReadApi { + ) -> RpcResult; + + /// Return paginated list of checkpoints ++ #[rustfmt::skip] + #[method(name = "getCheckpoints")] + async fn get_checkpoints( + &self, +@@ -121,6 +124,7 @@ pub trait ReadApi { + descending_order: bool, + ) -> RpcResult; + ++ #[rustfmt::skip] + #[method(name = "getCheckpoints", version <= "0.31")] + async fn get_checkpoints_deprecated_limit( + &self, +@@ -150,6 +154,7 @@ pub trait ReadApi { + + /// Return the protocol config table for the given version number. + /// If the version number is not specified, If none is specified, the node uses the version of the latest epoch it has processed. ++ #[rustfmt::skip] + #[method(name = "getProtocolConfig")] + async fn get_protocol_config( + &self, +diff --git a/crates/iota-json-rpc-api/src/transaction_builder.rs b/crates/iota-json-rpc-api/src/transaction_builder.rs +index e77620d8..b28b4af6 100644 +--- a/crates/iota-json-rpc-api/src/transaction_builder.rs ++++ b/crates/iota-json-rpc-api/src/transaction_builder.rs +@@ -19,6 +19,7 @@ use iota_types::iota_serde::BigInt; + pub trait TransactionBuilder { + /// Create an unsigned transaction to transfer an object from one address to another. The object's type + /// must allow public transfers ++ #[rustfmt::skip] + #[method(name = "transferObject")] + async fn transfer_object( + &self, +@@ -35,6 +36,7 @@ pub trait TransactionBuilder { + ) -> RpcResult; + + /// Create an unsigned transaction to send IOTA coin object to a Iota address. The IOTA object is also used as the gas object. ++ #[rustfmt::skip] + #[method(name = "transferIota")] + async fn transfer_iota( + &self, +@@ -54,6 +56,7 @@ pub trait TransactionBuilder { + /// The object specified in the `gas` field will be used to pay the gas fee for the transaction. + /// The gas object can not appear in `input_coins`. If the gas object is not specified, the RPC server + /// will auto-select one. ++ #[rustfmt::skip] + #[method(name = "pay")] + async fn pay( + &self, +@@ -80,6 +83,7 @@ pub trait TransactionBuilder { + /// input coin, then use the first input coin as the gas coin object. + /// 3. the balance of the first input coin after tx is sum(input_coins) - sum(amounts) - actual_gas_cost + /// 4. all other input coints other than the first one are deleted. ++ #[rustfmt::skip] + #[method(name = "payIota")] + async fn pay_iota( + &self, +@@ -102,6 +106,7 @@ pub trait TransactionBuilder { + /// 2. transfer the updated first coin to the recipient and also use this first coin as gas coin object. + /// 3. the balance of the first input coin after tx is sum(input_coins) - actual_gas_cost. + /// 4. all other input coins other than the first are deleted. ++ #[rustfmt::skip] + #[method(name = "payAllIota")] + async fn pay_all_iota( + &self, +@@ -116,6 +121,7 @@ pub trait TransactionBuilder { + ) -> RpcResult; + + /// Create an unsigned transaction to execute a Move call on the network, by calling the specified function in the module of a given package. ++ #[rustfmt::skip] + #[method(name = "moveCall")] + async fn move_call( + &self, +@@ -140,6 +146,7 @@ pub trait TransactionBuilder { + ) -> RpcResult; + + /// Create an unsigned transaction to publish a Move package. ++ #[rustfmt::skip] + #[method(name = "publish")] + async fn publish( + &self, +@@ -156,6 +163,7 @@ pub trait TransactionBuilder { + ) -> RpcResult; + + /// Create an unsigned transaction to split a coin object into multiple coins. ++ #[rustfmt::skip] + #[method(name = "splitCoin")] + async fn split_coin( + &self, +@@ -172,6 +180,7 @@ pub trait TransactionBuilder { + ) -> RpcResult; + + /// Create an unsigned transaction to split a coin object into multiple equal-size coins. ++ #[rustfmt::skip] + #[method(name = "splitCoinEqual")] + async fn split_coin_equal( + &self, +@@ -188,6 +197,7 @@ pub trait TransactionBuilder { + ) -> RpcResult; + + /// Create an unsigned transaction to merge multiple coins into one coin. ++ #[rustfmt::skip] + #[method(name = "mergeCoins")] + async fn merge_coin( + &self, +@@ -204,6 +214,7 @@ pub trait TransactionBuilder { + ) -> RpcResult; + + /// Create an unsigned batched transaction. ++ #[rustfmt::skip] + #[method(name = "batchTransaction")] + async fn batch_transaction( + &self, +@@ -220,6 +231,7 @@ pub trait TransactionBuilder { + ) -> RpcResult; + + /// Add stake to a validator's staking pool using multiple coins and amount. ++ #[rustfmt::skip] + #[method(name = "requestAddStake")] + async fn request_add_stake( + &self, +@@ -238,6 +250,7 @@ pub trait TransactionBuilder { + ) -> RpcResult; + + /// Withdraw stake from a validator's staking pool. ++ #[rustfmt::skip] + #[method(name = "requestWithdrawStake")] + async fn request_withdraw_stake( + &self, +diff --git a/crates/iota-json-rpc-api/src/write.rs b/crates/iota-json-rpc-api/src/write.rs +index 9a3c9adc..79034336 100644 +--- a/crates/iota-json-rpc-api/src/write.rs ++++ b/crates/iota-json-rpc-api/src/write.rs +@@ -28,6 +28,7 @@ pub trait WriteApi { + /// However if the node fails to execute the transaction locally in a timely manner, + /// a bool type in the response is set to false to indicated the case. + /// request_type is default to be `WaitForEffectsCert` unless options.show_events or options.show_effects is true ++ #[rustfmt::skip] + #[method(name = "executeTransactionBlock")] + async fn execute_transaction_block( + &self, +@@ -44,6 +45,7 @@ pub trait WriteApi { + /// Runs the transaction in dev-inspect mode. Which allows for nearly any + /// transaction (or Move call) with any arguments. Detailed results are + /// provided, including both the transaction effects and any return values. ++ #[rustfmt::skip] + #[method(name = "devInspectTransactionBlock")] + async fn dev_inspect_transaction_block( + &self, diff --git a/scripts/slipstream/patches_slipstream/gitignore.patch b/scripts/slipstream/patches_slipstream/gitignore.patch new file mode 100644 index 00000000000..be05a020a8a --- /dev/null +++ b/scripts/slipstream/patches_slipstream/gitignore.patch @@ -0,0 +1,12 @@ +diff --git a/.gitignore b/.gitignore +index 49f27784..dc92127a 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -43,6 +43,7 @@ node_modules + .tsbuildinfo + *.tsbuildinfo + .turbo ++.pnpm-store + + # App build directories + dist/ diff --git a/scripts/slipstream/patches_slipstream/iota-authority-aggregation-clone.patch b/scripts/slipstream/patches_slipstream/iota-authority-aggregation-clone.patch new file mode 100644 index 00000000000..cd25df1d79e --- /dev/null +++ b/scripts/slipstream/patches_slipstream/iota-authority-aggregation-clone.patch @@ -0,0 +1,31 @@ +diff --git a/crates/iota-authority-aggregation/src/lib.rs b/crates/iota-authority-aggregation/src/lib.rs +index 8983bb2f..8451e2c8 100644 +--- a/crates/iota-authority-aggregation/src/lib.rs ++++ b/crates/iota-authority-aggregation/src/lib.rs +@@ -53,7 +53,7 @@ pub async fn quorum_map_then_reduce_with_timeout_and_prefs< + S, + > + where +- K: Ord + ConciseableName<'a> + Copy + 'a, ++ K: Ord + ConciseableName<'a> + Clone + 'a, + C: CommitteeTrait, + FMap: FnOnce(K, Arc) -> AsyncResult<'a, V, E> + Clone + 'a, + FReduce: Fn(S, K, StakeUnit, Result) -> BoxFuture<'a, ReduceOutput>, +@@ -69,7 +69,7 @@ where + let concise_name = name.concise_owned(); + monitored_future!(async move { + ( +- name, ++ name.clone(), + execute(name, client) + .instrument( + tracing::trace_span!("quorum_map_auth", authority =? concise_name), +@@ -161,7 +161,7 @@ pub async fn quorum_map_then_reduce_with_timeout< + S, + > + where +- K: Ord + ConciseableName<'a> + Copy + 'a, ++ K: Ord + ConciseableName<'a> + Clone + 'a, + C: CommitteeTrait, + FMap: FnOnce(K, Arc) -> AsyncResult<'a, V, E> + Clone + 'a, + FReduce: Fn(S, K, StakeUnit, Result) -> BoxFuture<'a, ReduceOutput> + 'a, diff --git a/scripts/slipstream/python_venv_wrapper.sh b/scripts/slipstream/python_venv_wrapper.sh new file mode 100644 index 00000000000..ce65e312017 --- /dev/null +++ b/scripts/slipstream/python_venv_wrapper.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# Deactivate the virtual environment if it was activated +cleanup() { + if [ "$in_venv" = true ]; then + echo "Deactivating virtual environment..." + deactivate + fi +} + +# Set a trap to call cleanup on exit or error +trap cleanup EXIT + +# Check if either "python" or "python3" exists and use it +if command -v python3 &>/dev/null; then + PYTHON_CMD="python3" +elif command -v python &>/dev/null; then + PYTHON_CMD="python" +else + echo "Neither python nor python3 binary is installed. Please install Python." + exit 1 +fi + +# Check if running in a virtual environment +if [ -z "$VIRTUAL_ENV" ]; then + echo "Not in a virtual environment. Activating..." + + # Check if the "venv" folder and venv/bin/activate exists + if [ ! -f "venv/bin/activate" ]; then + # Delete a potentially broken venv folder + if [ -d "venv" ]; then + echo "Deleting broken virtual environment..." + rm -rf venv + fi + + echo "Virtual environment doesn't exist yet, creating..." + + $PYTHON_CMD -m venv venv + source venv/bin/activate + + echo "Installing packages..." + pip install -r requirements.txt + else + source venv/bin/activate + in_venv=true + fi +fi diff --git a/scripts/slipstream/requirements.txt b/scripts/slipstream/requirements.txt new file mode 100644 index 00000000000..cdd56f258e5 --- /dev/null +++ b/scripts/slipstream/requirements.txt @@ -0,0 +1 @@ +semver==3.0.2 diff --git a/scripts/slipstream/run_slipstream.sh b/scripts/slipstream/run_slipstream.sh new file mode 100755 index 00000000000..4d722bfb1b1 --- /dev/null +++ b/scripts/slipstream/run_slipstream.sh @@ -0,0 +1,56 @@ +#!/bin/bash +# OPTIONS: +# --config FILE_PATH # The path to the configuration file. +# --verbose # Print verbose output. +# --repo-url REPO_URL_OR_LOCAL_FOLDER # The URL to the repository. Can also be a local folder. +# --repo-tag TAG # The tag to checkout in the repository. +# --version # The semantic version to filter overwrites/patches if not found in the repo-tag. +# --target-folder FOLDER # The path to the target folder. +# --target-branch BRANCH # The branch to create and checkout in the target folder. +# --patches-folder FOLDER # The path to the patches folder. +# --skip-gitignore # Skip the .gitignore file. +# --gitignore-path FILE_PATH # The path to the .gitignore file. +# --commit-between-steps # Create a commit between each step. +# --panic-on-linter-errors # Panic on linter errors (typos, cargo fmt, dprint, pnpm lint, cargo clippy). +# --clone-source # Clone the upstream repository. +# --clone-history # Clone the complete history of the upstream repository. +# --create-branch # Create a new branch in the target folder. +# --delete # Delete files or folders based on the rules in the config. +# --apply-path-renames # Apply path renames based on the rules in the config. +# --apply-code-renames # Apply code renames based on the rules in the config. +# --copy-overwrites # Copy and overwrite files listed in the config. +# --apply-patches # Apply git patches from the patches folder. +# --run-fix-typos # Run script to fix typos. +# --run-cargo-fmt # Run cargo fmt. +# --run-dprint-fmt # Run dprint fmt. +# --run-pnpm-prettier-fix # Run pnpm prettier:fix. +# --run-pnpm-lint-fix # Run pnpm lint:fix. +# --run-shell-commands # Run shell commands listed in the config. +# --run-cargo-clippy # Run cargo clippy. +# --compare-results # Open tool for comparison. +# --compare-source-folder FOLDER # The path to the source folder for comparison. +# --compare-tool-binary BINARY # The binary to use for comparison. +# --compare-tool-arguments ARGUMENTS # The arguments to use for comparison. +source python_venv_wrapper.sh + +$PYTHON_CMD slipstream.py \ + --config config_slipstream.json \ + --repo-tag "mainnet-v1.32.2" \ + --target-folder result \ + --target-branch slipstream \ + --patches-folder patches_slipstream \ + --skip-gitignore \ + --commit-between-steps \ + --clone-source \ + --create-branch \ + --delete \ + --apply-path-renames \ + --apply-code-renames \ + --copy-overwrites \ + --apply-patches \ + --run-fix-typos \ + --run-cargo-fmt \ + --run-dprint-fmt \ + --run-pnpm-prettier-fix \ + --run-pnpm-lint-fix \ + --run-cargo-clippy diff --git a/scripts/slipstream/slipstream.py b/scripts/slipstream/slipstream.py new file mode 100644 index 00000000000..3ba25f5643f --- /dev/null +++ b/scripts/slipstream/slipstream.py @@ -0,0 +1,859 @@ +import os, re, json, shutil, subprocess, argparse, semver + +# Extract the semantic version from a version string +def extract_sem_version(version_str): + # Use regex to capture only the numeric version part (e.g., "1.30.0") + match = re.search(r"(\d+\.\d+\.\d+)", version_str) + if match: + return semver.Version.parse(match.group(1)) + else: + raise ValueError(f"Invalid version format: {version_str}") + +# Load the configuration from config.json +def load_slipstream_config(file_path): + print("Loading config file...") + with open(file_path, 'r') as config_file: + return json.load(config_file) + +# Clone a repository (either from a URL or a local folder) +def clone_repo(repo_url, repo_tag, clone_history, target_folder, ignored_folders, ignored_files, ignored_file_types): + print(f"Cloning '{repo_url}' with tag '{repo_tag}' to '{target_folder}'...") + repo_url_exp = os.path.expanduser(repo_url) + + # Check if the repository is a git repository or a local folder + if os.path.exists(repo_url_exp): + # Fetch the latest changes + subprocess.run(["git", "fetch", "--all"], cwd=repo_url_exp, check=True) + + # Checkout the tag in the source folder + subprocess.run(["git", "checkout", repo_tag], cwd=repo_url_exp, check=True) + + # helper function to check if the current reference is following a branch + def is_following_branch(): + # Run the git command to check the current reference + result = subprocess.run( + ['git', 'rev-parse', '--abbrev-ref', 'HEAD'], + cwd=repo_url_exp, + capture_output=True, + text=True, + check=True + ) + # If the result is 'HEAD', we're not following a branch (detached state or similar) + return result.stdout.strip() != "HEAD" + + # Pull the latest changes + if is_following_branch(): + print(" Pulling latest changes...") + subprocess.run(["git", "pull"], cwd=repo_url_exp, check=True) + + # Check if the local folder equals the target folder + if os.path.abspath(repo_url_exp) != os.path.abspath(target_folder): + + # Compile the regex patterns for ignored folders, files, and file types + ignored_folders = [re.compile(pattern) for pattern in ignored_folders] + ignored_files = [re.compile(pattern) for pattern in ignored_files] + ignored_file_types = [re.compile(pattern) for pattern in ignored_file_types] + + # helper function to filter ignored items + def filter_ignored_items(dir, contents): + dir = os.path.relpath(dir, os.path.abspath(repo_url_exp)) + + if any(pattern.search(dir) for pattern in ignored_folders): + print(f" Skipping directory (regex): {dir}") + return contents + + ignored = [] + + # Check if the item is a folder and matches any ignored folder pattern + for item_name in contents: + item_path = os.path.join(dir, item_name) + + if os.path.isdir(item_path): + if any(pattern.search(item_path) for pattern in ignored_folders): + print(f" Skipping directory (regex): {item_path}") + ignored.append(item_name) + continue + else: + # Ignore specified file types using regex patterns + if any(pattern.search(os.path.splitext(item_name)[1]) for pattern in ignored_file_types): + print(f" Skipping file (type regex): {item_path}") + ignored.append(item_name) + continue + + # Ignore specified files using regex patterns + if any(pattern.search(item_name) for pattern in ignored_files): + print(f" Skipping file (regex): {item_path}") + ignored.append(item_name) + continue + + return ignored + + # Copy the local folder to the target folder + shutil.copytree( + repo_url_exp, + target_folder, + ignore=filter_ignored_items, + symlinks=True + ) + else: + # Clone the repository, the tag can be used as the branch name directly to checkout a specific tag in one step + cmd = ["git", "clone"] + if not clone_history: + cmd += ["--depth", "1"] + cmd += ["--single-branch", "--branch", repo_tag, repo_url, target_folder] + + subprocess.run(cmd, check=True) + + # Change working directory to the cloned repo + os.chdir(target_folder) + +# Delete specified crates +def delete_crates(crates): + print("Deleting crates...") + + for crate in crates: + crate_folder = f"crates/{crate}" + if os.path.exists(crate_folder) and os.path.isdir(crate_folder): + print(f" Deleting crate folder: {crate_folder}") + shutil.rmtree(crate_folder) + + cargo_toml_content = None + with open('Cargo.toml', 'r') as file: + cargo_toml_content = file.readlines() + + with open('Cargo.toml', 'w') as file: + for line in cargo_toml_content: + stripped_line = line.strip() + + for crate in crates: + if crate in stripped_line: + print(f" Deleting line from Cargo.toml: {stripped_line}") + + # Skip the line + break + else: + file.write(line) + + cargo_lock_content = None + with open('Cargo.lock', 'r') as file: + cargo_lock_content = file.readlines() + + with open('Cargo.lock', 'w') as file: + in_package_section = False + package_line_added = True + skip_section = False + + for line in cargo_lock_content: + # Detect the start of a new package section + if line.strip() == "[[package]]": + in_package_section = True + package_line_added = False + continue + + # If in a package section, check if the crate name matches + if in_package_section and line.strip().startswith("name ="): + for crate in crates: + if crate in line: + print(f" Deleting package from Cargo.lock: {crate}") + skip_section = True + break + + # If we've reached the end of the package section, reset the flags + if in_package_section and line.strip() == "": + in_package_section = False + package_line_added = True + skip_section = False + file.write(line) + continue + + # Only write the line if we're not skipping this section + if not skip_section: + if not package_line_added: + file.write("[[package]]\n") + package_line_added = True + + file.write(line) + +# Delete specified folders +def delete_folders(folders, verbose): + print("Deleting folders...") + for folder in folders: + if not os.path.exists(folder): + raise FileNotFoundError(f"Folder not found: {folder}") + + if verbose: + print(f" Deleting folder: {folder}") + + shutil.rmtree(folder) + +# Delete specified files +def delete_files(files, verbose): + print("Deleting files...") + for file in files: + if not os.path.exists(file): + raise FileNotFoundError(f"File not found: {file}") + + if verbose: + print(f" Deleting file: {file}") + + os.remove(file) + +# Apply path renames +def apply_path_renames(ignored_folders, ignored_files, ignored_file_types, rename_patterns, verbose): + print("Renaming paths...") + + # Compile the regex patterns for ignored folders, files, and file types + ignored_folders = [re.compile(pattern) for pattern in ignored_folders] + ignored_files = [re.compile(pattern) for pattern in ignored_files] + ignored_file_types = [re.compile(pattern) for pattern in ignored_file_types] + + def compile_ignore_pattern(ignored): + return { + "files": [re.compile(pattern) for pattern in ignored.get("files", [])], + } + + patterns = [{ + "regex": re.compile(pattern["regex"]), + "replacement": pattern["replacement"], + "ignore": compile_ignore_pattern(pattern.get("ignore", { + "files": [], + })) + } for pattern in rename_patterns] + + # Helper function to check if a file is tracked by Git + def is_file_tracked(file_path): + try: + # Check if the file is tracked by Git + subprocess.run(['git', 'ls-files', '--error-unmatch', file_path], check=True, stderr=subprocess.DEVNULL) + return True + except subprocess.CalledProcessError: + return False + + # Apply renames within code files based on regex + for root, dirs, files in os.walk("."): + # Skip the entire directory if the root matches any ignored folder pattern + if any(pattern.search(root) for pattern in ignored_folders): + print(f" Skipping directory (regex): {root}") + dirs.clear() # Don't walk into the directory if it should be ignored + continue + + # Ignore specified subfolders using regex patterns + dirs[:] = [d for d in dirs if not any(pattern.search(os.path.relpath(os.path.join(root, d), os.getcwd())) for pattern in ignored_folders)] + + for file_name in files: + # Ignore specified file types using regex patterns + if any(pattern.search(os.path.splitext(file_name)[1]) for pattern in ignored_file_types): + continue + + # Ignore specified files using regex patterns + if any(pattern.search(file_name) for pattern in ignored_files): + print(f" Skipping file (regex): {file_name}") + continue + + file_path = os.path.join(root, file_name) + + # Apply rename patterns + new_path = file_path + + for pattern in patterns: + # Skip the pattern if the file is in the ignore list + if any(ignore.search(new_path) for ignore in pattern["ignore"]["files"]): + continue + + new_path = pattern["regex"].sub(pattern["replacement"], new_path) + + if new_path == file_path: + continue + + if verbose: + print(f" Renaming: {file_path} -> {new_path}") + + os.makedirs(os.path.dirname(new_path), exist_ok=True) + try: + subprocess.run(['git', 'mv', file_path, new_path], check=True, stderr=subprocess.DEVNULL) + except subprocess.CalledProcessError: + if not is_file_tracked(file_path): + print(f" Skipping file (not tracked by git): {file_path}") + else: + raise Exception(f"Failed to rename file: {file_path} -> {new_path}") + + # After moving files, check if the directory is empty + if not os.listdir(root): + if verbose: + print(f" Directory is empty, deleting: {root}") + os.rmdir(root) + + # Check if the parent directory is empty + parent_dir = os.path.dirname(root) + while not os.listdir(parent_dir): + if verbose: + print(f" Parent directory is empty, deleting: {parent_dir}") + os.rmdir(parent_dir) # This will panic if the parent dir is not empty, so we are safe + parent_dir = os.path.dirname(parent_dir) + + # We need to fix symlinks after moving files + for root, dirs, files in os.walk("."): + for file_name in files: + file_path = os.path.join(root, file_name) + + # Check if the file is a symbolic link + if not os.path.islink(file_path): + continue + + # Get the target of the symbolic link + target = os.readlink(file_path) + target_root = os.path.dirname(target) + target_file_name = os.path.basename(target) + + # Check if the target might have been skipped during renaming because of the ignored folders patterns + if any(pattern.search(target_root) for pattern in ignored_folders): + print(f" Symbolic links: Skipping directory (regex): {target_root}") + continue + + # Check if the target might have been skipped during renaming because of the ignored files patterns + if any(pattern.search(target_file_name) for pattern in ignored_files): + print(f" Symbolic links: Skipping file (regex): {target}") + continue + + # Check if the target might have been skipped during renaming because of the ignored file types patterns + if any(pattern.search(os.path.splitext(target_file_name)[1]) for pattern in ignored_file_types): + continue + + # Apply rename patterns + new_target = target + + for pattern in patterns: + # Skip the pattern if the file is in the ignore list + if any(ignore.search(new_target) for ignore in pattern["ignore"]["files"]): + continue + + new_target = pattern["regex"].sub(pattern["replacement"], new_target) + + # Skip the symbolic link if the target has not changed + if new_target == target: + continue + + # Update the symbolic link if the target has changed + os.remove(file_path) + os.symlink(new_target, file_path) + + print(f" Updated symlink: {file_path}: {target} -> {new_target}") + +# Apply code renames +def apply_code_renames(ignored_folders, ignored_files, ignored_file_types, rename_patterns, verbose): + print("Applying code renames...") + + # Compile the regex patterns for ignored folders, files, and file types + ignored_folders = [re.compile(pattern) for pattern in ignored_folders] + ignored_files = [re.compile(pattern) for pattern in ignored_files] + ignored_file_types = [re.compile(pattern) for pattern in ignored_file_types] + + def compile_ignore_pattern(ignored): + return { + "files": [re.compile(pattern) for pattern in ignored.get("files", [])], + } + + patterns = [{ + "regex": re.compile(pattern["regex"], re.MULTILINE), + "replacement": pattern["replacement"], + "ignore": compile_ignore_pattern(pattern.get("ignore", { + "files": [], + })) + } for pattern in rename_patterns] + + # Apply renames within code files based on regex + for root, dirs, files in os.walk("."): + # Skip the entire directory if the root matches any ignored folder pattern + if any(pattern.search(root) for pattern in ignored_folders): + print(f" Skipping directory (regex): {root}") + dirs.clear() # Don't walk into the directory if it should be ignored + continue + + # Ignore specified subfolders using regex patterns + dirs[:] = [d for d in dirs if not any(pattern.search(os.path.relpath(os.path.join(root, d), os.getcwd())) for pattern in ignored_folders)] + + for file_name in files: + # Ignore specified file types using regex patterns + if any(pattern.search(os.path.splitext(file_name)[1]) for pattern in ignored_file_types): + continue + + file_path = os.path.join(root, file_name) + + # Ignore specified files using regex patterns + if any(pattern.search(file_path) for pattern in ignored_files): + print(f" Skipping file (regex): {file_path}") + continue + + # Read the file content + content = None + try: + with open(file_path, 'r', encoding='utf-8') as file: + content = file.read() + except UnicodeDecodeError: + raise UnicodeError(f"file_path: {file_path}") + + # Apply rename patterns + for pattern in patterns: + # Skip the pattern if the file is in the ignore list + if any(ignore.search(file_name) for ignore in pattern["ignore"]["files"]): + continue + + content = pattern["regex"].sub(pattern["replacement"], content) + + if verbose: + print(f" Renaming code in file: {file_path}") + + # Write the modified content back to the file + with open(file_path, 'w', encoding='utf-8') as file: + file.write(content) + +# Skip an entry based on the min_sem_version and max_sem_version in the config +def skip_entry_by_version(sem_version, config_entry, name): + if not config_entry: + return False + + min_sem_version = config_entry.get("min_sem_version", None) + if min_sem_version: + min_sem_version = extract_sem_version(min_sem_version) + + if min_sem_version and sem_version < min_sem_version: + print(f" Skipping entry because min version not reached: \"{name}\" - current: {sem_version} < min: {min_sem_version}") + return True + + max_sem_version = config_entry.get("max_sem_version", None) + if max_sem_version: + max_sem_version = extract_sem_version(max_sem_version) + + if max_sem_version and sem_version > max_sem_version: + print(f" Skipping entry because max version exceeded: \"{name}\" - current: {sem_version} > max: {max_sem_version}") + return True + + return False + +# Copy and overwrite files listed in the config +def copy_overwrites(script_folder, sem_version, overwrites_config): + print("Copying overwrites...") + + for overwrite in overwrites_config: + # Skip the overwrite if it should be skipped based on the config + if skip_entry_by_version(sem_version, overwrite, overwrite["source"]): + continue + + source = os.path.abspath(os.path.expanduser(os.path.join(script_folder, overwrite["source"]))) + target = overwrite["destination"] + + if os.path.isdir(source): + if os.path.exists(target): + print(f" Deleting existing directory: {target}") + shutil.rmtree(target) + + print(f" Copying directory: {source} -> {target}") + + # Copy the local folder to the target folder + shutil.copytree( + source, + target, + symlinks=True + ) + else: + print(f" Copying file: {source} -> {target}") + + # Copy the file to the target + shutil.copy2(source, target) + +# Apply all git patches from patches_folder to the repository +def apply_git_patches(patches_folder, sem_version, patches_config): + print("Applying git patch files...") + + # Apply each patch file in the patches_folder + for patch_file in os.listdir(patches_folder): + if patch_file.endswith('.patch'): + patch_name = os.path.splitext(patch_file)[0] + + # Skip the patch if it should be skipped based on the config + if skip_entry_by_version(sem_version, patches_config.get(patch_name, None), patch_file): + continue + + patch_path = os.path.join(patches_folder, patch_file) + print(f" Applying patch: {patch_file}") + subprocess.run(['git', 'apply', '-C2', '--verbose', patch_path], check=True) + +# Run fix typos +def run_fix_typos(panic_on_errors): + print("Running fix typos...") + # We won't check the return code because not all typos might be fixable + subprocess.run(["typos", "--write-changes"], check=panic_on_errors) + +# Run cargo fmt +def run_cargo_fmt(panic_on_errors): + print("Running cargo fmt...") + subprocess.run(["cargo", "+nightly", "fmt"], check=panic_on_errors) + +# Run dprint fmt +def run_dprint_fmt(panic_on_errors): + print("Running dprint fmt...") + subprocess.run(["dprint", "fmt"], check=panic_on_errors) + +# Parse the rust-toolchain.toml file to get the Rust version +def parse_rust_toolchain_version(): + try: + content = None + with open('rust-toolchain.toml', 'r') as file: + content = file.read() + + # Regex to find the Rust version + match = re.search(r'(?<=channel = ").*(?=")', content) + if not match: + raise Exception("Rust version not found in rust-toolchain.toml.") + + return match.group(0) + + except FileNotFoundError: + raise FileNotFoundError("rust-toolchain.toml not found.") + +# Prepare the Docker container for running turborepo +def prepare_docker_turborepo(script_folder): + rust_toolchain_version = parse_rust_toolchain_version() + + # Remember the current working directory + current_folder = os.getcwd() + + # Change working directory to the script folder + os.chdir(script_folder) + + print(" building Docker container for turborepo...") + try: + # Run the "docker_turborepo/build.sh" script + # cmd: docker build --build-arg RUST_VERSION=1.79 -t turborepo-image -f ./docker_turborepo/Dockerfile . + subprocess.run(["docker", "build", "--build-arg", f"RUST_VERSION={rust_toolchain_version}", "-t", "turborepo-image", "-f", "./docker_turborepo/Dockerfile", "."], check=True) + finally: + # Change working directory back to the current folder + os.chdir(current_folder) + + # Run the docker command for installing dependencies + print(" run install depenencies...") + # cmd: docker run --rm --name turborepo -v {repo_folder}:/home/node/app --user 1000:1000 turborepo-image sh -c "pnpm i" + subprocess.run([ + "docker", "run", "--rm", + "--name", "turborepo", + "-v", f"{current_folder}:/home/node/app", + "--user", f"1000:1000", + "turborepo-image", + "sh", "-c", "pnpm i" + ], check=True) + +# Run pnpm prettier:fix using the turborepo docker container +def run_pnpm_prettier_fix(script_folder, panic_on_errors): + print("Running pnpm prettier:fix...") + + current_folder = os.getcwd() + + prepare_docker_turborepo(script_folder) + + # Run the docker command for prettier:fix + print(" run prettier:fix...") + subprocess.run([ + "docker", "run", "--rm", + "--name", "turborepo", + "-v", f"{current_folder}:/home/node/app", + "--user", f"1000:1000", + "turborepo-image", + "sh", "-c", "pnpm run prettier:fix" + ], check=panic_on_errors) + +# Run pnpm lint:fix using the turborepo docker container +def run_pnpm_lint_fix(script_folder, panic_on_errors): + print("Running pnpm lint:fix...") + + current_folder = os.getcwd() + + prepare_docker_turborepo(script_folder) + + # Run the docker command for building + print(" run turbo build...") + subprocess.run([ + "docker", "run", "--rm", + "--name", "turborepo", + "-v", f"{current_folder}:/home/node/app", + "--user", f"1000:1000", + "turborepo-image", + "sh", "-c", "pnpm turbo build" + ], check=panic_on_errors) + + # Run the docker command for lint:fix + print(" run turbo lint:fix...") + subprocess.run([ + "docker", "run", "--rm", + "--name", "turborepo", + "-v", f"{current_folder}:/home/node/app", + "--user", f"1000:1000", + "turborepo-image", + "sh", "-c", "pnpm turbo lint:fix" + ], check=panic_on_errors) + +# Run all shell commands +def run_shell_commands(commands): + print(f"Applying shell commands in {0}...", os.getcwd()) + for command in commands: + subprocess.run(command, shell=True, check=True) + +# Run cargo clippy +def run_cargo_clippy(panic_on_errors): + print("Running cargo clippy...") + subprocess.run(["cargo", "clippy", "--fix"], check=panic_on_errors) + +# Revert all git patches from patches_folder that have the config entry set to revert +def revert_git_patches(patches_folder, sem_version, patches_config): + print("Reverting git patch files...") + + # Revert each patch file in the patches_folder that has the config entry set to revert + for patch_file in os.listdir(patches_folder): + if patch_file.endswith('.patch'): + patch_name = os.path.splitext(patch_file)[0] + + config_entry = patches_config.get(patch_name, None) + if not config_entry: + # no config entry found, skip + continue + + if not config_entry.get("revert", False): + # not set to revert, skip + continue + + # Skip the patch if it should be skipped based on the config + if skip_entry_by_version(sem_version, config_entry, patch_file): + continue + + patch_path = os.path.join(patches_folder, patch_file) + print(f" Reverting patch: {patch_file}") + subprocess.run(['git', 'apply', '-R', '-C2', '--verbose', patch_path], check=True) + +# Commit changes +def commit_changes(commit_message): + print(f"Committing changes... \"{commit_message}\"") + + # Add all changes to the staging area + subprocess.run(["git", "add", "."], check=True) + + # Check if there are any staged changes + result = subprocess.run(["git", "diff", "--cached", "--quiet"]) + + # If there are staged changes, commit them + if result.returncode != 0: + subprocess.run(["git", "commit", "-q", "-m", commit_message], check=True) + else: + print(" No changes to commit.") + +# Open tool for comparison +def run_compare_tool(compare_tool_binary, compare_tool_arguments, source_folder, target_folder): + print(f"Opening {compare_tool_binary} for comparison between {source_folder} and {target_folder}...") + + cmd = [compare_tool_binary] + if compare_tool_arguments: + cmd = cmd + compare_tool_arguments.split(" ") + cmd = cmd + [source_folder, target_folder] + + subprocess.run(cmd) + +################################################################################ +if __name__ == "__main__": + # Argument parser setup + parser = argparse.ArgumentParser(description="Use the slipstream to catch up...") + parser.add_argument('--config', default="config.json", help="The path to the configuration file.") + parser.add_argument('--verbose', action='store_true', help="Print verbose output.") + parser.add_argument('--repo-url', default="git@github.com:MystenLabs/sui.git", help="The URL to the repository. Can also be a local folder.") + parser.add_argument('--repo-tag', default="mainnet-v1.22.0", help="The tag to checkout in the repository.") + parser.add_argument('--version', default=None, help="The semantic version to filter overwrites/patches if not found in the repo-tag.") + parser.add_argument('--target-folder', default="result", help="The path to the target folder.") + parser.add_argument('--target-branch', default=None, help="The branch to create and checkout in the target folder.") + parser.add_argument('--patches-folder', default="patches", help="The path to the patches folder.") + parser.add_argument('--skip-gitignore', action='store_true', help="Skip the .gitignore file.") + parser.add_argument('--gitignore-path', default="../../.gitignore", help="The path to the .gitignore file.") + parser.add_argument('--commit-between-steps', action='store_true', help="Create a commit between each step.") + parser.add_argument('--panic-on-linter-errors', action='store_true', help="Panic on linter errors (typos, cargo fmt, dprint, pnpm lint, cargo clippy).") + parser.add_argument('--clone-source', action='store_true', help="Clone the upstream repository.") + parser.add_argument('--clone-history', action='store_true', help="Clone the complete history of the upstream repository.") + parser.add_argument('--create-branch', action='store_true', help="Create a new branch in the target folder.") + parser.add_argument('--delete', action='store_true', help="Delete files or folders based on the rules in the config.") + parser.add_argument('--apply-path-renames', action='store_true', help="Apply path renames based on the rules in the config.") + parser.add_argument('--apply-code-renames', action='store_true', help="Apply code renames based on the rules in the config.") + parser.add_argument('--copy-overwrites', action='store_true', help="Copy and overwrite files listed in the config.") + parser.add_argument('--apply-patches', action='store_true', help="Apply git patches from the patches folder.") + parser.add_argument('--run-fix-typos', action='store_true', help="Run script to fix typos.") + parser.add_argument('--run-cargo-fmt', action='store_true', help="Run cargo fmt.") + parser.add_argument('--run-dprint-fmt', action='store_true', help="Run dprint fmt.") + parser.add_argument('--run-pnpm-prettier-fix', action='store_true', help="Run pnpm prettier:fix.") + parser.add_argument('--run-pnpm-lint-fix', action='store_true', help="Run pnpm lint:fix.") + parser.add_argument('--run-shell-commands', action='store_true', help="Run shell commands listed in the config.") + parser.add_argument('--run-cargo-clippy', action='store_true', help="Run cargo clippy.") + parser.add_argument('--compare-results', action='store_true', help="Open tool for comparison.") + parser.add_argument('--compare-source-folder', help="The path to the source folder for comparison.") + parser.add_argument('--compare-tool-binary', default="meld", help="The binary to use for comparison.") + parser.add_argument('--compare-tool-arguments', default="", help="The arguments to use for comparison.") + + # get the folder the script is in + script_folder = os.path.dirname(os.path.realpath(__file__)) + + # get the target folder + args = parser.parse_args() + target_folder = args.target_folder + target_folder = os.path.abspath(os.path.expanduser(target_folder)) + + # Check if the repository URL and tag are set + if args.repo_url is None or args.repo_url == "": + raise ValueError("The repository URL must be set.") + if args.repo_tag is None or args.repo_tag == "": + raise ValueError("The repository tag must be set.") + + # Get the current version from the tag + sem_version = None + try: + sem_version = extract_sem_version(args.repo_tag) + except ValueError as e: + try: + sem_version = extract_sem_version(args.version) + except: + print(f"Version not found in tag: \"{args.repo_tag}\", please provide a valid \"--version\" argument.") + exit(1) + + # get current root folder + source_folder = os.path.abspath(os.path.join(os.getcwd(), "..", "..")) + if args.compare_source_folder: + source_folder = os.path.abspath(args.compare_source_folder) + patches_folder = os.path.abspath(args.patches_folder) + + # Load the configuration + config = load_slipstream_config(args.config) + + if args.clone_source: + # remove the target folder if it exists + if os.path.exists(target_folder): + shutil.rmtree(target_folder) + + # Clone the repository + clone_repo( + args.repo_url, + args.repo_tag, + args.clone_history, + target_folder, + config["clone"]["ignore"]["folders"], + config["clone"]["ignore"]["files"], + config["clone"]["ignore"]["file_types"], + ) + else: + # Change working directory to the target folder + os.chdir(target_folder) + + if args.create_branch: + # Check if the target branch was set, if not, panic + if args.target_branch is None: + raise ValueError("The target branch argument must be set if a new branch should be created.") + + # Create a new branch + subprocess.run(["git", "checkout", "-b", args.target_branch], check=True) + + if args.delete: + # Delete specified crates + delete_crates(config["deletions"]["crates"]) + + # Delete specified folders + delete_folders(config["deletions"]["folders"], args.verbose) + + # Delete specified files + delete_files(config["deletions"]["files"], args.verbose) + + if args.commit_between_steps: + commit_changes("fix: deleted unused folders and files") + + if args.apply_path_renames: + # Apply path renames + apply_path_renames( + config["path_renames"]["ignore"]["folders"], + config["path_renames"]["ignore"]["files"], + config["path_renames"]["ignore"]["file_types"], + config["path_renames"]["patterns"], + args.verbose, + ) + + if args.commit_between_steps: + commit_changes("fix: renamed paths") + + if args.apply_code_renames: + # Apply code renames + apply_code_renames( + config["code_renames"]["ignore"]["folders"], + config["code_renames"]["ignore"]["files"], + config["code_renames"]["ignore"]["file_types"], + config["code_renames"]["patterns"], + args.verbose, + ) + + if args.commit_between_steps: + commit_changes("fix: renamed code") + + if args.copy_overwrites: + copy_overwrites(script_folder, sem_version, config["overwrites"]) + + if args.commit_between_steps: + commit_changes("fix: copied overwrites") + + if args.apply_patches: + # Apply git patch files + apply_git_patches(patches_folder, sem_version, config["patches"]) + + if args.commit_between_steps: + commit_changes("fix: applied patches") + + if args.run_fix_typos: + run_fix_typos(args.panic_on_linter_errors) + + if args.commit_between_steps: + commit_changes("fix: ran typos") + + if args.run_cargo_fmt: + run_cargo_fmt(args.panic_on_linter_errors) + + if args.commit_between_steps: + commit_changes("fix: ran cargo fmt") + + if args.run_dprint_fmt: + run_dprint_fmt(args.panic_on_linter_errors) + + if args.commit_between_steps: + commit_changes("fix: ran dprint fmt") + + if args.run_pnpm_prettier_fix: + run_pnpm_prettier_fix(script_folder, args.panic_on_linter_errors) + + if args.commit_between_steps: + commit_changes("fix: ran pnpm prettier:fix") + + if args.run_pnpm_lint_fix: + run_pnpm_lint_fix(script_folder, args.panic_on_linter_errors) + + if args.commit_between_steps: + commit_changes("fix: ran pnpm lint:fix") + + if args.run_shell_commands: + # Apply shell commands + run_shell_commands(config["commands"]) + + if args.commit_between_steps: + commit_changes("fix: ran additional shell commands") + + if args.run_cargo_clippy: + run_cargo_clippy(args.panic_on_linter_errors) + + if args.commit_between_steps: + commit_changes("fix: ran cargo clippy") + + if args.apply_patches: + # Revert git patch files + revert_git_patches(patches_folder, sem_version, config["patches"]) + + if args.commit_between_steps: + commit_changes("fix: reverted patches") + + if args.compare_results: + # Open tool for comparison + run_compare_tool(args.compare_tool_binary, args.compare_tool_arguments, source_folder, target_folder) From 9856493d6d3533f5c6c4ee2872da1c75fec3c02f Mon Sep 17 00:00:00 2001 From: Marc Espin Date: Fri, 20 Sep 2024 14:28:28 +0200 Subject: [PATCH 08/11] feat(ui-kit): Composable UI Kit components (#2610) --------- Co-authored-by: evavirseda Co-authored-by: cpl121 <100352899+cpl121@users.noreply.github.com> --- .../activity/EpochsActivityTable.tsx | 10 +- .../activity/TransactionsActivityTable.tsx | 10 +- .../checkpoints/CheckpointsTable.tsx | 10 +- .../components/object/ObjectFieldsCard.tsx | 4 +- .../src/components/owned-coins/CoinItem.tsx | 6 +- .../top-packages/TopPackagesTable.tsx | 107 ++++--- .../top-validators-card/TopValidatorsCard.tsx | 47 +-- .../TransactionBlocksForAddress.tsx | 14 +- .../transactions/TransactionsForAddress.tsx | 6 +- .../components/transactions/TxCardUtils.tsx | 110 ------- .../src/components/transactions/index.ts | 1 - .../src/components/ui/InternalLink.tsx | 20 -- apps/explorer/src/components/ui/Link.tsx | 2 +- .../src/components/ui/PlaceholderTable.tsx | 26 +- apps/explorer/src/components/ui/TableCard.tsx | 37 ++- .../components/validator/ValidatorMeta.tsx | 24 +- .../utils/generateCheckpointsTableColumns.tsx | 83 +++++ .../ui/utils/generateEpochsTableColumns.tsx | 99 ++++++ .../generateTableDataFromCheckpointsData.tsx | 75 ----- .../utils/generateTableDataFromEpochsData.tsx | 84 ----- .../generateTransactionsTableColumns.tsx | 91 ++++++ .../utils/generateValidatorsTableColumns.tsx | 196 ++++++++++++ .../ui/utils/generateValidatorsTableData.tsx | 302 ------------------ apps/explorer/src/lib/ui/utils/index.ts | 7 +- .../CheckpointTransactionBlocks.tsx | 8 +- .../explorer/src/pages/epochs/EpochDetail.tsx | 65 +--- .../pages/object-result/views/ObjectView.tsx | 51 +-- .../src/pages/object-result/views/PkgView.tsx | 22 +- .../transaction-summary/ObjectChanges.tsx | 60 ++-- .../TransactionDetails.tsx | 17 +- .../src/pages/validators/Validators.tsx | 15 +- .../atoms/key-value-info/KeyValueInfo.tsx | 85 ++--- .../molecules/display-stats/DisplayStats.tsx | 56 +--- .../molecules/table-cell/TableCell.tsx | 266 ++------------- .../components/molecules/table-cell/index.ts | 1 - .../lib/components/organisms/table/Table.tsx | 154 ++++----- .../organisms/table/TableContext.tsx | 70 +--- apps/ui-kit/src/lib/index.ts | 1 + apps/ui-kit/src/lib/utils/format.ts | 8 + apps/ui-kit/src/lib/utils/index.ts | 4 + .../stories/atoms/KeyValueInfo.stories.tsx | 15 +- .../molecules/DisplayStats.stories.tsx | 9 - .../stories/molecules/TableCell.stories.tsx | 40 +-- .../stories/organisms/Accordion.stories.tsx | 6 +- .../stories/organisms/Table.stories.tsx | 182 ++++++----- .../ui/app/components/explorer-link/index.tsx | 24 +- .../components/ledger/LedgerAccountList.tsx | 72 +++-- .../components/receipt-card/StakeTxnInfo.tsx | 6 +- .../components/receipt-card/UnstakeTxn.tsx | 9 +- .../accounts/ImportLedgerAccountsPage.tsx | 49 ++- .../TransactionDetails/Input.tsx | 17 +- .../ui/app/pages/home/nft-details/index.tsx | 52 +-- .../home/transfer-coin/PreviewTransfer.tsx | 31 +- .../cards/BalanceChanges.tsx | 16 +- .../transaction-summary/cards/GasSummary.tsx | 19 +- .../cards/ObjectChanges.tsx | 104 +++--- .../DelegationDetailCard.tsx | 8 +- .../src/ui/app/staking/stake/UnstakeForm.tsx | 10 +- .../app/staking/stake/ValidatorFormDetail.tsx | 8 +- 59 files changed, 1265 insertions(+), 1666 deletions(-) delete mode 100644 apps/explorer/src/components/transactions/TxCardUtils.tsx create mode 100644 apps/explorer/src/lib/ui/utils/generateCheckpointsTableColumns.tsx create mode 100644 apps/explorer/src/lib/ui/utils/generateEpochsTableColumns.tsx delete mode 100644 apps/explorer/src/lib/ui/utils/generateTableDataFromCheckpointsData.tsx delete mode 100644 apps/explorer/src/lib/ui/utils/generateTableDataFromEpochsData.tsx create mode 100644 apps/explorer/src/lib/ui/utils/generateTransactionsTableColumns.tsx create mode 100644 apps/explorer/src/lib/ui/utils/generateValidatorsTableColumns.tsx delete mode 100644 apps/explorer/src/lib/ui/utils/generateValidatorsTableData.tsx create mode 100644 apps/ui-kit/src/lib/utils/format.ts create mode 100644 apps/ui-kit/src/lib/utils/index.ts diff --git a/apps/explorer/src/components/activity/EpochsActivityTable.tsx b/apps/explorer/src/components/activity/EpochsActivityTable.tsx index 3ac88030c7d..13ebd6083f7 100644 --- a/apps/explorer/src/components/activity/EpochsActivityTable.tsx +++ b/apps/explorer/src/components/activity/EpochsActivityTable.tsx @@ -8,7 +8,7 @@ import { useQuery } from '@tanstack/react-query'; import { useState } from 'react'; import { PlaceholderTable, TableCard, useCursorPagination } from '~/components/ui'; -import { generateTableDataFromEpochsData } from '~/lib/ui'; +import { generateEpochsTableColumns } from '~/lib/ui'; import { numberSuffix } from '~/lib/utils'; const DEFAULT_EPOCHS_LIMIT = 20; @@ -39,7 +39,7 @@ export function EpochsActivityTable({ const { data, isFetching, pagination, isPending, isError } = useCursorPagination(epochMetricsQuery); - const cardData = data ? generateTableDataFromEpochsData(data) : undefined; + const tableColumns = generateEpochsTableColumns(); return (
@@ -48,7 +48,7 @@ export function EpochsActivityTable({ Failed to load Epochs
)} - {isPending || isFetching || !cardData ? ( + {isPending || isFetching || !data?.data ? ( ) : ( { goToFirstPageRef.current(); @@ -58,7 +58,7 @@ export function TransactionsActivityTable({
)}
- {isPending || isFetching || !cardData ? ( + {isPending || isFetching || !data?.data ? ( ) : ( @@ -54,7 +54,7 @@ export function CheckpointsTable({ Failed to load Checkpoints
)} - {isPending || isFetching || !cardData ? ( + {isPending || isFetching || !data?.data ? ( ) : ( diff --git a/apps/explorer/src/components/owned-coins/CoinItem.tsx b/apps/explorer/src/components/owned-coins/CoinItem.tsx index abe73c73824..a79d7cdf12f 100644 --- a/apps/explorer/src/components/owned-coins/CoinItem.tsx +++ b/apps/explorer/src/components/owned-coins/CoinItem.tsx @@ -6,6 +6,7 @@ import { KeyValueInfo } from '@iota/apps-ui-kit'; import { useFormatCoin } from '@iota/core'; import { type CoinStruct } from '@iota/iota-sdk/client'; import { formatAddress } from '@iota/iota-sdk/utils'; +import { ObjectLink } from '../ui'; interface CoinItemProps { coin: CoinStruct; @@ -16,8 +17,9 @@ export default function CoinItem({ coin }: CoinItemProps): JSX.Element { return ( + } fullwidth /> ); diff --git a/apps/explorer/src/components/top-packages/TopPackagesTable.tsx b/apps/explorer/src/components/top-packages/TopPackagesTable.tsx index 05096aecd2d..8aa84ddbf9c 100644 --- a/apps/explorer/src/components/top-packages/TopPackagesTable.tsx +++ b/apps/explorer/src/components/top-packages/TopPackagesTable.tsx @@ -2,62 +2,73 @@ // Modifications Copyright (c) 2024 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -import { TableCellType } from '@iota/apps-ui-kit'; +import { TableCellText, TableCellBase } from '@iota/apps-ui-kit'; import { type MoveCallMetric } from '@iota/iota-sdk/client'; -import { useMemo } from 'react'; +import { type ColumnDef } from '@tanstack/react-table'; -import { createLinkTo, objectToLink, PlaceholderTable, TableCard } from '~/components/ui'; +import { ObjectLink, PlaceholderTable, TableCard } from '~/components/ui'; interface TopPackagesTableProps { data: MoveCallMetric[]; isLoading: boolean; } -export function TopPackagesTable({ data, isLoading }: TopPackagesTableProps) { - const tableData = useMemo( - () => ({ - data: data?.map(([item, count]) => ({ - module: { - type: TableCellType.Link, - label: item.module, - to: createLinkTo(item.package, 'module')({ module: item.module }), - }, - function: { - type: TableCellType.Text, - label: item.function, - }, - package: { - type: TableCellType.Link, - label: item.package, - to: objectToLink({ objectId: item.package }), - }, - count: { - type: TableCellType.Text, - label: Number(count).toLocaleString(), - }, - })), - columns: [ - { - header: 'Package ID', - accessorKey: 'package', - }, - { - header: 'Module', - accessorKey: 'module', - }, - { - header: 'Function', - accessorKey: 'function', - }, - { - header: 'Transactions', - accessorKey: 'count', - }, - ], - }), - [data], - ); +const tableColumns: ColumnDef[] = [ + { + header: 'Module', + id: 'module', + cell({ row: { original: metric } }) { + const item = metric[0]; + return ( + + + {item.module} + + + ); + }, + }, + { + header: 'Function', + id: 'function', + cell({ row: { original: metric } }) { + const item = metric[0]; + return ( + + {item.function} + + ); + }, + }, + { + header: 'Function', + id: 'function', + cell({ row: { original: metric } }) { + const item = metric[0].package; + return ( + + + {item} + + + ); + }, + }, + { + header: 'Count', + id: 'count', + cell({ row: { original: metric } }) { + const item = metric[1]; + return ( + + {item} + + ); + }, + }, +]; +export function TopPackagesTable({ data, isLoading }: TopPackagesTableProps) { if (isLoading) { return ( ; + return ; } diff --git a/apps/explorer/src/components/top-validators-card/TopValidatorsCard.tsx b/apps/explorer/src/components/top-validators-card/TopValidatorsCard.tsx index ee08d4967db..543b13f3077 100644 --- a/apps/explorer/src/components/top-validators-card/TopValidatorsCard.tsx +++ b/apps/explorer/src/components/top-validators-card/TopValidatorsCard.tsx @@ -5,28 +5,12 @@ import { useIotaClientQuery } from '@iota/dapp-kit'; import { ArrowRight12 } from '@iota/icons'; import { Text } from '@iota/ui'; -import { useMemo } from 'react'; import { Banner, Link, PlaceholderTable, TableCard } from '~/components/ui'; -import { generateValidatorsTableData, type ValidatorTableColumn } from '~/lib/ui'; +import { generateValidatorsTableColumns } from '~/lib/ui'; const NUMBER_OF_VALIDATORS = 10; -const VALIDATOR_COLUMNS: ValidatorTableColumn[] = [ - { - header: 'Name', - accessorKey: 'name', - }, - { - header: 'Address', - accessorKey: 'address', - }, - { - header: 'Stake', - accessorKey: 'stake', - }, -]; - type TopValidatorsCardProps = { limit?: number; showIcon?: boolean; @@ -35,23 +19,16 @@ type TopValidatorsCardProps = { export function TopValidatorsCard({ limit, showIcon }: TopValidatorsCardProps): JSX.Element { const { data, isPending, isSuccess, isError } = useIotaClientQuery('getLatestIotaSystemState'); - const tableData = useMemo( - () => - data - ? generateValidatorsTableData({ - validators: [...data.activeValidators].sort(() => 0.5 - Math.random()), - atRiskValidators: [], - validatorEvents: [], - rollingAverageApys: null, - limit, - showValidatorIcon: showIcon, - columns: VALIDATOR_COLUMNS, - }) - : null, - [data, limit, showIcon], - ); + const tableColumns = generateValidatorsTableColumns({ + atRiskValidators: [], + validatorEvents: [], + rollingAverageApys: null, + limit, + showValidatorIcon: showIcon, + includeColumns: ['Name', 'Address', 'Stake'], + }); - if (isError || (!isPending && !tableData?.data.length)) { + if (isError || (!isPending && !data.activeValidators.length)) { return ( Validator data could not be loaded @@ -69,9 +46,9 @@ export function TopValidatorsCard({ limit, showIcon }: TopValidatorsCardProps): /> )} - {isSuccess && tableData && ( + {isSuccess && ( <> - +
diff --git a/apps/explorer/src/components/transaction-blocks-for-address/TransactionBlocksForAddress.tsx b/apps/explorer/src/components/transaction-blocks-for-address/TransactionBlocksForAddress.tsx index 9cec5614b64..790b986dd94 100644 --- a/apps/explorer/src/components/transaction-blocks-for-address/TransactionBlocksForAddress.tsx +++ b/apps/explorer/src/components/transaction-blocks-for-address/TransactionBlocksForAddress.tsx @@ -10,7 +10,6 @@ import { useGetTransactionBlocks, } from '~/hooks/useGetTransactionBlocks'; import { ObjectFilterValue } from '~/lib/enums'; -import { genTableDataFromTxData } from '../transactions/TxCardUtils'; import { ButtonSegment, ButtonSegmentType, @@ -19,6 +18,7 @@ import { SegmentedButtonType, Title, } from '@iota/apps-ui-kit'; +import { generateTransactionsTableColumns } from '~/lib/ui'; type TransactionBlocksForAddressProps = { address: string; @@ -110,10 +110,7 @@ export function TransactionBlocksForAddress({ } as TransactionFilter); const currentPage = currentPageState[filterValue]; - const cardData = - data && data.pages[currentPage] - ? genTableDataFromTxData(data.pages[currentPage].data) - : undefined; + const tableColumns = generateTransactionsTableColumns(); return ( @@ -125,7 +122,10 @@ export function TransactionBlocksForAddress({
- {isPending || isFetching || isFetchingNextPage || !cardData ? ( + {isPending || + isFetching || + isFetchingNextPage || + !data?.pages[currentPage].data ? ( ) : (
- +
)} diff --git a/apps/explorer/src/components/transactions/TransactionsForAddress.tsx b/apps/explorer/src/components/transactions/TransactionsForAddress.tsx index 5095ef24a89..3a50378542d 100644 --- a/apps/explorer/src/components/transactions/TransactionsForAddress.tsx +++ b/apps/explorer/src/components/transactions/TransactionsForAddress.tsx @@ -8,7 +8,7 @@ import { LoadingIndicator, Text } from '@iota/ui'; import { useQuery } from '@tanstack/react-query'; import { Banner, TableCard } from '~/components/ui'; -import { genTableDataFromTxData } from './TxCardUtils'; +import { generateTransactionsTableColumns } from '~/lib/ui'; interface TransactionsForAddressProps { address: string; @@ -44,7 +44,7 @@ export function TransactionsForAddressTable({ ); } - const tableData = genTableDataFromTxData(data); + const tableColumns = generateTransactionsTableColumns(); const hasTxns = data?.length > 0; if (!hasTxns) { @@ -57,7 +57,7 @@ export function TransactionsForAddressTable({ ); } - return ; + return ; } export function TransactionsForAddress({ diff --git a/apps/explorer/src/components/transactions/TxCardUtils.tsx b/apps/explorer/src/components/transactions/TxCardUtils.tsx deleted file mode 100644 index 3264e85b7e1..00000000000 --- a/apps/explorer/src/components/transactions/TxCardUtils.tsx +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) Mysten Labs, Inc. -// Modifications Copyright (c) 2024 IOTA Stiftung -// SPDX-License-Identifier: Apache-2.0 - -import { getTotalGasUsed } from '@iota/core'; -import { type IotaClient, type IotaTransactionBlockResponse } from '@iota/iota-sdk/client'; - -import { type TableCellProps, TableCellType } from '@iota/apps-ui-kit'; -import { addressToLink, transactionToLink } from '../ui'; - -interface TransactionData { - date: TableCellProps; - digest: TableCellProps; - txns: TableCellProps; - gas: TableCellProps; - sender: TableCellProps; -} - -interface TableColumn { - header: string; - accessorKey: keyof TransactionData; -} - -// Generate table data from the transaction data - -export function genTableDataFromTxData(results: IotaTransactionBlockResponse[]): { - data: TransactionData[]; - columns: TableColumn[]; -} { - return { - data: results.map((transaction) => { - const sender = transaction.transaction?.data.sender; - - return { - date: { type: TableCellType.Text, label: transaction.timestampMs?.toString() }, - digest: { - type: TableCellType.Link, - label: transaction.digest, - to: transactionToLink({ digest: transaction.digest }), - }, - txns: { - type: TableCellType.Text, - label: - transaction.transaction?.data.transaction.kind === 'ProgrammableTransaction' - ? transaction.transaction.data.transaction.transactions.length.toString() - : '--', - }, - gas: { - type: TableCellType.Text, - label: transaction.effects - ? getTotalGasUsed(transaction.effects)?.toString() - : '0', - }, - sender: sender - ? { - type: TableCellType.Link, - label: sender, - to: addressToLink({ address: sender }), - } - : { - type: TableCellType.Text, - label: '--', - }, - }; - }), - columns: [ - { - header: 'Digest', - accessorKey: 'digest', - }, - { - header: 'Sender', - accessorKey: 'sender', - }, - { - header: 'Txns', - accessorKey: 'txns', - }, - { - header: 'Gas', - accessorKey: 'gas', - }, - { - header: 'Time', - accessorKey: 'date', - }, - ], - }; -} - -const dedupe = (arr: string[]) => Array.from(new Set(arr)); - -export function getDataOnTxDigests( - client: IotaClient, - transactions: string[], -): Promise { - return client - .multiGetTransactionBlocks({ - digests: dedupe(transactions), - options: { - showInput: true, - showEffects: true, - showEvents: true, - }, - }) - .then((transactions) => - // Remove failed transactions - transactions.filter((item) => item), - ); -} diff --git a/apps/explorer/src/components/transactions/index.ts b/apps/explorer/src/components/transactions/index.ts index 968ecec6a40..1a1cc9b6bea 100644 --- a/apps/explorer/src/components/transactions/index.ts +++ b/apps/explorer/src/components/transactions/index.ts @@ -3,4 +3,3 @@ export * from './ProgTxnBlockCard'; export * from './TransactionsForAddress'; -export * from './TxCardUtils'; diff --git a/apps/explorer/src/components/ui/InternalLink.tsx b/apps/explorer/src/components/ui/InternalLink.tsx index 8628e7f8fff..22dfe4d4ee5 100644 --- a/apps/explorer/src/components/ui/InternalLink.tsx +++ b/apps/explorer/src/components/ui/InternalLink.tsx @@ -51,23 +51,3 @@ export const AddressLink = createInternalLink('address', 'address', (addressOrNs export const ObjectLink = createInternalLink('object', 'objectId', formatAddress); export const TransactionLink = createInternalLink('txblock', 'digest', formatDigest); export const ValidatorLink = createInternalLink('validator', 'address', formatAddress); - -// This will ultimately replace createInternalLink. -export function createLinkTo( - base: string, - propName: T, -): (args: { queryStrings?: Record } & Record) => string { - return ({ [propName]: id, queryStrings = {} }) => { - const queryString = new URLSearchParams(queryStrings).toString(); - const queryStringPrefix = queryString ? `?${queryString}` : ''; - - return `/${base}/${encodeURI(id)}${queryStringPrefix}`; - }; -} - -export const transactionToLink = createLinkTo('txblock', 'digest'); -export const checkpointToLink = createLinkTo('checkpoint', 'digest'); -export const epochToLink = createLinkTo('epoch', 'epoch'); -export const addressToLink = createLinkTo('address', 'address'); -export const checkpointSequenceToLink = createLinkTo('checkpoint', 'sequence'); -export const objectToLink = createLinkTo('object', 'objectId'); diff --git a/apps/explorer/src/components/ui/Link.tsx b/apps/explorer/src/components/ui/Link.tsx index 149439f89c2..db60da72395 100644 --- a/apps/explorer/src/components/ui/Link.tsx +++ b/apps/explorer/src/components/ui/Link.tsx @@ -11,7 +11,7 @@ const linkStyles = cva([], { variants: { variant: { text: 'text-body font-semibold text-steel-dark hover:text-steel-darker active:text-steel disabled:text-gray-60', - mono: 'font-mono text-body text-primary-30 hover:text-primary-20 break-all', + mono: 'text-body text-primary-30 hover:text-primary-20', textHeroDark: 'text-pBody font-medium text-hero-dark hover:text-hero-darkest', }, uppercase: { diff --git a/apps/explorer/src/components/ui/PlaceholderTable.tsx b/apps/explorer/src/components/ui/PlaceholderTable.tsx index deb3f0194ec..6c5f3b07007 100644 --- a/apps/explorer/src/components/ui/PlaceholderTable.tsx +++ b/apps/explorer/src/components/ui/PlaceholderTable.tsx @@ -5,7 +5,7 @@ import { useMemo } from 'react'; import { TableCard } from './TableCard'; -import { TableCellType } from '@iota/apps-ui-kit'; +import { TableCellBase, TableCellPlaceholder } from '@iota/apps-ui-kit'; export interface PlaceholderTableProps { rowCount: number; @@ -13,30 +13,30 @@ export interface PlaceholderTableProps { colHeadings: string[]; } +function PlaceholderCell() { + return ( + + + + ); +} + export function PlaceholderTable({ rowCount, rowHeight, colHeadings, }: PlaceholderTableProps): JSX.Element { const rowEntry = useMemo( - () => - Object.fromEntries( - colHeadings.map((header, index) => [ - `a${index}`, - { - type: TableCellType.Placeholder, - }, - ]), - ), + () => Object.fromEntries(colHeadings.map((index) => [`a${index}`, null])), [colHeadings, rowHeight], ); const loadingTable = useMemo( () => ({ data: new Array(rowCount).fill(rowEntry), - columns: colHeadings.map((header, index) => ({ - header: header, - accessorKey: `a${index}`, + columns: colHeadings.map((header) => ({ + header, + cell: PlaceholderCell, })), }), [rowCount, rowEntry, colHeadings], diff --git a/apps/explorer/src/components/ui/TableCard.tsx b/apps/explorer/src/components/ui/TableCard.tsx index 98572fbcd6f..372ecc0cb36 100644 --- a/apps/explorer/src/components/ui/TableCard.tsx +++ b/apps/explorer/src/components/ui/TableCard.tsx @@ -5,16 +5,15 @@ import { Table, TableBody, - TableBodyRow, - TableCell, - type TableCellProps, TableHeader, TableHeaderCell, - TableHeaderRow, + TableRow, + TableActionButton, type TablePaginationOptions, } from '@iota/apps-ui-kit'; import { type ColumnDef, + flexRender, getCoreRowModel, getSortedRowModel, type RowData, @@ -22,8 +21,8 @@ import { useReactTable, } from '@tanstack/react-table'; import clsx from 'clsx'; -import { useState } from 'react'; -import { useNavigateWithQuery } from './LinkWithQuery'; +import { Fragment, useState } from 'react'; +import { Link } from './Link'; export interface TableCardProps { refetching?: boolean; @@ -48,7 +47,6 @@ export function TableCard({ totalLabel, viewAll, }: TableCardProps): JSX.Element { - const navigate = useNavigateWithQuery(); const [sorting, setSorting] = useState(defaultSorting || []); const table = useReactTable({ @@ -72,19 +70,18 @@ export function TableCard({ row.index)} paginationOptions={paginationOptions} - actionLabel={viewAll ? 'View All' : undefined} supportingLabel={totalLabel} - onActionClick={ - viewAll - ? () => { - navigate(viewAll, {}); - } - : undefined + action={ + viewAll ? ( + + + + ) : undefined } > {table.getHeaderGroups().map((headerGroup) => ( - + {headerGroup.headers.map(({ id, column }) => ( ({ isContentCentered={areHeadersCentered} /> ))} - + ))} {table.getRowModel().rows.map((row) => ( - + {row.getVisibleCells().map((cell) => ( - ()} /> + + {flexRender(cell.column.columnDef.cell, cell.getContext())} + ))} - + ))}
diff --git a/apps/explorer/src/components/validator/ValidatorMeta.tsx b/apps/explorer/src/components/validator/ValidatorMeta.tsx index a426ff23a7b..cc7dd6a0a04 100644 --- a/apps/explorer/src/components/validator/ValidatorMeta.tsx +++ b/apps/explorer/src/components/validator/ValidatorMeta.tsx @@ -6,7 +6,7 @@ import { Badge, BadgeType, KeyValueInfo, Panel } from '@iota/apps-ui-kit'; import { type IotaValidatorSummary } from '@iota/iota-sdk/client'; import toast from 'react-hot-toast'; import { ArrowTopRight } from '@iota/ui-icons'; -import { ImageIcon } from '~/components/ui'; +import { AddressLink, ImageIcon } from '~/components/ui'; type ValidatorMetaProps = { validatorData: IotaValidatorSummary; @@ -60,21 +60,29 @@ export function ValidatorMeta({ validatorData }: ValidatorMetaProps): JSX.Elemen
- + + } + copyText={validatorData.iotaAddress} onCopySuccess={handleOnCopy} /> - +
diff --git a/apps/explorer/src/lib/ui/utils/generateCheckpointsTableColumns.tsx b/apps/explorer/src/lib/ui/utils/generateCheckpointsTableColumns.tsx new file mode 100644 index 00000000000..571257fe9bf --- /dev/null +++ b/apps/explorer/src/lib/ui/utils/generateCheckpointsTableColumns.tsx @@ -0,0 +1,83 @@ +// Copyright (c) Mysten Labs, Inc. +// Modifications Copyright (c) 2024 IOTA Stiftung +// SPDX-License-Identifier: Apache-2.0 + +import { TableCellBase, TableCellText } from '@iota/apps-ui-kit'; +import type { Checkpoint } from '@iota/iota-sdk/client'; +import type { ColumnDef } from '@tanstack/react-table'; +import { CheckpointSequenceLink, CheckpointLink } from '~/components'; + +/** + * Generate table columns renderers for the checkpoints data. + */ +export function generateCheckpointsTableColumns(): ColumnDef[] { + return [ + { + header: 'Digest', + accessorKey: 'digest', + cell: ({ getValue }) => { + const digest = getValue(); + return ( + + {digest}} + /> + + ); + }, + }, + { + header: 'Sequence Number', + accessorKey: 'sequenceNumber', + cell: ({ getValue }) => { + const sequenceNumber = getValue(); + return ( + + + + {sequenceNumber} + + + + ); + }, + }, + { + header: 'Transactions', + accessorKey: 'networkTotalTransactions', + cell: ({ getValue }) => { + const networkTotalTransactions = getValue(); + return ( + + {networkTotalTransactions} + + ); + }, + }, + { + header: 'Time', + accessorKey: 'timestampMs', + cell: ({ getValue }) => { + const timestampMs = getValue(); + return ( + + {timestampMs} + + ); + }, + }, + { + header: 'Transaction Block Count', + accessorKey: 'transactions', + cell: ({ getValue }) => { + const transactions = getValue(); + return ( + + {transactions.length} + + ); + }, + }, + ]; +} diff --git a/apps/explorer/src/lib/ui/utils/generateEpochsTableColumns.tsx b/apps/explorer/src/lib/ui/utils/generateEpochsTableColumns.tsx new file mode 100644 index 00000000000..e7ee623facb --- /dev/null +++ b/apps/explorer/src/lib/ui/utils/generateEpochsTableColumns.tsx @@ -0,0 +1,99 @@ +// Copyright (c) Mysten Labs, Inc. +// Modifications Copyright (c) 2024 IOTA Stiftung +// SPDX-License-Identifier: Apache-2.0 + +import type { EpochMetrics } from '@iota/iota-sdk/client'; +import type { ColumnDef } from '@tanstack/react-table'; +import { TableCellBase, TableCellText } from '@iota/apps-ui-kit'; +import { CheckpointSequenceLink, EpochLink } from '~/components'; +import { getEpochStorageFundFlow } from '~/lib/utils'; + +/** + * Generate table columns renderers for the epochs data. + */ +export function generateEpochsTableColumns(): ColumnDef[] { + return [ + { + header: 'Epoch', + accessorKey: 'epoch', + cell: ({ getValue }) => { + const epoch = getValue(); + return ( + + + {epoch} + + + ); + }, + }, + { + header: 'Transaction Blocks', + accessorKey: 'epochTotalTransactions', + cell: ({ getValue }) => { + const epochTotalTransactions = getValue(); + return ( + + {epochTotalTransactions} + + ); + }, + }, + { + header: 'Stake Rewards', + id: 'stakeRewards', + accessorKey: 'endOfEpochInfo.totalStakeRewardsDistributed', + cell: ({ row: { original: epochMetrics } }) => { + const totalStakeRewardsDistributed = + epochMetrics.endOfEpochInfo?.totalStakeRewardsDistributed; + return ( + + {totalStakeRewardsDistributed ?? '0'} + + ); + }, + }, + { + header: 'Checkpoint Set', + accessorKey: 'firstCheckpointId', + cell: ({ getValue }) => { + const firstCheckpointId = getValue(); + return ( + + + + {firstCheckpointId} + + + + ); + }, + }, + { + header: 'Storage Net Inflow', + accessorKey: 'endOfEpochInfo', + cell: ({ getValue }) => { + const endOfEpochInfo = getValue(); + const storageNetInflow = + getEpochStorageFundFlow(endOfEpochInfo).netInflow?.toString() ?? '--'; + return ( + + {storageNetInflow} + + ); + }, + }, + { + header: 'Epoch End', + id: 'epochEndTimestamp', + cell: ({ row: { original: epochMetrics } }) => { + const epochEndTimestamp = epochMetrics.endOfEpochInfo?.epochEndTimestamp; + return ( + + {epochEndTimestamp || '--'} + + ); + }, + }, + ]; +} diff --git a/apps/explorer/src/lib/ui/utils/generateTableDataFromCheckpointsData.tsx b/apps/explorer/src/lib/ui/utils/generateTableDataFromCheckpointsData.tsx deleted file mode 100644 index 2df2bf21c01..00000000000 --- a/apps/explorer/src/lib/ui/utils/generateTableDataFromCheckpointsData.tsx +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) Mysten Labs, Inc. -// Modifications Copyright (c) 2024 IOTA Stiftung -// SPDX-License-Identifier: Apache-2.0 - -import { type TableCellProps, TableCellType } from '@iota/apps-ui-kit'; -import { type CheckpointPage } from '@iota/iota-sdk/client'; -import { checkpointSequenceToLink, checkpointToLink } from '~/components'; - -interface CheckpointData { - digest: TableCellProps; - time: TableCellProps; - transactions: TableCellProps; - sequenceNumber: TableCellProps; - transactionBlockCount: TableCellProps; -} - -interface TableColumn { - header: string; - accessorKey: keyof CheckpointData; -} - -interface CheckpointTableData { - data: CheckpointData[]; - columns: TableColumn[]; -} - -// Generate table data from the checkpoints data -export function generateTableDataFromCheckpointsData(results: CheckpointPage): CheckpointTableData { - return { - data: - results.data.map((checkpoint) => ({ - digest: { - type: TableCellType.Link, - label: checkpoint.digest, - to: checkpointToLink({ digest: checkpoint.digest }), - }, - time: { type: TableCellType.Text, label: checkpoint.timestampMs }, - transactions: { - type: TableCellType.Text, - label: checkpoint.networkTotalTransactions, - }, - sequenceNumber: { - type: TableCellType.Link, - label: checkpoint.sequenceNumber, - to: checkpointSequenceToLink({ sequence: checkpoint.sequenceNumber }), - }, - transactionBlockCount: { - type: TableCellType.Text, - label: checkpoint.transactions.length.toString(), - }, - })) ?? [], - columns: [ - { - header: 'Digest', - accessorKey: 'digest', - }, - { - header: 'Sequence Number', - accessorKey: 'sequenceNumber', - }, - { - header: 'Transactions', - accessorKey: 'transactions', - }, - { - header: 'Time', - accessorKey: 'time', - }, - { - header: 'Transaction Block Count', - accessorKey: 'transactionBlockCount', - }, - ], - }; -} diff --git a/apps/explorer/src/lib/ui/utils/generateTableDataFromEpochsData.tsx b/apps/explorer/src/lib/ui/utils/generateTableDataFromEpochsData.tsx deleted file mode 100644 index 6fdcd0b54e0..00000000000 --- a/apps/explorer/src/lib/ui/utils/generateTableDataFromEpochsData.tsx +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) Mysten Labs, Inc. -// Modifications Copyright (c) 2024 IOTA Stiftung -// SPDX-License-Identifier: Apache-2.0 - -import { type EpochMetricsPage } from '@iota/iota-sdk/client'; -import { getEpochStorageFundFlow } from '~/lib/utils'; -import { type TableCellProps, TableCellType } from '@iota/apps-ui-kit'; -import { checkpointSequenceToLink, epochToLink } from '~/components'; - -interface EpochData { - epoch: TableCellProps; - transactions: TableCellProps; - stakeRewards: TableCellProps; - checkpointSet: TableCellProps; - storageNetInflow: TableCellProps; - time: TableCellProps; -} - -interface TableColumn { - header: string; - accessorKey: keyof EpochData; -} - -interface EpochTableData { - data: EpochData[]; - columns: TableColumn[]; -} - -// Generate table data from the epochs data -export function generateTableDataFromEpochsData(results: EpochMetricsPage): EpochTableData { - return { - data: results?.data.map((epoch) => ({ - epoch: { - type: TableCellType.Link, - label: epoch.epoch, - to: epochToLink({ epoch: epoch.epoch }), - }, - transactions: { type: TableCellType.Text, label: epoch.epochTotalTransactions }, - stakeRewards: { - type: TableCellType.Text, - label: epoch.endOfEpochInfo?.totalStakeRewardsDistributed ?? '0', - }, - checkpointSet: { - type: TableCellType.Link, - label: epoch.firstCheckpointId, - to: checkpointSequenceToLink({ sequence: epoch.firstCheckpointId }), - }, - storageNetInflow: { - type: TableCellType.Text, - label: getEpochStorageFundFlow(epoch.endOfEpochInfo).netInflow?.toString() ?? '--', - }, - time: { - type: TableCellType.Text, - label: epoch.endOfEpochInfo?.epochEndTimestamp ?? '--', - }, - })), - columns: [ - { - header: 'Epoch', - accessorKey: 'epoch', - }, - { - header: 'Transaction Blocks', - accessorKey: 'transactions', - }, - { - header: 'Stake Rewards', - accessorKey: 'stakeRewards', - }, - { - header: 'Checkpoint Set', - accessorKey: 'checkpointSet', - }, - { - header: 'Storage Net Inflow', - accessorKey: 'storageNetInflow', - }, - { - header: 'Epoch End', - accessorKey: 'time', - }, - ], - }; -} diff --git a/apps/explorer/src/lib/ui/utils/generateTransactionsTableColumns.tsx b/apps/explorer/src/lib/ui/utils/generateTransactionsTableColumns.tsx new file mode 100644 index 00000000000..be6511a7bcd --- /dev/null +++ b/apps/explorer/src/lib/ui/utils/generateTransactionsTableColumns.tsx @@ -0,0 +1,91 @@ +// Copyright (c) Mysten Labs, Inc. +// Modifications Copyright (c) 2024 IOTA Stiftung +// SPDX-License-Identifier: Apache-2.0 + +import { getTotalGasUsed } from '@iota/core'; +import type { IotaTransactionBlockKind, IotaTransactionBlockResponse } from '@iota/iota-sdk/client'; + +import { TableCellBase, TableCellText } from '@iota/apps-ui-kit'; +import type { ColumnDef } from '@tanstack/react-table'; +import { AddressLink, TransactionLink } from '../../../components/ui'; +import { formatAddress } from '@iota/iota-sdk/utils'; + +/** + * Generate table columns renderers for the transactions data. + */ +export function generateTransactionsTableColumns(): ColumnDef[] { + return [ + { + header: 'Digest', + accessorKey: 'digest', + cell: ({ getValue }) => { + const digest = getValue(); + return ( + + {formatAddress(digest)}} + /> + + ); + }, + }, + { + header: 'Sender', + accessorKey: 'transaction.data.sender', + cell: ({ getValue }) => { + const address = getValue(); + return ( + + {formatAddress(address)}} + /> + + ); + }, + }, + { + header: 'Txns', + accessorKey: 'transaction.data.transaction', + cell: ({ getValue }) => { + const transaction = getValue(); + const txns = + transaction.kind === 'ProgrammableTransaction' + ? transaction.transactions.length.toString() + : '--'; + return ( + + {txns} + + ); + }, + }, + { + header: 'Gas', + accessorKey: 'effects', + cell: ({ getValue }) => { + const effects = getValue(); + return ( + + + {effects ? getTotalGasUsed(effects)?.toString() : '0'} + + + ); + }, + }, + { + header: 'Time', + accessorKey: 'timestampMs', + cell: ({ getValue }) => { + const timestampMs = getValue(); + return ( + + {timestampMs?.toString() ?? '--'} + + ); + }, + }, + ]; +} diff --git a/apps/explorer/src/lib/ui/utils/generateValidatorsTableColumns.tsx b/apps/explorer/src/lib/ui/utils/generateValidatorsTableColumns.tsx new file mode 100644 index 00000000000..6875e772638 --- /dev/null +++ b/apps/explorer/src/lib/ui/utils/generateValidatorsTableColumns.tsx @@ -0,0 +1,196 @@ +// Copyright (c) 2024 IOTA Stiftung +// SPDX-License-Identifier: Apache-2.0 + +import { Badge, BadgeType, TableCellBase, TableCellText } from '@iota/apps-ui-kit'; +import type { ColumnDef } from '@tanstack/react-table'; +import { type ApyByValidator, formatPercentageDisplay } from '@iota/core'; + +import { ampli, getValidatorMoveEvent, VALIDATOR_LOW_STAKE_GRACE_PERIOD } from '~/lib'; +import { StakeColumn, ValidatorLink, ImageIcon } from '~/components'; +import type { IotaEvent, IotaValidatorSummary } from '@iota/iota-sdk/dist/cjs/client'; + +interface generateValidatorsTableColumnsArgs { + atRiskValidators: [string, string][]; + validatorEvents: IotaEvent[]; + rollingAverageApys: ApyByValidator | null; + limit?: number; + showValidatorIcon?: boolean; + includeColumns?: string[]; +} + +function ValidatorWithImage({ validator }: { validator: IotaValidatorSummary }) { + return ( + + ampli.clickedValidatorRow({ + sourceFlow: 'Epoch details', + validatorAddress: validator.iotaAddress, + validatorName: validator.name, + }) + } + label={ +
+ + {validator.name} +
+ } + /> + ); +} + +export function generateValidatorsTableColumns({ + atRiskValidators = [], + validatorEvents = [], + rollingAverageApys = null, + showValidatorIcon = true, + includeColumns, +}: generateValidatorsTableColumnsArgs): ColumnDef[] { + let columns: ColumnDef[] = [ + { + header: 'Name', + id: 'name', + cell({ row: { original: validator } }) { + return ( + + {showValidatorIcon ? ( + + ) : ( + {validator.name} + )} + + ); + }, + }, + + { + header: 'Stake', + accessorKey: 'stakingPoolIotaBalance', + cell({ getValue }) { + const stakingPoolIotaBalance = getValue(); + return ( + + + + ); + }, + }, + { + header: 'Proposed next Epoch gas price', + accessorKey: 'nextEpochGasPrice', + cell({ getValue }) { + const nextEpochGasPrice = getValue(); + return ( + + + + ); + }, + }, + { + header: 'APY', + accessorKey: 'iotaAddress', + cell({ getValue }) { + const iotaAddress = getValue(); + const { apy, isApyApproxZero } = rollingAverageApys?.[iotaAddress] ?? { + apy: null, + }; + return ( + + + {formatPercentageDisplay(apy, '--', isApyApproxZero)} + + + ); + }, + }, + { + header: 'Comission', + accessorKey: 'commissionRate', + cell({ getValue }) { + return ( + + {`${Number(getValue()) / 100}%`} + + ); + }, + }, + { + header: 'Last Epoch Rewards', + id: 'lastReward', + cell({ row: { original: validator } }) { + const event = getValidatorMoveEvent(validatorEvents, validator.iotaAddress) as { + pool_staking_reward?: string; + }; + const lastReward = event?.pool_staking_reward ?? null; + return ( + + + {lastReward !== null ? ( + + ) : ( + '--' + )} + + + ); + }, + }, + { + header: 'Voting Power', + accessorKey: 'votingPower', + cell({ getValue }) { + const votingPower = getValue(); + return ( + + + {votingPower ? Number(votingPower) / 100 + '%' : '--'} + + + ); + }, + }, + + { + header: 'Status', + id: 'atRisk', + cell({ row: { original: validator } }) { + const atRiskValidator = atRiskValidators.find( + ([address]) => address === validator.iotaAddress, + ); + const isAtRisk = !!atRiskValidator; + const atRisk = isAtRisk + ? VALIDATOR_LOW_STAKE_GRACE_PERIOD - Number(atRiskValidator[1]) + : null; + + if (atRisk === null) { + return ( + + + + ); + } + + const atRiskText = atRisk > 1 ? `in ${atRisk} epochs` : 'next epoch'; + return ( + + + + ); + }, + }, + ]; + + if (includeColumns) { + columns = columns.filter((col) => + includeColumns.includes(col.header?.toString() as string), + ); + } + + return columns; +} diff --git a/apps/explorer/src/lib/ui/utils/generateValidatorsTableData.tsx b/apps/explorer/src/lib/ui/utils/generateValidatorsTableData.tsx deleted file mode 100644 index 3eabb06a9af..00000000000 --- a/apps/explorer/src/lib/ui/utils/generateValidatorsTableData.tsx +++ /dev/null @@ -1,302 +0,0 @@ -// Copyright (c) 2024 IOTA Stiftung -// SPDX-License-Identifier: Apache-2.0 - -import React from 'react'; -import { - BadgeType, - type TableCellProps, - TableCellType, - TableCellTextColor, -} from '@iota/apps-ui-kit'; -import type { ColumnDef } from '@tanstack/react-table'; -import { type ApyByValidator, formatPercentageDisplay } from '@iota/core'; - -import { ampli, getValidatorMoveEvent, VALIDATOR_LOW_STAKE_GRACE_PERIOD } from '~/lib'; -import { Link, StakeColumn, AddressLink, ImageIcon } from '~/components'; -import type { IotaEvent, IotaValidatorSummary } from '@iota/iota-sdk/dist/cjs/client'; - -interface ValidatorTableRow { - name: TableCellProps; - stake: TableCellProps; - apy: TableCellProps; - nextEpochGasPrice: TableCellProps; - commission: TableCellProps; - address: TableCellProps; - lastReward: TableCellProps; - votingPower: TableCellProps; - atRisk: TableCellProps; -} - -interface GenerateValidatorsTableDataArgs { - validators: IotaValidatorSummary[]; - atRiskValidators: [string, string][]; - validatorEvents: IotaEvent[]; - rollingAverageApys: ApyByValidator | null; - limit?: number; - showValidatorIcon?: boolean; - columns?: ColumnDef[]; -} - -const ALL_VALIDATOR_COLUMNS = [ - { - header: '#', - accessorKey: 'number', - }, - { - header: 'Name', - accessorKey: 'name', - }, - { - header: 'Stake', - accessorKey: 'stake', - }, - { - header: 'Proposed Next Epoch Gas Price', - accessorKey: 'nextEpochGasPrice', - }, - { - header: 'Address', - accessorKey: 'address', - }, - { - header: 'APY', - accessorKey: 'apy', - }, - { - header: 'Commission', - accessorKey: 'commission', - }, - { - header: 'Last Epoch Rewards', - accessorKey: 'lastReward', - }, - { - header: 'Voting Power', - accessorKey: 'votingPower', - }, - { - header: 'Status', - accessorKey: 'atRisk', - }, -] as const; - -type AccessorKey = (typeof ALL_VALIDATOR_COLUMNS)[number]['accessorKey']; - -export interface ValidatorTableColumn { - header: string; - accessorKey: AccessorKey; -} - -const DEFAULT_COLUMNS: ValidatorTableColumn[] = [ - { - header: '#', - accessorKey: 'number', - }, - { - header: 'Name', - accessorKey: 'name', - }, - { - header: 'Stake', - accessorKey: 'stake', - }, - { - header: 'Proposed Next Epoch Gas Price', - accessorKey: 'nextEpochGasPrice', - }, - { - header: 'APY', - accessorKey: 'apy', - }, - { - header: 'Commission', - accessorKey: 'commission', - }, - { - header: 'Last Epoch Rewards', - accessorKey: 'lastReward', - }, - { - header: 'Voting Power', - accessorKey: 'votingPower', - }, - { - header: 'Status', - accessorKey: 'atRisk', - }, -]; - -function generateValidatorAtRisk(atRisk: number | null): TableCellProps { - if (atRisk === null) { - return { - type: TableCellType.Badge, - badgeType: BadgeType.PrimarySoft, - label: 'Active', - }; - } - - const atRiskText = atRisk > 1 ? `in ${atRisk} epochs` : 'next epoch'; - return { - type: TableCellType.Badge, - badgeType: BadgeType.Neutral, - label: `At Risk ${atRiskText}`, - }; -} - -function ValidatorName({ - address, - name, - imageUrl, -}: { - address: string; - name: string; - imageUrl: string; -}) { - return ( - - ampli.clickedValidatorRow({ - sourceFlow: 'Epoch details', - validatorAddress: address, - validatorName: name, - }) - } - > -
- - {name} -
- - ); -} - -function ValidatorAddress({ - address, - name, - limit, -}: { - address: string; - name: string; - limit?: number; -}) { - return ( -
- - ampli.clickedValidatorRow({ - sourceFlow: 'Top validators - validator address', - validatorAddress: address, - validatorName: name, - }) - } - /> -
- ); -} - -export function generateValidatorsTableData({ - validators, - limit, - atRiskValidators = [], - validatorEvents = [], - rollingAverageApys = null, - showValidatorIcon = true, - columns = DEFAULT_COLUMNS, -}: GenerateValidatorsTableDataArgs): { - data: ValidatorTableRow[]; - columns: ColumnDef[]; -} { - return { - data: validators.map((validator, i) => { - const validatorName = validator.name; - const totalStake = validator.stakingPoolIotaBalance; - - const event = getValidatorMoveEvent(validatorEvents, validator.iotaAddress) as { - pool_staking_reward?: string; - }; - - const atRiskValidator = atRiskValidators.find( - ([address]) => address === validator.iotaAddress, - ); - const isAtRisk = !!atRiskValidator; - const lastReward = event?.pool_staking_reward ?? null; - const { apy, isApyApproxZero } = rollingAverageApys?.[validator.iotaAddress] ?? { - apy: null, - }; - - return { - number: { - type: TableCellType.Text, - label: `${i + 1}`, - textColor: TableCellTextColor.Dark, - }, - name: showValidatorIcon - ? { - type: TableCellType.Children, - children: ( - - ), - } - : { - type: TableCellType.Text, - label: validatorName, - textColor: TableCellTextColor.Dark, - }, - stake: { - type: TableCellType.Children, - children: , - noWrap: true, - }, - nextEpochGasPrice: { - type: TableCellType.Children, - children: , - noWrap: true, - }, - apy: { - type: TableCellType.Text, - label: formatPercentageDisplay(apy, '--', isApyApproxZero), - }, - commission: { - type: TableCellType.Text, - label: `${Number(validator.commissionRate) / 100}%`, - }, - lastReward: - lastReward !== null - ? { - type: TableCellType.Children, - children: , - noWrap: true, - } - : { - type: TableCellType.Text, - label: '--', - }, - votingPower: { - type: TableCellType.Text, - label: validator.votingPower ? Number(validator.votingPower) / 100 + '%' : '--', - }, - atRisk: generateValidatorAtRisk( - isAtRisk ? VALIDATOR_LOW_STAKE_GRACE_PERIOD - Number(atRiskValidator[1]) : null, - ), - address: { - type: TableCellType.Children, - children: ( - - ), - }, - }; - }), - columns: columns, - }; -} diff --git a/apps/explorer/src/lib/ui/utils/index.ts b/apps/explorer/src/lib/ui/utils/index.ts index 217017f0324..ba75c5c3c1a 100644 --- a/apps/explorer/src/lib/ui/utils/index.ts +++ b/apps/explorer/src/lib/ui/utils/index.ts @@ -1,7 +1,8 @@ // Copyright (c) 2024 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -export * from './generateTableDataFromCheckpointsData'; -export * from './generateTableDataFromEpochsData'; -export * from './generateValidatorsTableData'; +export * from './generateCheckpointsTableColumns'; +export * from './generateEpochsTableColumns'; +export * from './generateValidatorsTableColumns'; +export * from './generateTransactionsTableColumns'; export * from './objectField'; diff --git a/apps/explorer/src/pages/checkpoints/CheckpointTransactionBlocks.tsx b/apps/explorer/src/pages/checkpoints/CheckpointTransactionBlocks.tsx index 86e4b7d452d..029eb40c032 100644 --- a/apps/explorer/src/pages/checkpoints/CheckpointTransactionBlocks.tsx +++ b/apps/explorer/src/pages/checkpoints/CheckpointTransactionBlocks.tsx @@ -4,12 +4,12 @@ import { useState } from 'react'; -import { genTableDataFromTxData } from '~/components'; import { Pagination, PlaceholderTable, TableCard, useCursorPagination } from '~/components/ui'; import { DEFAULT_TRANSACTIONS_LIMIT, useGetTransactionBlocks, } from '~/hooks/useGetTransactionBlocks'; +import { generateTransactionsTableColumns } from '~/lib/ui'; export function CheckpointTransactionBlocks({ id }: { id: string }): JSX.Element { const [limit, setLimit] = useState(DEFAULT_TRANSACTIONS_LIMIT); @@ -22,11 +22,11 @@ export function CheckpointTransactionBlocks({ id }: { id: string }): JSX.Element const { data, isFetching, pagination, isPending } = useCursorPagination(transactions); - const cardData = data ? genTableDataFromTxData(data.data) : undefined; + const tableColumns = generateTransactionsTableColumns(); return (
- {isPending || isFetching || !cardData ? ( + {isPending || isFetching || !data?.data ? ( ) : (
- +
)}
diff --git a/apps/explorer/src/pages/epochs/EpochDetail.tsx b/apps/explorer/src/pages/epochs/EpochDetail.tsx index e64155ccd9c..35c9553a7ad 100644 --- a/apps/explorer/src/pages/epochs/EpochDetail.tsx +++ b/apps/explorer/src/pages/epochs/EpochDetail.tsx @@ -19,49 +19,11 @@ import { Banner, TableCard } from '~/components/ui'; import { useEnhancedRpcClient } from '~/hooks/useEnhancedRpc'; import { EpochStats, EpochStatsGrid } from './stats/EpochStats'; import { ValidatorStatus } from './stats/ValidatorStatus'; +import { generateValidatorsTableColumns } from '~/lib/ui/utils/generateValidatorsTableColumns'; import cx from 'clsx'; import { TokenStats } from './stats/TokenStats'; import { EpochTopStats } from './stats/EpochTopStats'; import { getEpochStorageFundFlow } from '~/lib/utils'; -import { - generateValidatorsTableData, - type ValidatorTableColumn, -} from '~/lib/ui/utils/generateValidatorsTableData'; - -export const VALIDATOR_COLUMNS: ValidatorTableColumn[] = [ - { - header: 'Name', - accessorKey: 'name', - }, - { - header: 'Stake', - accessorKey: 'stake', - }, - { - header: 'Proposed next Epoch gas price', - accessorKey: 'nextEpochGasPrice', - }, - { - header: 'APY', - accessorKey: 'apy', - }, - { - header: 'Commission', - accessorKey: 'commission', - }, - { - header: 'Last Epoch Reward', - accessorKey: 'lastReward', - }, - { - header: 'Voting Power', - accessorKey: 'votingPower', - }, - { - header: 'Status', - accessorKey: 'atRisk', - }, -]; enum EpochTabs { Checkpoints = 'checkpoints', @@ -89,17 +51,25 @@ export default function EpochDetail() { [systemState, epochData], ); - const validatorsTable = useMemo(() => { + const tableColumns = useMemo(() => { if (!epochData?.validators || epochData.validators.length === 0) return null; // todo: enrich this historical validator data when we have // at-risk / pending validators for historical epochs - return generateValidatorsTableData({ - validators: [...epochData.validators].sort(() => 0.5 - Math.random()), + return generateValidatorsTableColumns({ atRiskValidators: [], validatorEvents: [], rollingAverageApys: null, - columns: VALIDATOR_COLUMNS, showValidatorIcon: true, + includeColumns: [ + 'Name', + 'Stake', + 'Proposed next Epoch gas price', + 'APY', + 'Comission', + 'Last Epoch Rewards', + 'Voting Power', + 'Status', + ], }); }, [epochData]); @@ -116,6 +86,8 @@ export default function EpochDetail() { /> ); + const tableData = [...epochData.validators].sort(() => 0.5 - Math.random()); + const { fundInflow, fundOutflow, netInflow } = getEpochStorageFundFlow( epochData.endOfEpochInfo, ); @@ -214,11 +186,8 @@ export default function EpochDetail() { initialLimit={20} /> ) : null} - {activeTabId === EpochTabs.Validators && validatorsTable ? ( - + {activeTabId === EpochTabs.Validators && tableData && tableColumns ? ( + ) : null}
diff --git a/apps/explorer/src/pages/object-result/views/ObjectView.tsx b/apps/explorer/src/pages/object-result/views/ObjectView.tsx index af34eb65f7d..3938b3d01f9 100644 --- a/apps/explorer/src/pages/object-result/views/ObjectView.tsx +++ b/apps/explorer/src/pages/object-result/views/ObjectView.tsx @@ -14,8 +14,8 @@ import { } from '@iota/iota-sdk/utils'; import { useQuery } from '@tanstack/react-query'; import clsx from 'clsx'; -import { useEffect, useState } from 'react'; -import { ObjectVideoImage } from '~/components/ui'; +import { type PropsWithChildren, type ReactNode, useEffect, useState } from 'react'; +import { AddressLink, Link, ObjectLink, ObjectVideoImage, TransactionLink } from '~/components/ui'; import { useResolveVideo } from '~/hooks/useResolveVideo'; import { extractName, @@ -82,8 +82,7 @@ function ObjectIdCard({ objectId }: ObjectIdCardProps): JSX.Element { return ( {formatAddress(objectId)}} /> ); } @@ -118,8 +117,11 @@ function TypeCard({ objectType }: TypeCardCardProps): JSX.Element { return ( + {normalizedStructTag} + + } tooltipText={objectType} tooltipPosition={TooltipPosition.Right} /> @@ -142,8 +144,7 @@ function LastTxBlockCard({ digest }: LastTxBlockCardProps): JSX.Element { return ( {formatAddress(digest)}} /> ); } @@ -164,24 +165,28 @@ function OwnerCard({ objOwner }: OwnerCardProps): JSX.Element | null { : formatAddress(objOwner.AddressOwner); } - function getOwnerLink(objOwner: ObjectOwner): string | null { - if (objOwner !== 'Immutable' && !('Shared' in objOwner)) { - return 'ObjectOwner' in objOwner - ? `/object/${objOwner.ObjectOwner}` - : `/address/${objOwner.AddressOwner}`; - } - return null; - } - return ( {getOwner(objOwner)}} /> ); } +function OwnerLink({ + children, + objOwner, +}: PropsWithChildren<{ objOwner: ObjectOwner }>): ReactNode { + if (objOwner !== 'Immutable' && !('Shared' in objOwner)) { + if ('ObjectOwner' in objOwner) { + return {children}; + } else { + return {children}; + } + } + return null; +} + interface StorageRebateCardProps { storageRebate: string; } @@ -298,13 +303,15 @@ export function ObjectView({ data }: ObjectViewProps): JSX.Element {
{display && display.link && ( - + {display.link}} + /> )} {display && display.project_url && ( {display.project_url}} /> )}
diff --git a/apps/explorer/src/pages/object-result/views/PkgView.tsx b/apps/explorer/src/pages/object-result/views/PkgView.tsx index 4cfe6a418a2..9f0780064eb 100644 --- a/apps/explorer/src/pages/object-result/views/PkgView.tsx +++ b/apps/explorer/src/pages/object-result/views/PkgView.tsx @@ -7,7 +7,13 @@ import { LoadingIndicator } from '@iota/ui'; import { useState } from 'react'; import { type Direction } from 'react-resizable-panels'; -import { ErrorBoundary, PkgModulesWrapper, TransactionBlocksForAddress } from '~/components'; +import { + AddressLink, + ErrorBoundary, + ObjectLink, + PkgModulesWrapper, + TransactionBlocksForAddress, +} from '~/components'; import { getOwnerStr, trimStdLibPrefix } from '~/lib/utils'; import { type DataType } from '../ObjectResultType'; @@ -77,15 +83,19 @@ function PkgView({ data }: PkgViewProps): JSX.Element {
} /> - + + {viewedData?.publisherAddress && ( + } /> )}
diff --git a/apps/explorer/src/pages/transaction-result/transaction-summary/ObjectChanges.tsx b/apps/explorer/src/pages/transaction-result/transaction-summary/ObjectChanges.tsx index c4b8af67ef1..ae72d0876c2 100644 --- a/apps/explorer/src/pages/transaction-result/transaction-summary/ObjectChanges.tsx +++ b/apps/explorer/src/pages/transaction-result/transaction-summary/ObjectChanges.tsx @@ -46,36 +46,38 @@ enum ItemLabel { const DEFAULT_ITEMS_TO_SHOW = 5; function Item({ label, packageId, moduleName, typeName }: ItemProps): JSX.Element | null { - function getValueData() { - switch (label) { - case ItemLabel.Package: - return { - text: packageId ? formatAddress(packageId) : '', - link: packageId ? `/object/${packageId}` : undefined, - }; - case ItemLabel.Module: - return { - text: moduleName || '', - link: - packageId && moduleName - ? `/object/${packageId}?module=${moduleName}` - : undefined, - }; - case ItemLabel.Type: - return { - text: typeName || '', - link: undefined, - }; - default: - return { - text: '', - link: undefined, - }; - } + switch (label) { + case ItemLabel.Package: + return ( + + } + fullwidth + /> + ); + case ItemLabel.Module: + return ( + + } + fullwidth + /> + ); + case ItemLabel.Type: + return ; + default: + return ; } - const { text: valueText, link: valueLink } = getValueData(); - - return ; } interface ObjectDetailPanelProps { diff --git a/apps/explorer/src/pages/transaction-result/transaction-summary/TransactionDetails.tsx b/apps/explorer/src/pages/transaction-result/transaction-summary/TransactionDetails.tsx index 8261528fd21..1dc9a856e9d 100644 --- a/apps/explorer/src/pages/transaction-result/transaction-summary/TransactionDetails.tsx +++ b/apps/explorer/src/pages/transaction-result/transaction-summary/TransactionDetails.tsx @@ -2,8 +2,9 @@ // Modifications Copyright (c) 2024 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -import { DisplayStats } from '@iota/apps-ui-kit'; +import { DisplayStats, truncate } from '@iota/apps-ui-kit'; import { formatDate } from '@iota/core'; +import { AddressLink, CheckpointSequenceLink, EpochLink } from '~/components'; interface TransactionDetailsProps { sender?: string; @@ -23,23 +24,23 @@ export function TransactionDetails({ {sender && ( {truncate(sender)}} /> )} {checkpoint && ( + {Number(checkpoint).toLocaleString()} + + } /> )} {executedEpoch && ( {executedEpoch}} /> )} diff --git a/apps/explorer/src/pages/validators/Validators.tsx b/apps/explorer/src/pages/validators/Validators.tsx index b3874e85d74..52255bff5c2 100644 --- a/apps/explorer/src/pages/validators/Validators.tsx +++ b/apps/explorer/src/pages/validators/Validators.tsx @@ -20,7 +20,7 @@ import { TableCard, TableHeader, } from '~/components'; -import { generateValidatorsTableData } from '~/lib/ui/utils/generateValidatorsTableData'; +import { generateValidatorsTableColumns } from '~/lib/ui'; function ValidatorPageResult(): JSX.Element { const { data, isPending, isSuccess, isError } = useIotaClientQuery('getLatestIotaSystemState'); @@ -72,10 +72,11 @@ function ValidatorPageResult(): JSX.Element { return totalRewards; }, [validatorEvents]); - const validatorsTable = useMemo(() => { + const tableData = data ? [...data.activeValidators].sort(() => 0.5 - Math.random()) : []; + + const tableColumns = useMemo(() => { if (!data || !validatorEvents) return null; - return generateValidatorsTableData({ - validators: [...data.activeValidators].sort(() => 0.5 - Math.random()), + return generateValidatorsTableColumns({ atRiskValidators: data.atRiskValidators, validatorEvents, rollingAverageApys: validatorsApy || null, @@ -151,10 +152,10 @@ function ValidatorPageResult(): JSX.Element { /> )} - {isSuccess && validatorsTable?.data && ( + {isSuccess && tableData && tableColumns && ( )} diff --git a/apps/ui-kit/src/lib/components/atoms/key-value-info/KeyValueInfo.tsx b/apps/ui-kit/src/lib/components/atoms/key-value-info/KeyValueInfo.tsx index a31bcb170c6..c484febd047 100644 --- a/apps/ui-kit/src/lib/components/atoms/key-value-info/KeyValueInfo.tsx +++ b/apps/ui-kit/src/lib/components/atoms/key-value-info/KeyValueInfo.tsx @@ -1,7 +1,7 @@ // Copyright (c) 2024 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -import React from 'react'; +import React, { ReactNode } from 'react'; import cx from 'classnames'; import { Copy, Info } from '@iota/ui-icons'; import { ValueSize } from './keyValue.enums'; @@ -14,13 +14,9 @@ interface KeyValueProps { */ keyText: string; /** - * The value text of the KeyValue. + * The value of the KeyValue. */ - valueText: string; - /** - * The value link of the KeyValue. - */ - valueLink?: string; + value: ReactNode; /** * The tooltip position. */ @@ -53,10 +49,6 @@ interface KeyValueProps { * The onCopyError event of the KeyValue (optional). */ onCopyError?: (e: unknown, text: string) => void; - /** - * Has copy icon (optional). - */ - isCopyable?: boolean; /** * Full width KeyValue (optional). */ @@ -65,17 +57,15 @@ interface KeyValueProps { export function KeyValueInfo({ keyText, - valueText, + value, tooltipPosition, tooltipText, supportingLabel, - valueLink, size = ValueSize.Small, isTruncated = false, - copyText = valueText, + copyText, onCopySuccess, onCopyError, - isCopyable, fullwidth, }: KeyValueProps): React.JSX.Element { async function handleCopyClick(event: React.MouseEvent) { @@ -83,12 +73,14 @@ export function KeyValueInfo({ return; } - try { - await navigator.clipboard.writeText(copyText); - onCopySuccess?.(event, copyText); - } catch (error) { - console.error('Failed to copy:', error); - onCopyError?.(error, copyText); + if (copyText) { + try { + await navigator.clipboard.writeText(copyText); + onCopySuccess?.(event, copyText); + } catch (error) { + console.error('Failed to copy:', error); + onCopyError?.(error, copyText); + } } } @@ -116,42 +108,27 @@ export function KeyValueInfo({ truncate: isTruncated, })} > - {valueLink ? ( - - {valueText} - - ) : ( - <> - - {valueText} - - {supportingLabel && ( - - {supportingLabel} - + + {value} + + {supportingLabel && ( + + > + {supportingLabel} + )}
- {isCopyable && ( + {copyText && ( diff --git a/apps/ui-kit/src/lib/components/molecules/display-stats/DisplayStats.tsx b/apps/ui-kit/src/lib/components/molecules/display-stats/DisplayStats.tsx index 53fbac6a7ad..248bbe8f506 100644 --- a/apps/ui-kit/src/lib/components/molecules/display-stats/DisplayStats.tsx +++ b/apps/ui-kit/src/lib/components/molecules/display-stats/DisplayStats.tsx @@ -1,7 +1,7 @@ // Copyright (c) 2024 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -import React from 'react'; +import React, { ReactNode } from 'react'; import { Tooltip, TooltipPosition } from '../../atoms'; import { Info } from '@iota/ui-icons'; import { DisplayStatsType, DisplayStatsSize } from './display-stats.enums'; @@ -19,7 +19,7 @@ interface DisplayStatsProps { /** * The label of the stats. */ - label: string; + label: ReactNode; /** * The tooltip position. */ @@ -31,7 +31,7 @@ interface DisplayStatsProps { /** * The value of the stats. */ - value: string; + value: ReactNode; /** * The supporting label of the stats (optional). */ @@ -48,18 +48,6 @@ interface DisplayStatsProps { * Add icon to the right of the label. */ icon?: React.ReactNode; - /** - * The value link of the stats. - */ - valueLink?: string; - /** - * The value link is external. - */ - isExternalLink?: boolean; - /** - * The value is truncated - */ - isTruncated?: boolean; } export function DisplayStats({ @@ -71,21 +59,14 @@ export function DisplayStats({ type = DisplayStatsType.Default, size = DisplayStatsSize.Default, icon, - valueLink, - isExternalLink = false, - isTruncated = false, }: DisplayStatsProps): React.JSX.Element { const backgroundClass = BACKGROUND_CLASSES[type]; const sizeClass = SIZE_CLASSES[size]; const textClass = TEXT_CLASSES[type]; - const valueTextClass = VALUE_TEXT_CLASSES[size]; - const labelTextClass = LABEL_TEXT_CLASSES[size]; + const valueClass = VALUE_TEXT_CLASSES[size]; + const labelClass = LABEL_TEXT_CLASSES[size]; const supportingLabelTextClass = SUPPORTING_LABEL_TEXT_CLASSES[size]; - function truncate(value: string, startLength: number, endLength: number): string { - return value.length > startLength + endLength && isTruncated - ? `${value.slice(0, startLength)}...${value.slice(-endLength)}` - : value; - } + return (
- {label} + {label} {tooltipText && ( @@ -111,24 +92,11 @@ export function DisplayStats({ {icon && {icon}}
- {valueLink ? ( - - {truncate(value, 6, 6)} - - ) : ( - <> - {truncate(value, 6, 6)} - {supportingLabel && ( - - {supportingLabel} - - )} - + {value} + {supportingLabel && ( + + {supportingLabel} + )}
diff --git a/apps/ui-kit/src/lib/components/molecules/table-cell/TableCell.tsx b/apps/ui-kit/src/lib/components/molecules/table-cell/TableCell.tsx index 19d9045c2f6..6b9d7e7a345 100644 --- a/apps/ui-kit/src/lib/components/molecules/table-cell/TableCell.tsx +++ b/apps/ui-kit/src/lib/components/molecules/table-cell/TableCell.tsx @@ -1,10 +1,8 @@ // Copyright (c) 2024 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -import React from 'react'; -import { BadgeType, Badge, Checkbox, ButtonUnstyled } from '../../atoms'; -import { TableCellType, TableCellTextColor } from './table-cell.enums'; -import { Copy } from '@iota/ui-icons'; +import { PropsWithChildren } from 'react'; import cx from 'classnames'; + interface TableCellBaseProps { /** * The label of the cell. @@ -18,239 +16,17 @@ interface TableCellBaseProps { * Whether the cell content should be centered. */ isContentCentered?: boolean; - /** - * The color of the text. - */ - textColor?: TableCellTextColor; /** * Whether to not wrap the text in the cell. */ noWrap?: boolean; } -type TableCellText = { - /** - * The type of the cell. - */ - type: TableCellType.Text; - /** - * The supporting label of the cell. - */ - supportingLabel?: string; -}; - -type TableCellTextToCopy = { - /** - * The type of the cell. - */ - type: TableCellType.TextToCopy; - /** - * The text to be copied. - */ - textToCopy: string; - /** - * The onCopySuccess event of the Address (optional). - */ - onCopySuccess?: (e: React.MouseEvent, text: string) => void; - /** - * The onCopyError event of the Address (optional). - */ - onCopyError?: (e: unknown, text: string) => void; -}; - -type TableCellBadge = { - /** - * The type of the cell. - */ - type: TableCellType.Badge; - /** - * The type of the badge - */ - badgeType: BadgeType; -}; - -type TableCellAvatarText = { - /** - * The type of the cell. - */ - type: TableCellType.AvatarText; - /** - * The leading element of the cell. - */ - leadingElement: React.JSX.Element; -}; - -type TableCellCheckbox = { - /** - * The type of the cell. - */ - type: TableCellType.Checkbox; - /** - * The state of the checkbox. - */ - isChecked?: boolean; - /** - * The function to call when the checkbox is clicked. - */ - onChange?: (e: React.ChangeEvent) => void; - /** - * If true the checkbox will override the styles to show an indeterminate state. - */ - isIndeterminate?: boolean; -}; - -type TableCellPlaceholder = { - /** - * The type of the cell. - */ - type: TableCellType.Placeholder; -}; - -type TableCellLink = { - /** - * The type of the cell. - */ - type: TableCellType.Link; - /** - * The link to navigate to. - */ - to: string; - /** - * If true the link will open in a new tab. - */ - isExternal?: boolean; -}; - -type TableCellChildren = { - /** - * The type of the cell. - */ - type: TableCellType.Children; - /** - * The children of the cell. - */ - children?: React.ReactNode; -}; - -export type TableCellProps = TableCellBaseProps & - ( - | TableCellText - | TableCellTextToCopy - | TableCellBadge - | TableCellAvatarText - | TableCellCheckbox - | TableCellPlaceholder - | TableCellLink - | TableCellChildren - ); - -export function TableCell(props: TableCellProps): JSX.Element { - const { - type, - label, - hasLastBorderNoneClass, - isContentCentered, - textColor: textColorClass = TableCellTextColor.Default, - } = props; - - const textSizeClass = 'text-body-md'; - - async function handleCopyClick(event: React.MouseEvent) { - if (props.type === TableCellType.TextToCopy) { - try { - await navigator.clipboard.writeText(props.textToCopy); - props.onCopySuccess?.(event, props.textToCopy); - } catch (error) { - console.error('Failed to copy:', error); - props.onCopyError?.(error, props.textToCopy); - } - } - } - - const Cell = () => { - const { noWrap } = props; - switch (type) { - case TableCellType.Text: - const { supportingLabel } = props; - return ( -
- - {label} - - {supportingLabel && ( - - {supportingLabel} - - )} -
- ); - case TableCellType.TextToCopy: - return ( -
- {label} - - - -
- ); - case TableCellType.Badge: - const { badgeType } = props; - return ; - case TableCellType.AvatarText: - const { leadingElement } = props; - - return ( -
- {leadingElement} - {label} -
- ); - case TableCellType.Checkbox: - const { isChecked, onChange, isIndeterminate } = props; - return ( - - ); - case TableCellType.Placeholder: - return ( -
- ); - - case TableCellType.Link: - const { to, isExternal } = props; - return ( - - {label} - - ); - case TableCellType.Children: - const { children } = props; - return children; - default: - return null; - } - }; - +export function TableCellBase({ + children, + hasLastBorderNoneClass, + isContentCentered, +}: PropsWithChildren) { return ( - + {children} ); } + +export interface TableCellTextProps { + supportingLabel?: string; +} + +export function TableCellText({ + children, + supportingLabel, +}: PropsWithChildren) { + return ( +
+ {children} + {supportingLabel && ( + + {supportingLabel} + + )} +
+ ); +} + +export function TableCellPlaceholder() { + return ( +
+ ); +} diff --git a/apps/ui-kit/src/lib/components/molecules/table-cell/index.ts b/apps/ui-kit/src/lib/components/molecules/table-cell/index.ts index 139d1e9e114..d3f657bb0e1 100644 --- a/apps/ui-kit/src/lib/components/molecules/table-cell/index.ts +++ b/apps/ui-kit/src/lib/components/molecules/table-cell/index.ts @@ -2,4 +2,3 @@ // SPDX-License-Identifier: Apache-2.0 export * from './TableCell'; -export * from './table-cell.enums'; diff --git a/apps/ui-kit/src/lib/components/organisms/table/Table.tsx b/apps/ui-kit/src/lib/components/organisms/table/Table.tsx index dfcbd50867f..36d567330f7 100644 --- a/apps/ui-kit/src/lib/components/organisms/table/Table.tsx +++ b/apps/ui-kit/src/lib/components/organisms/table/Table.tsx @@ -1,10 +1,18 @@ // Copyright (c) 2024 IOTA Stiftung // SPDX-License-Identifier: Apache-2.0 -import React, { PropsWithChildren } from 'react'; +import { PropsWithChildren, ReactNode } from 'react'; import cx from 'classnames'; -import { TableRowType, TableProvider, useTableContext, TableProviderProps } from './TableContext'; -import { Button, ButtonSize, ButtonType, TableCell, TableCellType, TableHeaderCell } from '@/lib'; +import { TableProvider, useTableContext } from './TableContext'; +import { + Button, + ButtonProps, + ButtonSize, + ButtonType, + Checkbox, + TableCellBase, + TableHeaderCell, +} from '@/lib'; import { ArrowLeft, DoubleArrowLeft, ArrowRight, DoubleArrowRight } from '@iota/ui-icons'; export interface TablePaginationOptions { @@ -48,17 +56,17 @@ export type TableProps = { */ paginationOptions?: TablePaginationOptions; /** - * The label of the action button. + * The action component.. */ - actionLabel?: string; - /** - * On Action button click. - */ - onActionClick?: () => void; + action?: ReactNode; /** * The supporting label of the table. */ supportingLabel?: string; + /** + * Numeric indexes of the selected rows. + */ + selectedRowIndexes?: Set; /** * Numeric indexes of all the rows. */ @@ -67,29 +75,21 @@ export type TableProps = { export function Table({ paginationOptions, - actionLabel, - onActionClick, + action, supportingLabel, - hasCheckboxColumn, - onRowCheckboxChange, - onHeaderCheckboxChange, + selectedRowIndexes = new Set(), rowIndexes, children, -}: PropsWithChildren): JSX.Element { +}: PropsWithChildren): JSX.Element { return ( - +
{children}
{paginationOptions && ( @@ -124,16 +124,7 @@ export function Table({ />
)} - {actionLabel && ( -
-
- )} + {action} {supportingLabel && ( {supportingLabel} @@ -145,84 +136,73 @@ export function Table({ ); } -export function TableHeader({ children }: PropsWithChildren): JSX.Element { - return {children}; -} - -export function TableHeaderRow({ children }: PropsWithChildren): JSX.Element { - return {children}; +export function TableActionButton(props: PropsWithChildren) { + return