diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 740894b7edb..eb1f7b7c52f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -352,7 +352,7 @@ jobs: uses: actions/download-artifact@v4 continue-on-error: true with: - name: ${{ matrix.name }}-e2e-test-results-${{ matrix.group }}-${{ env.PREVIOUS_ATTEMPT }} + name: ${{ matrix.name }}-e2e-test-results-${{ matrix.os }}-${{ matrix.group }}-${{ env.PREVIOUS_ATTEMPT }} path: workspaces/${{ matrix.path }}/test-results - name: install packages @@ -413,7 +413,7 @@ jobs: uses: actions/upload-artifact@v4 if: always() with: - name: ${{ matrix.name }}I-e2e-test-results-${{ matrix.os }}-${{ matrix.group }}-${{ github.run_attempt }} + name: ${{ matrix.name }}-e2e-test-results-${{ matrix.os }}-${{ matrix.group }}-${{ github.run_attempt }} path: workspaces/${{ matrix.path }}/test-results/** retention-days: 5 include-hidden-files: true diff --git a/.vscode/launch.json b/.vscode/launch.json index 3c0397eee7a..c96e935da9b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -34,7 +34,8 @@ "LSDEBUG": "false", "WEB_VIEW_WATCH_MODE": "true", "WEB_VIEW_DEV_HOST": "http://localhost:9000", - "BALLERINA_STAGE_CENTRAL": "false" + "BALLERINA_STAGE_CENTRAL": "false", + "TRACE_WEB_VIEW_DEV_HOST": "http://localhost:9001" }, "outFiles": [ "${workspaceFolder}/workspaces/ballerina/ballerina-extension/dist/**/*.js", diff --git a/.vscode/tasks.json b/.vscode/tasks.json index b769704d735..b9523f5c3a6 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,6 +1,16 @@ { "version": "2.0.0", "tasks": [ + { + "label": "ballerina-extension: test-compile", + "type": "shell", + "options": { + "cwd": "${workspaceFolder}/workspaces/ballerina/ballerina-extension" + }, + "command": "pnpm", + "args": ["run", "test-compile"], + "problemMatcher": ["$tsc"] + }, { "label": "watch-all", "dependsOn": ["watch-ballerina", "watch-bi"] diff --git a/common/config/rush/.pnpmfile.cjs b/common/config/rush/.pnpmfile.cjs index 60edcb80b49..62e4429631d 100644 --- a/common/config/rush/.pnpmfile.cjs +++ b/common/config/rush/.pnpmfile.cjs @@ -57,6 +57,12 @@ module.exports = { if (pkg.dependencies['form-data']) { pkg.dependencies['form-data'] = '^4.0.4'; } + if (pkg.dependencies['min-document']) { + pkg.dependencies['min-document'] = '^2.19.1'; + } + if (pkg.dependencies['js-yaml']) { + pkg.dependencies['js-yaml'] = '^4.1.1'; + } } if (pkg.devDependencies) { @@ -97,6 +103,9 @@ module.exports = { if (pkg.devDependencies['form-data']) { pkg.devDependencies['form-data'] = '^4.0.4'; } + if (pkg.devDependencies['min-document']) { + pkg.devDependencies['min-document'] = '^2.19.1'; + } } return pkg; diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 37747d85984..e5f665a77d4 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -53,8 +53,8 @@ importers: specifier: ~0.4.12 version: 0.4.14 '@vscode/vsce': - specifier: ~2.21.0 - version: 2.21.1 + specifier: ^3.7.0 + version: 3.7.0 '@wso2/api-designer-core': specifier: workspace:* version: link:../api-designer-core @@ -72,7 +72,7 @@ importers: version: 0.5.16 axios: specifier: ~1.12.0 - version: 1.12.0 + version: 1.12.2 copyfiles: specifier: ^2.4.1 version: 2.4.1 @@ -80,8 +80,8 @@ importers: specifier: ^0.4.4 version: 0.4.4 js-yaml: - specifier: ~4.1.0 - version: 4.1.0 + specifier: ^4.1.1 + version: 4.1.1 json-schema: specifier: 0.4.0 version: 0.4.0 @@ -96,10 +96,10 @@ importers: version: 2.6.13(encoding@0.1.13) node-loader: specifier: ~2.0.0 - version: 2.0.0(webpack@5.101.0) + version: 2.0.0(webpack@5.103.0) portfinder: specifier: ^1.0.32 - version: 1.0.37 + version: 1.0.38 to-json-schema: specifier: 0.2.5 version: 0.2.5 @@ -121,7 +121,7 @@ importers: version: 16.18.126 '@types/vscode': specifier: ^1.81.0 - version: 1.102.0 + version: 1.106.1 '@typescript-eslint/eslint-plugin': specifier: ^6.4.1 version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) @@ -139,16 +139,16 @@ importers: version: 5.0.10 ts-loader: specifier: ^9.4.4 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) typescript: specifier: 5.8.3 version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@5.1.4) + version: 5.103.0(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 - version: 5.1.4(webpack@5.101.0) + version: 5.1.4(webpack@5.103.0) ../../workspaces/api-designer/api-designer-rpc-client: dependencies: @@ -206,10 +206,10 @@ importers: version: 3.3.4(react-hook-form@7.56.4(react@18.2.0)) '@mdxeditor/editor': specifier: ~3.14.0 - version: 3.14.0(@codemirror/language@6.11.2)(@lezer/highlight@1.2.1)(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 3.14.0(@codemirror/language@6.11.3)(@lezer/highlight@1.2.3)(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@tanstack/query-core': specifier: ^4.0.0-beta.1 - version: 4.40.0 + version: 4.41.0 '@tanstack/react-query': specifier: 4.0.10 version: 4.0.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -229,8 +229,8 @@ importers: specifier: workspace:* version: link:../../common-libs/ui-toolkit js-yaml: - specifier: ~4.1.0 - version: 4.1.0 + specifier: ^4.1.1 + version: 4.1.1 lodash: specifier: ~4.17.21 version: 4.17.21 @@ -258,10 +258,10 @@ importers: devDependencies: '@babel/plugin-syntax-flow': specifier: ~7.22.5 - version: 7.22.5(@babel/core@7.27.7) + version: 7.22.5(@babel/core@7.28.5) '@babel/preset-typescript': specifier: ~7.22.11 - version: 7.22.15(@babel/core@7.27.7) + version: 7.22.15(@babel/core@7.28.5) '@storybook/addon-actions': specifier: ~7.4.0 version: 7.4.6(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -276,7 +276,7 @@ importers: version: 7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/react-webpack5': specifier: ~7.4.0 - version: 7.4.6(@babel/core@7.27.7)(@swc/helpers@0.5.17)(@types/react-dom@18.2.0)(@types/react@18.2.0)(@types/webpack@5.28.5(webpack-cli@5.1.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1) + version: 7.4.6(@babel/core@7.28.5)(@swc/helpers@0.5.17)(@types/react-dom@18.2.0)(@types/react@18.2.0)(@types/webpack@5.28.5(webpack-cli@5.1.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1) '@types/js-yaml': specifier: ~4.0.9 version: 4.0.9 @@ -285,7 +285,7 @@ importers: version: 4.14.202 '@types/node': specifier: ^20.10.6 - version: 20.19.22 + version: 20.19.25 '@types/react': specifier: 18.2.0 version: 18.2.0 @@ -303,31 +303,31 @@ importers: version: 2.4.1 css-loader: specifier: ^5.2.7 - version: 5.2.7(webpack@5.101.0) + version: 5.2.7(webpack@5.103.0) sass-loader: specifier: ^13.2.0 - version: 13.3.3(sass@1.90.0)(webpack@5.101.0) + version: 13.3.3(sass@1.94.1)(webpack@5.103.0) source-map-loader: specifier: ^4.0.1 - version: 4.0.2(webpack@5.101.0) + version: 4.0.2(webpack@5.103.0) style-loader: specifier: ^1.3.0 - version: 1.3.0(webpack@5.101.0) + version: 1.3.0(webpack@5.103.0) ts-loader: specifier: ^9.5.0 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) typescript: specifier: 5.8.3 version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@5.1.4) + version: 5.103.0(webpack-cli@5.1.4) webpack-cli: specifier: ~5.1.4 - version: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.101.0) + version: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.103.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@5.1.4)(webpack@5.101.0) + version: 5.2.2(webpack-cli@5.1.4)(webpack@5.103.0) ../../workspaces/apk/apk-extension: devDependencies: @@ -339,10 +339,10 @@ importers: version: 10.0.10 '@types/node': specifier: ^18.11.19 - version: 18.19.121 + version: 18.19.130 '@types/vscode': specifier: ^1.63.0 - version: 1.102.0 + version: 1.106.1 '@typescript-eslint/eslint-plugin': specifier: ~5.48.2 version: 5.48.2(@typescript-eslint/parser@5.48.2(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) @@ -352,6 +352,9 @@ importers: '@vscode/test-electron': specifier: ^2.3.2 version: 2.5.2 + '@vscode/vsce': + specifier: ^3.7.0 + version: 3.7.0 copyfiles: specifier: ^2.4.1 version: 2.4.1 @@ -359,17 +362,14 @@ importers: specifier: ^8.32.0 version: 8.57.1 glob: - specifier: ^8.1.0 - version: 8.1.0 + specifier: ^11.1.0 + version: 11.1.0 mocha: specifier: ^10.2.0 version: 10.8.2 typescript: specifier: 5.8.3 version: 5.8.3 - vsce: - specifier: ^2.15.0 - version: 2.15.0 ../../workspaces/ballerina/ballerina-core: dependencies: @@ -417,7 +417,7 @@ importers: version: 3.1.0 vscode-ws-jsonrpc: specifier: ^3.4.0 - version: 3.4.0 + version: 3.5.0 devDependencies: '@types/node': specifier: ^22.15.21 @@ -427,19 +427,19 @@ importers: version: 18.2.0 '@types/vscode': specifier: ^1.83.1 - version: 1.102.0 + version: 1.106.1 '@typescript-eslint/eslint-plugin': specifier: ^8.32.1 - version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) copyfiles: specifier: ^2.4.1 version: 2.4.1 eslint: specifier: ^9.26.0 - version: 9.27.0(jiti@2.5.1) + version: 9.27.0(jiti@2.6.1) typescript: specifier: 5.8.3 version: 5.8.3 @@ -448,10 +448,10 @@ importers: dependencies: '@ai-sdk/amazon-bedrock': specifier: ^3.0.25 - version: 3.0.30(zod@4.1.11) + version: 3.0.56(zod@4.1.11) '@ai-sdk/anthropic': specifier: ^2.0.20 - version: 2.0.23(zod@4.1.11) + version: 2.0.45(zod@4.1.11) '@types/lodash': specifier: ^4.14.200 version: 4.17.17 @@ -459,8 +459,8 @@ importers: specifier: ^2.5.2 version: 2.5.2 '@vscode/vsce': - specifier: ^2.22.0 - version: 2.32.0 + specifier: ^3.7.0 + version: 3.7.0 '@wso2/ballerina-core': specifier: workspace:* version: link:../ballerina-core @@ -473,12 +473,15 @@ importers: '@wso2/syntax-tree': specifier: workspace:* version: link:../syntax-tree + '@wso2/trace-visualizer': + specifier: workspace:* + version: link:../trace-visualizer '@wso2/wso2-platform-core': specifier: workspace:* version: link:../../wso2-platform/wso2-platform-core ai: specifier: ^5.0.56 - version: 5.0.59(zod@4.1.11) + version: 5.0.93(zod@4.1.11) cors-anywhere: specifier: ^0.4.4 version: 0.4.4 @@ -492,8 +495,8 @@ importers: specifier: ^2.0.0 version: 2.0.0 glob: - specifier: ^7.2.3 - version: 7.2.3 + specifier: ^11.1.0 + version: 11.1.0 handlebars: specifier: ~4.7.8 version: 4.7.8 @@ -514,7 +517,10 @@ importers: version: 2.1.1 portfinder: specifier: ^1.0.32 - version: 1.0.37 + version: 1.0.38 + protobufjs: + specifier: ^7.2.5 + version: 7.5.4 source-map-support: specifier: ^0.5.21 version: 0.5.21 @@ -575,22 +581,22 @@ importers: version: 10.0.10 '@types/node': specifier: ^18.18.7 - version: 18.19.121 + version: 18.19.130 '@types/tcp-port-used': specifier: ^1.0.3 version: 1.0.4 '@types/vscode': specifier: ^1.83.1 - version: 1.102.0 + version: 1.106.1 '@types/vscode-notebook-renderer': specifier: ~1.72.2 - version: 1.72.3 + version: 1.72.4 adm-zip: specifier: ^0.5.16 version: 0.5.16 axios: specifier: ^1.12.0 - version: 1.12.0 + version: 1.12.2 chai: specifier: ^4.3.10 version: 4.5.0 @@ -610,8 +616,8 @@ importers: specifier: ^0.4.5 version: 0.4.5 js-yaml: - specifier: ^4.1.0 - version: 4.1.0 + specifier: ^4.1.1 + version: 4.1.1 keytar: specifier: ^7.9.0 version: 7.9.0 @@ -638,7 +644,7 @@ importers: version: 1.0.2 ts-loader: specifier: ^9.5.0 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) tslint: specifier: ^6.1.3 version: 6.1.3(typescript@5.8.3) @@ -653,13 +659,10 @@ importers: version: 5.10.0(mocha@10.8.2)(typescript@5.8.3) webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@6.0.1) + version: 5.103.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack@5.101.0) - webpack-merge-and-include-globally: - specifier: ^2.3.4 - version: 2.3.4(webpack@5.101.0) + version: 6.0.1(webpack@5.103.0) yarn: specifier: ^1.22.19 version: 1.22.22 @@ -695,16 +698,16 @@ importers: version: 3.2.0(date-fns@4.1.0) dexie: specifier: ^4.0.11 - version: 4.0.11 + version: 4.2.1 graphql: specifier: ^16.11.0 - version: 16.11.0 + version: 16.12.0 handlebars: specifier: ^4.7.8 version: 4.7.8 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0) + version: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) joi: specifier: ^17.13.3 version: 17.13.3 @@ -728,7 +731,7 @@ importers: version: 18.2.0(react@18.2.0) react-intl: specifier: ^7.1.11 - version: 7.1.11(react@18.2.0)(typescript@5.8.3) + version: 7.1.14(react@18.2.0)(typescript@5.8.3) react-lottie: specifier: ^1.2.10 version: 1.2.10(react@18.2.0) @@ -750,31 +753,31 @@ importers: version: 7.27.2(@babel/core@7.27.7) '@rollup/plugin-commonjs': specifier: ^28.0.3 - version: 28.0.6(rollup@4.46.2) + version: 28.0.9(rollup@4.53.2) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.46.2) + version: 6.1.0(rollup@4.53.2) '@rollup/plugin-node-resolve': specifier: ^16.0.1 - version: 16.0.1(rollup@4.46.2) + version: 16.0.3(rollup@4.53.2) '@storybook/addon-actions': specifier: ^6.5.16 version: 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-essentials': specifier: ^6.5.16 - version: 6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.101.0) + version: 6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.103.0) '@storybook/addon-links': specifier: ^6.5.16 version: 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/builder-webpack5': specifier: ^6.5.16 - version: 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + version: 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) '@storybook/manager-webpack5': specifier: ^6.5.9 - version: 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + version: 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) '@storybook/react': specifier: ^6.5.16 - version: 6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@types/webpack@5.28.5(webpack-cli@6.0.1))(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@storybook/manager-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/webpack@5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1) '@types/classnames': specifier: ^2.2.9 version: 2.3.4 @@ -804,34 +807,34 @@ importers: version: 10.0.0 '@types/webpack': specifier: ^5.28.5 - version: 5.28.5(webpack-cli@6.0.1) + version: 5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) babel-loader: specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.27.7)(webpack@5.101.0) + version: 10.0.0(@babel/core@7.27.7)(webpack@5.103.0) copy-webpack-plugin: specifier: ^13.0.0 - version: 13.0.0(webpack@5.101.0) + version: 13.0.1(webpack@5.103.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.101.0) + version: 7.1.2(webpack@5.103.0) express: specifier: ^5.1.0 version: 5.1.0 file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.101.0) + version: 6.2.0(webpack@5.103.0) fork-ts-checker-webpack-plugin: specifier: ^9.1.0 - version: 9.1.0(typescript@5.8.3)(webpack@5.101.0) + version: 9.1.0(typescript@5.8.3)(webpack@5.103.0) glob: - specifier: ^11.0.2 - version: 11.0.3 + specifier: ^11.1.0 + version: 11.1.0 react-scripts-ts: specifier: ^3.1.0 - version: 3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(babel-runtime@6.26.0)(typescript@5.8.3)(webpack-cli@6.0.1) + version: 3.1.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(babel-runtime@6.26.0)(typescript@5.8.3)(webpack-cli@6.0.1) react-test-renderer: specifier: ^19.1.0 version: 19.1.1(react@18.2.0) @@ -840,16 +843,16 @@ importers: version: 6.0.1 rollup: specifier: ^4.41.0 - version: 4.46.2 + version: 4.53.2 rollup-plugin-import-css: specifier: ^3.5.8 - version: 3.5.8(rollup@4.46.2) + version: 3.5.8(rollup@4.53.2) rollup-plugin-peer-deps-external: specifier: ^2.2.4 - version: 2.2.4(rollup@4.46.2) + version: 2.2.4(rollup@4.53.2) rollup-plugin-postcss: specifier: ^4.0.2 - version: 4.0.2(postcss@8.5.6) + version: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) rollup-plugin-scss: specifier: ^4.0.1 version: 4.0.1 @@ -858,31 +861,31 @@ importers: version: 2.0.0 rollup-plugin-typescript2: specifier: ^0.36.0 - version: 0.36.0(rollup@4.46.2)(typescript@5.8.3) + version: 0.36.0(rollup@4.53.2)(typescript@5.8.3) sass: specifier: ^1.89.0 - version: 1.90.0 + version: 1.94.1 sass-loader: specifier: ^16.0.5 - version: 16.0.5(sass@1.90.0)(webpack@5.101.0) + version: 16.0.6(sass@1.94.1)(webpack@5.103.0) storybook: specifier: ^8.6.14 version: 8.6.14(prettier@3.5.3) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.101.0) + version: 4.0.0(webpack@5.103.0) stylelint: specifier: ^16.19.1 - version: 16.23.0(typescript@5.8.3) + version: 16.25.0(typescript@5.8.3) stylelint-config-standard: specifier: ^38.0.0 - version: 38.0.0(stylelint@16.23.0(typescript@5.8.3)) + version: 38.0.0(stylelint@16.25.0(typescript@5.8.3)) svg-url-loader: specifier: ^8.0.0 - version: 8.0.0(webpack@5.101.0) + version: 8.0.0(webpack@5.103.0) ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -900,13 +903,13 @@ importers: version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@6.0.1) + version: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) + version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.103.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) + version: 5.2.2(webpack-cli@6.0.1)(webpack@5.103.0) ../../workspaces/ballerina/ballerina-rpc-client: dependencies: @@ -946,28 +949,40 @@ importers: version: 18.2.0 '@typescript-eslint/eslint-plugin': specifier: ^8.32.1 - version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) copyfiles: specifier: ^2.4.1 version: 2.4.1 eslint: specifier: ^9.27.0 - version: 9.27.0(jiti@2.5.1) + version: 9.27.0(jiti@2.6.1) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.5.1)) + version: 5.2.0(eslint@9.27.0(jiti@2.6.1)) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.20(eslint@9.27.0(jiti@2.5.1)) + version: 0.4.24(eslint@9.27.0(jiti@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 ../../workspaces/ballerina/ballerina-side-panel: dependencies: + '@codemirror/autocomplete': + specifier: ~6.19.1 + version: 6.19.1 + '@codemirror/commands': + specifier: ~6.10.0 + version: 6.10.0 + '@codemirror/state': + specifier: ~6.5.2 + version: 6.5.2 + '@codemirror/view': + specifier: ~6.38.6 + version: 6.38.8 '@emotion/react': specifier: ^11.14.0 version: 11.14.0(@types/react@18.2.0)(react@18.2.0) @@ -1001,10 +1016,16 @@ importers: react-markdown: specifier: ~10.1.0 version: 10.1.0(@types/react@18.2.0)(react@18.2.0) + rehype-raw: + specifier: ^7.0.0 + version: 7.0.0 + remark-gfm: + specifier: ^4.0.1 + version: 4.0.1 devDependencies: '@storybook/react': specifier: ^6.5.16 - version: 6.5.16(@babel/core@7.27.7)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.28.5)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.103.0))(webpack-hot-middleware@2.26.1) '@types/lodash': specifier: ~4.17.16 version: 4.17.17 @@ -1034,13 +1055,13 @@ importers: version: 11.14.1(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) '@headlessui/react': specifier: ~2.2.4 - version: 2.2.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@hookform/resolvers': specifier: ~5.0.1 version: 5.0.1(react-hook-form@7.56.4(react@18.2.0)) '@tanstack/query-core': specifier: ^5.77.1 - version: 5.83.1 + version: 5.90.10 '@tanstack/react-query': specifier: 5.77.1 version: 5.77.1(react@18.2.0) @@ -1133,7 +1154,7 @@ importers: version: 10.1.0(@types/react@18.2.0)(react@18.2.0) react-syntax-highlighter: specifier: ~15.6.1 - version: 15.6.1(react@18.2.0) + version: 15.6.6(react@18.2.0) rehype-raw: specifier: ^7.0.0 version: 7.0.0 @@ -1173,10 +1194,10 @@ importers: version: 5.28.5(webpack-cli@5.1.4) '@typescript-eslint/eslint-plugin': specifier: ^8.32.1 - version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) buffer: specifier: ^6.0.3 version: 6.0.3 @@ -1185,37 +1206,40 @@ importers: version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.101.0) + version: 7.1.2(webpack@5.103.0) eslint: specifier: ^9.26.0 - version: 9.27.0(jiti@2.5.1) + version: 9.27.0(jiti@2.6.1) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.5.1)) + version: 5.2.0(eslint@9.27.0(jiti@2.6.1)) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.20(eslint@9.27.0(jiti@2.5.1)) + version: 0.4.24(eslint@9.27.0(jiti@2.6.1)) sass-loader: specifier: ^16.0.5 - version: 16.0.5(sass@1.90.0)(webpack@5.101.0) + version: 16.0.6(sass@1.94.1)(webpack@5.103.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.101.0) + version: 5.0.0(webpack@5.103.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.101.0) + version: 4.0.0(webpack@5.103.0) ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) typescript: specifier: 5.8.3 version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@5.1.4) + version: 5.103.0(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.103.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@5.1.4)(webpack@5.101.0) + version: 5.2.2(webpack-cli@5.1.4)(webpack@5.103.0) ../../workspaces/ballerina/bi-diagram: dependencies: @@ -1276,7 +1300,7 @@ importers: version: 7.27.1(@babel/core@7.27.7) '@storybook/react': specifier: ^6.3.7 - version: 6.5.16(@babel/core@7.27.7)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.27.7)(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/webpack@5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17)))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1) '@testing-library/dom': specifier: ~10.4.0 version: 10.4.1 @@ -1315,7 +1339,7 @@ importers: version: 3.0.0 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0) + version: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) jest-environment-jsdom: specifier: 29.7.0 version: 29.7.0 @@ -1327,7 +1351,7 @@ importers: version: 19.1.1(react@18.2.0) ts-jest: specifier: 29.3.4 - version: 29.3.4(@babel/core@7.27.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.7))(jest@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0))(typescript@5.8.3) + version: 29.3.4(@babel/core@7.27.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.7))(jest@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)))(typescript@5.8.3) typescript: specifier: 5.8.3 version: 5.8.3 @@ -1394,7 +1418,7 @@ importers: version: 7.27.1(@babel/core@7.27.7) '@storybook/react': specifier: ^6.5.16 - version: 6.5.16(@babel/core@7.27.7)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.27.7)(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/webpack@5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17)))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1) '@testing-library/dom': specifier: ~10.4.0 version: 10.4.1 @@ -1433,7 +1457,7 @@ importers: version: 3.0.0 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0) + version: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) jest-environment-jsdom: specifier: 29.7.0 version: 29.7.0 @@ -1445,7 +1469,7 @@ importers: version: 19.1.1(react@18.2.0) ts-jest: specifier: 29.3.4 - version: 29.3.4(@babel/core@7.27.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.7))(jest@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0))(typescript@5.8.3) + version: 29.3.4(@babel/core@7.27.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.7))(jest@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)))(typescript@5.8.3) typescript: specifier: 5.8.3 version: 5.8.3 @@ -1475,7 +1499,7 @@ importers: version: 6.7.4(lodash@4.17.21)(react@18.2.0)(resize-observer-polyfill@1.5.1) '@tanstack/query-core': specifier: ^5.77.1 - version: 5.83.1 + version: 5.90.10 '@tanstack/react-query': specifier: 5.77.1 version: 5.77.1(react@18.2.0) @@ -1523,7 +1547,7 @@ importers: version: 3.17.5 zustand: specifier: ^5.0.4 - version: 5.0.7(@types/react@18.2.0)(react@18.2.0)(use-sync-external-store@1.5.0(react@18.2.0)) + version: 5.0.8(@types/react@18.2.0)(react@18.2.0)(use-sync-external-store@1.6.0(react@18.2.0)) devDependencies: '@types/blueimp-md5': specifier: ^2.18.2 @@ -1542,34 +1566,34 @@ importers: version: 17.0.26(@types/react@18.2.0) '@typescript-eslint/eslint-plugin': specifier: ~8.32.1 - version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/parser': specifier: ~8.32.1 - version: 8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) copyfiles: specifier: ^2.4.1 version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.101.0) + version: 7.1.2(webpack@5.103.0) eslint: specifier: ^9.26.0 - version: 9.27.0(jiti@2.5.1) + version: 9.27.0(jiti@2.6.1) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.5.1)) + version: 5.2.0(eslint@9.27.0(jiti@2.6.1)) eslint-plugin-react-refresh: specifier: ^0.4.4 - version: 0.4.20(eslint@9.27.0(jiti@2.5.1)) + version: 0.4.24(eslint@9.27.0(jiti@2.6.1)) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.101.0) + version: 6.2.0(webpack@5.103.0) react-hook-form: specifier: ~7.56.3 version: 7.56.4(react@18.2.0) ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -1593,10 +1617,10 @@ importers: version: 2.4.1 graphiql: specifier: 3.7.0 - version: 3.7.0(@codemirror/language@6.11.2)(@types/node@22.15.35)(@types/react-dom@18.2.0)(@types/react@18.2.0)(graphql@16.11.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 3.7.0(@codemirror/language@6.11.3)(@types/node@22.15.35)(@types/react-dom@18.2.0)(@types/react@18.2.0)(graphql@16.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) graphiql-explorer: specifier: ^0.9.0 - version: 0.9.0(graphql@16.11.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 0.9.0(graphql@16.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -1612,19 +1636,19 @@ importers: version: 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-essentials': specifier: ^6.5.9 - version: 6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.101.0) + version: 6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.103.0) '@storybook/addon-links': specifier: ^6.5.9 version: 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/builder-webpack5': specifier: ^6.5.9 - version: 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + version: 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) '@storybook/manager-webpack5': specifier: ^6.5.9 - version: 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + version: 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) '@storybook/react': specifier: ^6.5.9 - version: 6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@types/webpack@5.28.5(webpack-cli@4.10.0))(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@types/webpack@5.28.5(webpack-cli@4.10.0))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1) '@types/react': specifier: 18.2.0 version: 18.2.0 @@ -1633,34 +1657,34 @@ importers: version: 18.2.0 babel-loader: specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.27.7)(webpack@5.101.0) + version: 10.0.0(@babel/core@7.27.7)(webpack@5.103.0) css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.101.0) + version: 7.1.2(webpack@5.103.0) graphql: specifier: ^16.11.0 - version: 16.11.0 + version: 16.12.0 mini-css-extract-plugin: specifier: ^2.9.2 - version: 2.9.3(webpack@5.101.0) + version: 2.9.4(webpack@5.103.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.101.0) + version: 5.0.0(webpack@5.103.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.101.0) + version: 4.0.0(webpack@5.103.0) ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) typescript: specifier: 5.8.3 version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@4.10.0) + version: 5.103.0(webpack-cli@4.10.0) webpack-cli: specifier: ^4.10.0 - version: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0) + version: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.103.0) ../../workspaces/ballerina/graphql-design-diagram: dependencies: @@ -1791,7 +1815,7 @@ importers: version: 5.2.0(eslint@8.57.1) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.20(eslint@8.57.1) + version: 0.4.24(eslint@8.57.1) typescript: specifier: 5.8.3 version: 5.8.3 @@ -1839,7 +1863,7 @@ importers: version: 0.8.5 file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.101.0) + version: 6.2.0(webpack@5.103.0) html-to-image: specifier: ^1.10.8 version: 1.11.11 @@ -1882,31 +1906,31 @@ importers: version: link:../../common-libs/ui-toolkit babel-loader: specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.27.7)(webpack@5.101.0) + version: 10.0.0(@babel/core@7.27.7)(webpack@5.103.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.101.0) + version: 7.1.2(webpack@5.103.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.101.0) + version: 5.0.0(webpack@5.103.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.101.0) + version: 4.0.0(webpack@5.103.0) ts-loader: specifier: ^9.4.1 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@6.0.1) + version: 5.103.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) + version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.103.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) + version: 5.2.2(webpack-cli@6.0.1)(webpack@5.103.0) ../../workspaces/ballerina/record-creator: dependencies: @@ -1963,7 +1987,7 @@ importers: version: 18.2.0(react@18.2.0) react-intl: specifier: ~7.1.11 - version: 7.1.11(react@18.2.0)(typescript@5.8.3) + version: 7.1.14(react@18.2.0)(typescript@5.8.3) react-lottie: specifier: ~1.2.4 version: 1.2.10(react@18.2.0) @@ -1985,10 +2009,10 @@ importers: version: 2.4.1 eslint: specifier: ~9.26.0 - version: 9.26.0(jiti@2.5.1) + version: 9.26.0(jiti@2.6.1) react-scripts-ts: specifier: 3.1.0 - version: 3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(babel-runtime@6.26.0)(typescript@5.8.3) + version: 3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.28.5))(babel-runtime@6.26.0)(typescript@5.8.3) typescript: specifier: 5.8.3 version: 5.8.3 @@ -2043,7 +2067,7 @@ importers: devDependencies: '@storybook/react': specifier: ^6.3.7 - version: 6.5.16(@babel/core@7.27.7)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.28.5)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.103.0))(webpack-hot-middleware@2.26.1) '@types/dagre': specifier: ~0.7.52 version: 0.7.53 @@ -2058,19 +2082,19 @@ importers: version: 18.2.0 '@typescript-eslint/eslint-plugin': specifier: ~8.32.1 - version: 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3) copyfiles: specifier: ^2.4.1 version: 2.4.1 eslint: specifier: ~9.26.0 - version: 9.26.0(jiti@2.5.1) + version: 9.26.0(jiti@2.6.1) eslint-plugin-react-hooks: specifier: ~5.2.0 - version: 5.2.0(eslint@9.26.0(jiti@2.5.1)) + version: 5.2.0(eslint@9.26.0(jiti@2.6.1)) eslint-plugin-unused-imports: specifier: ~4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.5.1)) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.6.1)) prettier: specifier: ~3.5.3 version: 3.5.3 @@ -2085,13 +2109,13 @@ importers: version: 11.13.5 '@emotion/react': specifier: ^11.9.3 - version: 11.14.0(@types/react@17.0.87)(react@19.1.0) + version: 11.14.0(@types/react@17.0.90)(react@19.1.0) '@emotion/styled': specifier: ^11.10.5 - version: 11.14.1(@emotion/react@11.14.0(@types/react@17.0.87)(react@19.1.0))(@types/react@17.0.87)(react@19.1.0) + version: 11.14.1(@emotion/react@11.14.0(@types/react@17.0.90)(react@19.1.0))(@types/react@17.0.90)(react@19.1.0) '@tanstack/query-core': specifier: ^4.0.0-beta.1 - version: 4.40.0 + version: 4.41.0 '@tanstack/react-query': specifier: 4.0.10 version: 4.0.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -2127,7 +2151,7 @@ importers: version: 4.12.0(react@19.1.0) react-intl: specifier: ^7.1.11 - version: 7.1.11(react@19.1.0)(typescript@4.9.5) + version: 7.1.14(react@19.1.0)(typescript@4.9.5) react-lottie: specifier: ^1.2.3 version: 1.2.10(react@19.1.0) @@ -2143,7 +2167,7 @@ importers: devDependencies: '@storybook/react': specifier: ^6.5.9 - version: 6.5.16(@babel/core@7.27.7)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@4.9.5)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.28.5)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@4.9.5)(webpack-dev-server@5.2.2(webpack@5.103.0))(webpack-hot-middleware@2.26.1) '@types/classnames': specifier: ^2.2.9 version: 2.3.4 @@ -2158,7 +2182,7 @@ importers: version: 4.0.9 '@types/react': specifier: ^17.0.37 - version: 17.0.87 + version: 17.0.90 '@types/react-dom': specifier: 17.0.14 version: 17.0.14 @@ -2194,7 +2218,7 @@ importers: version: 9.1.7 lint-staged: specifier: ^16.0.0 - version: 16.1.4 + version: 16.2.6 prettier: specifier: ^3.5.3 version: 3.5.3 @@ -2208,6 +2232,70 @@ importers: specifier: 5.8.3 version: 5.8.3 + ../../workspaces/ballerina/trace-visualizer: + dependencies: + '@emotion/react': + specifier: ^11.14.0 + version: 11.14.0(@types/react@18.2.0)(react@18.2.0) + '@emotion/styled': + specifier: ^11.14.0 + version: 11.14.1(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) + '@vscode/webview-ui-toolkit': + specifier: ^1.4.0 + version: 1.4.0(react@18.2.0) + '@wso2/ui-toolkit': + specifier: workspace:* + version: link:../../common-libs/ui-toolkit + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@types/react': + specifier: 18.2.0 + version: 18.2.0 + '@types/react-dom': + specifier: 18.2.0 + version: 18.2.0 + '@types/webpack': + specifier: ^5.28.5 + version: 5.28.5(webpack-cli@5.1.4) + buffer: + specifier: ^6.0.3 + version: 6.0.3 + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + css-loader: + specifier: ^7.1.2 + version: 7.1.2(webpack@5.103.0) + sass-loader: + specifier: ^16.0.5 + version: 16.0.6(sass@1.94.1)(webpack@5.103.0) + source-map-loader: + specifier: ^5.0.0 + version: 5.0.0(webpack@5.103.0) + style-loader: + specifier: ^4.0.0 + version: 4.0.0(webpack@5.103.0) + ts-loader: + specifier: ^9.5.2 + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) + typescript: + specifier: 5.8.3 + version: 5.8.3 + webpack: + specifier: ^5.94.0 + version: 5.103.0(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.103.0) + webpack-dev-server: + specifier: ^5.2.1 + version: 5.2.2(webpack-cli@5.1.4)(webpack@5.103.0) + ../../workspaces/ballerina/type-diagram: dependencies: '@emotion/css': @@ -2251,7 +2339,7 @@ importers: version: 0.8.5 file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.101.0) + version: 6.2.0(webpack@5.103.0) html-to-image: specifier: ^1.11.11 version: 1.11.11 @@ -2300,31 +2388,31 @@ importers: version: link:../../common-libs/ui-toolkit babel-loader: specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.27.7)(webpack@5.101.0) + version: 10.0.0(@babel/core@7.27.7)(webpack@5.103.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.101.0) + version: 7.1.2(webpack@5.103.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.101.0) + version: 5.0.0(webpack@5.103.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.101.0) + version: 4.0.0(webpack@5.103.0) ts-loader: specifier: ^9.4.1 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@6.0.1) + version: 5.103.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) + version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.103.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) + version: 5.2.2(webpack-cli@6.0.1)(webpack@5.103.0) ../../workspaces/ballerina/type-editor: dependencies: @@ -2378,7 +2466,7 @@ importers: version: 18.2.0(react@18.2.0) react-intl: specifier: ^7.1.11 - version: 7.1.11(react@18.2.0)(typescript@5.8.3) + version: 7.1.14(react@18.2.0)(typescript@5.8.3) react-lottie: specifier: ^1.2.10 version: 1.2.10(react@18.2.0) @@ -2406,10 +2494,10 @@ importers: version: 2.4.1 eslint: specifier: ~9.26.0 - version: 9.26.0(jiti@2.5.1) + version: 9.26.0(jiti@2.6.1) react-scripts-ts: specifier: 3.1.0 - version: 3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(babel-runtime@6.26.0)(typescript@5.8.3) + version: 3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.28.5))(babel-runtime@6.26.0)(typescript@5.8.3) typescript: specifier: 5.8.3 version: 5.8.3 @@ -2422,6 +2510,9 @@ importers: '@wso2/font-wso2-vscode': specifier: workspace:* version: link:../../common-libs/font-wso2-vscode + toml: + specifier: ^3.0.0 + version: 3.0.0 xstate: specifier: ^4.38.3 version: 4.38.3 @@ -2437,7 +2528,7 @@ importers: version: 22.15.18 '@types/vscode': specifier: ^1.84.0 - version: 1.102.0 + version: 1.106.1 '@typescript-eslint/eslint-plugin': specifier: ^6.21.0 version: 6.21.0(@typescript-eslint/parser@8.33.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) @@ -2448,14 +2539,14 @@ importers: specifier: ^2.5.2 version: 2.5.2 '@vscode/vsce': - specifier: ^3.4.0 - version: 3.4.2 + specifier: ^3.7.0 + version: 3.7.0 '@wso2/playwright-vscode-tester': specifier: workspace:* version: link:../../common-libs/playwright-vscode-tester copy-webpack-plugin: specifier: ^13.0.0 - version: 13.0.0(webpack@5.101.0) + version: 13.0.1(webpack@5.103.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 @@ -2463,26 +2554,26 @@ importers: specifier: ^8.57.1 version: 8.57.1 glob: - specifier: ^11.0.2 - version: 11.0.3 + specifier: ^11.1.0 + version: 11.1.0 mocha: specifier: ^11.2.2 - version: 11.7.1 + version: 11.7.5 source-map-support: specifier: ^0.5.21 version: 0.5.21 ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) typescript: specifier: 5.8.3 version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@6.0.1) + version: 5.103.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack@5.101.0) + version: 6.0.1(webpack@5.103.0) webpack-permissions-plugin: specifier: ^1.0.9 version: 1.0.10 @@ -2522,7 +2613,7 @@ importers: version: 1.0.0(tslib@2.8.1) '@vscode/iconv-lite-umd': specifier: ^0.7.0 - version: 0.7.0 + version: 0.7.1 '@vscode/webview-ui-toolkit': specifier: ^1.2.0 version: 1.4.0(react@19.1.0) @@ -2545,8 +2636,8 @@ importers: specifier: ^18.2.1 version: 18.7.0 js-yaml: - specifier: ^4.1.0 - version: 4.1.0 + specifier: ^4.1.1 + version: 4.1.1 jschardet: specifier: ^3.0.0 version: 3.1.4 @@ -2567,7 +2658,7 @@ importers: version: 2.8.1 zustand: specifier: ^5.0.5 - version: 5.0.7(@types/react@18.2.0)(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0)) + version: 5.0.8(@types/react@18.2.0)(react@19.1.0)(use-sync-external-store@1.6.0(react@19.1.0)) devDependencies: '@biomejs/biome': specifier: ^1.8.3 @@ -2589,22 +2680,22 @@ importers: version: 22.15.35 '@types/vscode': specifier: ^1.100.0 - version: 1.102.0 + version: 1.106.1 '@types/which': specifier: ^3.0.4 version: 3.0.4 '@vscode/vsce': - specifier: ^3.4.2 - version: 3.4.2 + specifier: ^3.7.0 + version: 3.7.0 '@wso2/playwright-vscode-tester': specifier: workspace:* version: link:../../common-libs/playwright-vscode-tester axios: specifier: ^1.12.0 - version: 1.12.0 + version: 1.12.2 copy-webpack-plugin: specifier: ^13.0.0 - version: 13.0.0(webpack@5.101.0) + version: 13.0.1(webpack@5.103.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 @@ -2613,25 +2704,25 @@ importers: version: 6.0.0 mocha: specifier: ^11.5.0 - version: 11.7.1 + version: 11.7.5 terser-webpack-plugin: specifier: ^5.3.10 - version: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + version: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) ts-loader: specifier: ~9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) typescript: specifier: 5.8.3 version: 5.8.3 vscode-extension-tester: specifier: ^8.14.1 - version: 8.14.1(mocha@11.7.1)(typescript@5.8.3) + version: 8.14.1(mocha@11.7.5)(typescript@5.8.3) webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@6.0.1) + version: 5.103.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack@5.101.0) + version: 6.0.1(webpack@5.103.0) webpack-permissions-plugin: specifier: ^1.0.9 version: 1.0.10 @@ -2646,10 +2737,10 @@ importers: version: 0.8.2 '@headlessui/react': specifier: ^2.2.4 - version: 2.2.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@hookform/resolvers': specifier: ^5.0.1 - version: 5.0.1(react-hook-form@7.56.4(react@18.2.0)) + version: 5.2.2(react-hook-form@7.56.4(react@18.2.0)) '@tanstack/react-query': specifier: ~4.28.0 version: 4.28.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -2675,8 +2766,8 @@ importers: specifier: ^4.0.0 version: 4.0.0 js-yaml: - specifier: ^4.1.0 - version: 4.1.0 + specifier: ^4.1.1 + version: 4.1.1 lodash.debounce: specifier: ~4.0.8 version: 4.0.8 @@ -2703,7 +2794,7 @@ importers: version: 4.0.1 swagger-ui-react: specifier: ^5.22.0 - version: 5.27.1(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 5.30.2(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) timezone-support: specifier: ^3.1.0 version: 3.1.0 @@ -2740,16 +2831,16 @@ importers: version: 1.57.5 autoprefixer: specifier: ^10.4.21 - version: 10.4.21(postcss@8.5.6) + version: 10.4.22(postcss@8.5.6) copyfiles: specifier: ~2.4.1 version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.101.0) + version: 7.1.2(webpack@5.103.0) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.101.0) + version: 6.2.0(webpack@5.103.0) path: specifier: ^0.12.7 version: 0.12.7 @@ -2758,34 +2849,34 @@ importers: version: 8.5.6 postcss-loader: specifier: ^8.1.1 - version: 8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.101.0) + version: 8.2.0(postcss@8.5.6)(typescript@5.8.3)(webpack@5.103.0) sass-loader: specifier: ^16.0.5 - version: 16.0.5(sass@1.90.0)(webpack@5.101.0) + version: 16.0.6(sass@1.94.1)(webpack@5.103.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.101.0) + version: 5.0.0(webpack@5.103.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.101.0) + version: 4.0.0(webpack@5.103.0) tailwindcss: specifier: ^3.4.3 - version: 3.4.17 + version: 3.4.18(yaml@2.8.1) ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) typescript: specifier: 5.8.3 version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@6.0.1) + version: 5.103.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) + version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.103.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) + version: 5.2.2(webpack-cli@6.0.1)(webpack@5.103.0) ../../workspaces/common-libs/font-wso2-vscode: devDependencies: @@ -2793,8 +2884,8 @@ importers: specifier: 0.0.36 version: 0.0.36 fantasticon: - specifier: ^1.2.3 - version: 1.2.3 + specifier: ^3.0.0 + version: 3.0.0 icon-font-generator: specifier: ^2.1.11 version: 2.1.11 @@ -2808,14 +2899,14 @@ importers: specifier: 1.55.1 version: 1.55.1 '@vscode/vsce': - specifier: ~3.4.2 - version: 3.4.2 + specifier: ^3.7.0 + version: 3.7.0 compare-versions: specifier: ~6.1.1 version: 6.1.1 fs-extra: specifier: ~11.3.0 - version: 11.3.1 + version: 11.3.2 got: specifier: 14.4.7 version: 14.4.7 @@ -2843,10 +2934,10 @@ importers: version: 0.10.11 '@typescript-eslint/eslint-plugin': specifier: ~8.33.0 - version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/parser': specifier: ~8.33.0 - version: 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) typescript: specifier: 5.8.3 version: 5.8.3 @@ -2895,7 +2986,7 @@ importers: version: 7.4.6(encoding@0.1.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@storybook/react-webpack5': specifier: ~7.4.0 - version: 7.4.6(@babel/core@7.27.7)(@swc/helpers@0.5.17)(@types/react-dom@18.2.0)(@types/react@18.2.0)(@types/webpack@5.28.5)(encoding@0.1.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-hot-middleware@2.26.1) + version: 7.4.6(@babel/core@7.28.5)(@swc/helpers@0.5.17)(@types/react-dom@18.2.0)(@types/react@18.2.0)(@types/webpack@5.28.5)(encoding@0.1.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-hot-middleware@2.26.1) '@types/react': specifier: 18.2.0 version: 18.2.0 @@ -2922,7 +3013,7 @@ importers: version: 4.6.2(eslint@8.57.1) eslint-plugin-react-refresh: specifier: ^0.4.4 - version: 0.4.20(eslint@8.57.1) + version: 0.4.24(eslint@8.57.1) typescript: specifier: 5.8.3 version: 5.8.3 @@ -2983,19 +3074,19 @@ importers: devDependencies: '@storybook/addon-docs': specifier: ^9.0.12 - version: 9.1.1(@types/react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) + version: 9.1.16(@types/react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) '@storybook/addon-essentials': specifier: ^8.6.14 - version: 8.6.14(@types/react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) + version: 8.6.14(@types/react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) '@storybook/cli': specifier: ^9.0.12 - version: 9.1.1(@babel/preset-env@7.27.2(@babel/core@7.27.7))(@testing-library/dom@10.4.1)(prettier@3.5.3) + version: 9.1.16(@babel/preset-env@7.27.2(@babel/core@7.28.5))(@testing-library/dom@10.4.1)(prettier@3.5.3) '@storybook/react': specifier: ^9.0.12 - version: 9.1.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) + version: 9.1.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) '@storybook/react-vite': specifier: ^9.0.12 - version: 9.1.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.46.2)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) + version: 9.1.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.53.2)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) '@types/lodash': specifier: ~4.17.16 version: 4.17.17 @@ -3028,13 +3119,13 @@ importers: version: 5.2.0(eslint@8.57.1) eslint-plugin-storybook: specifier: ^9.0.12 - version: 9.1.1(eslint@8.57.1)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) + version: 9.1.16(eslint@8.57.1)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) gh-pages: specifier: ^6.3.0 version: 6.3.0 glob: - specifier: ^11.0.2 - version: 11.0.3 + specifier: ^11.1.0 + version: 11.1.0 http-server: specifier: ^14.1.1 version: 14.1.1 @@ -3043,11 +3134,69 @@ importers: version: 6.0.0(react@19.1.0) storybook: specifier: ^9.0.12 - version: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + version: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) typescript: specifier: 5.8.3 version: 5.8.3 + ../../workspaces/mcp-inspector/mcp-inspector-extension: + dependencies: + '@modelcontextprotocol/inspector': + specifier: ^0.17.2 + version: 0.17.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.18)(@types/react-dom@18.2.0)(@types/react@18.2.0)(typescript@5.8.3) + devDependencies: + '@types/mocha': + specifier: ^10.0.3 + version: 10.0.10 + '@types/node': + specifier: 22.15.18 + version: 22.15.18 + '@types/vscode': + specifier: ^1.84.0 + version: 1.106.1 + '@typescript-eslint/eslint-plugin': + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@8.33.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': + specifier: ^8.32.1 + version: 8.33.1(eslint@8.57.1)(typescript@5.8.3) + '@vscode/test-electron': + specifier: ^2.5.2 + version: 2.5.2 + '@vscode/vsce': + specifier: ^3.7.0 + version: 3.7.0 + copy-webpack-plugin: + specifier: ^13.0.0 + version: 13.0.1(webpack@5.103.0) + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + eslint: + specifier: ^8.57.1 + version: 8.57.1 + mocha: + specifier: ^11.2.2 + version: 11.7.5 + open: + specifier: 10.2.0 + version: 10.2.0 + serve-handler: + specifier: 6.1.6 + version: 6.1.6 + ts-loader: + specifier: ^9.5.2 + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) + typescript: + specifier: 5.8.3 + version: 5.8.3 + webpack: + specifier: ^5.94.0 + version: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack@5.103.0) + ../../workspaces/mi/mi-component-diagram: dependencies: '@emotion/react': @@ -3092,7 +3241,7 @@ importers: devDependencies: '@storybook/react': specifier: ^6.3.7 - version: 6.5.16(@babel/core@7.27.7)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.28.5)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.103.0))(webpack-hot-middleware@2.26.1) '@types/dagre': specifier: ~0.7.52 version: 0.7.53 @@ -3135,13 +3284,13 @@ importers: version: 9.27.0 '@typescript-eslint/eslint-plugin': specifier: ^8.32.1 - version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) eslint: specifier: ^9.27.0 - version: 9.27.0(jiti@2.5.1) + version: 9.27.0(jiti@2.6.1) typescript: specifier: 5.8.3 version: 5.8.3 @@ -3171,7 +3320,7 @@ importers: version: 6.7.4(lodash@4.17.21)(react@18.2.0)(resize-observer-polyfill@1.5.1) '@tanstack/query-core': specifier: ^5.76.2 - version: 5.83.1 + version: 5.90.10 '@tanstack/react-query': specifier: 5.76.2 version: 5.76.2(react@18.2.0) @@ -3225,7 +3374,7 @@ importers: version: 3.17.5 zustand: specifier: ^5.0.5 - version: 5.0.7(@types/react@18.2.0)(react@18.2.0)(use-sync-external-store@1.5.0(react@18.2.0)) + version: 5.0.8(@types/react@18.2.0)(react@18.2.0)(use-sync-external-store@1.6.0(react@18.2.0)) devDependencies: '@types/blueimp-md5': specifier: ^2.18.2 @@ -3244,34 +3393,34 @@ importers: version: 18.2.0 '@typescript-eslint/eslint-plugin': specifier: ~8.32.1 - version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/parser': specifier: ~8.32.1 - version: 8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) copyfiles: specifier: ^2.4.1 version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.101.0) + version: 7.1.2(webpack@5.103.0) eslint: specifier: ^9.27.0 - version: 9.27.0(jiti@2.5.1) + version: 9.27.0(jiti@2.6.1) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.5.1)) + version: 5.2.0(eslint@9.27.0(jiti@2.6.1)) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.20(eslint@9.27.0(jiti@2.5.1)) + version: 0.4.24(eslint@9.27.0(jiti@2.6.1)) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.101.0) + version: 6.2.0(webpack@5.103.0) react-hook-form: specifier: 7.56.4 version: 7.56.4(react@18.2.0) ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) ts-morph: specifier: ^22.0.0 version: 22.0.0 @@ -3357,10 +3506,10 @@ importers: version: 2.4.1 eslint-plugin-react-hooks: specifier: ~5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.5.1)) + version: 5.2.0(eslint@9.27.0(jiti@2.6.1)) eslint-plugin-unused-imports: specifier: ~4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1)) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1)) html-to-image: specifier: 1.11.11 version: 1.11.11 @@ -3396,7 +3545,7 @@ importers: version: 1.21.3(@types/react@18.2.0)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-json-view-lite: specifier: latest - version: 2.4.2(react@18.2.0) + version: 2.5.0(react@18.2.0) react-markdown: specifier: ~10.1.0 version: 10.1.0(@types/react@18.2.0)(react@18.2.0) @@ -3436,7 +3585,7 @@ importers: version: 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3) '@storybook/react-webpack5': specifier: ^8.6.14 - version: 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3) + version: 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.5.3)))(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3) '@storybook/test': specifier: ^8.6.14 version: 8.6.14(storybook@8.6.14(prettier@3.5.3)) @@ -3453,8 +3602,8 @@ importers: specifier: ~1.0.4 version: 1.0.4 '@types/jest': - specifier: 29.5.14 - version: 29.5.14 + specifier: ^30.0.0 + version: 30.0.0 '@types/react': specifier: 18.2.0 version: 18.2.0 @@ -3469,10 +3618,10 @@ importers: version: 0.4.14 '@typescript-eslint/eslint-plugin': specifier: ~8.32.1 - version: 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) babel-jest: - specifier: 29.7.0 - version: 29.7.0(@babel/core@7.27.7) + specifier: ^30.0.0 + version: 30.2.0(@babel/core@7.27.7) deep-equal: specifier: ~2.2.3 version: 2.2.3 @@ -3480,8 +3629,8 @@ importers: specifier: ~3.0.0 version: 3.0.0 jest: - specifier: 29.7.0 - version: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0) + specifier: ^30.0.0 + version: 30.2.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) jest-environment-jsdom: specifier: 29.7.0 version: 29.7.0 @@ -3496,7 +3645,7 @@ importers: version: 8.6.14(prettier@3.5.3) ts-jest: specifier: 29.3.4 - version: 29.3.4(@babel/core@7.27.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.7))(jest@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0))(typescript@5.8.3) + version: 29.3.4(@babel/core@7.27.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@30.2.0(@babel/core@7.27.7))(esbuild@0.25.12)(jest@30.2.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)))(typescript@5.8.3) typescript: specifier: 5.8.3 version: 5.8.3 @@ -3515,6 +3664,9 @@ importers: ../../workspaces/mi/mi-extension: dependencies: + '@ai-sdk/anthropic': + specifier: ^2.0.35 + version: 2.0.45(zod@3.25.76) '@apidevtools/json-schema-ref-parser': specifier: 12.0.2 version: 12.0.2 @@ -3523,13 +3675,16 @@ importers: version: 7.27.7 '@babel/plugin-transform-typescript': specifier: ^7.27.1 - version: 7.28.0(@babel/core@7.27.7) + version: 7.28.5(@babel/core@7.27.7) '@iarna/toml': specifier: ^2.2.5 version: 2.2.5 '@types/fs-extra': specifier: ~11.0.4 version: 11.0.4 + '@types/handlebars': + specifier: ^4.1.0 + version: 4.1.0 '@types/json-schema': specifier: 7.0.15 version: 7.0.15 @@ -3546,8 +3701,8 @@ importers: specifier: ~0.4.12 version: 0.4.14 '@vscode/vsce': - specifier: ~3.4.2 - version: 3.4.2 + specifier: ^3.7.0 + version: 3.7.0 '@wso2/font-wso2-vscode': specifier: workspace:* version: link:../../common-libs/font-wso2-vscode @@ -3569,9 +3724,12 @@ importers: adm-zip: specifier: ~0.5.16 version: 0.5.16 + ai: + specifier: ^5.0.76 + version: 5.0.93(zod@3.25.76) axios: specifier: ~1.12.0 - version: 1.12.0 + version: 1.12.2 copyfiles: specifier: ^2.4.1 version: 2.4.1 @@ -3589,7 +3747,10 @@ importers: version: 1.4.11 fs-extra: specifier: ~11.3.0 - version: 11.3.1 + version: 11.3.2 + handlebars: + specifier: ^4.7.8 + version: 4.7.8 json-schema: specifier: 0.4.0 version: 0.4.0 @@ -3599,6 +3760,9 @@ importers: jsonix: specifier: ~3.0.0 version: 3.0.0 + jwt-decode: + specifier: ^4.0.0 + version: 4.0.0 lodash: specifier: ~4.17.21 version: 4.17.21 @@ -3610,16 +3774,16 @@ importers: version: 3.3.2 node-loader: specifier: ~2.1.0 - version: 2.1.0(webpack@5.101.0) + version: 2.1.0(webpack@5.103.0) portfinder: specifier: ^1.0.37 - version: 1.0.37 + version: 1.0.38 recast: specifier: ^0.23.11 version: 0.23.11 tmp: specifier: ~0.2.4 - version: 0.2.4 + version: 0.2.5 to-json-schema: specifier: 0.2.5 version: 0.2.5 @@ -3643,7 +3807,7 @@ importers: version: 1.51.0 vscode-extension-tester: specifier: ~8.14.1 - version: 8.14.1(mocha@11.7.1)(typescript@5.8.3) + version: 8.14.1(mocha@11.7.5)(typescript@5.8.3) vscode-languageclient: specifier: ^9.0.1 version: 9.0.1 @@ -3662,6 +3826,9 @@ importers: xstate: specifier: ^4.38.3 version: 4.38.3 + zod: + specifier: ^3.24.1 + version: 3.25.76 devDependencies: '@playwright/test': specifier: ~1.55.1 @@ -3674,13 +3841,13 @@ importers: version: 22.15.21 '@types/vscode': specifier: ^1.100.0 - version: 1.102.0 + version: 1.106.1 '@typescript-eslint/eslint-plugin': specifier: ^8.32.1 - version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@vscode/test-electron': specifier: ^2.5.2 version: 2.5.2 @@ -3698,13 +3865,13 @@ importers: version: 1.0.1 eslint: specifier: ^9.27.0 - version: 9.27.0(jiti@2.5.1) + version: 9.27.0(jiti@2.6.1) glob: specifier: ^11.0.2 - version: 11.0.3 + version: 11.1.0 mocha: specifier: ^11.4.0 - version: 11.7.1 + version: 11.7.5 playwright-core: specifier: ~1.55.1 version: 1.55.1 @@ -3713,7 +3880,7 @@ importers: version: 6.0.1 ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) ts-morph: specifier: ^26.0.0 version: 26.0.0 @@ -3722,10 +3889,10 @@ importers: version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@4.10.0) + version: 5.103.0(webpack-cli@4.10.0) webpack-cli: specifier: ^4.10.0 - version: 4.10.0(webpack@5.101.0) + version: 4.10.0(webpack@5.103.0) yaml: specifier: ~2.8.0 version: 2.8.1 @@ -3762,13 +3929,13 @@ importers: version: 18.2.0 '@typescript-eslint/eslint-plugin': specifier: ^8.32.1 - version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) eslint: specifier: ^9.27.0 - version: 9.27.0(jiti@2.5.1) + version: 9.27.0(jiti@2.6.1) typescript: specifier: 5.8.3 version: 5.8.3 @@ -3804,10 +3971,10 @@ importers: version: 1.55.1 '@pmmmwh/react-refresh-webpack-plugin': specifier: ~0.6.0 - version: 0.6.1(@types/webpack@5.28.5(webpack-cli@5.1.4))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.101.0) + version: 0.6.1(@types/webpack@5.28.5(webpack-cli@5.1.4))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.103.0) '@tanstack/query-core': specifier: ^5.76.0 - version: 5.83.1 + version: 5.90.10 '@tanstack/react-query': specifier: 5.76.1 version: 5.76.1(react@18.2.0) @@ -3831,7 +3998,7 @@ importers: version: 1.57.5 '@uiw/react-codemirror': specifier: ~4.23.12 - version: 4.23.14(@codemirror/lint@6.8.5)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 4.23.14(@codemirror/lint@6.8.5)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@vscode/webview-ui-toolkit': specifier: ^1.4.0 version: 1.4.0(react@18.2.0) @@ -3906,7 +4073,7 @@ importers: version: 0.1.92(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-syntax-highlighter: specifier: ~15.6.1 - version: 15.6.1(react@18.2.0) + version: 15.6.6(react@18.2.0) swagger-ui-react: specifier: 5.21.0 version: 5.21.0(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -3925,25 +4092,25 @@ importers: devDependencies: '@babel/plugin-syntax-flow': specifier: ~7.27.1 - version: 7.27.1(@babel/core@7.27.7) + version: 7.27.1(@babel/core@7.28.5) '@babel/preset-typescript': specifier: ~7.27.1 - version: 7.27.1(@babel/core@7.27.7) + version: 7.27.1(@babel/core@7.28.5) '@headlessui/react': specifier: ~2.2.4 - version: 2.2.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-actions': specifier: ~8.6.14 - version: 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) + version: 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) '@storybook/addon-essentials': specifier: ~8.6.14 - version: 8.6.14(@types/react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) + version: 8.6.14(@types/react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) '@storybook/addon-links': specifier: ~8.6.14 - version: 8.6.14(react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) + version: 8.6.14(react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) '@storybook/react-webpack5': specifier: ~8.6.14 - version: 8.6.14(@storybook/test@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4) + version: 8.6.14(@storybook/test@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4) '@types/lodash': specifier: ~4.17.17 version: 4.17.17 @@ -3964,19 +4131,19 @@ importers: version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.101.0) + version: 7.1.2(webpack@5.103.0) sass-loader: specifier: ^16.0.5 - version: 16.0.5(sass@1.90.0)(webpack@5.101.0) + version: 16.0.6(sass@1.94.1)(webpack@5.103.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.101.0) + version: 5.0.0(webpack@5.103.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.101.0) + version: 4.0.0(webpack@5.103.0) ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) typescript: specifier: 5.8.3 version: 5.8.3 @@ -3985,13 +4152,13 @@ importers: version: 3.17.5 webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@5.1.4) + version: 5.103.0(webpack-cli@5.1.4) webpack-cli: specifier: ~5.1.4 - version: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.101.0) + version: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.103.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@5.1.4)(webpack@5.101.0) + version: 5.2.2(webpack-cli@5.1.4)(webpack@5.103.0) yaml: specifier: ~2.8.0 version: 2.8.1 @@ -4003,7 +4170,7 @@ importers: version: 22.15.35 eslint: specifier: ~9.27.0 - version: 9.27.0(jiti@2.5.1) + version: 9.27.0(jiti@2.6.1) jsonix: specifier: ~3.0.0 version: 3.0.0 @@ -4019,13 +4186,13 @@ importers: version: 11.2.0(size-limit@11.2.0) '@typescript-eslint/eslint-plugin': specifier: ~8.32.1 - version: 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + version: 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) eslint-plugin-react-hooks: specifier: ~5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.5.1)) + version: 5.2.0(eslint@9.27.0(jiti@2.6.1)) eslint-plugin-unused-imports: specifier: ~4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1)) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1)) husky: specifier: ^9.1.7 version: 9.1.7 @@ -4065,7 +4232,7 @@ importers: dependencies: '@aws-sdk/client-s3': specifier: ^3.817.0 - version: 3.862.0 + version: 3.933.0 '@vscode-logging/logger': specifier: ^2.0.0 version: 2.0.0 @@ -4080,7 +4247,7 @@ importers: version: 1.0.0(tslib@2.8.1) '@vscode/iconv-lite-umd': specifier: ^0.7.0 - version: 0.7.0 + version: 0.7.1 '@vscode/webview-ui-toolkit': specifier: ^1.4.0 version: 1.4.0(react@19.1.0) @@ -4100,8 +4267,8 @@ importers: specifier: ^18.2.1 version: 18.7.0 js-yaml: - specifier: ^4.1.0 - version: 4.1.0 + specifier: ^4.1.1 + version: 4.1.1 jschardet: specifier: ^3.1.4 version: 3.1.4 @@ -4125,7 +4292,7 @@ importers: version: 3.25.76 zustand: specifier: ^5.0.5 - version: 5.0.7(@types/react@18.2.0)(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0)) + version: 5.0.8(@types/react@18.2.0)(react@19.1.0)(use-sync-external-store@1.6.0(react@19.1.0)) devDependencies: '@biomejs/biome': specifier: ^1.9.4 @@ -4147,22 +4314,22 @@ importers: version: 22.15.35 '@types/vscode': specifier: ^1.100.0 - version: 1.102.0 + version: 1.106.1 '@types/which': specifier: ^3.0.4 version: 3.0.4 '@vscode/vsce': - specifier: ^3.4.2 - version: 3.4.2 + specifier: ^3.7.0 + version: 3.7.0 '@wso2/playwright-vscode-tester': specifier: workspace:* version: link:../../common-libs/playwright-vscode-tester axios: specifier: ^1.12.0 - version: 1.12.0 + version: 1.12.2 copy-webpack-plugin: specifier: ^13.0.0 - version: 13.0.0(webpack@5.101.0) + version: 13.0.1(webpack@5.103.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 @@ -4171,25 +4338,25 @@ importers: version: 6.0.0 mocha: specifier: ^11.5.0 - version: 11.7.1 + version: 11.7.5 terser-webpack-plugin: specifier: ^5.3.14 - version: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + version: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) ts-loader: specifier: ~9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) typescript: specifier: ^5.8.3 version: 5.8.3 vscode-extension-tester: specifier: ^8.14.1 - version: 8.14.1(mocha@11.7.1)(typescript@5.8.3) + version: 8.14.1(mocha@11.7.5)(typescript@5.8.3) webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@6.0.1) + version: 5.103.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack@5.101.0) + version: 6.0.1(webpack@5.103.0) webpack-permissions-plugin: specifier: ^1.0.10 version: 1.0.10 @@ -4204,7 +4371,7 @@ importers: version: 0.8.2 '@headlessui/react': specifier: ^2.1.2 - version: 2.2.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@hookform/resolvers': specifier: 5.2.2 version: 5.2.2(react-hook-form@7.63.0(react@18.2.0)) @@ -4230,8 +4397,8 @@ importers: specifier: ^4.0.0 version: 4.0.0 js-yaml: - specifier: ^4.1.0 - version: 4.1.0 + specifier: ^4.1.1 + version: 4.1.1 lodash.debounce: specifier: ~4.0.8 version: 4.0.8 @@ -4258,7 +4425,7 @@ importers: version: 4.0.1 swagger-ui-react: specifier: ^5.22.0 - version: 5.27.1(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 5.30.2(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) timezone-support: specifier: ^3.1.0 version: 3.1.0 @@ -4295,16 +4462,16 @@ importers: version: 1.57.5 autoprefixer: specifier: ^10.4.19 - version: 10.4.21(postcss@8.5.6) + version: 10.4.22(postcss@8.5.6) copyfiles: specifier: ~2.4.1 version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.101.0) + version: 7.1.2(webpack@5.103.0) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.101.0) + version: 6.2.0(webpack@5.103.0) path: specifier: ^0.12.7 version: 0.12.7 @@ -4313,60 +4480,60 @@ importers: version: 8.5.6 postcss-loader: specifier: ^8.1.1 - version: 8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.101.0) + version: 8.2.0(postcss@8.5.6)(typescript@5.8.3)(webpack@5.103.0) sass-loader: specifier: ^16.0.5 - version: 16.0.5(sass@1.90.0)(webpack@5.101.0) + version: 16.0.6(sass@1.94.1)(webpack@5.103.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.101.0) + version: 5.0.0(webpack@5.103.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.101.0) + version: 4.0.0(webpack@5.103.0) tailwindcss: specifier: ^4.1.7 - version: 4.1.11 + version: 4.1.17 ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) + version: 9.5.4(typescript@5.8.3)(webpack@5.103.0) typescript: specifier: 5.8.3 version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.101.0(webpack-cli@6.0.1) + version: 5.103.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) + version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.103.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) + version: 5.2.2(webpack-cli@6.0.1)(webpack@5.103.0) packages: - '@adobe/css-tools@4.4.3': - resolution: {integrity: sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==} + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} - '@ai-sdk/amazon-bedrock@3.0.30': - resolution: {integrity: sha512-aF21FFpTusWAdXc70bqA8SIFnIfCokwrp4G8efMETIRXIH+N5QGd6UYEMbfMfwx4P9iN9v3oUwsHsRtr87TKPQ==} + '@ai-sdk/amazon-bedrock@3.0.56': + resolution: {integrity: sha512-SncBHNNav14D5TOZilLX/FZHpPKwp8dixPj1FRut8YBGZ1Ou4gOqjR2eJ2NVsMiKi1X/Hb+Izo8vQcZ81AGSXg==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/anthropic@2.0.23': - resolution: {integrity: sha512-ZEBiiv1UhjGjBwUU63pFhLK5LCSlNDb1idY9K1oZHm5/Fda1cuTojf32tOp0opH0RPbPAN/F8fyyNjbU33n9Kw==} + '@ai-sdk/anthropic@2.0.45': + resolution: {integrity: sha512-Ipv62vavDCmrV/oE/lXehL9FzwQuZOnnlhPEftWizx464Wb6lvnBTJx8uhmEYruFSzOWTI95Z33ncZ4tA8E6RQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/gateway@1.0.32': - resolution: {integrity: sha512-TQRIM63EI/ccJBc7RxeB8nq/CnGNnyl7eu5stWdLwL41stkV5skVeZJe0QRvFbaOrwCkgUVE0yrUqJi4tgDC1A==} + '@ai-sdk/gateway@2.0.9': + resolution: {integrity: sha512-E6x4h5CPPPJ0za1r5HsLtHbeI+Tp3H+YFtcH8G3dSSPFE6w+PZINzB4NxLZmg1QqSeA5HTP3ZEzzsohp0o2GEw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@3.0.10': - resolution: {integrity: sha512-T1gZ76gEIwffep6MWI0QNy9jgoybUHE7TRaHB5k54K8mF91ciGFlbtCGxDYhMH3nCRergKwYFIDeFF0hJSIQHQ==} + '@ai-sdk/provider-utils@3.0.17': + resolution: {integrity: sha512-TR3Gs4I3Tym4Ll+EPdzRdvo/rc8Js6c4nVhFLuvGLX/Y4V9ZcQMa/HTiYsHEgmYrf1zVi6Q145UEZUfleOwOjw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -4418,123 +4585,123 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-s3@3.862.0': - resolution: {integrity: sha512-sPmqv2qKORtGRN51cRoHyTOK/SMejG1snXUQytuximeDPn5e/p6cCsYwOI8QuQNW+/7HbmosEz91lPcbClWXxg==} + '@aws-sdk/client-s3@3.933.0': + resolution: {integrity: sha512-KxwZvdxdCeWK6o8mpnb+kk7Kgb8V+8AjTwSXUWH1UAD85B0tjdo1cSfE5zoR5fWGol4Ml5RLez12a6LPhsoTqA==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-sso@3.862.0': - resolution: {integrity: sha512-zHf7Bn22K09BdFgiGg6yWfy927djGhs58KB5qpqD2ie7u796TvetPH14p6UUAOGyk6aah+wR/WLFFoc+51uADA==} + '@aws-sdk/client-sso@3.933.0': + resolution: {integrity: sha512-zwGLSiK48z3PzKpQiDMKP85+fpIrPMF1qQOQW9OW7BGj5AuBZIisT2O4VzIgYJeh+t47MLU7VgBQL7muc+MJDg==} engines: {node: '>=18.0.0'} - '@aws-sdk/core@3.862.0': - resolution: {integrity: sha512-oJ5Au3QCAQmOmh7PD7dUxnPDxWsT9Z95XEOiJV027//11pwRSUMiNSvW8srPa3i7CZRNjz5QHX6O4KqX9PxNsQ==} + '@aws-sdk/core@3.932.0': + resolution: {integrity: sha512-AS8gypYQCbNojwgjvZGkJocC2CoEICDx9ZJ15ILsv+MlcCVLtUJSRSx3VzJOUY2EEIaGLRrPNlIqyn/9/fySvA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-env@3.862.0': - resolution: {integrity: sha512-/nafSJMuixcrCN1SmsOBIQ5m1fhr9ZnCxw3JZD9qJm3yNXhAshqAC+KcA3JGFnvdBVLhY/pUpdoQmxZmuFJItQ==} + '@aws-sdk/credential-provider-env@3.932.0': + resolution: {integrity: sha512-ozge/c7NdHUDyHqro6+P5oHt8wfKSUBN+olttiVfBe9Mw3wBMpPa3gQ0pZnG+gwBkKskBuip2bMR16tqYvUSEA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-http@3.862.0': - resolution: {integrity: sha512-JnF3vH6GxvPuMGSI5QsmVlmWc0ebElEiJvUGByTMSr/BfzywZdJBKzPVqViwNqAW5cBWiZ/rpL+ekZ24Nb0Vow==} + '@aws-sdk/credential-provider-http@3.932.0': + resolution: {integrity: sha512-b6N9Nnlg8JInQwzBkUq5spNaXssM3h3zLxGzpPrnw0nHSIWPJPTbZzA5Ca285fcDUFuKP+qf3qkuqlAjGOdWhg==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-ini@3.862.0': - resolution: {integrity: sha512-LkpZ2S9DQCTHTPu1p0Qg5bM5DN/b/cEflW269RoeuYpiznxdV8r/mqYuhh/VPXQKkBZdiILe4/OODtg+vk4S0A==} + '@aws-sdk/credential-provider-ini@3.933.0': + resolution: {integrity: sha512-HygGyKuMG5AaGXsmM0d81miWDon55xwalRHB3UmDg3QBhtunbNIoIaWUbNTKuBZXcIN6emeeEZw/YgSMqLc0YA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-node@3.862.0': - resolution: {integrity: sha512-4+X/LdEGPCBMlhn6MCcNJ5yJ8k+yDXeSO1l9X49NNQiG60SH/yObB3VvotcHWC+A3EEZx4dOw/ylcPt86e7Irg==} + '@aws-sdk/credential-provider-node@3.933.0': + resolution: {integrity: sha512-L2dE0Y7iMLammQewPKNeEh1z/fdJyYEU+/QsLBD9VEh+SXcN/FIyTi21Isw8wPZN6lMB9PDVtISzBnF8HuSFrw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-process@3.862.0': - resolution: {integrity: sha512-bR/eRCjRsilAuaUpNzTWWE4sUxJC4k571+4LLxE6Xo+0oYHfH+Ih00+sQRX06s4SqZZROdppissm3OOr5d26qA==} + '@aws-sdk/credential-provider-process@3.932.0': + resolution: {integrity: sha512-BodZYKvT4p/Dkm28Ql/FhDdS1+p51bcZeMMu2TRtU8PoMDHnVDhHz27zASEKSZwmhvquxHrZHB0IGuVqjZUtSQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-sso@3.862.0': - resolution: {integrity: sha512-1E1rTKWJAbzN/uiIXFPCVAS2PrZgy87O6BEO69404bI7o/iYHOfohfn66bdSqBnZ7Tn/hFJdCk6i23U3pibf5w==} + '@aws-sdk/credential-provider-sso@3.933.0': + resolution: {integrity: sha512-/R1DBR7xNcuZIhS2RirU+P2o8E8/fOk+iLAhbqeSTq+g09fP/F6W7ouFpS5eVE2NIfWG7YBFoVddOhvuqpn51g==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-web-identity@3.862.0': - resolution: {integrity: sha512-Skv07eOS4usDf/Bna3FWKIo0/35qhxb22Z/OxrbNtx2Hxa/upp42S+Y6fA9qzgLqXMNYDZngKYwwMPtzrbkMAg==} + '@aws-sdk/credential-provider-web-identity@3.933.0': + resolution: {integrity: sha512-c7Eccw2lhFx2/+qJn3g+uIDWRuWi2A6Sz3PVvckFUEzPsP0dPUo19hlvtarwP5GzrsXn0yEPRVhpewsIaSCGaQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-bucket-endpoint@3.862.0': - resolution: {integrity: sha512-Wcsc7VPLjImQw+CP1/YkwyofMs9Ab6dVq96iS8p0zv0C6YTaMjvillkau4zFfrrrTshdzFWKptIFhKK8Zsei1g==} + '@aws-sdk/middleware-bucket-endpoint@3.930.0': + resolution: {integrity: sha512-cnCLWeKPYgvV4yRYPFH6pWMdUByvu2cy2BAlfsPpvnm4RaVioztyvxmQj5PmVN5fvWs5w/2d6U7le8X9iye2sA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-expect-continue@3.862.0': - resolution: {integrity: sha512-oG3AaVUJ+26p0ESU4INFn6MmqqiBFZGrebST66Or+YBhteed2rbbFl7mCfjtPWUFgquQlvT1UP19P3LjQKeKpw==} + '@aws-sdk/middleware-expect-continue@3.930.0': + resolution: {integrity: sha512-5HEQ+JU4DrLNWeY27wKg/jeVa8Suy62ivJHOSUf6e6hZdVIMx0h/kXS1fHEQNNiLu2IzSEP/bFXsKBaW7x7s0g==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.862.0': - resolution: {integrity: sha512-3PuTNJs43GmtNIfj4R/aNPGX6lfIq0gjfekVPUO/MnP/eV+RVgkCvEqWYyN6RZyOzrzsJydXbmydwLHAwMzxiw==} + '@aws-sdk/middleware-flexible-checksums@3.932.0': + resolution: {integrity: sha512-hyvRz/XS/0HTHp9/Ld1mKwpOi7bZu5olI42+T112rkCTbt1bewkygzEl4oflY4H7cKMamQusYoL0yBUD/QSEvA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-host-header@3.862.0': - resolution: {integrity: sha512-jDje8dCFeFHfuCAxMDXBs8hy8q9NCTlyK4ThyyfAj3U4Pixly2mmzY2u7b7AyGhWsjJNx8uhTjlYq5zkQPQCYw==} + '@aws-sdk/middleware-host-header@3.930.0': + resolution: {integrity: sha512-x30jmm3TLu7b/b+67nMyoV0NlbnCVT5DI57yDrhXAPCtdgM1KtdLWt45UcHpKOm1JsaIkmYRh2WYu7Anx4MG0g==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-location-constraint@3.862.0': - resolution: {integrity: sha512-MnwLxCw7Cc9OngEH3SHFhrLlDI9WVxaBkp3oTsdY9JE7v8OE38wQ9vtjaRsynjwu0WRtrctSHbpd7h/QVvtjyA==} + '@aws-sdk/middleware-location-constraint@3.930.0': + resolution: {integrity: sha512-QIGNsNUdRICog+LYqmtJ03PLze6h2KCORXUs5td/hAEjVP5DMmubhtrGg1KhWyctACluUH/E/yrD14p4pRXxwA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-logger@3.862.0': - resolution: {integrity: sha512-N/bXSJznNBR/i7Ofmf9+gM6dx/SPBK09ZWLKsW5iQjqKxAKn/2DozlnE54uiEs1saHZWoNDRg69Ww4XYYSlG1Q==} + '@aws-sdk/middleware-logger@3.930.0': + resolution: {integrity: sha512-vh4JBWzMCBW8wREvAwoSqB2geKsZwSHTa0nSt0OMOLp2PdTYIZDi0ZiVMmpfnjcx9XbS6aSluLv9sKx4RrG46A==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-recursion-detection@3.862.0': - resolution: {integrity: sha512-KVoo3IOzEkTq97YKM4uxZcYFSNnMkhW/qj22csofLegZi5fk90ztUnnaeKfaEJHfHp/tm1Y3uSoOXH45s++kKQ==} + '@aws-sdk/middleware-recursion-detection@3.933.0': + resolution: {integrity: sha512-qgrMlkVKzTCAdNw2A05DC2sPBo0KRQ7wk+lbYSRJnWVzcrceJhnmhoZVV5PFv7JtchK7sHVcfm9lcpiyd+XaCA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-sdk-s3@3.862.0': - resolution: {integrity: sha512-rDRHxxZuY9E7py/OVYN1VQRAw0efEThvK5sZ3HfNNpL6Zk4HeOGtc6NtULSfeCeyHCVlJsdOVkIxJge2Ax5vSA==} + '@aws-sdk/middleware-sdk-s3@3.932.0': + resolution: {integrity: sha512-bYMHxqQzseaAP9Z5qLI918z5AtbAnZRRtFi3POb4FLZyreBMgCgBNaPkIhdgywnkqaydTWvbMBX4s9f4gUwlTw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-ssec@3.862.0': - resolution: {integrity: sha512-72VtP7DZC8lYTE2L3Efx2BrD98oe9WTK8X6hmd3WTLkbIjvgWQWIdjgaFXBs8WevsXkewIctfyA3KEezvL5ggw==} + '@aws-sdk/middleware-ssec@3.930.0': + resolution: {integrity: sha512-N2/SvodmaDS6h7CWfuapt3oJyn1T2CBz0CsDIiTDv9cSagXAVFjPdm2g4PFJqrNBeqdDIoYBnnta336HmamWHg==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-user-agent@3.862.0': - resolution: {integrity: sha512-7OOaGbAw7Kg1zoKO9wV8cA5NnJC+RYsocjmP3FZ0FiKa7gbmeQ6Cfheunzd1Re9fgelgL3OIRjqO5mSmOIhyhA==} + '@aws-sdk/middleware-user-agent@3.932.0': + resolution: {integrity: sha512-9BGTbJyA/4PTdwQWE9hAFIJGpsYkyEW20WON3i15aDqo5oRZwZmqaVageOD57YYqG8JDJjvcwKyDdR4cc38dvg==} engines: {node: '>=18.0.0'} - '@aws-sdk/nested-clients@3.862.0': - resolution: {integrity: sha512-fPrfXa+m9S0DA5l8+p4A9NFQ22lEHm/ezaUWWWs6F3/U49lR6yKhNAGji3LlIG7b7ZdTJ3smAcaxNHclJsoQIg==} + '@aws-sdk/nested-clients@3.933.0': + resolution: {integrity: sha512-o1GX0+IPlFi/D8ei9y/jj3yucJWNfPnbB5appVBWevAyUdZA5KzQ2nK/hDxiu9olTZlFEFpf1m1Rn3FaGxHqsw==} engines: {node: '>=18.0.0'} - '@aws-sdk/region-config-resolver@3.862.0': - resolution: {integrity: sha512-VisR+/HuVFICrBPY+q9novEiE4b3mvDofWqyvmxHcWM7HumTz9ZQSuEtnlB/92GVM3KDUrR9EmBHNRrfXYZkcQ==} + '@aws-sdk/region-config-resolver@3.930.0': + resolution: {integrity: sha512-KL2JZqH6aYeQssu1g1KuWsReupdfOoxD6f1as2VC+rdwYFUu4LfzMsFfXnBvvQWWqQ7rZHWOw1T+o5gJmg7Dzw==} engines: {node: '>=18.0.0'} - '@aws-sdk/signature-v4-multi-region@3.862.0': - resolution: {integrity: sha512-ZAjrbXnu3yTxXMPiEVxDP/I8zfssrLQGgUi0NgJP6Cz/mOS/S/3hfOZrMown1jLhkTrzLpjNE8Q2n18VtRbScQ==} + '@aws-sdk/signature-v4-multi-region@3.932.0': + resolution: {integrity: sha512-NCIRJvoRc9246RZHIusY1+n/neeG2yGhBGdKhghmrNdM+mLLN6Ii7CKFZjx3DhxtpHMpl1HWLTMhdVrGwP2upw==} engines: {node: '>=18.0.0'} - '@aws-sdk/token-providers@3.862.0': - resolution: {integrity: sha512-p3u7aom3WQ7ArFByNbccRIkCssk5BB4IUX9oFQa2P0MOFCbkKFBLG7WMegRXhq5grOHmI4SRftEDDy3CcoTqSQ==} + '@aws-sdk/token-providers@3.933.0': + resolution: {integrity: sha512-Qzq7zj9yXUgAAJEbbmqRhm0jmUndl8nHG0AbxFEfCfQRVZWL96Qzx0mf8lYwT9hIMrXncLwy31HOthmbXwFRwQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/types@3.862.0': - resolution: {integrity: sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==} + '@aws-sdk/types@3.930.0': + resolution: {integrity: sha512-we/vaAgwlEFW7IeftmCLlLMw+6hFs3DzZPJw7lVHbj/5HJ0bz9gndxEsS2lQoeJ1zhiiLqAqvXxmM43s0MBg0A==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-arn-parser@3.804.0': - resolution: {integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==} + '@aws-sdk/util-arn-parser@3.893.0': + resolution: {integrity: sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-endpoints@3.862.0': - resolution: {integrity: sha512-eCZuScdE9MWWkHGM2BJxm726MCmWk/dlHjOKvkM0sN1zxBellBMw5JohNss1Z8/TUmnW2gb9XHTOiHuGjOdksA==} + '@aws-sdk/util-endpoints@3.930.0': + resolution: {integrity: sha512-M2oEKBzzNAYr136RRc6uqw3aWlwCxqTP1Lawps9E1d2abRPvl1p1ztQmmXp1Ak4rv8eByIZ+yQyKQ3zPdRG5dw==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-locate-window@3.804.0': - resolution: {integrity: sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==} + '@aws-sdk/util-locate-window@3.893.0': + resolution: {integrity: sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-user-agent-browser@3.862.0': - resolution: {integrity: sha512-BmPTlm0r9/10MMr5ND9E92r8KMZbq5ltYXYpVcUbAsnB1RJ8ASJuRoLne5F7mB3YMx0FJoOTuSq7LdQM3LgW3Q==} + '@aws-sdk/util-user-agent-browser@3.930.0': + resolution: {integrity: sha512-q6lCRm6UAe+e1LguM5E4EqM9brQlDem4XDcQ87NzEvlTW6GzmNCO0w1jS0XgCFXQHjDxjdlNFX+5sRbHijwklg==} - '@aws-sdk/util-user-agent-node@3.862.0': - resolution: {integrity: sha512-KtJdSoa1Vmwquy+zwiqRQjtsuKaHlVcZm8tsTchHbc6809/VeaC+ZZOqlil9IWOOyWNGIX8GTRwP9TEb8cT5Gw==} + '@aws-sdk/util-user-agent-node@3.932.0': + resolution: {integrity: sha512-/kC6cscHrZL74TrZtgiIL5jJNbVsw9duGGPurmaVgoCbP7NnxyaSWEurbNV3VPNPhNE3bV3g4Ci+odq+AlsYQg==} engines: {node: '>=18.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -4542,8 +4709,12 @@ packages: aws-crt: optional: true - '@aws-sdk/xml-builder@3.862.0': - resolution: {integrity: sha512-6Ed0kmC1NMbuFTEgNmamAUU1h5gShgxL1hBVLbEzUa3trX5aJBz1vU4bXaBTvOYUAnOHtiy1Ml4AMStd6hJnFA==} + '@aws-sdk/xml-builder@3.930.0': + resolution: {integrity: sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==} + engines: {node: '>=18.0.0'} + + '@aws/lambda-invoke-store@0.2.0': + resolution: {integrity: sha512-D1jAmAZQYMoPiacfgNf7AWhg3DFN3Wq/vQv3WINt9znwjzHp2x+WzdJFxxj7xZL7V1U79As6G8f7PorMYWBKsQ==} engines: {node: '>=18.0.0'} '@azu/format-text@1.0.2': @@ -4556,52 +4727,52 @@ packages: resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} engines: {node: '>=18.0.0'} - '@azure/core-auth@1.10.0': - resolution: {integrity: sha512-88Djs5vBvGbHQHf5ZZcaoNHo6Y8BKZkt3cw2iuJIQzLEgH4Ox6Tm4hjFhbqOxyYsgIG/eJbFEHpxRIfEEWv5Ow==} + '@azure/core-auth@1.10.1': + resolution: {integrity: sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==} engines: {node: '>=20.0.0'} - '@azure/core-client@1.10.0': - resolution: {integrity: sha512-O4aP3CLFNodg8eTHXECaH3B3CjicfzkxVtnrfLkOq0XNP7TIECGfHpK/C6vADZkWP75wzmdBnsIA8ksuJMk18g==} + '@azure/core-client@1.10.1': + resolution: {integrity: sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==} engines: {node: '>=20.0.0'} - '@azure/core-rest-pipeline@1.22.0': - resolution: {integrity: sha512-OKHmb3/Kpm06HypvB3g6Q3zJuvyXcpxDpCS1PnU8OV6AJgSFaee/covXBcPbWc6XDDxtEPlbi3EMQ6nUiPaQtw==} + '@azure/core-rest-pipeline@1.22.2': + resolution: {integrity: sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==} engines: {node: '>=20.0.0'} - '@azure/core-tracing@1.3.0': - resolution: {integrity: sha512-+XvmZLLWPe67WXNZo9Oc9CrPj/Tm8QnHR92fFAFdnbzwNdCH1h+7UdpaQgRSBsMY+oW1kHXNUZQLdZ1gHX3ROw==} + '@azure/core-tracing@1.3.1': + resolution: {integrity: sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==} engines: {node: '>=20.0.0'} - '@azure/core-util@1.13.0': - resolution: {integrity: sha512-o0psW8QWQ58fq3i24Q1K2XfS/jYTxr7O1HRcyUE9bV9NttLU+kYOH82Ixj8DGlMTOWgxm1Sss2QAfKK5UkSPxw==} + '@azure/core-util@1.13.1': + resolution: {integrity: sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==} engines: {node: '>=20.0.0'} - '@azure/identity@4.11.1': - resolution: {integrity: sha512-0ZdsLRaOyLxtCYgyuqyWqGU5XQ9gGnjxgfoNTt1pvELGkkUFrMATABZFIq8gusM7N1qbqpVtwLOhk0d/3kacLg==} + '@azure/identity@4.13.0': + resolution: {integrity: sha512-uWC0fssc+hs1TGGVkkghiaFkkS7NkTxfnCH+Hdg+yTehTpMcehpok4PgUKKdyCH+9ldu6FhiHRv84Ntqj1vVcw==} engines: {node: '>=20.0.0'} '@azure/logger@1.3.0': resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==} engines: {node: '>=20.0.0'} - '@azure/msal-browser@4.19.0': - resolution: {integrity: sha512-g6Ea+sJmK7l5NUyrPhtD7DNj/tZcsr6VTNNLNuYs8yPvL3HNiIpO/0kzXntF9AqJ/6L+uz9aHmoT1x+RNq6zBQ==} + '@azure/msal-browser@4.26.1': + resolution: {integrity: sha512-GGCIsZXxyNm5QcQZ4maA9q+9UWmM+/87G+ybvPkrE32el1URSa9WYt0t67ks3/P0gspZX9RoEqyLqJ/X/JDnBQ==} engines: {node: '>=0.8.0'} - '@azure/msal-common@15.10.0': - resolution: {integrity: sha512-+cGnma71NV3jzl6DdgdHsqriN4ZA7puBIzObSYCvcIVGMULGb2NrcOGV6IJxO06HoVRHFKijkxd9lcBvS063KQ==} + '@azure/msal-common@15.13.1': + resolution: {integrity: sha512-vQYQcG4J43UWgo1lj7LcmdsGUKWYo28RfEvDQAEMmQIMjSFufvb+pS0FJ3KXmrPmnWlt1vHDl3oip6mIDUQ4uA==} engines: {node: '>=0.8.0'} - '@azure/msal-node@3.7.0': - resolution: {integrity: sha512-WsL11pT0hnoIr/4NCjG6uJswkmNA/9AgEre4mSQZS2e+ZPKUWwUdA5nCTnr4n1FMT1O5ezSEiJushnPW25Y+dA==} + '@azure/msal-node@3.8.2': + resolution: {integrity: sha512-dQrex2LiXwlCe9WuBHnCsY+xxLyuMXSd2SDEYJuhqB7cE8u6QafiC1xy8j8eBjGO30AsRi2M6amH0ZKk7vJpjA==} engines: {node: '>=16'} '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.0': - resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} + '@babel/compat-data@7.28.5': + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} engines: {node: '>=6.9.0'} '@babel/core@7.12.9': @@ -4612,8 +4783,12 @@ packages: resolution: {integrity: sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.0': - resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} + '@babel/core@7.28.5': + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': @@ -4624,14 +4799,14 @@ packages: resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.27.1': - resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} + '@babel/helper-create-class-features-plugin@7.28.5': + resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.1': - resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} + '@babel/helper-create-regexp-features-plugin@7.28.5': + resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -4655,16 +4830,16 @@ packages: resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.27.3': - resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -4700,29 +4875,29 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.27.1': - resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} + '@babel/helper-wrap-function@7.28.3': + resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.2': - resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==} + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.0': - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': - resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': + resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -4745,8 +4920,8 @@ packages: peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1': - resolution: {integrity: sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': + resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -4972,8 +5147,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.28.0': - resolution: {integrity: sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==} + '@babel/plugin-transform-block-scoping@7.28.5': + resolution: {integrity: sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -4984,14 +5159,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.27.1': - resolution: {integrity: sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==} + '@babel/plugin-transform-class-static-block@7.28.3': + resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.28.0': - resolution: {integrity: sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==} + '@babel/plugin-transform-classes@7.28.4': + resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5002,8 +5177,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.28.0': - resolution: {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} + '@babel/plugin-transform-destructuring@7.28.5': + resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5032,8 +5207,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.27.1': - resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} + '@babel/plugin-transform-exponentiation-operator@7.28.5': + resolution: {integrity: sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5074,8 +5249,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.27.1': - resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} + '@babel/plugin-transform-logical-assignment-operators@7.28.5': + resolution: {integrity: sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5098,8 +5273,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.27.1': - resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} + '@babel/plugin-transform-modules-systemjs@7.28.5': + resolution: {integrity: sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5134,8 +5309,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.28.0': - resolution: {integrity: sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==} + '@babel/plugin-transform-object-rest-spread@7.28.4': + resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5152,8 +5327,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.27.1': - resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + '@babel/plugin-transform-optional-chaining@7.28.5': + resolution: {integrity: sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5206,8 +5381,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.28.1': - resolution: {integrity: sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg==} + '@babel/plugin-transform-regenerator@7.28.4': + resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5254,8 +5429,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.28.0': - resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} + '@babel/plugin-transform-typescript@7.28.5': + resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5319,37 +5494,37 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/register@7.27.1': - resolution: {integrity: sha512-K13lQpoV54LATKkzBpBAEu1GGSIRzxR9f4IN4V8DCDgiUMo2UDGagEZr3lPeVNJPLkWUi5JE4hCHKneVTwQlYQ==} + '@babel/register@7.28.3': + resolution: {integrity: sha512-CieDOtd8u208eI49bYl4z1J22ySFw87IGwE+IswFEExH7e3rLgKb0WNQeumnacQ1+VoDJLYI5QFA3AJZuyZQfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime-corejs3@7.28.2': - resolution: {integrity: sha512-FVFaVs2/dZgD3Y9ZD+AKNKjyGKzwu0C54laAXWUXgLcVXcCX6YZ6GhK2cp7FogSN2OA0Fu+QT8dP3FUdo9ShSQ==} + '@babel/runtime-corejs3@7.28.4': + resolution: {integrity: sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.2': - resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==} + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.0': - resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.2': - resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} '@base2/pretty-print-object@1.0.1': resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} - '@bazel/runfiles@6.3.1': - resolution: {integrity: sha512-1uLNT5NZsUVIGS4syuHwTzZ8HycMPyr6POA3FCE4GbMtc4rhoJk8aZKtNIRthJYfL+iioppi+rTfH3olMPr9nA==} + '@bazel/runfiles@6.5.0': + resolution: {integrity: sha512-RzahvqTkfpY2jsDxo8YItPX+/iZ6hbiikw1YhE0bA9EKBR5Og8Pa6FHn9PO9M0zaXRVsr0GFQLKbB/0rzy9SzA==} '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -5411,16 +5586,22 @@ packages: cpu: [x64] os: [win32] + '@cacheable/memory@2.0.5': + resolution: {integrity: sha512-fkiAxCvssEyJZ5fxX4tcdZFRmW9JehSTGvvqmXn6rTzG5cH6V/3C4ad8yb01vOjp2xBydHkHrgpW0qeGtzt6VQ==} + + '@cacheable/utils@2.3.1': + resolution: {integrity: sha512-38NJXjIr4W1Sghun8ju+uYWD8h2c61B4dKwfnQHVDFpAJ9oS28RpfqZQJ6Dgd3RceGkILDY9YT+72HJR3LoeSQ==} + '@cnakazawa/watch@1.0.4': resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} engines: {node: '>=0.1.95'} hasBin: true - '@codemirror/autocomplete@6.18.6': - resolution: {integrity: sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==} + '@codemirror/autocomplete@6.19.1': + resolution: {integrity: sha512-q6NenYkEy2fn9+JyjIxMWcNjzTL/IhwqfzOut1/G3PrIFkrbl4AL7Wkse5tLrQUUyqGoAKU5+Pi5jnnXxH5HGw==} - '@codemirror/commands@6.8.1': - resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==} + '@codemirror/commands@6.10.0': + resolution: {integrity: sha512-2xUIc5mHXQzT16JnyOFkh8PvfeXuIut3pslWGfsGOhxP/lpgRm9HOl/mpzLErgt5mXDovqA0d11P21gofRLb9w==} '@codemirror/lang-angular@0.1.4': resolution: {integrity: sha512-oap+gsltb/fzdlTQWD6BFF4bSLKcDnlxDsLdePiJpCVNKWXSTAbiiQeYI3UmES+BLAdkmIC1WjyztC1pi/bX4g==} @@ -5443,6 +5624,9 @@ packages: '@codemirror/lang-javascript@6.2.4': resolution: {integrity: sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA==} + '@codemirror/lang-jinja@6.0.0': + resolution: {integrity: sha512-47MFmRcR8UAxd8DReVgj7WJN1WSAMT7OJnewwugZM4XiHWkOjgJQqvEM1NpMj9ALMPyxmlziEI1opH9IaEvmaw==} + '@codemirror/lang-json@6.0.2': resolution: {integrity: sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==} @@ -5452,8 +5636,8 @@ packages: '@codemirror/lang-liquid@6.3.0': resolution: {integrity: sha512-fY1YsUExcieXRTsCiwX/bQ9+PbCTA/Fumv7C7mTUZHoFkibfESnaXwpr2aKH6zZVwysEunsHHkaIpM/pl3xETQ==} - '@codemirror/lang-markdown@6.4.0': - resolution: {integrity: sha512-ZeArR54seh4laFbUTVy0ZmQgO+C/cxxlW4jEoQMhL3HALScBpZBeZcLzrQmJsTEx4is9GzOe0bFAke2B1KZqeA==} + '@codemirror/lang-markdown@6.5.0': + resolution: {integrity: sha512-0K40bZ35jpHya6FriukbgaleaqzBLZfOh7HuzqbMxBXkbYMJDxfF39c23xOgxFezR+3G+tR2/Mup+Xk865OMvw==} '@codemirror/lang-php@6.0.2': resolution: {integrity: sha512-ZKy2v1n8Fc8oEXj0Th0PUMXzQJ0AIR6TaZU+PbDHExFwdu+guzOA4jmCHS1Nz4vbFezwD7LyBdDnddSJeScMCA==} @@ -5482,11 +5666,11 @@ packages: '@codemirror/lang-yaml@6.1.2': resolution: {integrity: sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw==} - '@codemirror/language-data@6.5.1': - resolution: {integrity: sha512-0sWxeUSNlBr6OmkqybUTImADFUP0M3P0IiSde4nc24bz/6jIYzqYSgkOSLS+CBIoW1vU8Q9KUWXscBXeoMVC9w==} + '@codemirror/language-data@6.5.2': + resolution: {integrity: sha512-CPkWBKrNS8stYbEU5kwBwTf3JB1kghlbh4FSAwzGW2TEscdeHHH4FGysREW86Mqnj3Qn09s0/6Ea/TutmoTobg==} - '@codemirror/language@6.11.2': - resolution: {integrity: sha512-p44TsNArL4IVXDTbapUmEkAlvWs2CFQbcfc0ymDsis1kH2wh0gcY96AS29c/vp2d0y2Tquk1EDSaawpzilUiAw==} + '@codemirror/language@6.11.3': + resolution: {integrity: sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==} '@codemirror/legacy-modes@6.5.2': resolution: {integrity: sha512-/jJbwSTazlQEDOQw2FJ8LEEKVS72pU0lx6oM54kGpL8t/NJ2Jda3CZ4pcltiKTdqYSRk3ug1B3pil1gsjA6+8Q==} @@ -5494,8 +5678,8 @@ packages: '@codemirror/lint@6.8.5': resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==} - '@codemirror/merge@6.11.0': - resolution: {integrity: sha512-Wu5Camx8u0jKA4yV3IxcWGMIoXUxuptsbWW9kTje8d/NInnnALeyQaxcVssJznp9FRnu4As3qsBhacERyB9p6w==} + '@codemirror/merge@6.11.2': + resolution: {integrity: sha512-NO5EJd2rLRbwVWLgMdhIntDIhfDtMOKYEZgqV5WnkNUS2oXOCVWLPjG/kgl/Jth2fGiOuG947bteqxP9nBXmMg==} '@codemirror/search@6.5.11': resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==} @@ -5506,8 +5690,8 @@ packages: '@codemirror/theme-one-dark@6.1.3': resolution: {integrity: sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==} - '@codemirror/view@6.38.1': - resolution: {integrity: sha512-RmTOkE7hRU3OVREqFVITWHz6ocgBjv08GoePscAakgVQfciA3SGCEk7mb9IzwW61cKKmlTpHXG6DUE5Ubx+MGQ==} + '@codemirror/view@6.38.8': + resolution: {integrity: sha512-XcE9fcnkHCbWkjeKyi0lllwXmBLtyYb5dt89dJyx23I9+LSh5vZDIuk7OLG4VM1lgrXZQcY6cxyZyk5WVPRv/A==} '@codesandbox/nodebox@0.1.8': resolution: {integrity: sha512-2VRS6JDSk+M+pg56GA6CryyUSGPjBEe8Pnae0QL3jJF1mJZJVMDKr93gJRtBbLkfZN6LD/DwMtf+2L0bpWrjqg==} @@ -5529,6 +5713,10 @@ packages: resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + '@csstools/css-parser-algorithms@3.0.5': resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} @@ -5552,8 +5740,8 @@ packages: peerDependencies: postcss-selector-parser: ^7.0.0 - '@dabh/diagnostics@2.0.3': - resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + '@dabh/diagnostics@2.0.8': + resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} '@date-io/core@3.2.0': resolution: {integrity: sha512-hqwXvY8/YBsT9RwQITG868ZNb1MVFFkF7W1Ecv4P472j/ZWa7EFcgSmxy8PUElNVZfvhdvfv+a8j6NWJqOX5mA==} @@ -5574,8 +5762,17 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} - '@dual-bundle/import-meta-resolve@4.1.0': - resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + '@dual-bundle/import-meta-resolve@4.2.1': + resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==} + + '@emnapi/core@1.7.1': + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} + + '@emnapi/runtime@1.7.1': + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -5592,8 +5789,8 @@ packages: '@emotion/is-prop-valid@0.8.8': resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} - '@emotion/is-prop-valid@1.3.1': - resolution: {integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==} + '@emotion/is-prop-valid@1.4.0': + resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==} '@emotion/memoize@0.7.4': resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} @@ -5640,170 +5837,170 @@ packages: '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - '@esbuild/aix-ppc64@0.25.8': - resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.8': - resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.8': - resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.8': - resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.8': - resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.8': - resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.8': - resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.8': - resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.8': - resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.8': - resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.8': - resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.8': - resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.8': - resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.8': - resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.8': - resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.8': - resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.8': - resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.8': - resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.8': - resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.8': - resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.8': - resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.8': - resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.8': - resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.8': - resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.8': - resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.8': - resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/config-array@0.20.1': @@ -5822,8 +6019,8 @@ packages: resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.15.1': - resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} + '@eslint/core@0.15.2': + resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@2.1.4': @@ -5846,12 +6043,12 @@ packages: resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.4': - resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} + '@eslint/plugin-kit@0.3.5': + resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fal-works/esbuild-plugin-global-externals@2.1.2': @@ -5860,11 +6057,11 @@ packages: '@floating-ui/core@1.7.3': resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} - '@floating-ui/dom@1.7.3': - resolution: {integrity: sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag==} + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} - '@floating-ui/react-dom@2.1.5': - resolution: {integrity: sha512-HDO/1/1oH9fjj4eLgegrlH3dklZpHtUYYFiVwMUwfGvk9jWDRWqkklA2/NFScknrcNSspbV868WjXORvreDX+Q==} + '@floating-ui/react-dom@2.1.6': + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -5878,23 +6075,23 @@ packages: '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} - '@formatjs/ecma402-abstract@2.3.4': - resolution: {integrity: sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==} + '@formatjs/ecma402-abstract@2.3.6': + resolution: {integrity: sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==} '@formatjs/fast-memoize@2.2.7': resolution: {integrity: sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==} - '@formatjs/icu-messageformat-parser@2.11.2': - resolution: {integrity: sha512-AfiMi5NOSo2TQImsYAg8UYddsNJ/vUEv/HaNqiFjnI3ZFfWihUtD5QtuX6kHl8+H+d3qvnE/3HZrfzgdWpsLNA==} + '@formatjs/icu-messageformat-parser@2.11.4': + resolution: {integrity: sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw==} - '@formatjs/icu-skeleton-parser@1.8.14': - resolution: {integrity: sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==} + '@formatjs/icu-skeleton-parser@1.8.16': + resolution: {integrity: sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ==} - '@formatjs/intl-localematcher@0.6.1': - resolution: {integrity: sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==} + '@formatjs/intl-localematcher@0.6.2': + resolution: {integrity: sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==} - '@formatjs/intl@3.1.6': - resolution: {integrity: sha512-tDkXnA4qpIFcDWac8CyVJq6oW8DR7W44QDUBsfXWIIJD/FYYen0QoH46W7XsVMFfPOVKkvbufjboZrrWbEfmww==} + '@formatjs/intl@3.1.8': + resolution: {integrity: sha512-LWXgwI5zTMatvR8w8kCNh/priDTOF/ZssokMBHJ7ZWXFoYLVOYo0EJERD9Eajv+xsfQO1QkuAt77KWQ1OI4mOQ==} peerDependencies: typescript: ^5.6.0 peerDependenciesMeta: @@ -5939,8 +6136,8 @@ packages: react: ^16 || ^17 || ^18 react-dom: ^16 || ^17 || ^18 - '@headlessui/react@2.2.7': - resolution: {integrity: sha512-WKdTymY8Y49H8/gUc/lIyYK1M+/6dq0Iywh4zTZVAaiTDprRfioxSgD0wnXTQTBpjpGJuTL1NO/mqEvc//5SSg==} + '@headlessui/react@2.2.9': + resolution: {integrity: sha512-Mb+Un58gwBn0/yWZfyrCh0TJyurtT+dETj7YHleylHk5od3dv2XqETPGWMyQ5/7sYN7oWdyM1u9MvC0OC8UmzQ==} engines: {node: '>=10'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -5970,8 +6167,8 @@ packages: resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} engines: {node: '>=18.18.0'} '@humanwhocodes/config-array@0.13.0': @@ -5987,10 +6184,6 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.4.3': resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} @@ -6026,6 +6219,10 @@ packages: resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/console@30.2.0': + resolution: {integrity: sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/core@25.5.4': resolution: {integrity: sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA==} engines: {node: '>= 8.3'} @@ -6039,6 +6236,19 @@ packages: node-notifier: optional: true + '@jest/core@30.2.0': + resolution: {integrity: sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/diff-sequences@30.0.1': + resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/environment@25.5.0': resolution: {integrity: sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA==} engines: {node: '>= 8.3'} @@ -6047,14 +6257,26 @@ packages: resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/environment@30.2.0': + resolution: {integrity: sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/expect-utils@29.7.0': resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@30.2.0': + resolution: {integrity: sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/expect@29.7.0': resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect@30.2.0': + resolution: {integrity: sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/fake-timers@25.5.0': resolution: {integrity: sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==} engines: {node: '>= 8.3'} @@ -6063,6 +6285,14 @@ packages: resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/fake-timers@30.2.0': + resolution: {integrity: sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/get-type@30.1.0': + resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/globals@25.5.2': resolution: {integrity: sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA==} engines: {node: '>= 8.3'} @@ -6071,6 +6301,14 @@ packages: resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/globals@30.2.0': + resolution: {integrity: sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/pattern@30.0.1': + resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/reporters@25.5.1': resolution: {integrity: sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw==} engines: {node: '>= 8.3'} @@ -6084,10 +6322,27 @@ packages: node-notifier: optional: true + '@jest/reporters@30.2.0': + resolution: {integrity: sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/schemas@30.0.5': + resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/snapshot-utils@30.2.0': + resolution: {integrity: sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/source-map@25.5.0': resolution: {integrity: sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==} engines: {node: '>= 8.3'} @@ -6096,6 +6351,10 @@ packages: resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/source-map@30.0.1': + resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/test-result@25.5.0': resolution: {integrity: sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==} engines: {node: '>= 8.3'} @@ -6104,6 +6363,10 @@ packages: resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-result@30.2.0': + resolution: {integrity: sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/test-sequencer@25.5.4': resolution: {integrity: sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==} engines: {node: '>= 8.3'} @@ -6112,6 +6375,10 @@ packages: resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-sequencer@30.2.0': + resolution: {integrity: sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/transform@25.5.1': resolution: {integrity: sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==} engines: {node: '>= 8.3'} @@ -6124,6 +6391,10 @@ packages: resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/transform@30.2.0': + resolution: {integrity: sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/types@25.5.0': resolution: {integrity: sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==} engines: {node: '>= 8.3'} @@ -6136,6 +6407,10 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@30.2.0': + resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1': resolution: {integrity: sha512-J4BaTocTOYFkMHIra1JDWrMWpNmBl4EkplIwHEsV8aeUOtdWjwSnln9U7twjMFTAEB7mptNtSKyVi1Y2W9sDJw==} peerDependencies: @@ -6145,21 +6420,27 @@ packages: typescript: optional: true - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.10': - resolution: {integrity: sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==} + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} @@ -6170,8 +6451,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/buffers@1.0.0': - resolution: {integrity: sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==} + '@jsonjoy.com/buffers@1.2.1': + resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -6182,14 +6463,14 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/json-pack@1.8.0': - resolution: {integrity: sha512-paJGjyBTRzfgkqhIyer992g21aSKuu9h//zGS7aqm795roD6VYFf6iU9NYua1Bndmh/NRPkjtm9+hEPkK0yZSw==} + '@jsonjoy.com/json-pack@1.21.0': + resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/json-pointer@1.0.1': - resolution: {integrity: sha512-tJpwQfuBuxqZlyoJOSZcqf7OUmiYQ6MiPNmOv4KbZdXE/DdvBSSAwhos0zIlJU/AXxC8XpuO8p08bh2fIl+RKA==} + '@jsonjoy.com/json-pointer@1.0.2': + resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -6203,8 +6484,14 @@ packages: '@juggle/resize-observer@3.4.0': resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} - '@keyv/serialize@1.1.0': - resolution: {integrity: sha512-RlDgexML7Z63Q8BSaqhXdCYNBy/JQnqYIwxofUrNLGCblOMHp+xux2Q8nLMLlPpgHQPoU0Do8Z6btCpRBEqZ8g==} + '@keyv/bigmap@1.3.0': + resolution: {integrity: sha512-KT01GjzV6AQD5+IYrcpoYLkCu1Jod3nau1Z7EsEuViO3TZGRacSbO9MfHmbJ1WaOXFtWLxPVj169cn2WNKPkIg==} + engines: {node: '>= 18'} + peerDependencies: + keyv: ^5.5.4 + + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} @@ -6280,8 +6567,8 @@ packages: peerDependencies: yjs: '>=13.5.22' - '@lezer/common@1.2.3': - resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} + '@lezer/common@1.3.0': + resolution: {integrity: sha512-L9X8uHCYU310o99L3/MpJKYxPzXPOS7S0NmBaM7UO/x2Kb2WbmMLSkfvdr1KxRIFYOpbY0Jhn7CfLSUDzL8arQ==} '@lezer/cpp@1.1.3': resolution: {integrity: sha512-ykYvuFQKGsRi6IcE+/hCSGUhb/I4WPjd3ELhEblm2wS2cOznDFzO+ubK2c+ioysOnlZ3EduV+MVQFCPzAIoY3w==} @@ -6292,8 +6579,8 @@ packages: '@lezer/go@1.0.1': resolution: {integrity: sha512-xToRsYxwsgJNHTgNdStpcvmbVuKxTapV0dM0wey1geMMRc9aggoVyKgzYp41D2/vVOx+Ii4hmE206kvxIXBVXQ==} - '@lezer/highlight@1.2.1': - resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} + '@lezer/highlight@1.2.3': + resolution: {integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==} '@lezer/html@1.3.12': resolution: {integrity: sha512-RJ7eRWdaJe3bsiiLLHjCFT1JMk8m1YP9kaUbvu2rMLEoOnke9mcTVDyfOslsln0LtujdWespjJ39w6zo+RsQYw==} @@ -6307,11 +6594,11 @@ packages: '@lezer/json@1.0.3': resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==} - '@lezer/lr@1.4.2': - resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} + '@lezer/lr@1.4.3': + resolution: {integrity: sha512-yenN5SqAxAPv/qMnpWW0AT7l+SxVrgG+u0tNsRQWqbrz66HIl8DnEbBObvy21J5K7+I1v7gsAnlE2VQ5yYVSeA==} - '@lezer/markdown@1.4.3': - resolution: {integrity: sha512-kfw+2uMrQ/wy/+ONfrH83OkdFNM0ye5Xq96cLlaCy7h5UT9FO54DU4oRoIc0CSBh5NWmWuiIJA7NGLMJbQ+Oxg==} + '@lezer/markdown@1.6.0': + resolution: {integrity: sha512-AXb98u3M6BEzTnreBnGtQaF7xFTiMA92Dsy5tqEjpacbjRxDSFdN4bKJo9uvU4cEEOS7D2B9MT7kvDgOEIzJSw==} '@lezer/php@1.0.5': resolution: {integrity: sha512-W7asp9DhM6q0W6DYNwIkLSKOvxlXRrif+UXBMxzsJUuqmhE7oVU+gS3THO4S/Puh7Xzgm858UNaFi6dxTP8dJA==} @@ -6347,8 +6634,8 @@ packages: peerDependencies: react: '>=16' - '@mdx-js/react@3.1.0': - resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} peerDependencies: '@types/react': '>=16' react: '>=16' @@ -6370,32 +6657,32 @@ packages: react: '>= 18 || >= 19' react-dom: '>= 18 || >= 19' - '@microsoft/1ds-core-js@4.3.9': - resolution: {integrity: sha512-T8s5qROH7caBNiFrUpN8vgC6wg7QysVPryZKprgl3kLQQPpoMFM6ffIYvUWD74KM9fWWLU7vzFFNBWDBsrTyWg==} + '@microsoft/1ds-core-js@4.3.10': + resolution: {integrity: sha512-5fSZmkGwWkH+mrIA5M1GYPZdPM+SjXwCCl2Am7VhFoVwOBJNhRnwvIpAdzw6sFjiebN/rz+/YH0NdxztGZSa9Q==} - '@microsoft/1ds-post-js@4.3.9': - resolution: {integrity: sha512-BvxI4CW8Ws+gfXKy+Y/9pmEXp88iU1GYVjkUfqXP7La59VHARTumlG5iIgMVvaifOrvSW7G6knvQM++0tEfMBQ==} + '@microsoft/1ds-post-js@4.3.10': + resolution: {integrity: sha512-VSLjc9cT+Y+eTiSfYltJHJCejn8oYr0E6Pq2BMhOEO7F6IyLGYIxzKKvo78ze9x+iHX7KPTATcZ+PFgjGXuNqg==} - '@microsoft/applicationinsights-channel-js@3.3.9': - resolution: {integrity: sha512-/yEgSe6vT2ycQJkXu6VF04TB5XBurk46ECV7uo6KkNhWyDEctAk1VDWB7EqXYdwLhKMbNOYX1pvz7fj43fGNqg==} + '@microsoft/applicationinsights-channel-js@3.3.10': + resolution: {integrity: sha512-iolFLz1ocWAzIQqHIEjjov3gNTPkgFQ4ArHnBcJEYoffOGWlJt6copaevS5YPI5rHzmbySsengZ8cLJJBBrXzQ==} peerDependencies: tslib: '>= 1.0.0' - '@microsoft/applicationinsights-common@3.3.9': - resolution: {integrity: sha512-IgruOuDBxmBK9jYo7SqLJG7Z9OwmAmlvHET49srpN6pqQlEjRpjD1nfA3Ps4RSEbF89a/ad2phQaBp8jvm122g==} + '@microsoft/applicationinsights-common@3.3.10': + resolution: {integrity: sha512-RVIenPIvNgZCbjJdALvLM4rNHgAFuHI7faFzHCgnI6S2WCUNGHeXlQTs9EUUrL+n2TPp9/cd0KKMILU5VVyYiA==} peerDependencies: tslib: '>= 1.0.0' - '@microsoft/applicationinsights-core-js@3.3.9': - resolution: {integrity: sha512-xliiE9H09xCycndlua4QjajN8q5k/ET6VCv+e0Jjodxr9+cmoOP/6QY9dun9ptokuwR8TK0qOaIJ8z4fgslVSA==} + '@microsoft/applicationinsights-core-js@3.3.10': + resolution: {integrity: sha512-5yKeyassZTq2l+SAO4npu6LPnbS++UD+M+Ghjm9uRzoBwD8tumFx0/F8AkSVqbniSREd+ztH/2q2foewa2RZyg==} peerDependencies: tslib: '>= 1.0.0' '@microsoft/applicationinsights-shims@3.0.1': resolution: {integrity: sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==} - '@microsoft/applicationinsights-web-basic@3.3.9': - resolution: {integrity: sha512-8tLaAgsCpWjoaxit546RqeuECnHQPBLnOZhzTYG76oPG1ku7dNXaRNieuZLbO+XmAtg/oxntKLAVoPND8NRgcA==} + '@microsoft/applicationinsights-web-basic@3.3.10': + resolution: {integrity: sha512-AZib5DAT3NU0VT0nLWEwXrnoMDDgZ/5S4dso01CNU5ELNxLdg+1fvchstlVdMy4FrAnxzs8Wf/GIQNFYOVgpAw==} peerDependencies: tslib: '>= 1.0.0' @@ -6416,12 +6703,34 @@ packages: '@microsoft/fast-web-utilities@5.4.1': resolution: {integrity: sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==} - '@modelcontextprotocol/sdk@1.17.1': - resolution: {integrity: sha512-CPle1OQehbWqd25La9Ack5B07StKIxh4+Bf19qnpZKJC1oI22Y0czZHbifjw1UoczIfKBwBDAp/dFxvHG13B5A==} + '@modelcontextprotocol/inspector-cli@0.17.2': + resolution: {integrity: sha512-xXaqZYWJz77xvmfAVlYbvz2/xw9OaalFHq0n5A8PlmZvmhi6akQocIE7ZYaoEBpLbWRSwIZWfsidnfoKb6dO2A==} + hasBin: true + + '@modelcontextprotocol/inspector-client@0.17.2': + resolution: {integrity: sha512-llC96yU8iMjG7ny2gpjhm+ARQqBRZWeKBCxW+nBErAE43jBqd5DhGuI2abrt499Gd3ByNOImz+Z5mb8YWjRiJA==} + hasBin: true + + '@modelcontextprotocol/inspector-server@0.17.2': + resolution: {integrity: sha512-+logjB5XXK+8aE+eDl8cLnwY0UhOUh19vo6tg5rFVmLXNQPtxTFyWybcQfgP/cHp76+r5+EMxIpydDYEoasTvg==} + hasBin: true + + '@modelcontextprotocol/inspector@0.17.2': + resolution: {integrity: sha512-ADWwZtbvecKCbLCR7L0Uaa2mPKFDJcTrc9xcE9pdN8gL/jFfzOMrgdNsKt+qBknzMeSQ6mJT+UguJbnQs8n13Q==} + engines: {node: '>=22.7.5'} + hasBin: true + + '@modelcontextprotocol/sdk@1.22.0': + resolution: {integrity: sha512-VUpl106XVTCpDmTBil2ehgJZjhyLY2QZikzF8NvTXtLRF1CvO5iEE2UNZdVIUer35vFOwMKYeUGbjJtvPWan3g==} engines: {node: '>=18'} + peerDependencies: + '@cfworker/json-schema': ^4.1.1 + peerDependenciesMeta: + '@cfworker/json-schema': + optional: true - '@monaco-editor/loader@1.5.0': - resolution: {integrity: sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw==} + '@monaco-editor/loader@1.6.1': + resolution: {integrity: sha512-w3tEnj9HYEC73wtjdpR089AqkUPskFRcdkxsiSFt3SoUc3OHpmu+leP94CXBm4mHfefmhsdfI0ZQu6qJ0wgtPg==} '@monaco-editor/react@4.7.0': resolution: {integrity: sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==} @@ -6456,6 +6765,9 @@ packages: resolution: {integrity: sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q==} engines: {node: '>=12'} + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + '@ndelangen/get-tarball@3.0.9': resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} @@ -6607,6 +6919,10 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@playwright/test@1.55.1': resolution: {integrity: sha512-IVAh/nOJaw6W9g+RJVlIQJ6gSiER+ae6mKQ5CX1bERzQgbC1VSeBlwdvczT7pxb0GWiyrxH4TGKbMfDb4Sq/ig==} engines: {node: '>=18'} @@ -6718,6 +7034,36 @@ packages: '@projectstorm/react-diagrams@7.0.4': resolution: {integrity: sha512-GJLpo3zhJzjcmx3PfztNDTS7jpePj9TPjXV2CgJmCDZAPHDU8q/f4AyXoJfqvoWlmVnjrzQgtcOU2KbUlNu3dQ==} + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@radix-ui/colors@3.0.0': resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} @@ -6730,9 +7076,6 @@ packages: '@radix-ui/primitive@1.0.1': resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - '@radix-ui/primitive@1.1.2': - resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} - '@radix-ui/primitive@1.1.3': resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} @@ -6762,6 +7105,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-checkbox@1.3.3': + resolution: {integrity: sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-collection@1.0.3': resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: @@ -6824,8 +7180,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dialog@1.1.14': - resolution: {integrity: sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==} + '@radix-ui/react-dialog@1.1.15': + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -6868,19 +7224,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-dismissable-layer@1.1.10': - resolution: {integrity: sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-dismissable-layer@1.1.11': resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} peerDependencies: @@ -6894,8 +7237,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-dropdown-menu@2.1.15': - resolution: {integrity: sha512-mIBnOjgwo9AH3FyKaSWoSu/dYj6VdhJ7frEPiGTeXCdUFHjl9h3mFh2wwhEtINOmYXWhdpf1rY2minFsmaNgVQ==} + '@radix-ui/react-dropdown-menu@2.1.16': + resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -6916,15 +7259,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-focus-guards@1.1.2': - resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-focus-guards@1.1.3': resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} peerDependencies: @@ -6983,8 +7317,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-menu@2.1.15': - resolution: {integrity: sha512-tVlmA3Vb9n8SZSd+YSbuFR66l87Wiy4du+YE+0hzKQEANA+7cWKH1WgqcEX4pXqxUFQKrWQGHdvEfw00TjFiew==} + '@radix-ui/react-label@2.1.8': + resolution: {integrity: sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -6996,8 +7330,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popover@1.1.15': - resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} + '@radix-ui/react-menu@2.1.16': + resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -7009,26 +7343,26 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popper@1.1.2': - resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} + '@radix-ui/react-popover@1.1.15': + resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-popper@1.2.7': - resolution: {integrity: sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==} + '@radix-ui/react-popper@1.1.2': + resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true @@ -7074,8 +7408,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-presence@1.1.4': - resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -7087,34 +7421,34 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-presence@1.1.5': - resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + '@radix-ui/react-primitive@1.0.3': + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-primitive@1.0.3': - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.1.3': - resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + '@radix-ui/react-primitive@2.1.4': + resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -7126,8 +7460,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-roving-focus@1.1.10': - resolution: {integrity: sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==} + '@radix-ui/react-roving-focus@1.1.11': + resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -7196,8 +7530,30 @@ packages: '@types/react': optional: true - '@radix-ui/react-toggle-group@1.1.10': - resolution: {integrity: sha512-kiU694Km3WFLTC75DdqgM/3Jauf3rD9wxeS9XtyWFKsBUeZA337lC+6uUazT7I1DhanZ5gyD5Stf8uf2dbQxOQ==} + '@radix-ui/react-slot@1.2.4': + resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.2.6': + resolution: {integrity: sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tabs@1.1.13': + resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -7209,8 +7565,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-toggle@1.1.9': - resolution: {integrity: sha512-ZoFkBBz9zv9GWer7wIjvdRxmh2wyc2oKWw6C6CseWd6/yq1DK/l5lJ+wnsmFwJZbBYqr02mrf8A2q/CVCuM3ZA==} + '@radix-ui/react-toast@1.2.15': + resolution: {integrity: sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -7222,8 +7578,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-toolbar@1.1.10': - resolution: {integrity: sha512-jiwQsduEL++M4YBIurjSa+voD86OIytCod0/dbIxFZDLD8NfO1//keXYMfsW8BPcfqwoNjt+y06XcJqAb4KR7A==} + '@radix-ui/react-toggle-group@1.1.11': + resolution: {integrity: sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -7235,8 +7591,34 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-tooltip@1.2.7': - resolution: {integrity: sha512-Ap+fNYwKTYJ9pzqW+Xe2HtMRbQ/EeWkj2qykZ6SuEV4iS/o1bZI5ssJbk4D2r8XuDuOBVz/tIx2JObtuqU+5Zw==} + '@radix-ui/react-toggle@1.1.10': + resolution: {integrity: sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toolbar@1.1.11': + resolution: {integrity: sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.2.8': + resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -7409,20 +7791,33 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-visually-hidden@1.2.4': + resolution: {integrity: sha512-kaeiyGCe844dkb9AVF+rb4yTyb1LiLN/e3es3nLiRyN4dC8AduBYPMnnNlDjX2VDOcvDEiPnRNMJeWCfsX0txg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/rect@1.0.1': resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} - '@react-aria/focus@3.21.0': - resolution: {integrity: sha512-7NEGtTPsBy52EZ/ToVKCu0HSelE3kq9qeis+2eEq90XSuJOMaDHUQrA7RC2Y89tlEwQB31bud/kKRi9Qme1dkA==} + '@react-aria/focus@3.21.2': + resolution: {integrity: sha512-JWaCR7wJVggj+ldmM/cb/DXFg47CXR55lznJhZBh4XVqJjMKwaOOqpT5vNN7kpC1wUpXicGNuDnJDN1S/+6dhQ==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/interactions@3.25.4': - resolution: {integrity: sha512-HBQMxgUPHrW8V63u9uGgBymkMfj6vdWbB0GgUJY49K9mBKMsypcHeWkWM6+bF7kxRO728/IK8bWDV6whDbqjHg==} + '@react-aria/interactions@3.25.6': + resolution: {integrity: sha512-5UgwZmohpixwNMVkMvn9K1ceJe6TzlRlAfuYoQDUuOkk62/JVJNDLAPKIf5YMRc7d2B0rmfgaZLMtbREb0Zvkw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 @@ -7433,8 +7828,8 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/utils@3.30.0': - resolution: {integrity: sha512-ydA6y5G1+gbem3Va2nczj/0G0W7/jUVo/cbN10WA5IizzWIwMP5qhFr7macgbKfHMkZ+YZC3oXnt2NNre5odKw==} + '@react-aria/utils@3.31.0': + resolution: {integrity: sha512-ABOzCsZrWzf78ysswmguJbx3McQUja7yeGj6/vZo4JVsZNlxAN+E9rs381ExBRI0KzVo6iBTeX5De8eMZPJXig==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 @@ -7466,19 +7861,19 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/shared@3.31.0': - resolution: {integrity: sha512-ua5U6V66gDcbLZe4P2QeyNgPp4YWD1ymGA6j3n+s8CGExtrCPe64v+g4mvpT8Bnb985R96e4zFT61+m0YCwqMg==} + '@react-types/shared@3.32.1': + resolution: {integrity: sha512-famxyD5emrGGpFuUlgOP6fVW2h/ZaF405G5KDi3zPHzyjAWys/8W6NAVJtNbkCkhedmvL0xOhvt8feGXyXaw5w==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@redhat-developer/locators@1.15.0': - resolution: {integrity: sha512-xxkCoCQsqiA7IVR5kdNfU3MnuT9QSYDeu0KXrwW59FMCcZpUftz6uiQkqgbB212ASlS3mxVhyYpqJan4zr+XtA==} + '@redhat-developer/locators@1.17.0': + resolution: {integrity: sha512-CPDrTJfrA5lxXPd64RHuntq+foRorMIOQAN0tlaQQD5wX0X2xlCOf324TVWS1hmTiYHtA8VfFTJNOjMQYvu0Mw==} peerDependencies: '@redhat-developer/page-objects': '>=1.0.0' selenium-webdriver: '>=4.6.1' - '@redhat-developer/page-objects@1.15.0': - resolution: {integrity: sha512-Mfr7rVcFB+J16VzLbbqLF9Yo1W7G2bgjkVv0vPUrlkz1dgYdAjZpaQpjs6dVlRO5Uopt11loYu4SS+wnxPopMw==} + '@redhat-developer/page-objects@1.17.0': + resolution: {integrity: sha512-KytdvW8iHyECmt7rLf/MWdrtHmUi/SIkgWowjscIx0+U6sgXW7hHZ/5/gWP5HGX0Q5K1AA67veC75x2eZosN2g==} peerDependencies: selenium-webdriver: '>=4.6.1' typescript: '>=4.6.2' @@ -7500,8 +7895,8 @@ packages: peerDependencies: rollup: ^1.20.0||^2.0.0 - '@rollup/plugin-commonjs@28.0.6': - resolution: {integrity: sha512-XSQB1K7FUU5QP+3lOQmVCE3I0FcbbNvmNT4VJSj93iUjayaARrTQeoRdiYQoftAJBLrR9t2agwAd3ekaTgHNlw==} + '@rollup/plugin-commonjs@28.0.9': + resolution: {integrity: sha512-PIR4/OHZ79romx0BVVll/PkwWpJ7e5lsqFa3gFfcrFPWwLXLV39JVUzQV9RKjWerE7B845Hqjj9VYlQeieZ2dA==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 @@ -7523,8 +7918,8 @@ packages: rollup: optional: true - '@rollup/plugin-node-resolve@16.0.1': - resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==} + '@rollup/plugin-node-resolve@16.0.3': + resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0||^4.0.0 @@ -7553,8 +7948,8 @@ packages: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} - '@rollup/pluginutils@5.2.0': - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -7562,103 +7957,113 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.46.2': - resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} + '@rollup/rollup-android-arm-eabi@4.53.2': + resolution: {integrity: sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.46.2': - resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==} + '@rollup/rollup-android-arm64@4.53.2': + resolution: {integrity: sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.46.2': - resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==} + '@rollup/rollup-darwin-arm64@4.53.2': + resolution: {integrity: sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.46.2': - resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==} + '@rollup/rollup-darwin-x64@4.53.2': + resolution: {integrity: sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.46.2': - resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==} + '@rollup/rollup-freebsd-arm64@4.53.2': + resolution: {integrity: sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.46.2': - resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==} + '@rollup/rollup-freebsd-x64@4.53.2': + resolution: {integrity: sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.46.2': - resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==} + '@rollup/rollup-linux-arm-gnueabihf@4.53.2': + resolution: {integrity: sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.46.2': - resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==} + '@rollup/rollup-linux-arm-musleabihf@4.53.2': + resolution: {integrity: sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.46.2': - resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==} + '@rollup/rollup-linux-arm64-gnu@4.53.2': + resolution: {integrity: sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.46.2': - resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==} + '@rollup/rollup-linux-arm64-musl@4.53.2': + resolution: {integrity: sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.46.2': - resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==} + '@rollup/rollup-linux-loong64-gnu@4.53.2': + resolution: {integrity: sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.46.2': - resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==} + '@rollup/rollup-linux-ppc64-gnu@4.53.2': + resolution: {integrity: sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.46.2': - resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==} + '@rollup/rollup-linux-riscv64-gnu@4.53.2': + resolution: {integrity: sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.46.2': - resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==} + '@rollup/rollup-linux-riscv64-musl@4.53.2': + resolution: {integrity: sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.46.2': - resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==} + '@rollup/rollup-linux-s390x-gnu@4.53.2': + resolution: {integrity: sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.46.2': - resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==} + '@rollup/rollup-linux-x64-gnu@4.53.2': + resolution: {integrity: sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.46.2': - resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==} + '@rollup/rollup-linux-x64-musl@4.53.2': + resolution: {integrity: sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.46.2': - resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==} + '@rollup/rollup-openharmony-arm64@4.53.2': + resolution: {integrity: sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.53.2': + resolution: {integrity: sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.46.2': - resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==} + '@rollup/rollup-win32-ia32-msvc@4.53.2': + resolution: {integrity: sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.46.2': - resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==} + '@rollup/rollup-win32-x64-gnu@4.53.2': + resolution: {integrity: sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.53.2': + resolution: {integrity: sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==} cpu: [x64] os: [win32] @@ -7671,50 +8076,50 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@secretlint/config-creator@9.3.4': - resolution: {integrity: sha512-GRMYfHJ+rewwB26CC3USVObqSQ/mDLXzXcUMJw/wJisPr3HDZmdsYlcsNnaAcGN+EZmvqSDkgSibQm1hyZpzbg==} - engines: {node: ^14.13.1 || >=16.0.0} + '@secretlint/config-creator@10.2.2': + resolution: {integrity: sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==} + engines: {node: '>=20.0.0'} - '@secretlint/config-loader@9.3.4': - resolution: {integrity: sha512-sy+yWDWh4cbAbpQYLiO39DjwNGEK1EUhTqNamLLBo163BdJP10FIWhqpe8mtGQBSBXRtxr8Hg/gc3Xe4meIoww==} - engines: {node: ^14.13.1 || >=16.0.0} + '@secretlint/config-loader@10.2.2': + resolution: {integrity: sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==} + engines: {node: '>=20.0.0'} - '@secretlint/core@9.3.4': - resolution: {integrity: sha512-ErIVHI6CJd191qdNKuMkH3bZQo9mWJsrSg++bQx64o0WFuG5nPvkYrDK0p/lebf+iQuOnzvl5HrZU6GU9a6o+Q==} - engines: {node: ^14.13.1 || >=16.0.0} + '@secretlint/core@10.2.2': + resolution: {integrity: sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==} + engines: {node: '>=20.0.0'} - '@secretlint/formatter@9.3.4': - resolution: {integrity: sha512-ARpoBOKz6WP3ocLITCFkR1/Lj636ugpBknylhlpc45r5aLdvmyvWAJqodlw5zmUCfgD6JXeAMf3Hi60aAiuqWQ==} - engines: {node: ^14.13.1 || >=16.0.0} + '@secretlint/formatter@10.2.2': + resolution: {integrity: sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==} + engines: {node: '>=20.0.0'} - '@secretlint/node@9.3.4': - resolution: {integrity: sha512-S0u8i+CnPmyAKtuccgot9L5cmw6DqJc0F+b3hhVIALd8kkeLt3RIXOOej15tU7N0V1ISph90Gz92V72ovsprgQ==} - engines: {node: ^14.13.1 || >=16.0.0} + '@secretlint/node@10.2.2': + resolution: {integrity: sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==} + engines: {node: '>=20.0.0'} - '@secretlint/profiler@9.3.4': - resolution: {integrity: sha512-99WmaHd4dClNIm5BFsG++E6frNIZ3qVwg6s804Ql/M19pDmtZOoVCl4/UuzWpwNniBqLIgn9rHQZ/iGlIW3wyw==} + '@secretlint/profiler@10.2.2': + resolution: {integrity: sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==} - '@secretlint/resolver@9.3.4': - resolution: {integrity: sha512-L1lIrcjzqcspPzZttmOvMmOFDpJTYFyRBONg94TZBWrpv4x0w5G2SYR+K7EE1SbYQAiPxw1amoXT1YRP8cZF2A==} + '@secretlint/resolver@10.2.2': + resolution: {integrity: sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==} - '@secretlint/secretlint-formatter-sarif@9.3.4': - resolution: {integrity: sha512-IpAl5gzKwpTRqoivKOTJB89l6b7uvBwjSNKzJb3oIGD9Jg3vXcQunSntvLv5XGynYtdi1NhANfEpbhavlmMSyA==} + '@secretlint/secretlint-formatter-sarif@10.2.2': + resolution: {integrity: sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==} - '@secretlint/secretlint-rule-no-dotenv@9.3.4': - resolution: {integrity: sha512-lMSVwTrJiZ/zL9VIzpT7tMcb0ClI6u4cyJo2YKGSbuJErJG1zB4gQKtjIwCSt7px5JF6U+aFtpb9M8+s40WWCQ==} - engines: {node: ^14.13.1 || >=16.0.0} + '@secretlint/secretlint-rule-no-dotenv@10.2.2': + resolution: {integrity: sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==} + engines: {node: '>=20.0.0'} - '@secretlint/secretlint-rule-preset-recommend@9.3.4': - resolution: {integrity: sha512-RvzrLNN2A0B2bYQgRSRjh2dkdaIDuhXjj4SO5bElK1iBtJNiD6VBTxSSY1P3hXYaBeva7MEF+q1PZ3cCL8XYOA==} - engines: {node: ^14.13.1 || >=16.0.0} + '@secretlint/secretlint-rule-preset-recommend@10.2.2': + resolution: {integrity: sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==} + engines: {node: '>=20.0.0'} - '@secretlint/source-creator@9.3.4': - resolution: {integrity: sha512-I9ZA1gm9HJNaAhZiQdInY9VM04VTAGDV4bappVbEJzMUDnK/LTbYqfQ88RPqgCGCqa6ee8c0/j5Bn7ypweouIw==} - engines: {node: ^14.13.1 || >=16.0.0} + '@secretlint/source-creator@10.2.2': + resolution: {integrity: sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==} + engines: {node: '>=20.0.0'} - '@secretlint/types@9.3.4': - resolution: {integrity: sha512-z9rdKHNeL4xa48+367RQJVw1d7/Js9HIQ+gTs/angzteM9osfgs59ad3iwVRhCGYbeUoUUDe2yxJG2ylYLaH3Q==} - engines: {node: ^14.13.1 || >=16.0.0} + '@secretlint/types@10.2.2': + resolution: {integrity: sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==} + engines: {node: '>=20.0.0'} '@sentry/cli@1.77.3': resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} @@ -7737,18 +8142,25 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sinclair/typebox@0.34.41': + resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} + '@sindresorhus/is@5.6.0': resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} - '@sindresorhus/is@7.0.2': - resolution: {integrity: sha512-d9xRovfKNz1SKieM0qJdO+PQonjnnIfSNWfHYnBSJ9hkjm0ZPw6HlxscDXYstp3z+7V2GOFHc+J0CYrYTjqCJw==} + '@sindresorhus/is@7.1.1': + resolution: {integrity: sha512-rO92VvpgMc3kfiTjGT52LEtJ8Yc5kCWhZjLQ3LwlA4pSgPpQO7bVpYXParOD8Jwf+cVQECJo3yP/4I8aZtUQTQ==} engines: {node: '>=18'} '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@sinonjs/commons@1.8.6': resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} @@ -7758,6 +8170,9 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@sinonjs/fake-timers@13.0.5': + resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} + '@size-limit/esbuild@11.2.0': resolution: {integrity: sha512-vSg9H0WxGQPRzDnBzeDyD9XT0Zdq0L+AI3+77/JhxznbSCMJMMr8ndaWVQRhOsixl97N0oD4pRFw2+R1Lcvi6A==} engines: {node: ^18.0.0 || >=20.0.0} @@ -7775,218 +8190,225 @@ packages: peerDependencies: size-limit: 11.2.0 - '@smithy/abort-controller@4.0.5': - resolution: {integrity: sha512-jcrqdTQurIrBbUm4W2YdLVMQDoL0sA9DTxYd2s+R/y+2U9NLOP7Xf/YqfSg1FZhlZIYEnvk2mwbyvIfdLEPo8g==} + '@smithy/abort-controller@4.2.5': + resolution: {integrity: sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==} engines: {node: '>=18.0.0'} - '@smithy/chunked-blob-reader-native@4.0.0': - resolution: {integrity: sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==} + '@smithy/chunked-blob-reader-native@4.2.1': + resolution: {integrity: sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==} engines: {node: '>=18.0.0'} - '@smithy/chunked-blob-reader@5.0.0': - resolution: {integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==} + '@smithy/chunked-blob-reader@5.2.0': + resolution: {integrity: sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==} engines: {node: '>=18.0.0'} - '@smithy/config-resolver@4.1.5': - resolution: {integrity: sha512-viuHMxBAqydkB0AfWwHIdwf/PRH2z5KHGUzqyRtS/Wv+n3IHI993Sk76VCA7dD/+GzgGOmlJDITfPcJC1nIVIw==} + '@smithy/config-resolver@4.4.3': + resolution: {integrity: sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==} engines: {node: '>=18.0.0'} - '@smithy/core@3.8.0': - resolution: {integrity: sha512-EYqsIYJmkR1VhVE9pccnk353xhs+lB6btdutJEtsp7R055haMJp2yE16eSxw8fv+G0WUY6vqxyYOP8kOqawxYQ==} + '@smithy/core@3.18.4': + resolution: {integrity: sha512-o5tMqPZILBvvROfC8vC+dSVnWJl9a0u9ax1i1+Bq8515eYjUJqqk5XjjEsDLoeL5dSqGSh6WGdVx1eJ1E/Nwhw==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.0.7': - resolution: {integrity: sha512-dDzrMXA8d8riFNiPvytxn0mNwR4B3h8lgrQ5UjAGu6T9z/kRg/Xncf4tEQHE/+t25sY8IH3CowcmWi+1U5B1Gw==} + '@smithy/credential-provider-imds@4.2.5': + resolution: {integrity: sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-codec@4.0.5': - resolution: {integrity: sha512-miEUN+nz2UTNoRYRhRqVTJCx7jMeILdAurStT2XoS+mhokkmz1xAPp95DFW9Gxt4iF2VBqpeF9HbTQ3kY1viOA==} + '@smithy/eventstream-codec@4.2.5': + resolution: {integrity: sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-browser@4.0.5': - resolution: {integrity: sha512-LCUQUVTbM6HFKzImYlSB9w4xafZmpdmZsOh9rIl7riPC3osCgGFVP+wwvYVw6pXda9PPT9TcEZxaq3XE81EdJQ==} + '@smithy/eventstream-serde-browser@4.2.5': + resolution: {integrity: sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-config-resolver@4.1.3': - resolution: {integrity: sha512-yTTzw2jZjn/MbHu1pURbHdpjGbCuMHWncNBpJnQAPxOVnFUAbSIUSwafiphVDjNV93TdBJWmeVAds7yl5QCkcA==} + '@smithy/eventstream-serde-config-resolver@4.3.5': + resolution: {integrity: sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-node@4.0.5': - resolution: {integrity: sha512-lGS10urI4CNzz6YlTe5EYG0YOpsSp3ra8MXyco4aqSkQDuyZPIw2hcaxDU82OUVtK7UY9hrSvgWtpsW5D4rb4g==} + '@smithy/eventstream-serde-node@4.2.5': + resolution: {integrity: sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-universal@4.0.5': - resolution: {integrity: sha512-JFnmu4SU36YYw3DIBVao3FsJh4Uw65vVDIqlWT4LzR6gXA0F3KP0IXFKKJrhaVzCBhAuMsrUUaT5I+/4ZhF7aw==} + '@smithy/eventstream-serde-universal@4.2.5': + resolution: {integrity: sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.1.1': - resolution: {integrity: sha512-61WjM0PWmZJR+SnmzaKI7t7G0UkkNFboDpzIdzSoy7TByUzlxo18Qlh9s71qug4AY4hlH/CwXdubMtkcNEb/sQ==} + '@smithy/fetch-http-handler@5.3.6': + resolution: {integrity: sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==} engines: {node: '>=18.0.0'} - '@smithy/hash-blob-browser@4.0.5': - resolution: {integrity: sha512-F7MmCd3FH/Q2edhcKd+qulWkwfChHbc9nhguBlVjSUE6hVHhec3q6uPQ+0u69S6ppvLtR3eStfCuEKMXBXhvvA==} + '@smithy/hash-blob-browser@4.2.6': + resolution: {integrity: sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==} engines: {node: '>=18.0.0'} - '@smithy/hash-node@4.0.5': - resolution: {integrity: sha512-cv1HHkKhpyRb6ahD8Vcfb2Hgz67vNIXEp2vnhzfxLFGRukLCNEA5QdsorbUEzXma1Rco0u3rx5VTqbM06GcZqQ==} + '@smithy/hash-node@4.2.5': + resolution: {integrity: sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==} engines: {node: '>=18.0.0'} - '@smithy/hash-stream-node@4.0.5': - resolution: {integrity: sha512-IJuDS3+VfWB67UC0GU0uYBG/TA30w+PlOaSo0GPm9UHS88A6rCP6uZxNjNYiyRtOcjv7TXn/60cW8ox1yuZsLg==} + '@smithy/hash-stream-node@4.2.5': + resolution: {integrity: sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==} engines: {node: '>=18.0.0'} - '@smithy/invalid-dependency@4.0.5': - resolution: {integrity: sha512-IVnb78Qtf7EJpoEVo7qJ8BEXQwgC4n3igeJNNKEj/MLYtapnx8A67Zt/J3RXAj2xSO1910zk0LdFiygSemuLow==} + '@smithy/invalid-dependency@4.2.5': + resolution: {integrity: sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==} engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.2.0': resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} - '@smithy/is-array-buffer@4.0.0': - resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} + '@smithy/is-array-buffer@4.2.0': + resolution: {integrity: sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==} engines: {node: '>=18.0.0'} - '@smithy/md5-js@4.0.5': - resolution: {integrity: sha512-8n2XCwdUbGr8W/XhMTaxILkVlw2QebkVTn5tm3HOcbPbOpWg89zr6dPXsH8xbeTsbTXlJvlJNTQsKAIoqQGbdA==} + '@smithy/md5-js@4.2.5': + resolution: {integrity: sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==} engines: {node: '>=18.0.0'} - '@smithy/middleware-content-length@4.0.5': - resolution: {integrity: sha512-l1jlNZoYzoCC7p0zCtBDE5OBXZ95yMKlRlftooE5jPWQn4YBPLgsp+oeHp7iMHaTGoUdFqmHOPa8c9G3gBsRpQ==} + '@smithy/middleware-content-length@4.2.5': + resolution: {integrity: sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.1.18': - resolution: {integrity: sha512-ZhvqcVRPZxnZlokcPaTwb+r+h4yOIOCJmx0v2d1bpVlmP465g3qpVSf7wxcq5zZdu4jb0H4yIMxuPwDJSQc3MQ==} + '@smithy/middleware-endpoint@4.3.11': + resolution: {integrity: sha512-eJXq9VJzEer1W7EQh3HY2PDJdEcEUnv6sKuNt4eVjyeNWcQFS4KmnY+CKkYOIR6tSqarn6bjjCqg1UB+8UJiPQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.1.19': - resolution: {integrity: sha512-X58zx/NVECjeuUB6A8HBu4bhx72EoUz+T5jTMIyeNKx2lf+Gs9TmWPNNkH+5QF0COjpInP/xSpJGJ7xEnAklQQ==} + '@smithy/middleware-retry@4.4.11': + resolution: {integrity: sha512-EL5OQHvFOKneJVRgzRW4lU7yidSwp/vRJOe542bHgExN3KNThr1rlg0iE4k4SnA+ohC+qlUxoK+smKeAYPzfAQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.0.9': - resolution: {integrity: sha512-uAFFR4dpeoJPGz8x9mhxp+RPjo5wW0QEEIPPPbLXiRRWeCATf/Km3gKIVR5vaP8bN1kgsPhcEeh+IZvUlBv6Xg==} + '@smithy/middleware-serde@4.2.6': + resolution: {integrity: sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-stack@4.0.5': - resolution: {integrity: sha512-/yoHDXZPh3ocRVyeWQFvC44u8seu3eYzZRveCMfgMOBcNKnAmOvjbL9+Cp5XKSIi9iYA9PECUuW2teDAk8T+OQ==} + '@smithy/middleware-stack@4.2.5': + resolution: {integrity: sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==} engines: {node: '>=18.0.0'} - '@smithy/node-config-provider@4.1.4': - resolution: {integrity: sha512-+UDQV/k42jLEPPHSn39l0Bmc4sB1xtdI9Gd47fzo/0PbXzJ7ylgaOByVjF5EeQIumkepnrJyfx86dPa9p47Y+w==} + '@smithy/node-config-provider@4.3.5': + resolution: {integrity: sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.1.1': - resolution: {integrity: sha512-RHnlHqFpoVdjSPPiYy/t40Zovf3BBHc2oemgD7VsVTFFZrU5erFFe0n52OANZZ/5sbshgD93sOh5r6I35Xmpaw==} + '@smithy/node-http-handler@4.4.5': + resolution: {integrity: sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==} engines: {node: '>=18.0.0'} - '@smithy/property-provider@4.0.5': - resolution: {integrity: sha512-R/bswf59T/n9ZgfgUICAZoWYKBHcsVDurAGX88zsiUtOTA/xUAPyiT+qkNCPwFn43pZqN84M4MiUsbSGQmgFIQ==} + '@smithy/property-provider@4.2.5': + resolution: {integrity: sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==} engines: {node: '>=18.0.0'} - '@smithy/protocol-http@5.1.3': - resolution: {integrity: sha512-fCJd2ZR7D22XhDY0l+92pUag/7je2BztPRQ01gU5bMChcyI0rlly7QFibnYHzcxDvccMjlpM/Q1ev8ceRIb48w==} + '@smithy/protocol-http@5.3.5': + resolution: {integrity: sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==} engines: {node: '>=18.0.0'} - '@smithy/querystring-builder@4.0.5': - resolution: {integrity: sha512-NJeSCU57piZ56c+/wY+AbAw6rxCCAOZLCIniRE7wqvndqxcKKDOXzwWjrY7wGKEISfhL9gBbAaWWgHsUGedk+A==} + '@smithy/querystring-builder@4.2.5': + resolution: {integrity: sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==} engines: {node: '>=18.0.0'} - '@smithy/querystring-parser@4.0.5': - resolution: {integrity: sha512-6SV7md2CzNG/WUeTjVe6Dj8noH32r4MnUeFKZrnVYsQxpGSIcphAanQMayi8jJLZAWm6pdM9ZXvKCpWOsIGg0w==} + '@smithy/querystring-parser@4.2.5': + resolution: {integrity: sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==} engines: {node: '>=18.0.0'} - '@smithy/service-error-classification@4.0.7': - resolution: {integrity: sha512-XvRHOipqpwNhEjDf2L5gJowZEm5nsxC16pAZOeEcsygdjv9A2jdOh3YoDQvOXBGTsaJk6mNWtzWalOB9976Wlg==} + '@smithy/service-error-classification@4.2.5': + resolution: {integrity: sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==} engines: {node: '>=18.0.0'} - '@smithy/shared-ini-file-loader@4.0.5': - resolution: {integrity: sha512-YVVwehRDuehgoXdEL4r1tAAzdaDgaC9EQvhK0lEbfnbrd0bd5+CTQumbdPryX3J2shT7ZqQE+jPW4lmNBAB8JQ==} + '@smithy/shared-ini-file-loader@4.4.0': + resolution: {integrity: sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.1.3': - resolution: {integrity: sha512-mARDSXSEgllNzMw6N+mC+r1AQlEBO3meEAkR/UlfAgnMzJUB3goRBWgip1EAMG99wh36MDqzo86SfIX5Y+VEaw==} + '@smithy/signature-v4@5.3.5': + resolution: {integrity: sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.4.10': - resolution: {integrity: sha512-iW6HjXqN0oPtRS0NK/zzZ4zZeGESIFcxj2FkWed3mcK8jdSdHzvnCKXSjvewESKAgGKAbJRA+OsaqKhkdYRbQQ==} + '@smithy/smithy-client@4.9.7': + resolution: {integrity: sha512-pskaE4kg0P9xNQWihfqlTMyxyFR3CH6Sr6keHYghgyqqDXzjl2QJg5lAzuVe/LzZiOzcbcVtxKYi1/fZPt/3DA==} engines: {node: '>=18.0.0'} - '@smithy/types@4.3.2': - resolution: {integrity: sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw==} + '@smithy/types@4.9.0': + resolution: {integrity: sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==} engines: {node: '>=18.0.0'} - '@smithy/url-parser@4.0.5': - resolution: {integrity: sha512-j+733Um7f1/DXjYhCbvNXABV53NyCRRA54C7bNEIxNPs0YjfRxeMKjjgm2jvTYrciZyCjsicHwQ6Q0ylo+NAUw==} + '@smithy/url-parser@4.2.5': + resolution: {integrity: sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==} engines: {node: '>=18.0.0'} - '@smithy/util-base64@4.0.0': - resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} + '@smithy/util-base64@4.3.0': + resolution: {integrity: sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==} engines: {node: '>=18.0.0'} - '@smithy/util-body-length-browser@4.0.0': - resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} + '@smithy/util-body-length-browser@4.2.0': + resolution: {integrity: sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==} engines: {node: '>=18.0.0'} - '@smithy/util-body-length-node@4.0.0': - resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} + '@smithy/util-body-length-node@4.2.1': + resolution: {integrity: sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==} engines: {node: '>=18.0.0'} '@smithy/util-buffer-from@2.2.0': resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} - '@smithy/util-buffer-from@4.0.0': - resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} + '@smithy/util-buffer-from@4.2.0': + resolution: {integrity: sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==} engines: {node: '>=18.0.0'} - '@smithy/util-config-provider@4.0.0': - resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} + '@smithy/util-config-provider@4.2.0': + resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.0.26': - resolution: {integrity: sha512-xgl75aHIS/3rrGp7iTxQAOELYeyiwBu+eEgAk4xfKwJJ0L8VUjhO2shsDpeil54BOFsqmk5xfdesiewbUY5tKQ==} + '@smithy/util-defaults-mode-browser@4.3.10': + resolution: {integrity: sha512-3iA3JVO1VLrP21FsZZpMCeF93aqP3uIOMvymAT3qHIJz2YlgDeRvNUspFwCNqd/j3qqILQJGtsVQnJZICh/9YA==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.0.26': - resolution: {integrity: sha512-z81yyIkGiLLYVDetKTUeCZQ8x20EEzvQjrqJtb/mXnevLq2+w3XCEWTJ2pMp401b6BkEkHVfXb/cROBpVauLMQ==} + '@smithy/util-defaults-mode-node@4.2.13': + resolution: {integrity: sha512-PTc6IpnpSGASuzZAgyUtaVfOFpU0jBD2mcGwrgDuHf7PlFgt5TIPxCYBDbFQs06jxgeV3kd/d/sok1pzV0nJRg==} engines: {node: '>=18.0.0'} - '@smithy/util-endpoints@3.0.7': - resolution: {integrity: sha512-klGBP+RpBp6V5JbrY2C/VKnHXn3d5V2YrifZbmMY8os7M6m8wdYFoO6w/fe5VkP+YVwrEktW3IWYaSQVNZJ8oQ==} + '@smithy/util-endpoints@3.2.5': + resolution: {integrity: sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==} engines: {node: '>=18.0.0'} - '@smithy/util-hex-encoding@4.0.0': - resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} + '@smithy/util-hex-encoding@4.2.0': + resolution: {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==} engines: {node: '>=18.0.0'} - '@smithy/util-middleware@4.0.5': - resolution: {integrity: sha512-N40PfqsZHRSsByGB81HhSo+uvMxEHT+9e255S53pfBw/wI6WKDI7Jw9oyu5tJTLwZzV5DsMha3ji8jk9dsHmQQ==} + '@smithy/util-middleware@4.2.5': + resolution: {integrity: sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==} engines: {node: '>=18.0.0'} - '@smithy/util-retry@4.0.7': - resolution: {integrity: sha512-TTO6rt0ppK70alZpkjwy+3nQlTiqNfoXja+qwuAchIEAIoSZW8Qyd76dvBv3I5bCpE38APafG23Y/u270NspiQ==} + '@smithy/util-retry@4.2.5': + resolution: {integrity: sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==} engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.2.4': - resolution: {integrity: sha512-vSKnvNZX2BXzl0U2RgCLOwWaAP9x/ddd/XobPK02pCbzRm5s55M53uwb1rl/Ts7RXZvdJZerPkA+en2FDghLuQ==} + '@smithy/util-stream@4.5.6': + resolution: {integrity: sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==} engines: {node: '>=18.0.0'} - '@smithy/util-uri-escape@4.0.0': - resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} + '@smithy/util-uri-escape@4.2.0': + resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} engines: {node: '>=18.0.0'} '@smithy/util-utf8@2.3.0': resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} - '@smithy/util-utf8@4.0.0': - resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} + '@smithy/util-utf8@4.2.0': + resolution: {integrity: sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==} engines: {node: '>=18.0.0'} - '@smithy/util-waiter@4.0.7': - resolution: {integrity: sha512-mYqtQXPmrwvUljaHyGxYUIIRI3qjBTEb/f5QFi3A6VlxhpmZd5mWXn9W+qUkf2pVE1Hv3SqxefiZOPGdxmO64A==} + '@smithy/util-waiter@4.2.5': + resolution: {integrity: sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==} engines: {node: '>=18.0.0'} + '@smithy/uuid@1.1.0': + resolution: {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} + engines: {node: '>=18.0.0'} + + '@so-ric/colorspace@1.1.6': + resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} + '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} @@ -8102,10 +8524,10 @@ packages: peerDependencies: storybook: ^8.6.14 - '@storybook/addon-docs@9.1.1': - resolution: {integrity: sha512-CzgvTy3V5X4fe+VPkiZVwPKARlpEBDAKte8ajLAlHJQLFpADdYrBRQ0se6I+kcxva7rZQzdhuH7qjXMDRVcfnw==} + '@storybook/addon-docs@9.1.16': + resolution: {integrity: sha512-JfaUD6fC7ySLg5duRdaWZ0FUUXrgUvqbZe/agCbSyOaIHOtJdhGaPjOC3vuXTAcV8/8/wWmbu0iXFMD08iKvdw==} peerDependencies: - storybook: ^9.1.1 + storybook: ^9.1.16 '@storybook/addon-essentials@6.5.16': resolution: {integrity: sha512-TeoMr6tEit4Pe91GH6f8g/oar1P4M0JL9S6oMcFxxrhhtOGO7XkWD5EnfyCx272Ok2VYfE58FNBTGPNBVIqYKQ==} @@ -8371,10 +8793,10 @@ packages: '@storybook/builder-manager@7.6.20': resolution: {integrity: sha512-e2GzpjLaw6CM/XSmc4qJRzBF8GOoOyotyu3JrSPTYOt4RD8kjUsK4QlismQM1DQRu8i39aIexxmRbiJyD74xzQ==} - '@storybook/builder-vite@9.1.1': - resolution: {integrity: sha512-rM0QOfykr39SFBRQnoAa5PU3xTHnJE1R5tigvjved1o7sumcfjrhqmEyAgNZv1SoRztOO92jwkTi7En6yheOKg==} + '@storybook/builder-vite@9.1.16': + resolution: {integrity: sha512-CyvYA5w1BKeSVaRavKi+euWxLffshq0v9Rz/5E9MKCitbYtjwkDH6UMIYmcbTs906mEBuYqrbz3nygDP0ppodw==} peerDependencies: - storybook: ^9.1.1 + storybook: ^9.1.16 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 '@storybook/builder-webpack4@6.5.16': @@ -8435,8 +8857,8 @@ packages: resolution: {integrity: sha512-ZlP+BJyqg7HlnXf7ypjG2CKMI/KVOn03jFIiClItE/jQfgR6kRFgtjRU7uajh427HHfjv9DRiur8nBzuO7vapA==} hasBin: true - '@storybook/cli@9.1.1': - resolution: {integrity: sha512-NbEVLi6nXF8G1nXy5DVpwSkj9c3mplVrhGI0FQnvntoP64BkuVwOVmti0M+hAStU607cT9sNAkg0yFpgK5twpA==} + '@storybook/cli@9.1.16': + resolution: {integrity: sha512-ixwLn3pdhYaWV5MagZVPC8D/WVonersWVj0t8eHCMyxIO4v6wxQ1rK49eizbHJSFrbK+J0xmGvxWsYUobEkv1A==} hasBin: true '@storybook/client-api@6.5.16': @@ -8460,8 +8882,8 @@ packages: '@storybook/codemod@7.6.20': resolution: {integrity: sha512-8vmSsksO4XukNw0TmqylPmk7PxnfNfE21YsxFa7mnEBmEKQcZCQsNil4ZgWfG0IzdhTfhglAN4r++Ew0WE+PYA==} - '@storybook/codemod@9.1.1': - resolution: {integrity: sha512-biUFc8TmeHUjByOFSaN5RJYGVZe1EJTwlxRcB7/PiXwsoy3SNLj0PJiTGdZyzmz+T2zNNpMQPpgEWQFk/aoSgQ==} + '@storybook/codemod@9.1.16': + resolution: {integrity: sha512-uDl6FuAuvW0X6E8o4jEaUmKqjYCNmGolzUYad3M0yvr1bZmXiNdO1E4IRmnUHUqt6yqnOPNj8hG6AHKhibpB3w==} '@storybook/components@6.5.16': resolution: {integrity: sha512-LzBOFJKITLtDcbW9jXl0/PaG+4xAz25PK8JxPZpIALbmOpYWOAPcO6V9C2heX6e6NgWFMUxjplkULEk9RCQMNA==} @@ -8579,10 +9001,10 @@ packages: peerDependencies: storybook: ^8.6.14 - '@storybook/csf-plugin@9.1.1': - resolution: {integrity: sha512-MwdtvzzFpkard06pCfDrgRXZiBfWAQICdKh7kzpv1L8SwewsRgUr5WZQuEAVfYdSvCFJbWnNN4KirzPhe5ENCg==} + '@storybook/csf-plugin@9.1.16': + resolution: {integrity: sha512-GKlNNlmWeFBQxhQY5hZOSnFGbeKq69jal0dYNWoSImTjor28eYRHb9iQkDzRpijLPizBaB9MlxLsLrgFDp7adA==} peerDependencies: - storybook: ^9.1.1 + storybook: ^9.1.16 '@storybook/csf-tools@6.5.16': resolution: {integrity: sha512-+WD4sH/OwAfXZX3IN6/LOZ9D9iGEFcN+Vvgv9wOsLRgsAZ10DG/NK6c1unXKDM/ogJtJYccNI8Hd+qNE/GFV6A==} @@ -8616,8 +9038,8 @@ packages: '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/icons@1.4.0': - resolution: {integrity: sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==} + '@storybook/icons@1.6.0': + resolution: {integrity: sha512-hcFZIjW8yQz8O8//2WTIXylm5Xsgc+lW9ISLgUk1xGmptIJQRdlhVIXCpSyLrQaaRiyhQRaVg7l3BD9S216BHw==} engines: {node: '>=14.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta @@ -8754,20 +9176,20 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta storybook: ^8.6.14 - '@storybook/react-dom-shim@9.1.1': - resolution: {integrity: sha512-L+HCOXvOP+PwKrVS8od9aF+F4hO7zA0Nt1vnpbg2LeAHCxYghrjFVtioe7gSlzrlYdozQrPLY98a4OkDB7KGrw==} + '@storybook/react-dom-shim@9.1.16': + resolution: {integrity: sha512-MsI4qTxdT6lMXQmo3IXhw3EaCC+vsZboyEZBx4pOJ+K/5cDJ6ZoQ3f0d4yGpVhumDxaxlnNAg954+f8WWXE1rQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^9.1.1 + storybook: ^9.1.16 - '@storybook/react-vite@9.1.1': - resolution: {integrity: sha512-9rMjAqgrcuVF/GS171fYSLuUs5QC3e0WPpIm2JOP7Z9qWctM1ApVb9UCYY7ZNl9Gc3kvjKsK5J1+A4Zw4a2+ag==} + '@storybook/react-vite@9.1.16': + resolution: {integrity: sha512-WRKSq0XfQ/Qx66aKisQCfa/1UKwN9HjVbY6xrmsX7kI5zBdITxIcKInq6PWoPv91SJD7+Et956yX+F86R1aEXw==} engines: {node: '>=20.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^9.1.1 + storybook: ^9.1.16 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 '@storybook/react-webpack5@7.4.6': @@ -8850,13 +9272,13 @@ packages: typescript: optional: true - '@storybook/react@9.1.1': - resolution: {integrity: sha512-F5vRFxDf1fzM6CG88olrzEH03iP6C1YAr4/nr5bkLNs6TNm9Hh7KmRVG2jFtoy5w9uCwbQ9RdY+TrRbBI7n67g==} + '@storybook/react@9.1.16': + resolution: {integrity: sha512-M/SkHJJdtiGpodBJq9+DYmSkEOD+VqlPxKI+FvbHESTNs//1IgqFIjEWetd8quhd9oj/gvo4ICBAPu+UmD6M9w==} engines: {node: '>=20.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^9.1.1 + storybook: ^9.1.16 typescript: '>= 4.9.x' peerDependenciesMeta: typescript: @@ -8934,95 +9356,95 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@swagger-api/apidom-ast@1.0.0-beta.45': - resolution: {integrity: sha512-2npCF6V4QYSRv8USSmQ9jmsnNrjhTww4C84+cetNpxvTYXmEi9bRwIfzn2LH7DedsZsOJOMucVbJkCcRB/VC2Q==} + '@swagger-api/apidom-ast@1.0.0-rc.3': + resolution: {integrity: sha512-lGxvtanmQYqepjVWwPROR/97BIP3sUtwzoHbMSMag2/C3+Un8p6Xz8+I+1sPG2UOBlvDsQe3Di0hlSET7EFwAQ==} - '@swagger-api/apidom-core@1.0.0-beta.45': - resolution: {integrity: sha512-JEKf/bIl0RgaYAILlSDjuWhcg/+gbrI6p6OZuXR7EVxPlPNBAsme98UYyICA9AENyi2fzxwCP5eDRFl4cIzMHQ==} + '@swagger-api/apidom-core@1.0.0-rc.3': + resolution: {integrity: sha512-cRf+HzoXl3iDPc7alVxdPbLb1TqRePqsxI0id2KaB8HYbyxTUy3ygqY/jmxGtfAAK0Ba85Bw8j4N0crw23vLTg==} - '@swagger-api/apidom-error@1.0.0-beta.45': - resolution: {integrity: sha512-kEy7blIEF77BnoqLhGW3h3I+evPHrtZwKe4fSw22UEUJUTG1Daw9FhaSgfBNptifZzzdLgiVDujrIOI6SpkH3Q==} + '@swagger-api/apidom-error@1.0.0-rc.3': + resolution: {integrity: sha512-E9WsxzR9wwD4+1zmZm9PVvxXBAYxMtGJjpRYR/FthvxhIwx+Vsey2h5k7FPS8yJsawIrdGPQtdiFMLPvnQXUFg==} - '@swagger-api/apidom-json-pointer@1.0.0-beta.45': - resolution: {integrity: sha512-s8eMDc/zL5W9mtBRbjEGPDt9yNJlpq9S+7/ACLjlSg1J3toadZmNiyR0svVLroVzVZHD5aGClGRpdammbO/PhQ==} + '@swagger-api/apidom-json-pointer@1.0.0-rc.3': + resolution: {integrity: sha512-cj83L5ntai/RJcZV0++lQiCHPWE6lTy62bGC2lQ0yi/kyCc+Ig+Sn08qpiLSrkQ4OooK85X+wgAy6pMK+Vt/8Q==} - '@swagger-api/apidom-ns-api-design-systems@1.0.0-beta.45': - resolution: {integrity: sha512-uX+lkOi1g32mIhBVtMm5a304H68GIR4IXf/wiD6mdf2iwjfR0+drn/4NmirZqrNvlMtmf1a6VSe4u6KE3OBIpw==} + '@swagger-api/apidom-ns-api-design-systems@1.0.0-rc.3': + resolution: {integrity: sha512-JB06VDEKPvyOcJ9qIJmr2vI2FSWjdZh+BiRExZPW4tv/mTvdOxt1n38WA+mKzfFHQuoTR4ork/wR481CjAfGGQ==} - '@swagger-api/apidom-ns-arazzo-1@1.0.0-beta.45': - resolution: {integrity: sha512-ZjzTvby6Zvu7vh6uabRCGsnhAPeefxgJQ7DPKLELe9KyzcT+OqorjDtfaESFy4zzIMokalJcja/in29yTS+kxw==} + '@swagger-api/apidom-ns-arazzo-1@1.0.0-rc.3': + resolution: {integrity: sha512-Um0MGGsGLQWvnASDoguSuE5X/NpS/9RlXlOHHG5nqzG2cdTlifRcN5tiz7H997162+ahEsD5aHD6tUKWOPCLtQ==} - '@swagger-api/apidom-ns-asyncapi-2@1.0.0-beta.45': - resolution: {integrity: sha512-OQY2cSs5oZo0/rlGa8hHfgu7DFQ6lDhBC+IAKp0E7gF27oH2Yy9BEHlxHUA3iUeCMxDfIo021+Qc8FpNqivtxA==} + '@swagger-api/apidom-ns-asyncapi-2@1.0.0-rc.3': + resolution: {integrity: sha512-UFmnbvEsN7jVvS/8V7X37UPvn8uxdqYBhDzdPSivjxpu/5Ag5Q1P2gHJnO6K2EfTCFL4S1qDObW2TUFdV1b6pg==} - '@swagger-api/apidom-ns-json-schema-2019-09@1.0.0-beta.45': - resolution: {integrity: sha512-StoPoa1yI5gBfPZ57LhA41f+JNJ/JnrsWZnmDlJG8W2hyjJAeyVkOo0qoVpt40240WZmH2EuywIFrdD+n+hrLA==} + '@swagger-api/apidom-ns-json-schema-2019-09@1.0.0-rc.3': + resolution: {integrity: sha512-fxQo/GK5NGdx4gN2snj4DpBcDc8bORLehTUqcwp33ikJ2PGugtpV3IQrBjxSWP05PyLOZAMpq1SM9gkCPgZNRA==} - '@swagger-api/apidom-ns-json-schema-2020-12@1.0.0-beta.45': - resolution: {integrity: sha512-l70stVPz1kGIiM7t55twYhfI2GwDKLOjfr+Py1Rknyo75LYw08QhppZ7PxWamgvKmoYfBnGeaoC+18Q2dn2Bhg==} + '@swagger-api/apidom-ns-json-schema-2020-12@1.0.0-rc.3': + resolution: {integrity: sha512-iDPbua9HajFwkH9vFUIbkmKVI/VXKuV9G+jLGkyBlF/Zu++1Rv6CstBt+F9CgNThSUqkKt3YA9Rcd82uh1+HnQ==} - '@swagger-api/apidom-ns-json-schema-draft-4@1.0.0-beta.45': - resolution: {integrity: sha512-tlDz4+Ko+ylVWSpSprZM9WoBMfmBxoUxcxvbkcafCJTO4MCQuytYaW3p/BIMscCsa0LP1eR4ycMY8h445ur58Q==} + '@swagger-api/apidom-ns-json-schema-draft-4@1.0.0-rc.3': + resolution: {integrity: sha512-8lft8qCo/KAHqiUpfwUMifP9JDhuhXKMNYSSahP2SN0PnbujoS1h3DOXtpR9/+0N6fKPUT8I6GLEwgq8TX2yvA==} - '@swagger-api/apidom-ns-json-schema-draft-6@1.0.0-beta.45': - resolution: {integrity: sha512-wBkk2AqDddZvf1VixAuwFu9LRTJya3yL+FAmg4KyMGrA32VOFYupe9jc1RmV/noTfGwf5AWZVnuGo9xiI2z4Wg==} + '@swagger-api/apidom-ns-json-schema-draft-6@1.0.0-rc.3': + resolution: {integrity: sha512-IDC+98ur+7L3YaZZnnCytx9+cihElj24CcjX/X2mOBqOTaAwZ/Exb7LiBnvUswV1lOE2X2CX4donRemjk+e32Q==} - '@swagger-api/apidom-ns-json-schema-draft-7@1.0.0-beta.45': - resolution: {integrity: sha512-EggsaTXUw0j8PmcO+IxnoJ7TyXz8sNarPlB2EGNqVT3qEwGQn96qXZ8pZab0sr1iStIWzyAaXMKrnmlcSIDpSQ==} + '@swagger-api/apidom-ns-json-schema-draft-7@1.0.0-rc.3': + resolution: {integrity: sha512-P0dk9WhH7CINBCh1u8GfcQFycrZcw3qCXug0w6M0wiSrjqZv+Mv/AI68dc0Rb+Dzshe4aZy0bZFjAQb3NHfrSg==} - '@swagger-api/apidom-ns-openapi-2@1.0.0-beta.45': - resolution: {integrity: sha512-OY/FM8lDB6MzJfTgqHPj6k6Kk62Uho5gynsZLyroxgTz+Ez9zSdgA+p8+mdE4hBQxfwSnUtaiFMWgAzY+12Q9A==} + '@swagger-api/apidom-ns-openapi-2@1.0.0-rc.3': + resolution: {integrity: sha512-zwriSfjG+qiPWBHLZRyfdZa305xrB24aZjiAY8r2ikZsdQhC/WHI+e6YqeVCkJwkLzA/oZgrlmyci0mvtkFDQA==} - '@swagger-api/apidom-ns-openapi-3-0@1.0.0-beta.45': - resolution: {integrity: sha512-HaacHMmYfMp9UNSTONVxGRQDlQn8yEIOklHowI+/u8SRqdV87dE9UQhp8AMGw2hfnYiyt8ADFdPsLnYR6LEq7g==} + '@swagger-api/apidom-ns-openapi-3-0@1.0.0-rc.3': + resolution: {integrity: sha512-RCufXt7ja7fqFS/EqWOMZ54J4uEnqPQkCXMwwCqUrFHXQ7nGN1J9nmwj2hFQUFYraajmtnk2dNByO46+XefV1w==} - '@swagger-api/apidom-ns-openapi-3-1@1.0.0-beta.45': - resolution: {integrity: sha512-irU2jMOZNWf/lAXc/JuWohHs55MQe7Rb36xzAqoyOjauk2nj/ougy5b+xvG3dLZu3ZKc/X9kmimPPLTs7P2Xhw==} + '@swagger-api/apidom-ns-openapi-3-1@1.0.0-rc.3': + resolution: {integrity: sha512-Nc28G/ikbypcXVricv8+PGEGXKAmOwZjkBxB3wN5D4+D0+AiUy1lV07Z7+xFWdql65Y5WWxxfU2/Ej01Bnqt4Q==} - '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.0.0-beta.45': - resolution: {integrity: sha512-F8Glj81vrYc9oghEeM1Pfo8qbOptEl3tPOU3hQIqDM4pqMRuB3vwYfoZLVnwpewXacBRgwUiXXnaWV7alMnPzg==} + '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.0.0-rc.3': + resolution: {integrity: sha512-ZXKuMd6nqBrpCqTJmbd2pS46ZmL8bIra1KqWVjcvkA/E032nmgDeaT78Cf0Ulha6j+CAzcwL0AnR7GrtFpSfSw==} - '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.0.0-beta.45': - resolution: {integrity: sha512-Xdhk2yffGD2KcncTs8uNeiKBeBvr0njRRlhfSKdewb91SHXqyh2eKf168M6UPdT0dg3QQKdCT5lV+meKcYGpkw==} + '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.0.0-rc.3': + resolution: {integrity: sha512-Qg1yTPPzGF3EhlqcxIZeDVBxxvZzylGM6CTHg5cltGOSoFQ7+NJFE9Ktvk0gbVaFUyElFduCno9FvIfzxPlj8g==} - '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.0.0-beta.45': - resolution: {integrity: sha512-SMJseBO32aHPXskwYThT2y3Py2B8B4gKqGXl+ZlMGCaM72Fnnr0hbqtI8wt2v58F97qVlTYvXvTSfQGUuUh/Kg==} + '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.0.0-rc.3': + resolution: {integrity: sha512-T7MbfTSDqdHgSr+cSC6gcGIsiwK3NXmdo28ZUv6LWsgcWDj2zw2Jie+7rXQaDN3JFEL34M/BIcMLyvrG7gYN/Q==} - '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.0.0-beta.45': - resolution: {integrity: sha512-w9v3E0F9OKSUoK2DtMphpUO2Dd+op+YrwHAYyZTbKL48DEd+Ez5L9wW1bURpfNMSaRjm5H9BrMM2eVdSz8TFQw==} + '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.0.0-rc.3': + resolution: {integrity: sha512-mUmxQVXPoemP2ak/77g/o8kpP2DNd1EDjteuyGHyw1EHk/t4xYPAP05rQ2DfIQ5yVHmxBKRDQ15kfVNEpfUfYQ==} - '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.0.0-beta.45': - resolution: {integrity: sha512-7txrflmTsG2400mHq6rswnxi6+r+H7vtL0Mfb0lMj4docaSODnTdEiNjG35jaQaBMbMEtRPokJ6i4018SNFy3Q==} + '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.0.0-rc.3': + resolution: {integrity: sha512-K2BaslenC4ouPyzOQSB7wQPSsIGKGIj4VfP4M9y3fJaX9dIi+z3kzYQV7NFhZHAnq6pVybIDA44FLHF/WLCxUg==} - '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.0.0-beta.45': - resolution: {integrity: sha512-laxCy1UmLjlUGRRlcEEQLHWmzwnUq750SFjnBUJe70DxNrBr68UqlLqKC/kGkpOOgsf+NMWhqSkS8WQ/eLsQww==} + '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.0.0-rc.3': + resolution: {integrity: sha512-xJezoi5d+RtV7sG9VRcfpbLlJwaR6GoJr2S8lbsnMUkk/B2vZGdRbA2Fc67REQIJTEfxXcU8T3+5m8j0WrG9Xw==} - '@swagger-api/apidom-parser-adapter-json@1.0.0-beta.45': - resolution: {integrity: sha512-5fFln56FM/6xEvGEAjk+GvTcmts8P5nnCPNDQpxc/PVDcLxC0gzyp5bjkOLmj9nZXqCQRzm/PH0bmxGQv4JSmg==} + '@swagger-api/apidom-parser-adapter-json@1.0.0-rc.3': + resolution: {integrity: sha512-Y0dfIYvQE+OLjormlx6RjmA6ymNA6+nkqJC/6qkFt+4fSjfOiXwbOOnfZp9pJXb2ssmDDdrPTFc3ninx5k7jNw==} - '@swagger-api/apidom-parser-adapter-openapi-json-2@1.0.0-beta.45': - resolution: {integrity: sha512-lFRbbCGyGilEkNLgZyJeHK2sUsmtEKljkvyZytjGXshd45lLkHD+/1vByKhClbyoA+aIk8lzLpeaMECbOH+a9w==} + '@swagger-api/apidom-parser-adapter-openapi-json-2@1.0.0-rc.3': + resolution: {integrity: sha512-yaMS11FZVJLF062s+dch1kmUvBqdIS6mwAg/4XUL7XwSYat6pnV2ONCqdcUO9JSc9KJMZQiVAZjAZSj096ssNg==} - '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.0.0-beta.45': - resolution: {integrity: sha512-AMCSLQhWcsTvlAhZMIwGezXBxhqLnnQQPkZHwKBFA1sD0FLZJKmIs1bxuEuo3iKNHKfDvbKJLQsr6OOqCg1MtQ==} + '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.0.0-rc.3': + resolution: {integrity: sha512-5OdImG3eEgYpFvSo0EiZVvJJahk+f6cm5WZNn9lVdRlmxmtpzKM3UNfIYcBgVcAcLvfi8g6G7xRzD1DshaS8sw==} - '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.0.0-beta.45': - resolution: {integrity: sha512-rnao77rKeLHrpfM/QRzsOVNaaqZVYv4QID35GDOkuIHjjDNTjmquUsuWscAtI32P7tJHmPrLAJWKxb48W02mmw==} + '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.0.0-rc.3': + resolution: {integrity: sha512-UWlH29DOqKfHF2zwv7r5b7pgrc7Yxdus7FjYWA8p8yoIB02xDwHBaH4KhccIAXkm1qNMo+4TwSKFvO/boE8LMA==} - '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.0.0-beta.45': - resolution: {integrity: sha512-zilhJHYEV0cGde6ZdAfB+/4OnzHW8OCLO7bXmtoXdsxwJV0DHnwjrq2FgOlwqWBPWRIlyFwBwdUO0Rd5P4re3g==} + '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.0.0-rc.3': + resolution: {integrity: sha512-kSWzmalm98ScImQHHtpTBDAIEzLsfE24Pe1IIJP1TaI2rk1AuxzaCsqMl6NQIlnIEawghPOXlG0hLsgtswn/Jg==} - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.0.0-beta.45': - resolution: {integrity: sha512-loof/awV/RNIaCHqr4+uVVjdSayAvNyxjLszyd0moAQv/247mfjvCH0h9VLIlpjI4kf+C3q4bhyYYaeVl9MSVg==} + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.0.0-rc.3': + resolution: {integrity: sha512-IRxjOgmGpaA1ay/NITOqk3TKTXnGiJtNP8KsPm//i+HkGcg87lZEvRDflB2Z70aRofKncXM2rCMAEqFqV7A9ug==} - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.0.0-beta.45': - resolution: {integrity: sha512-h2oHGosYXditkPJ66aGEsvz6zpM6N26ay1ZRhk9LjuSA8S4BqFYY+MbJVD6C0LLP6Mn5jvDWCUq7yB0DTWNxpg==} + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.0.0-rc.3': + resolution: {integrity: sha512-uvDMPiKt7uZSAOUVe+q/AygTFXw1odxxu5mi5voQM3/0KbR/vlt8f1dO9sQkys+G6ped2nL4r8B0p6bXR8uAMQ==} - '@swagger-api/apidom-parser-adapter-yaml-1-2@1.0.0-beta.45': - resolution: {integrity: sha512-/Emcfl4Va1GJB7kU2DWZBrqAn6dLi/sclPa4z0sjg+2EtOJ9l9zw3sKc4d7cEY5PX2QzgD8bFxBYrP9lU03IZw==} + '@swagger-api/apidom-parser-adapter-yaml-1-2@1.0.0-rc.3': + resolution: {integrity: sha512-IiLIw74NRpRwi2YkV1hzmHC5JvvAm/TdeVYZoYK0QxeT2Ozr6MvhnUnRFjjSL3wcmku9+rLz2d8EGL2kO46qRA==} - '@swagger-api/apidom-reference@1.0.0-beta.45': - resolution: {integrity: sha512-1EbK7P6oki5mR8bho+E0yoc9JwhOT/vboTjidolH8Fjw/WuE6GcMHX+8OBcwcgjt9hXWsY3YfvZFwK7baxkPnQ==} + '@swagger-api/apidom-reference@1.0.0-rc.3': + resolution: {integrity: sha512-xZ9B6lGpdlHGSZGEhYe/MAyULCN4d+w4LKK5P1C/i6W6AU4iDEMjMjSawRV9ptJcObnu9ArEe92rgI7XS6s0TQ==} '@swaggerexpert/cookie@2.0.2': resolution: {integrity: sha512-DPI8YJ0Vznk4CT+ekn3rcFNq1uQwvUHZhH6WvTSPD0YKBIlMS9ur2RYKghXuxxOiqOam/i4lHJH4xTIiTgs3Mg==} @@ -9032,68 +9454,68 @@ packages: resolution: {integrity: sha512-qMx1nOrzoB+PF+pzb26Q4Tc2sOlrx9Ba2UBNX9hB31Omrq+QoZ2Gly0KLrQWw4Of1AQ4J9lnD+XOdwOdcdXqqw==} engines: {node: '>=12.20.0'} - '@swc/core-darwin-arm64@1.13.3': - resolution: {integrity: sha512-ux0Ws4pSpBTqbDS9GlVP354MekB1DwYlbxXU3VhnDr4GBcCOimpocx62x7cFJkSpEBF8bmX8+/TTCGKh4PbyXw==} + '@swc/core-darwin-arm64@1.15.2': + resolution: {integrity: sha512-Ghyz4RJv4zyXzrUC1B2MLQBbppIB5c4jMZJybX2ebdEQAvryEKp3gq1kBksCNsatKGmEgXul88SETU19sMWcrw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.13.3': - resolution: {integrity: sha512-p0X6yhxmNUOMZrbeZ3ZNsPige8lSlSe1llllXvpCLkKKxN/k5vZt1sULoq6Nj4eQ7KeHQVm81/+AwKZyf/e0TA==} + '@swc/core-darwin-x64@1.15.2': + resolution: {integrity: sha512-7n/PGJOcL2QoptzL42L5xFFfXY5rFxLHnuz1foU+4ruUTG8x2IebGhtwVTpaDN8ShEv2UZObBlT1rrXTba15Zw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.13.3': - resolution: {integrity: sha512-OmDoiexL2fVWvQTCtoh0xHMyEkZweQAlh4dRyvl8ugqIPEVARSYtaj55TBMUJIP44mSUOJ5tytjzhn2KFxFcBA==} + '@swc/core-linux-arm-gnueabihf@1.15.2': + resolution: {integrity: sha512-ZUQVCfRJ9wimuxkStRSlLwqX4TEDmv6/J+E6FicGkQ6ssLMWoKDy0cAo93HiWt/TWEee5vFhFaSQYzCuBEGO6A==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.13.3': - resolution: {integrity: sha512-STfKku3QfnuUj6k3g9ld4vwhtgCGYIFQmsGPPgT9MK/dI3Lwnpe5Gs5t1inoUIoGNP8sIOLlBB4HV4MmBjQuhw==} + '@swc/core-linux-arm64-gnu@1.15.2': + resolution: {integrity: sha512-GZh3pYBmfnpQ+JIg+TqLuz+pM+Mjsk5VOzi8nwKn/m+GvQBsxD5ectRtxuWUxMGNG8h0lMy4SnHRqdK3/iJl7A==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.13.3': - resolution: {integrity: sha512-bc+CXYlFc1t8pv9yZJGus372ldzOVscBl7encUBlU1m/Sig0+NDJLz6cXXRcFyl6ABNOApWeR4Yl7iUWx6C8og==} + '@swc/core-linux-arm64-musl@1.15.2': + resolution: {integrity: sha512-5av6VYZZeneiYIodwzGMlnyVakpuYZryGzFIbgu1XP8wVylZxduEzup4eP8atiMDFmIm+s4wn8GySJmYqeJC0A==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.13.3': - resolution: {integrity: sha512-dFXoa0TEhohrKcxn/54YKs1iwNeW6tUkHJgXW33H381SvjKFUV53WR231jh1sWVJETjA3vsAwxKwR23s7UCmUA==} + '@swc/core-linux-x64-gnu@1.15.2': + resolution: {integrity: sha512-1nO/UfdCLuT/uE/7oB3EZgTeZDCIa6nL72cFEpdegnqpJVNDI6Qb8U4g/4lfVPkmHq2lvxQ0L+n+JdgaZLhrRA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.13.3': - resolution: {integrity: sha512-ieyjisLB+ldexiE/yD8uomaZuZIbTc8tjquYln9Quh5ykOBY7LpJJYBWvWtm1g3pHv6AXlBI8Jay7Fffb6aLfA==} + '@swc/core-linux-x64-musl@1.15.2': + resolution: {integrity: sha512-Ksfrb0Tx310kr+TLiUOvB/I80lyZ3lSOp6cM18zmNRT/92NB4mW8oX2Jo7K4eVEI2JWyaQUAFubDSha2Q+439A==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.13.3': - resolution: {integrity: sha512-elTQpnaX5vESSbhCEgcwXjpMsnUbqqHfEpB7ewpkAsLzKEXZaK67ihSRYAuAx6ewRQTo7DS5iTT6X5aQD3MzMw==} + '@swc/core-win32-arm64-msvc@1.15.2': + resolution: {integrity: sha512-IzUb5RlMUY0r1A9IuJrQ7Tbts1wWb73/zXVXT8VhewbHGoNlBKE0qUhKMED6Tv4wDF+pmbtUJmKXDthytAvLmg==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.13.3': - resolution: {integrity: sha512-nvehQVEOdI1BleJpuUgPLrclJ0TzbEMc+MarXDmmiRFwEUGqj+pnfkTSb7RZyS1puU74IXdK/YhTirHurtbI9w==} + '@swc/core-win32-ia32-msvc@1.15.2': + resolution: {integrity: sha512-kCATEzuY2LP9AlbU2uScjcVhgnCAkRdu62vbce17Ro5kxEHxYWcugkveyBRS3AqZGtwAKYbMAuNloer9LS/hpw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.13.3': - resolution: {integrity: sha512-A+JSKGkRbPLVV2Kwx8TaDAV0yXIXm/gc8m98hSkVDGlPBBmydgzNdWy3X7HTUBM7IDk7YlWE7w2+RUGjdgpTmg==} + '@swc/core-win32-x64-msvc@1.15.2': + resolution: {integrity: sha512-iJaHeYCF4jTn7OEKSa3KRiuVFIVYts8jYjNmCdyz1u5g8HRyTDISD76r8+ljEOgm36oviRQvcXaw6LFp1m0yyA==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.13.3': - resolution: {integrity: sha512-ZaDETVWnm6FE0fc+c2UE8MHYVS3Fe91o5vkmGfgwGXFbxYvAjKSqxM/j4cRc9T7VZNSJjriXq58XkfCp3Y6f+w==} + '@swc/core@1.15.2': + resolution: {integrity: sha512-OQm+yJdXxvSjqGeaWhP6Ia264ogifwAO7Q12uTDVYj/Ks4jBTI4JknlcjDRAXtRhqbWsfbZyK/5RtuIPyptk3w==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -9107,8 +9529,8 @@ packages: '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - '@swc/types@0.1.24': - resolution: {integrity: sha512-tjTMh3V4vAORHtdTprLlfoMptu1WfTZG9Rsca6yOKyNYsRr+MUXutKmliB17orgSZk5DpnDxs8GUdd/qwYxOng==} + '@swc/types@0.1.25': + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} @@ -9117,8 +9539,8 @@ packages: '@tanstack/query-core@4.27.0': resolution: {integrity: sha512-sm+QncWaPmM73IPwFlmWSKPqjdTXZeFf/7aEmWh00z7yl2FjqophPt0dE1EHW9P1giMC5rMviv7OUbSDmWzXXA==} - '@tanstack/query-core@4.40.0': - resolution: {integrity: sha512-7MJTtZkCSuehMC7IxMOCGsLvHS3jHx4WjveSrGsG1Nc1UQLjaFwwkpLA2LmPfvOAxnH4mszMOBFD6LlZE+aB+Q==} + '@tanstack/query-core@4.41.0': + resolution: {integrity: sha512-193R4Jp9hjvlij6LryxrB5Mpbffd2L9PeWh3KlIy/hJV4SkBOfiQZ+jc5qAZLDCrdbkA5FjGj+UoDYw6TcNnyA==} '@tanstack/query-core@5.76.0': resolution: {integrity: sha512-FN375hb8ctzfNAlex5gHI6+WDXTNpe0nbxp/d2YJtnP+IBM6OUm7zcaoCW6T63BawGOYZBbKC0iPvr41TteNVg==} @@ -9129,8 +9551,8 @@ packages: '@tanstack/query-core@5.77.1': resolution: {integrity: sha512-nfxVhy4UynChMFfN4NxwI8pktV9R3Zt/ROxOAe6pdOf8CigDLn26p+ex1YW5uien26BBICLmN0dTvIELHCs5vw==} - '@tanstack/query-core@5.83.1': - resolution: {integrity: sha512-OG69LQgT7jSp+5pPuCfzltq/+7l2xoweggjme9vlbCPa/d7D7zaqv5vN/S82SzSYZ4EDLTxNO1PWrv49RAS64Q==} + '@tanstack/query-core@5.90.10': + resolution: {integrity: sha512-EhZVFu9rl7GfRNuJLJ3Y7wtbTnENsvzp+YpcAV7kCYiXni1v8qZh++lpw4ch4rrwC0u/EZRnBHIehzCGzwXDSQ==} '@tanstack/query-persist-client-core@4.27.0': resolution: {integrity: sha512-A+dPA7zG0MJOMDeBc/2WcKXW4wV2JMkeBVydobPW9G02M4q0yAj7vI+7SmM2dFuXyIvxXp4KulCywN6abRKDSQ==} @@ -9231,20 +9653,20 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' - '@textlint/ast-node-types@14.8.4': - resolution: {integrity: sha512-+fI7miec/r9VeniFV9ppL4jRCmHNsTxieulTUf/4tvGII3db5hGriKHC4p/diq1SkQ9Sgs7kg6UyydxZtpTz1Q==} + '@textlint/ast-node-types@15.4.0': + resolution: {integrity: sha512-IqY8i7IOGuvy05wZxISB7Me1ZyrvhaQGgx6DavfQjH3cfwpPFdDbDYmMXMuSv2xLS1kDB1kYKBV7fL2Vi16lRA==} - '@textlint/linter-formatter@14.8.4': - resolution: {integrity: sha512-sZ0UfYRDBNHnfMVBqLqqYnqTB7Ec169ljlmo+SEHR1T+dHUPYy1/DZK4p7QREXlBSFL4cnkswETCbc9xRodm4Q==} + '@textlint/linter-formatter@15.4.0': + resolution: {integrity: sha512-rfqOZmnI1Wwc/Pa4LK+vagvVPmvxf9oRsBRqIOB04DwhucingZyAIJI/TyG18DIDYbP2aFXBZ3oOvyAxHe/8PQ==} - '@textlint/module-interop@14.8.4': - resolution: {integrity: sha512-1LdPYLAVpa27NOt6EqvuFO99s4XLB0c19Hw9xKSG6xQ1K82nUEyuWhzTQKb3KJ5Qx7qj14JlXZLfnEuL6A16Bw==} + '@textlint/module-interop@15.4.0': + resolution: {integrity: sha512-uGf+SFIfzOLCbZI0gp+2NLsrkSArsvEWulPP6lJuKp7yRHadmy7Xf/YHORe46qhNyyxc8PiAfiixHJSaHGUrGg==} - '@textlint/resolver@14.8.4': - resolution: {integrity: sha512-nMDOgDAVwNU9ommh+Db0U+MCMNDPbQ/1HBNjbnHwxZkCpcT6hsAJwBe38CW/DtWVUv8yeR4R40IYNPT84srNwA==} + '@textlint/resolver@15.4.0': + resolution: {integrity: sha512-Vh/QceKZQHFJFG4GxxIsKM1Xhwv93mbtKHmFE5/ybal1mIKHdqF03Z9Guaqt6Sx/AeNUshq0hkMOEhEyEWnehQ==} - '@textlint/types@14.8.4': - resolution: {integrity: sha512-9nyY8vVXlr8hHKxa6+37omJhXWCwovMQcgMteuldYd4dOxGm14AK2nXdkgtKEUQnzLGaXy46xwLCfhQy7V7/YA==} + '@textlint/types@15.4.0': + resolution: {integrity: sha512-ZMwJgw/xjxJufOD+IB7I2Enl9Si4Hxo04B76RwUZ5cKBKzOPcmd6WvGe2F7jqdgmTdGnfMU+Bo/joQrjPNIWqg==} '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} @@ -9275,6 +9697,21 @@ packages: '@ts-morph/common@0.27.0': resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==} + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -9305,8 +9742,8 @@ packages: '@types/chai@4.3.20': resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/classnames@2.3.4': resolution: {integrity: sha512-dwmfrMMQb9ujX1uYGvB5ERDlOzBNywnZAZBtOe107/hORWP05ESgU4QyaanZMWYYfd2BzrG78y13/Bju8IQcMQ==} @@ -9315,8 +9752,8 @@ packages: '@types/codemirror@0.0.90': resolution: {integrity: sha512-8Z9+tSg27NPRGubbUPUCrt5DDG/OWzLph5BvcDykwR5D7RyZh5mhHG0uS1ePKV1YFCA+/cwc4Ey2AJAEFfV3IA==} - '@types/codemirror@5.60.16': - resolution: {integrity: sha512-V/yHdamffSS075jit+fDxaOAmdP2liok8NSNJnAZfDJErzOheuygHZEhAJrfmk5TEyM32MhkZjwo/idX791yxw==} + '@types/codemirror@5.60.17': + resolution: {integrity: sha512-AZq2FIsUHVMlp7VSe2hTfl5w4pcUkoFkM3zVsRKsn1ca8CXRDYvnin04+HP2REkwsxemuHqvDofdlhUWNpbwfw==} '@types/connect-history-api-fallback@1.5.4': resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} @@ -9351,8 +9788,8 @@ packages: '@types/ejs@3.1.5': resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==} - '@types/emscripten@1.40.1': - resolution: {integrity: sha512-sr53lnYkQNhjHNN0oJDdUm5564biioI5DuOpycufDVK7D3y+GR3oUswe2rlwY1nPNyusHbrJ9WoTyIHl4/Bpwg==} + '@types/emscripten@1.41.5': + resolution: {integrity: sha512-cMQm7pxu6BxtHyqJ7mQZ2kXWV5SLmugybFdHCBbJ5eHzOo6VhBckEgAT3//rP5FwPHNPeEiq4SmQ5ucBwsOo4Q==} '@types/escodegen@0.0.6': resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} @@ -9378,11 +9815,11 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + '@types/express-serve-static-core@4.19.7': + resolution: {integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==} - '@types/express@4.17.23': - resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} + '@types/express@4.17.25': + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} '@types/find-cache-dir@3.2.1': resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} @@ -9426,8 +9863,8 @@ packages: '@types/http-errors@2.0.5': resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - '@types/http-proxy@1.17.16': - resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} + '@types/http-proxy@1.17.17': + resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} '@types/is-function@1.0.3': resolution: {integrity: sha512-/CLhCW79JUeLKznI6mbVieGbl4QU5Hfn+6udw1YHZoofASjbQ5zaP5LzAUZYDpRYEjS4/P+DhEgyJ/PQmGGTWw==} @@ -9450,6 +9887,9 @@ packages: '@types/jest@29.5.14': resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + '@types/jest@30.0.0': + resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} + '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} @@ -9526,17 +9966,17 @@ packages: '@types/node-fetch@2.6.13': resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} - '@types/node-forge@1.3.13': - resolution: {integrity: sha512-zePQJSW5QkwSHKRApqWCVKeKoSOt4xvEnLENZPjyvm9Ezdf/EyDeJM7jqLzOwjVICQQzvLZ63T55MKdJB5H6ww==} + '@types/node-forge@1.3.14': + resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} '@types/node@16.18.126': resolution: {integrity: sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==} - '@types/node@18.19.121': - resolution: {integrity: sha512-bHOrbyztmyYIi4f1R0s17QsPs1uyyYnGcXeZoGEd227oZjry0q6XQBQxd82X1I57zEfwO8h9Xo+Kl5gX1d9MwQ==} + '@types/node@18.19.130': + resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} - '@types/node@20.19.22': - resolution: {integrity: sha512-hRnu+5qggKDSyWHlnmThnUqg62l29Aj/6vcYgUaSFL9oc7DVjeWEQN3PRgdSc6F8d9QRMWkf36CLMch1Do/+RQ==} + '@types/node@20.19.25': + resolution: {integrity: sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==} '@types/node@22.15.18': resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} @@ -9610,8 +10050,8 @@ packages: '@types/react-test-renderer@19.1.0': resolution: {integrity: sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==} - '@types/react@17.0.87': - resolution: {integrity: sha512-wpg9AbtJ6agjA+BKYmhG6dRWEU/2DHYwMzCaBzsz137ft6IyuqZ5fI4ic1DWL4DrI03Zy78IyVE6ucrXl0mu4g==} + '@types/react@17.0.90': + resolution: {integrity: sha512-P9beVR/x06U9rCJzSxtENnOr4BrbJ6VrsrDTc+73TtHv9XHhryXKbjGRB+6oooB2r0G/pQkD/S4dHo/7jUfwFw==} '@types/react@18.2.0': resolution: {integrity: sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==} @@ -9637,20 +10077,23 @@ packages: '@types/scheduler@0.26.0': resolution: {integrity: sha512-WFHp9YUJQ6CKshqoC37iOlHnQSmxNc795UhB26CyBBttrN9svdIrUjl/NjnNmfcwtncN0h/0PPAFWv9ovP8mLA==} - '@types/selenium-webdriver@4.1.28': - resolution: {integrity: sha512-Au7CXegiS7oapbB16zxPToY4Cjzi9UQQMf3W2ZZM8PigMLTGR3iUAHjPUTddyE5g1SBjT/qpmvlsAQLBfNAdKg==} + '@types/selenium-webdriver@4.35.4': + resolution: {integrity: sha512-hZFsK0dt/2PA5eLrFOJwkoTBpPXtaKnln7NCtg3pMAPwg7DXG6kTilHoAw8KzsQeDFLJ0mYcL6dPSMt1Qk7eSw==} + + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/semver@7.7.0': - resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} - '@types/send@0.17.5': - resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} '@types/serve-index@1.9.4': resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - '@types/serve-static@1.15.8': - resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} @@ -9712,14 +10155,14 @@ packages: '@types/uuid@9.0.8': resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - '@types/vscode-notebook-renderer@1.72.3': - resolution: {integrity: sha512-MfmEI3A2McbUV2WaijoTgLOAs9chwHN4WmqOedl3jdtlbzJBWIQ9ZFmQdzPa3lYr5j8DJhRg3KB5AIM/BBfg9Q==} + '@types/vscode-notebook-renderer@1.72.4': + resolution: {integrity: sha512-bdKO41c6Dc24pH/O/eM/jqfCwGH4zc76o/g/6Gt1y/eg/bvvqP2/VpbV+Sa5Te2sZekFRcbYnSSFTKo3wcVGUg==} '@types/vscode-webview@1.57.5': resolution: {integrity: sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==} - '@types/vscode@1.102.0': - resolution: {integrity: sha512-V9sFXmcXz03FtYTSUsYsu5K0Q9wH9w9V25slddcxrh5JgORD14LpnOA7ov0L9ALi+6HrTjskLJ/tY5zeRF3TFA==} + '@types/vscode@1.106.1': + resolution: {integrity: sha512-R/HV8u2h8CAddSbX8cjpdd7B8/GnE4UjgjpuGuHcbp1xV6yh4OeqU4L1pKjlwujCrSFS0MOpwJAIs/NexMB1fQ==} '@types/webpack-env@1.18.8': resolution: {integrity: sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A==} @@ -9745,11 +10188,11 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@15.0.19': - resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + '@types/yargs@15.0.20': + resolution: {integrity: sha512-KIkX+/GgfFitlASYCGoSF+T4XRXhOubJLhkLVtSfsRTe9jWMmuM2g28zQ41BtPTG7TRBb2xHW+LCNVE9QR/vsg==} - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} '@typescript-eslint/eslint-plugin@2.34.0': resolution: {integrity: sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==} @@ -9877,8 +10320,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.39.0': - resolution: {integrity: sha512-CTzJqaSq30V/Z2Og9jogzZt8lJRR5TKlAdXmWgdu4hgcC9Kww5flQ+xFvMxIBWVNdxJO7OifgdOK4PokMIWPew==} + '@typescript-eslint/project-service@8.47.0': + resolution: {integrity: sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -9903,8 +10346,8 @@ packages: resolution: {integrity: sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.39.0': - resolution: {integrity: sha512-8QOzff9UKxOh6npZQ/4FQu4mjdOCGSdO3p44ww0hk8Vu+IGbg0tB/H1LcTARRDzGCC8pDGbh2rissBuuoPgH8A==} + '@typescript-eslint/scope-manager@8.47.0': + resolution: {integrity: sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.33.1': @@ -9913,8 +10356,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/tsconfig-utils@8.39.0': - resolution: {integrity: sha512-Fd3/QjmFV2sKmvv3Mrj8r6N8CryYiCS8Wdb/6/rgOXAWGcFuc+VkQuG28uk/4kVNVZBQuuDHEDUpo/pQ32zsIQ==} + '@typescript-eslint/tsconfig-utils@8.47.0': + resolution: {integrity: sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -9983,8 +10426,8 @@ packages: resolution: {integrity: sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.39.0': - resolution: {integrity: sha512-ArDdaOllnCj3yn/lzKn9s0pBQYmmyme/v1HbGIGB0GB/knFI3fWMHloC+oYTJW46tVbYnGKTMDK4ah1sC2v0Kg==} + '@typescript-eslint/types@8.47.0': + resolution: {integrity: sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@2.34.0': @@ -10035,8 +10478,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/typescript-estree@8.39.0': - resolution: {integrity: sha512-ndWdiflRMvfIgQRpckQQLiB5qAKQ7w++V4LlCHwp62eym1HLB/kw7D9f2e8ytONls/jt89TEasgvb+VwnRprsw==} + '@typescript-eslint/typescript-estree@8.47.0': + resolution: {integrity: sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -10073,8 +10516,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.39.0': - resolution: {integrity: sha512-4GVSvNA0Vx1Ktwvf4sFE+exxJ3QGUorQG1/A5mRfRNZtkBT2xrA/BCO2H0eALx/PnvCS6/vmYwRdDA41EoffkQ==} + '@typescript-eslint/utils@8.47.0': + resolution: {integrity: sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -10100,12 +10543,12 @@ packages: resolution: {integrity: sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.39.0': - resolution: {integrity: sha512-ldgiJ+VAhQCfIjeOgu8Kj5nSxds0ktPOSO9p4+0VDH2R2pLvQraaM5Oen2d7NxzMCm+Sn/vJT+mv2H5u6b/3fA==} + '@typescript-eslint/visitor-keys@8.47.0': + resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typespec/ts-http-runtime@0.3.0': - resolution: {integrity: sha512-sOx1PKSuFwnIl7z4RN0Ls7N9AQawmR9r66eI5rFCzLDIs8HTIYrIpH9QjYWoX0lkgGrkLxXhi4QnK7MizPRrIg==} + '@typespec/ts-http-runtime@0.3.2': + resolution: {integrity: sha512-IlqQ/Gv22xUC1r/WQm4StLkYQmaaTsXAhUVsNE0+xiyf0yRFiH5++q78U3bw6bLKDCTmh0uqKB9eG9+Bt75Dkg==} engines: {node: '>=20.0.0'} '@uiw/codemirror-extensions-basic-setup@4.23.14': @@ -10124,6 +10567,105 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.11.1': + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + cpu: [x64] + os: [win32] + + '@vercel/oidc@3.0.3': + resolution: {integrity: sha512-yNEQvPcVrK9sIe637+I0jD6leluPxzwJKx/Haw6F4H77CdDsszUn5V3o96LPziXkSNE2B83+Z3mjqGKBK/R6Gg==} + engines: {node: '>= 20'} + '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} @@ -10184,73 +10726,68 @@ packages: resolution: {integrity: sha512-vaTZE65zigWwSWYB6yaZUAyVC/Ux+6U82hnzy/ejuS/KpFifO+0oORNd5yAoPeIRnYjvllM6ES3YlX4K5tUuww==} engines: {vscode: ^1.75.0} - '@vscode/iconv-lite-umd@0.7.0': - resolution: {integrity: sha512-bRRFxLfg5dtAyl5XyiVWz/ZBPahpOpPrNYnnHpOpUZvam4tKH35wdhP4Kj6PbM0+KdliOsPzbGWpkxcdpNB/sg==} + '@vscode/iconv-lite-umd@0.7.1': + resolution: {integrity: sha512-tK6k0DXFHW7q5+GGuGZO+phpAqpxO4WXl+BLc/8/uOk3RsM2ssAL3CQUQDb1TGfwltjsauhN6S4ghYZzs4sPFw==} '@vscode/test-electron@2.5.2': resolution: {integrity: sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==} engines: {node: '>=16'} - '@vscode/vsce-sign-alpine-arm64@2.0.5': - resolution: {integrity: sha512-XVmnF40APwRPXSLYA28Ye+qWxB25KhSVpF2eZVtVOs6g7fkpOxsVnpRU1Bz2xG4ySI79IRuapDJoAQFkoOgfdQ==} + '@vscode/vsce-sign-alpine-arm64@2.0.6': + resolution: {integrity: sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==} cpu: [arm64] os: [alpine] - '@vscode/vsce-sign-alpine-x64@2.0.5': - resolution: {integrity: sha512-JuxY3xcquRsOezKq6PEHwCgd1rh1GnhyH6urVEWUzWn1c1PC4EOoyffMD+zLZtFuZF5qR1I0+cqDRNKyPvpK7Q==} + '@vscode/vsce-sign-alpine-x64@2.0.6': + resolution: {integrity: sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==} cpu: [x64] os: [alpine] - '@vscode/vsce-sign-darwin-arm64@2.0.5': - resolution: {integrity: sha512-z2Q62bk0ptADFz8a0vtPvnm6vxpyP3hIEYMU+i1AWz263Pj8Mc38cm/4sjzxu+LIsAfhe9HzvYNS49lV+KsatQ==} + '@vscode/vsce-sign-darwin-arm64@2.0.6': + resolution: {integrity: sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==} cpu: [arm64] os: [darwin] - '@vscode/vsce-sign-darwin-x64@2.0.5': - resolution: {integrity: sha512-ma9JDC7FJ16SuPXlLKkvOD2qLsmW/cKfqK4zzM2iJE1PbckF3BlR08lYqHV89gmuoTpYB55+z8Y5Fz4wEJBVDA==} + '@vscode/vsce-sign-darwin-x64@2.0.6': + resolution: {integrity: sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==} cpu: [x64] os: [darwin] - '@vscode/vsce-sign-linux-arm64@2.0.5': - resolution: {integrity: sha512-Hr1o0veBymg9SmkCqYnfaiUnes5YK6k/lKFA5MhNmiEN5fNqxyPUCdRZMFs3Ajtx2OFW4q3KuYVRwGA7jdLo7Q==} + '@vscode/vsce-sign-linux-arm64@2.0.6': + resolution: {integrity: sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==} cpu: [arm64] os: [linux] - '@vscode/vsce-sign-linux-arm@2.0.5': - resolution: {integrity: sha512-cdCwtLGmvC1QVrkIsyzv01+o9eR+wodMJUZ9Ak3owhcGxPRB53/WvrDHAFYA6i8Oy232nuen1YqWeEohqBuSzA==} + '@vscode/vsce-sign-linux-arm@2.0.6': + resolution: {integrity: sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==} cpu: [arm] os: [linux] - '@vscode/vsce-sign-linux-x64@2.0.5': - resolution: {integrity: sha512-XLT0gfGMcxk6CMRLDkgqEPTyG8Oa0OFe1tPv2RVbphSOjFWJwZgK3TYWx39i/7gqpDHlax0AP6cgMygNJrA6zg==} + '@vscode/vsce-sign-linux-x64@2.0.6': + resolution: {integrity: sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==} cpu: [x64] os: [linux] - '@vscode/vsce-sign-win32-arm64@2.0.5': - resolution: {integrity: sha512-hco8eaoTcvtmuPhavyCZhrk5QIcLiyAUhEso87ApAWDllG7djIrWiOCtqn48k4pHz+L8oCQlE0nwNHfcYcxOPw==} + '@vscode/vsce-sign-win32-arm64@2.0.6': + resolution: {integrity: sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==} cpu: [arm64] os: [win32] - '@vscode/vsce-sign-win32-x64@2.0.5': - resolution: {integrity: sha512-1ixKFGM2FwM+6kQS2ojfY3aAelICxjiCzeg4nTHpkeU1Tfs4RC+lVLrgq5NwcBC7ZLr6UfY3Ct3D6suPeOf7BQ==} + '@vscode/vsce-sign-win32-x64@2.0.6': + resolution: {integrity: sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==} cpu: [x64] os: [win32] - '@vscode/vsce-sign@2.0.6': - resolution: {integrity: sha512-j9Ashk+uOWCDHYDxgGsqzKq5FXW9b9MW7QqOIYZ8IYpneJclWTBeHZz2DJCSKQgo+JAqNcaRRE1hzIx0dswqAw==} - - '@vscode/vsce@2.21.1': - resolution: {integrity: sha512-f45/aT+HTubfCU2oC7IaWnH9NjOWp668ML002QiFObFRVUCoLtcwepp9mmql/ArFUy+HCHp54Xrq4koTcOD6TA==} - engines: {node: '>= 14'} - hasBin: true + '@vscode/vsce-sign@2.0.9': + resolution: {integrity: sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==} '@vscode/vsce@2.32.0': resolution: {integrity: sha512-3EFJfsgrSftIqt3EtdRcAygy/OJ3hstyI1cDmIgkU9CFZW5C+3djr6mfosndCUqcVYuyjmxOK1xmFp/Bq7+NIg==} engines: {node: '>= 16'} hasBin: true - '@vscode/vsce@3.4.2': - resolution: {integrity: sha512-U2gC7GiQc22nxRpWH4cdW16rRr5u9w+Bjsjm8g8mEjY4aeOG1U6/3XNGq+ElwdeoT8jAyhBmBAuYG7INcSe/6A==} + '@vscode/vsce@3.7.0': + resolution: {integrity: sha512-LY9r2T4joszRjz4d92ZPl6LTBUPS4IWH9gG/3JUv+1QyBJrveZlcVISuiaq0EOpmcgFh0GgVgKD4rD/21Tu8sA==} engines: {node: '>= 20'} hasBin: true @@ -10380,8 +10917,8 @@ packages: engines: {node: '>=10.0.0'} deprecated: this version is no longer supported, please update to at least 0.8.* - '@xmldom/xmldom@0.8.10': - resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + '@xmldom/xmldom@0.8.11': + resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} engines: {node: '>=10.0.0'} '@xtuc/ieee754@1.2.0': @@ -10523,8 +11060,8 @@ packages: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} - ai@5.0.59: - resolution: {integrity: sha512-SuAFxKXt2Ha9FiXB3gaOITkOg9ek/3QNVatGVExvTT4gNXc+hJpuNe1dmuwf6Z5Op4fzc8wdbsrYP27ZCXBzlw==} + ai@5.0.93: + resolution: {integrity: sha512-9eGcu+1PJgPg4pRNV4L7tLjRR3wdJC9CXQoNMvtqvYNOLZHFCzjHtVIOr2SIkoJJeu2+sOy3hyiSuTmy2MA40g==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -10573,8 +11110,8 @@ packages: resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} engines: {node: '>=0.4.2'} - anser@2.3.2: - resolution: {integrity: sha512-PMqBCBvrOVDRqLGooQb+z+t1Q0PiPyurUQeZRR5uHBOVZcW8B04KMmnT12USnhpNX2wCPagWzLVppQMUG3u0Dw==} + anser@2.3.3: + resolution: {integrity: sha512-QGY1oxYE7/kkeNmbtY/2ZjQ07BCG3zYdz+k/+sf69kMzEIxb93guHkPnIXITQ+BYi61oQwG74twMOX1tD4aesg==} ansi-align@2.0.0: resolution: {integrity: sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==} @@ -10606,8 +11143,8 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + ansi-escapes@7.2.0: + resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} engines: {node: '>=18'} ansi-html-community@0.0.8: @@ -10636,8 +11173,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@2.2.1: @@ -10656,8 +11193,8 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} ansi-to-html@0.6.15: @@ -10715,6 +11252,9 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This package is no longer supported. + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -10907,8 +11447,8 @@ packages: autolinker@3.16.2: resolution: {integrity: sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==} - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + autoprefixer@10.4.22: + resolution: {integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -10940,20 +11480,17 @@ packages: aws4fetch@1.0.20: resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==} - axe-core@4.10.3: - resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} + axe-core@4.11.0: + resolution: {integrity: sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==} engines: {node: '>=4'} - axios@1.12.0: - resolution: {integrity: sha512-oXTDccv8PcfjZmPGlWsPSwtOJCZ/b6W5jAMCNcfwJbCzDckwG0jrYJFaWH1yvivfCXjVzV/SPDEhMB3Q+DSurg==} + axios@1.12.2: + resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - azure-devops-node-api@11.2.0: - resolution: {integrity: sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==} - azure-devops-node-api@12.5.0: resolution: {integrity: sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==} @@ -11040,6 +11577,12 @@ packages: peerDependencies: '@babel/core': ^7.8.0 + babel-jest@30.2.0: + resolution: {integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-0 + babel-loader@10.0.0: resolution: {integrity: sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==} engines: {node: ^18.20.0 || ^20.10.0 || >=22.0.0} @@ -11105,6 +11648,10 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} + babel-plugin-istanbul@7.0.1: + resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==} + engines: {node: '>=12'} + babel-plugin-jest-hoist@20.0.3: resolution: {integrity: sha512-rnyXaCLaHX6BjzT9h4UI1xK7oobCwtLfhompk0qxbcQNhw8JEidggjO1KonVrpdd2+q3QAww3DwVdTYs0g373Q==} @@ -11119,6 +11666,10 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + babel-plugin-jest-hoist@30.2.0: + resolution: {integrity: sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + babel-plugin-macros@2.8.0: resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} @@ -11323,6 +11874,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + babel-preset-jest@30.2.0: + resolution: {integrity: sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-beta.1 + babel-preset-react-app@3.1.2: resolution: {integrity: sha512-/sh5Qd5T08PYa6t4kuCdKh9tXp6/m/Jwyx7PJTqugsYMfsDUJMlBXOs5EwFODHprzjWrmQ0SydnMZu9FY4MZYg==} peerDependencies: @@ -11365,11 +11922,16 @@ packages: balanced-match@2.0.0: resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} - bare-events@2.7.0: - resolution: {integrity: sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==} + bare-events@2.8.2: + resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} + peerDependencies: + bare-abort-controller: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true - bare-fs@4.4.4: - resolution: {integrity: sha512-Q8yxM1eLhJfuM7KXVP3zjhBvtMJCYRByoTT+wHXjpdMELv0xICFJX+1w4c7csa+WZEOsq4ItJ4RGwvzid6m/dw==} + bare-fs@4.5.1: + resolution: {integrity: sha512-zGUCsm3yv/ePt2PHNbVxjjn0nNB1MkIaR4wOCxJ2ig5pCf5cCVAYJXVhQg/3OhhJV6DB1ts7Hv0oUaElc2TPQg==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -11395,8 +11957,8 @@ packages: bare-events: optional: true - bare-url@2.2.2: - resolution: {integrity: sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==} + bare-url@2.3.2: + resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==} base16@1.0.0: resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} @@ -11404,6 +11966,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.8.29: + resolution: {integrity: sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==} + hasBin: true + basic-auth@2.0.1: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} @@ -11483,8 +12049,8 @@ packages: boundary@2.0.0: resolution: {integrity: sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==} - bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + bowser@2.12.1: + resolution: {integrity: sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==} boxen@1.3.0: resolution: {integrity: sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==} @@ -11533,8 +12099,8 @@ packages: deprecated: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools. hasBin: true - browserslist@4.25.1: - resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} + browserslist@4.28.0: + resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -11599,6 +12165,10 @@ packages: resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} engines: {node: '>= 0.8'} + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -11641,8 +12211,8 @@ packages: resolution: {integrity: sha512-Yo9wGIQUaAfIbk+qY0X4cDQgCosecfBe3V9NSyeY4qPC2SAkbCS4Xj79VP8WOzitpJUZKc/wsRCYF5ariDIwkg==} engines: {node: '>=18'} - cacheable@1.10.3: - resolution: {integrity: sha512-M6p10iJ/VT0wT7TLIGUnm958oVrU2cUK8pQAVU21Zu7h8rbk/PeRtRWrvHJBql97Bhzk3g1N6+2VKC+Rjxna9Q==} + cacheable@2.2.0: + resolution: {integrity: sha512-LEJxRqfeomiiRd2t0uON6hxAtgOoWDfY3fugebbz+J3vDLO+SkdfFChQcOHTZhj9SYa9iwE9MGYNX72dKiOE4w==} call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} @@ -11714,19 +12284,16 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-db@1.0.30001731: - resolution: {integrity: sha512-IbYSXiOfvIJmCRLkrE/hMSsTZTu48NBddgIgC027NnuPwu/V14PnO3UtHxoQGSA16b09zZJkCsaoLbwMSllZrA==} + caniuse-db@1.0.30001755: + resolution: {integrity: sha512-R8xk0HVpfPgDIp4rpbHNYMZY3Bnr5XgEvQ54sbPQwIL2rBruVQNipYcGKlve7txXcgoD7ihoQDLU020hFysTLw==} - caniuse-lite@1.0.30001731: - resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==} + caniuse-lite@1.0.30001755: + resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==} - canvas@3.1.2: - resolution: {integrity: sha512-Z/tzFAcBzoCvJlOSlCnoekh1Gu8YMn0J51+UAuXJAbW1Z6I9l2mZgdD7738MepoeeIcUdDtbMnOg6cC7GJxy/g==} + canvas@3.2.0: + resolution: {integrity: sha512-jk0GxrLtUEmW/TmFsk2WghvgHe8B0pxGilqCL21y8lHkPUGa6FTsnCNtHPOzT8O3y+N+m3espawV80bbBlgfTA==} engines: {node: ^18.12.0 || >= 20.9.0} - capital-case@1.0.4: - resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} - capture-exit@2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} engines: {node: 6.* || 8.* || >= 10.*} @@ -11743,6 +12310,10 @@ packages: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} engines: {node: '>=4'} + case@1.6.3: + resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} + engines: {node: '>= 0.8.0'} + caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -11756,8 +12327,8 @@ packages: resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} - chai@5.2.1: - resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==} + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} chainsaw@0.1.0: @@ -11779,13 +12350,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.5.0: - resolution: {integrity: sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - change-case@4.1.2: - resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} - char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -11863,16 +12431,26 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + ci-info@4.3.1: + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} + engines: {node: '>=8'} + citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} cjs-module-lexer@1.4.3: resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + cjs-module-lexer@2.1.1: + resolution: {integrity: sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==} + clap@1.2.3: resolution: {integrity: sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==} engines: {node: '>=0.10.0'} + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -11931,9 +12509,9 @@ packages: resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} + cli-truncate@5.1.1: + resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==} + engines: {node: '>=20'} cli-width@2.2.1: resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} @@ -11952,6 +12530,10 @@ packages: resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} engines: {node: '>=18'} + clipboardy@5.0.0: + resolution: {integrity: sha512-MQfKHaD09eP80Pev4qBxZLbxJK/ONnqfSYAPlCmPh+7BDboYtO/3BmB6HGzxDIT0SlTRc2tzS8lQqfcdLtZ0Kg==} + engines: {node: '>=20'} + cliui@3.2.0: resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==} @@ -11999,6 +12581,12 @@ packages: '@codemirror/view': ^6.0.0 '@lezer/highlight': ^1.0.0 + cmdk@1.1.1: + resolution: {integrity: sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc + co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -12025,8 +12613,8 @@ packages: codemirror: ^5.65.3 graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 - codemirror@5.65.19: - resolution: {integrity: sha512-+aFkvqhaAVr1gferNMuN8vkTSrWIFvzlMV9I2KBLCWS2WpZ2+UAkZjlMZmEuT+gcXTi6RrGQCkWq1/bDtGqhIA==} + codemirror@5.65.20: + resolution: {integrity: sha512-i5dLDDxwkFCbhjvL2pNjShsojoL3XHyDwsGv1jqETUoW+lzpBKKqNTUWgQwVAOa0tUm4BwekT455ujafi8payA==} codemirror@6.0.2: resolution: {integrity: sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==} @@ -12034,8 +12622,8 @@ packages: collapse-white-space@1.0.6: resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + collect-v8-coverage@1.0.3: + resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -12044,17 +12632,26 @@ packages: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-convert@3.1.3: + resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==} + engines: {node: '>=14.6'} + color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@2.1.0: + resolution: {integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==} + engines: {node: '>=12.20'} + color-string@0.3.0: resolution: {integrity: sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA==} - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + color-string@2.1.4: + resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==} + engines: {node: '>=18'} color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} @@ -12063,8 +12660,9 @@ packages: color@0.11.4: resolution: {integrity: sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==} - color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + color@5.0.3: + resolution: {integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==} + engines: {node: '>=18'} colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} @@ -12086,9 +12684,6 @@ packages: resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} engines: {node: '>=0.1.90'} - colorspace@1.1.4: - resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} - combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -12115,8 +12710,8 @@ packages: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} - commander@14.0.0: - resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} + commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} commander@2.13.0: @@ -12147,6 +12742,10 @@ packages: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} @@ -12174,6 +12773,11 @@ packages: concat-with-sourcemaps@1.1.0: resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} + concurrently@9.2.1: + resolution: {integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==} + engines: {node: '>=18'} + hasBin: true + confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -12195,19 +12799,20 @@ packages: console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - constant-case@3.0.4: - resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} - constants-browserify@1.0.0: resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + content-disposition@0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} - content-disposition@1.0.0: - resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} - engines: {node: '>= 0.6'} + content-disposition@1.0.1: + resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} + engines: {node: '>=18'} content-type-parser@1.0.2: resolution: {integrity: sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==} @@ -12248,8 +12853,8 @@ packages: copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} - copy-webpack-plugin@13.0.0: - resolution: {integrity: sha512-FgR/h5a6hzJqATDGd9YG41SeDViH+0bkHn6WNXCi5zKAZkeESeSxLySSsFLHqLEVCh0E+rITmCf0dusXWYukeQ==} + copy-webpack-plugin@13.0.1: + resolution: {integrity: sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==} engines: {node: '>= 18.12.0'} peerDependencies: webpack: ^5.1.0 @@ -12258,18 +12863,18 @@ packages: resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} hasBin: true - core-js-compat@3.45.0: - resolution: {integrity: sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA==} + core-js-compat@3.47.0: + resolution: {integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==} - core-js-pure@3.45.0: - resolution: {integrity: sha512-OtwjqcDpY2X/eIIg1ol/n0y/X8A9foliaNt1dSK0gV3J2/zw+89FcNG3mPK+N8YWts4ZFUPxnrAzsxs/lf8yDA==} + core-js-pure@3.47.0: + resolution: {integrity: sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==} core-js@2.6.12: resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - core-js@3.45.0: - resolution: {integrity: sha512-c2KZL9lP4DjkN3hk/an4pWn5b5ZefhRJnAc42n6LJ19kSnbeRbdQZE5dSeE2LBol1OwJD3X1BQvFTAsa8ReeDA==} + core-js@3.47.0: + resolution: {integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -12340,8 +12945,11 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true - create-storybook@9.1.1: - resolution: {integrity: sha512-JrW3xqo1pbgsX1fvopjN6vZoFO+UyJbXv8sX2Gwvz3LMqwdQToEyUAn8KpOmHH3N+WnUd0tqC5TvK8g7bkk7YA==} + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + create-storybook@9.1.16: + resolution: {integrity: sha512-Po8ZeU1sAcab+gHjAXFnjMMO6HLjItQoXTnfE9gcMytKI25dbBuwX/aKpdHr731vgL6wW82e76PrUpAZdSibRg==} hasBin: true crelt@1.0.6: @@ -12518,8 +13126,8 @@ packages: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} cubic2quad@1.2.1: resolution: {integrity: sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==} @@ -12598,8 +13206,8 @@ packages: supports-color: optional: true - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -12643,8 +13251,8 @@ packages: dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dedent@1.6.0: - resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + dedent@1.7.0: + resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -12683,12 +13291,12 @@ packages: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} engines: {node: '>=12'} - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + default-browser@5.4.0: + resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} engines: {node: '>=18'} default-require-extensions@1.0.0: @@ -12746,8 +13354,8 @@ packages: resolution: {integrity: sha512-v2KyNk7efxhlyHpjEvfyxaAihKKK0nWCuf6ZtqZcFFpQRG0bJ12Qsr0RpvsICMjAAZ8DOVCxrlqpxISlMHC4Kg==} engines: {node: '>=14.16'} - del@8.0.0: - resolution: {integrity: sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==} + del@8.0.1: + resolution: {integrity: sha512-gPqh0mKTPvaUZGAuHbrBUYKZWBNAeHG7TU3QH5EhVwPMyKvmfJaNXhcD2jTcXsJRRcffuho4vaYweu80dRrMGA==} engines: {node: '>=18'} delayed-stream@1.0.0: @@ -12789,8 +13397,8 @@ packages: engines: {node: '>=0.10'} hasBin: true - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} detect-newline@3.1.0: @@ -12820,8 +13428,8 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - dexie@4.0.11: - resolution: {integrity: sha512-SOKO002EqlvBYYKQSew3iymBoN2EQ4BDw/3yprjh7kAfFzjBYkaMNa/pZvcA7HSWlcKSQb9XhPe3wKyQ0x4A8A==} + dexie@4.2.1: + resolution: {integrity: sha512-Ckej0NS6jxQ4Po3OrSQBFddayRhTCic2DoCAG5zacOfOVB9P2Q5Xc5uL/nVa7ZVs+HdMnvUPzLFCB/JwpB6Csg==} diagnostic-channel-publishers@0.3.5: resolution: {integrity: sha512-AOIjw4T7Nxl0G2BoBPhkQ6i7T4bUd9+xvdYizwvG7vVAM1dvr+SDrcUudlmzwH0kbEwdR2V1EcnKT0wAeYLQNQ==} @@ -12929,6 +13537,9 @@ packages: dompurify@3.2.4: resolution: {integrity: sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==} + dompurify@3.2.6: + resolution: {integrity: sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==} + domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -12998,9 +13609,9 @@ packages: ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - editions@6.21.0: - resolution: {integrity: sha512-ofkXJtn7z0urokN62DI3SBo/5xAtF0rR7tn+S/bSYV79Ka8pTajIIl+fFQ1q88DQEImymmo97M4azY3WX/nUdg==} - engines: {node: '>=4'} + editions@6.22.0: + resolution: {integrity: sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==} + engines: {ecmascript: '>= es5', node: '>=4'} ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -13010,8 +13621,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.198: - resolution: {integrity: sha512-G5COfnp3w+ydVu80yprgWSfmfQaYRh9DOxfhAxstLyetKaLyl55QrNjx8C38Pc/C+RaDmb1M0Lk8wPEMQ+bGgQ==} + electron-to-chromium@1.5.255: + resolution: {integrity: sha512-Z9oIp4HrFF/cZkDPMpz2XSuVpc1THDpT4dlmATFlJUIBVCy9Vap5/rIXsASP1CscBacBqhabwh8vLctqBwEerQ==} email-addresses@5.0.0: resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==} @@ -13023,8 +13634,8 @@ packages: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} emoji-regex@7.0.3: resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} @@ -13096,8 +13707,8 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - envinfo@7.14.0: - resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} + envinfo@7.20.0: + resolution: {integrity: sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg==} engines: {node: '>=4'} hasBin: true @@ -13115,8 +13726,8 @@ packages: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} @@ -13162,8 +13773,8 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - es-toolkit@1.39.8: - resolution: {integrity: sha512-A8QO9TfF+rltS8BXpdu8OS+rpGgEdnRhqIVxO/ZmNvnXBYgOdSsxukT55ELyP94gZIntWJ+Li9QRrT2u1Kitpg==} + es-toolkit@1.42.0: + resolution: {integrity: sha512-SLHIyY7VfDJBM8clz4+T2oquwTQxEzu263AyhVK4jREOAwJ+8eebaa4wM3nlvnAqhDrMm2EsA6hWHaQsMPQ1nA==} es5-ext@0.10.64: resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} @@ -13179,9 +13790,6 @@ packages: es6-promise@4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - es6-promisify@6.1.1: - resolution: {integrity: sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==} - es6-shim@0.35.8: resolution: {integrity: sha512-Twf7I2v4/1tLoIXMT8HlqaBSS5H2wQTs2wx3MNYCI8K1R1/clXyCazrcVCPm/FuO9cyV8+leEaZOWD5C253NDg==} @@ -13200,8 +13808,8 @@ packages: peerDependencies: esbuild: '>=0.12 <1' - esbuild@0.25.8: - resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true @@ -13324,8 +13932,8 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-refresh@0.4.20: - resolution: {integrity: sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==} + eslint-plugin-react-refresh@0.4.24: + resolution: {integrity: sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==} peerDependencies: eslint: '>=8.40' @@ -13335,12 +13943,12 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-storybook@9.1.1: - resolution: {integrity: sha512-g4/i9yW6cl4TCEMzYyALNvO3d/jB6TDvSs/Pmye7dHDrra2B7dgZJGzmEWILD62brVrLVHNoXgy2dNPtx80kmw==} + eslint-plugin-storybook@9.1.16: + resolution: {integrity: sha512-I8f3DXniPxFbcptVgOjtIHNvW6sDu1O2d1zNsxLKmeAvEaRLus1ij8iFHCgkNzMthrU5U2F4Wdo/aaSpz5kHjA==} engines: {node: '>=20.0.0'} peerDependencies: eslint: '>=8' - storybook: ^9.1.1 + storybook: ^9.1.16 eslint-plugin-unused-imports@4.1.4: resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} @@ -13566,9 +14174,17 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + execa@9.6.0: + resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==} + engines: {node: ^18.19.0 || >=20.5.0} + exenv-es6@1.1.1: resolution: {integrity: sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==} + exit-x@0.2.2: + resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} + engines: {node: '>= 0.8.0'} + exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -13592,8 +14208,12 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - exponential-backoff@3.1.2: - resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} + expect@30.2.0: + resolution: {integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} express-rate-limit@7.5.1: resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==} @@ -13642,9 +14262,9 @@ packages: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} - fantasticon@1.2.3: - resolution: {integrity: sha512-VoPXI8+wbLq4qooK2LAFRcqKtOCR20+InF/Io/9I1kLp3IT+LwqJgeFijFvp9a3HRZptfCAxNvazoVHn4kihzQ==} - engines: {node: '>= 10.0.0'} + fantasticon@3.0.0: + resolution: {integrity: sha512-PylulixZA8I0SeiUKtuyOhwrz/ojZTSA1KXddipvEyQXCVrpPMTnSXzaE9nXXK7nCjJWFkqoBAQ1aBdaxMltrg==} + engines: {node: '>= 16.0.0'} hasBin: true fast-deep-equal@1.1.0: @@ -13682,8 +14302,8 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} fast-xml-parser@5.2.5: resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} @@ -13727,8 +14347,9 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.4.6: - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -13753,8 +14374,12 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} - file-entry-cache@10.1.3: - resolution: {integrity: sha512-D+w75Ub8T55yor7fPgN06rkCAUbAYw2vpxJmmjv/GDAcvCnv9g7IvHhIZoxzRZThrXPFI2maeY24pPbtyYU7Lg==} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + + file-entry-cache@10.1.4: + resolution: {integrity: sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==} file-entry-cache@5.0.1: resolution: {integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==} @@ -13899,8 +14524,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flat-cache@6.1.12: - resolution: {integrity: sha512-U+HqqpZPPXP5d24bWuRzjGqVqUcw64k4nZAbruniDwdRg0H10tvN7H6ku1tjhA4rg5B9GS3siEvwO2qjJJ6f8Q==} + flat-cache@6.1.19: + resolution: {integrity: sha512-l/K33newPTZMTGAnnzaiqSl6NnH7Namh8jBNjrgjprWxGmZUuxx/sJNIRaijOh3n7q7ESbhNZC+pvVZMFdeU4A==} flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} @@ -13916,8 +14541,8 @@ packages: resolution: {integrity: sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==} deprecated: flatten is deprecated in favor of utility frameworks such as lodash. - flow-parser@0.278.0: - resolution: {integrity: sha512-9oUcYDHf9n+E/t0FXndgBqGbaUsGEcmWqIr1ldqCzTzctsJV5E/bHusOj4ThB72Ss2mqWpLFNz0+o2c1O8J6+A==} + flow-parser@0.291.0: + resolution: {integrity: sha512-MLqjFn72Dvndqrkjy280HaIs4AV9Z6nxVRmNPO3TjbYcipg4hR7QX7tEYZYsVvaaZWZPGe6Mithluk2aPGlDOw==} engines: {node: '>=0.4.0'} flush-write-stream@1.1.1: @@ -14001,8 +14626,8 @@ packages: resolution: {integrity: sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==} engines: {node: '>= 18'} - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} format@0.2.2: @@ -14017,8 +14642,8 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} framer-motion@6.5.1: resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} @@ -14055,8 +14680,8 @@ packages: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} - fs-extra@11.3.1: - resolution: {integrity: sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==} + fs-extra@11.3.2: + resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} engines: {node: '>=14.14'} fs-extra@3.0.1: @@ -14135,6 +14760,10 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This package is no longer supported. + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + generic-names@4.0.0: resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} @@ -14142,9 +14771,6 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - geometry-interfaces@1.1.4: - resolution: {integrity: sha512-qD6OdkT6NcES9l4Xx3auTpwraQruU7dARbQPVO71MKvkGYw5/z/oIiGymuFXrRaEQa5Y67EIojUpaLeGEa5hGA==} - get-caller-file@1.0.3: resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==} @@ -14152,8 +14778,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} engines: {node: '>=18'} get-func-name@2.0.2: @@ -14264,6 +14890,12 @@ packages: peerDependencies: glob: '*' + glob-to-regex.js@1.2.0: + resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + glob-to-regexp@0.3.0: resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} @@ -14274,12 +14906,12 @@ packages: resolution: {integrity: sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==} engines: {node: '>= 0.10'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} hasBin: true - glob@11.0.3: - resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + glob@11.1.0: + resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} engines: {node: 20 || >=22} hasBin: true @@ -14413,8 +15045,8 @@ packages: peerDependencies: graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 - graphql@16.11.0: - resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} + graphql@16.12.0: + resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} growly@1.3.0: @@ -14498,6 +15130,10 @@ packages: resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} engines: {node: '>= 0.4.0'} + hashery@1.2.0: + resolution: {integrity: sha512-43XJKpwle72Ik5Zpam7MuzRWyNdwwdf6XHlh8wCj2PggvWf+v/Dm5B0dxGZOmddidgeO6Ofu9As/o231Ti/9PA==} + engines: {node: '>=20'} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -14563,9 +15199,6 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - header-case@2.0.4: - resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} - heap@0.2.5: resolution: {integrity: sha512-G7HLD+WKcrOyJP5VQwYZNC3Z6FcQ7YYjEFiFoIj8PfEr73mu421o8B1N5DKUcc8K37EsJ2XXWA8DtrDz/2dReg==} @@ -14593,8 +15226,8 @@ packages: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} - hookified@1.11.0: - resolution: {integrity: sha512-aDdIN3GyU5I6wextPplYdfmWCo+aLmjjVbntmX6HLD5RCi/xKsivYEBhnRD+d9224zFf008ZpLMPlWF0ZodYZw==} + hookified@1.13.0: + resolution: {integrity: sha512-6sPYUY8olshgM/1LDNW4QZQN0IqgKhtl/1C8koNZBJrKLBk3AZl6chQtNwpNztvfiApHMEwMHek5rv993PRbWw==} hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -14676,8 +15309,8 @@ packages: peerDependencies: webpack: ^4.0.0 || ^5.0.0 - html-webpack-plugin@5.6.3: - resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} + html-webpack-plugin@5.6.5: + resolution: {integrity: sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==} engines: {node: '>=10.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -14773,8 +15406,12 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - humanize-duration@3.33.0: - resolution: {integrity: sha512-vYJX7BSzn7EQ4SaP2lPYVy+icHDppB6k7myNeI3wrSRfwMS5+BHyGgzpHR0ptqJ2AQ6UuIKrclSg5ve6Ci4IAQ==} + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + + humanize-duration@3.33.1: + resolution: {integrity: sha512-hwzSCymnRdFx9YdRkQQ0OYequXiVAV6ZGQA2uzocwB0F4309Ke6pO8dg0P8LHhRQJyVjGteRTAA/zNfEcpXn8A==} humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -14801,6 +15438,10 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.0: + resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + engines: {node: '>=0.10.0'} + icss-replace-symbols@1.1.0: resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} @@ -14846,8 +15487,8 @@ packages: resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} engines: {node: '>=0.10.0'} - immutable@5.1.3: - resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} + immutable@5.1.4: + resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} import-cwd@3.0.0: resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} @@ -14886,6 +15527,10 @@ packages: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} + index-to-position@1.2.0: + resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} + engines: {node: '>=18'} + indexes-of@1.0.1: resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} @@ -14908,8 +15553,8 @@ packages: inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} inquirer@3.3.0: resolution: {integrity: sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==} @@ -14936,9 +15581,10 @@ packages: intersection-observer@0.10.0: resolution: {integrity: sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ==} + deprecated: The Intersection Observer polyfill is no longer needed and can safely be removed. Intersection Observer has been Baseline since 2019. - intl-messageformat@10.7.16: - resolution: {integrity: sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==} + intl-messageformat@10.7.18: + resolution: {integrity: sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==} invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -14947,8 +15593,8 @@ packages: resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} engines: {node: '>=0.10.0'} - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} ip-regex@2.1.0: @@ -15001,9 +15647,6 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -15114,12 +15757,8 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - - is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} is-function@1.0.2: @@ -15133,8 +15772,8 @@ packages: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} is-glob@2.0.1: @@ -15190,8 +15829,8 @@ packages: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} - is-network-error@1.1.0: - resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} + is-network-error@1.3.0: + resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==} engines: {node: '>=16'} is-npm@1.0.0: @@ -15358,6 +15997,10 @@ packages: is-utf8@0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + is-wayland@0.1.0: + resolution: {integrity: sha512-QkbMsWkIfkrzOPxenwye0h56iAXirZYHG9eHVPb22fO9y+wPbaX/CHacOWBa/I++4ohTcByimhM1/nyCsH8KNA==} + engines: {node: '>=20'} + is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -15480,11 +16123,15 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + istanbul-reports@1.5.1: resolution: {integrity: sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==} - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} istanbul@0.4.5: @@ -15532,10 +16179,18 @@ packages: resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-changed-files@30.2.0: + resolution: {integrity: sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-circus@29.7.0: resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-circus@30.2.0: + resolution: {integrity: sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-cli@20.0.4: resolution: {integrity: sha512-OfQTkV6T5+V+c3hbzGVJl1SqTOmIw7dBIZYl6XDdSNOmhoyCmwNh/dsEs0lgqIMZkF+AeLbRswkH91XBVXyKqg==} engines: {node: '>= 4'} @@ -15556,6 +16211,16 @@ packages: node-notifier: optional: true + jest-cli@30.2.0: + resolution: {integrity: sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + jest-config@20.0.4: resolution: {integrity: sha512-9urceXnsfO+DXNGrzeDFKx/IAFpUljbvaiPZEn1sWuF97QN0Ppt7yXmnPoAOylwxpNK1t9lWUER5eeoH63rPCA==} @@ -15578,6 +16243,21 @@ packages: ts-node: optional: true + jest-config@30.2.0: + resolution: {integrity: sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@types/node': '*' + esbuild-register: '>=3.4.0' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + esbuild-register: + optional: true + ts-node: + optional: true + jest-diff@20.0.3: resolution: {integrity: sha512-DITOXlTg0HDL9QKiVpf82vDu/nva60/V9xp056zjnAYpHVTZlJgfLMIHJmgPCoSu0+7n7QUAfxyFUHUGyHLFSw==} @@ -15592,6 +16272,10 @@ packages: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-diff@30.2.0: + resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-docblock@20.0.3: resolution: {integrity: sha512-lHwefzd+CB38Awy4yiWb8he+ovUXjNeuN4tNQ1sa6/vBh6P7XwpiuSDIs4GH6/yE1uDBUaYiaf/msD7cWMTL7g==} @@ -15603,6 +16287,10 @@ packages: resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-docblock@30.2.0: + resolution: {integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-each@25.5.0: resolution: {integrity: sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA==} engines: {node: '>= 8.3'} @@ -15611,6 +16299,10 @@ packages: resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-each@30.2.0: + resolution: {integrity: sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-environment-jsdom@20.0.3: resolution: {integrity: sha512-SSm2oCtH0kBYdXhEMzZDFM4GU/auz4x7yv8AGduAZSZP5loKYHLNoKfVlyN1iFQ+vCJ+1QSS+sVnUARSwaBqbw==} @@ -15644,6 +16336,10 @@ packages: resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-environment-node@30.2.0: + resolution: {integrity: sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-get-type@22.4.3: resolution: {integrity: sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==} @@ -15670,6 +16366,10 @@ packages: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-haste-map@30.2.0: + resolution: {integrity: sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-jasmine2@20.0.4: resolution: {integrity: sha512-XNHvFt9iljOaSSZU5t5dC9kJtrcM+KnVbw0Qa/BpGZlrorqS+m0iWiAJO2xXcGMimCmhT4NLZAS1v/JBGWR8Cg==} @@ -15688,6 +16388,10 @@ packages: resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-leak-detector@30.2.0: + resolution: {integrity: sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-matcher-utils@20.0.3: resolution: {integrity: sha512-eSNh2n3aXULZUbherq5+lZVdpUau8sniowi1tcc1ZueBk/97avAwwoDwBVvxI9JINVrPTsCI51SiQtrjBkVvPw==} @@ -15702,6 +16406,10 @@ packages: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-matcher-utils@30.2.0: + resolution: {integrity: sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-matchers@20.0.3: resolution: {integrity: sha512-aDlp50L8qPJ+Y+tifrlKewT0ZU1uC9OP7GJ5T0UKSw/wB73wf6jKEAZUqyA67BocW8BZD7qVVWHasm7u2D1CMQ==} @@ -15719,6 +16427,10 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@30.2.0: + resolution: {integrity: sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-mock@20.0.3: resolution: {integrity: sha512-Edmuskld6ImmUuqxhbwwX5fDXQlFC/fe3XcZKVwK9SnbetIFyivTaub71ZbL5uuWdkvr4VggcyxlhdnpsIlRvg==} @@ -15733,6 +16445,10 @@ packages: resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-mock@30.2.0: + resolution: {integrity: sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-pnp-resolver@1.2.3: resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} @@ -15760,6 +16476,10 @@ packages: resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-regex-util@30.0.1: + resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-resolve-dependencies@20.0.3: resolution: {integrity: sha512-k0DK242umC88ih4KKH1jVlXBulQJfOmMXV/nMMfqRgeFKbBYfUROLZkz0zr8TON5WfnuiHV5GotqE0pXoqg08A==} @@ -15771,6 +16491,10 @@ packages: resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve-dependencies@30.2.0: + resolution: {integrity: sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-resolve@20.0.4: resolution: {integrity: sha512-n/u93CugulXmQ8FcHHGv1kUEFagsbXsJgKLK2G4eAdmawHObAc6DgJtOVp9hgNJOGRU6c6ozdB5nzMO02Fecig==} @@ -15785,6 +16509,10 @@ packages: resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve@30.2.0: + resolution: {integrity: sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-runner@25.5.4: resolution: {integrity: sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg==} engines: {node: '>= 8.3'} @@ -15793,6 +16521,10 @@ packages: resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runner@30.2.0: + resolution: {integrity: sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-runtime@20.0.4: resolution: {integrity: sha512-NTGhGRKhfM19w0egxges3hhIO8gPXB2H6Txaie3+AZIHF+VZCItH27uEFzU6cQTdwzcWaiieYgCAfGKNeUUf7g==} hasBin: true @@ -15806,6 +16538,10 @@ packages: resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runtime@30.2.0: + resolution: {integrity: sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-serializer@25.5.0: resolution: {integrity: sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==} engines: {node: '>= 8.3'} @@ -15828,6 +16564,10 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-snapshot@30.2.0: + resolution: {integrity: sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-util@20.0.3: resolution: {integrity: sha512-Ig/4sAywd/7YJe3jUOIyj+NaX7NCQnxMc/lfRezvbkceZDye0mch126UfIzqyBdS2gjxQl7S8yERvcZDMvK1NA==} @@ -15846,6 +16586,10 @@ packages: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@30.2.0: + resolution: {integrity: sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-validate@20.0.3: resolution: {integrity: sha512-yIpGo3le6q+ZPID2UCl58FRM4ZVGZK9qu1RaWSbEnZFUcj08XznJWd6g2HbPqsWCY9abBO3hq2aP5GZveEfGUg==} @@ -15860,6 +16604,10 @@ packages: resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-validate@30.2.0: + resolution: {integrity: sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-watch-typeahead@0.5.0: resolution: {integrity: sha512-4r36w9vU8+rdg48hj0Z7TvcSqVP6Ao8dk04grlHQNgduyCB0SqrI0xWIl85ZhXrzYvxQ0N5H+rRLAejkQzEHeQ==} @@ -15871,6 +16619,10 @@ packages: resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-watcher@30.2.0: + resolution: {integrity: sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-worker@24.9.0: resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} engines: {node: '>= 6'} @@ -15891,6 +16643,10 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@30.2.0: + resolution: {integrity: sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest@20.0.4: resolution: {integrity: sha512-MU1kGBtzhDHwasL1BbuFmlIlwseDXy18p/M3hB7ehifac8FCbj6nJf8ihGtBA594tlUcktotHHd8z42V47ZB1g==} engines: {node: '>= 4'} @@ -15911,12 +16667,22 @@ packages: node-notifier: optional: true + jest@30.2.0: + resolution: {integrity: sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + jiti@1.21.7: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true joi@17.13.3: @@ -15941,24 +16707,13 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@3.7.0: - resolution: {integrity: sha512-eIlkGty7HGmntbV6P/ZlAsoncFLGsNoM27lkTzS+oneY/EiNhj+geqD9ezg/ip+SW6Var0BJU2JtV0vEUZpWVQ==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jschardet@3.1.4: resolution: {integrity: sha512-/kmVISmrwVwtyYU40iQUOp3SUPk2dhNCMsZBQX0R1/jZ8maaXJ/oZIzUOiyOqcgtLnETFKYChbJ5iDC/eWmFHg==} engines: {node: '>=0.1.90'} @@ -15972,8 +16727,8 @@ packages: '@babel/preset-env': optional: true - jsdoc-type-pratt-parser@4.1.0: - resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + jsdoc-type-pratt-parser@4.8.0: + resolution: {integrity: sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==} engines: {node: '>=12.0.0'} jsdom@11.12.0: @@ -16008,11 +16763,6 @@ packages: resolution: {integrity: sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==} hasBin: true - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -16024,10 +16774,6 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-parse-even-better-errors@3.0.2: - resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - json-schema-to-ts@3.1.1: resolution: {integrity: sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==} engines: {node: '>=16'} @@ -16082,8 +16828,8 @@ packages: jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jsonify@0.0.1: resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} @@ -16127,8 +16873,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - keyv@5.5.0: - resolution: {integrity: sha512-QG7qR2tijh1ftOvClut4YKKg1iW6cx3GZsKoGyJPxHkGWK9oJhG9P3j5deP0QQOGDowBMVQFaP+Vm4NpGYvmIQ==} + keyv@5.5.4: + resolution: {integrity: sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==} kill-port@2.0.1: resolution: {integrity: sha512-e0SVOV5jFo0mx8r7bS29maVWp17qGqLBZ5ricNSajON6//kmb7qqqNnml4twNE8Dtj97UQD+gNFOaipS/q1zzQ==} @@ -16170,8 +16916,8 @@ packages: resolution: {integrity: sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==} engines: {node: '>=4'} - launch-editor@2.11.0: - resolution: {integrity: sha512-R/PIF14L6e2eHkhvQPu7jDRCr0msfCYCxbYiLgkkAGi0dVPWuM+RrsPu0a5dpuNe0KWGL3jpAkOlv53xGfPheQ==} + launch-editor@2.12.0: + resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==} lazy-universal-dotenv@3.0.1: resolution: {integrity: sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==} @@ -16222,34 +16968,30 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lines-and-columns@2.0.4: - resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - linkify-it@3.0.3: resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - lint-staged@16.1.4: - resolution: {integrity: sha512-xy7rnzQrhTVGKMpv6+bmIA3C0yET31x8OhKBYfvGo0/byeZ6E0BjGARrir3Kg/RhhYHutpsi01+2J5IpfVoueA==} + lint-staged@16.2.6: + resolution: {integrity: sha512-s1gphtDbV4bmW1eylXpVMk2u7is7YsrLl8hzrtvC70h4ByhcMLZFY01Fx05ZUDNuv1H8HO4E+e2zgejV1jVwNw==} engines: {node: '>=20.17'} hasBin: true listenercount@1.0.1: resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==} - listr2@9.0.1: - resolution: {integrity: sha512-SL0JY3DaxylDuo/MecFeiC+7pedM0zia33zl0vcjgwcq1q1FWWF1To9EIauPbl8GbMCU0R2e0uJ8bZunhYKD2g==} + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} load-json-file@1.1.0: resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} engines: {node: '>=0.10.0'} - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} loader-utils@0.2.17: @@ -16414,6 +17156,9 @@ packages: long-timeout@0.1.1: resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -16431,8 +17176,8 @@ packages: loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - loupe@3.2.0: - resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} lower-case@1.1.4: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} @@ -16454,8 +17199,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.1.0: - resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + lru-cache@11.2.2: + resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} engines: {node: 20 || >=22} lru-cache@4.1.5: @@ -16475,8 +17220,13 @@ packages: lru-queue@0.1.0: resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} - luxon@3.7.1: - resolution: {integrity: sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg==} + lucide-react@0.523.0: + resolution: {integrity: sha512-rUjQoy7egZT9XYVXBK1je9ckBnNp7qzRZOhLQx5RcEp2dCGlXo+mv6vf7Am4LimEcFBJIIZzSGfgTqc9QCrPSw==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + luxon@3.7.2: + resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} engines: {node: '>=12'} lz-string@1.5.0: @@ -16486,8 +17236,8 @@ packages: magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} make-cancellable-promise@1.3.2: resolution: {integrity: sha512-GCXh3bq/WuMbS+Ky4JBPW1hYTOU+znU+Q5m9Pu+pI8EoUqIHk9+tviOKC6/qhHh8C4/As3tzJ69IF32kdz85ww==} @@ -16550,11 +17300,14 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - markdown-to-jsx@7.7.13: - resolution: {integrity: sha512-DiueEq2bttFcSxUs85GJcQVrOr0+VVsPfj9AEUPqmExJ3f8P/iQNvZHltV4tm1XVhu1kl0vWBZWT3l99izRMaA==} + markdown-to-jsx@7.7.17: + resolution: {integrity: sha512-7mG/1feQ0TX5I7YyMZVDgCC/y2I3CiEhIRQIhyov9nGBP5eoVrOXXHuL5ZP8GRfxVZKRiXWJgwXkb9It+nQZfQ==} engines: {node: '>= 10'} peerDependencies: react: '>= 0.14.0' + peerDependenciesMeta: + react: + optional: true matches-selector@0.0.1: resolution: {integrity: sha512-Bm8wuvuNGPY3j1Mo23PxieRQAmQQe2qVcqgmpHOp1BEBNgb4dqzn2Dcgu5bYltMosjGi6LD7GPW72zboSdyJQg==} @@ -16682,9 +17435,8 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} - memfs@4.36.0: - resolution: {integrity: sha512-mfBfzGUdoEw5AZwG8E965ej3BbvW2F9LxEWj4uLxF6BEh1dO2N9eS3AGu9S6vfenuQYrVjsbUOOZK7y3vz4vyQ==} - engines: {node: '>= 4.0.0'} + memfs@4.51.0: + resolution: {integrity: sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A==} memoizee@0.4.17: resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} @@ -16733,8 +17485,8 @@ packages: merge@1.2.1: resolution: {integrity: sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==} - meros@1.3.1: - resolution: {integrity: sha512-eV7dRObfTrckdmAz4/n7pT1njIsIJXRIZkgCiX43xEsPNy4gjXQzOYYxmGcolAMtF7HyfqRuDBh3Lgs4hmhVEw==} + meros@1.3.2: + resolution: {integrity: sha512-Q3mobPbvEx7XbwhnC1J1r60+5H6EZyNccdzSz0eGexJRwouUtTZxPVRGdqKtxlpD84ScK4+tIGldkqDtCKdI0A==} engines: {node: '>=13'} peerDependencies: '@types/node': '>=13' @@ -16930,6 +17682,10 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + mime-db@1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -16938,6 +17694,10 @@ packages: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} + mime-types@2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} + mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} @@ -16984,15 +17744,15 @@ packages: resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - min-document@2.19.0: - resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + min-document@2.19.2: + resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - mini-css-extract-plugin@2.9.3: - resolution: {integrity: sha512-tRA0+PsS4kLVijnN1w9jUu5lkxBwUk9E8SbgEB5dBJqchE6pVYdawROG6uQtpmAri7tdCK9i7b1bULeVWqS6Ag==} + mini-css-extract-plugin@2.9.4: + resolution: {integrity: sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 @@ -17004,8 +17764,8 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@10.0.3: - resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} engines: {node: 20 || >=22} minimatch@3.0.3: @@ -17094,16 +17854,16 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} mocha@10.8.2: resolution: {integrity: sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==} engines: {node: '>= 14.0.0'} hasBin: true - mocha@11.7.1: - resolution: {integrity: sha512-5EK+Cty6KheMS/YLPPMJC64g5V61gIR25KsRItHw6x4hEKT6Njp1n9LOlH4gpevuwMVS66SXaBBpg+RWZkza4A==} + mocha@11.7.5: + resolution: {integrity: sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true @@ -17170,11 +17930,11 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nan@2.23.0: - resolution: {integrity: sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==} + nan@2.23.1: + resolution: {integrity: sha512-r7bBUGKzlqk8oPBDYxt6Z0aEdF1G1rwlMcLk8LCOMbOzf0mG+JUfUzG4fIMWwHWP0iyaLWEQZJmtB7nOHEm/qw==} - nano-spawn@1.0.2: - resolution: {integrity: sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==} + nano-spawn@2.0.0: + resolution: {integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==} engines: {node: '>=20.17'} nanoid@3.3.11: @@ -17182,8 +17942,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.1.5: - resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} + nanoid@5.1.6: + resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} engines: {node: ^18 || >=20} hasBin: true @@ -17193,6 +17953,11 @@ packages: napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} @@ -17236,8 +18001,8 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abi@3.75.0: - resolution: {integrity: sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==} + node-abi@3.85.0: + resolution: {integrity: sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==} engines: {node: '>=10'} node-abort-controller@3.1.1: @@ -17330,12 +18095,12 @@ packages: node-notifier@6.0.0: resolution: {integrity: sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw==} - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - node-sarif-builder@2.0.3: - resolution: {integrity: sha512-Pzr3rol8fvhG/oJjIq2NTVB0vmdNNlz22FENhhPojYRZ4/ee08CfK4YuKmuL54V9MLhI1kpzxfOJ/63LzmZzDg==} - engines: {node: '>=14'} + node-sarif-builder@3.3.0: + resolution: {integrity: sha512-8taRy2nQs1xNs8iO2F0XbkZJEliiijpKgFVcyiwKjJ2+3X59LVI3wY84qRdJwRDpIo5GK8wvb1pxcJ+JVu3jrg==} + engines: {node: '>=20'} node-schedule@2.1.1: resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} @@ -17384,8 +18149,8 @@ packages: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} - normalize-url@8.0.2: - resolution: {integrity: sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==} + normalize-url@8.1.0: + resolution: {integrity: sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==} engines: {node: '>=14.16'} npm-run-path@2.0.2: @@ -17400,6 +18165,10 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + npmlog@4.1.2: resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} deprecated: This package is no longer supported. @@ -17429,8 +18198,8 @@ packages: nwmatcher@1.4.4: resolution: {integrity: sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==} - nwsapi@2.2.21: - resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} + nwsapi@2.2.22: + resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} nypm@0.5.4: resolution: {integrity: sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==} @@ -17690,8 +18459,8 @@ packages: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} - p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + p-map@7.0.4: + resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} engines: {node: '>=18'} p-queue@6.6.2: @@ -17757,9 +18526,13 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - parse-json@7.1.1: - resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} - engines: {node: '>=16'} + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} parse-passwd@1.0.0: resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} @@ -17799,9 +18572,6 @@ packages: path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-case@3.0.4: - resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} - path-dirname@1.0.2: resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} @@ -17847,8 +18617,8 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} engines: {node: 20 || >=22} path-to-regexp@0.1.12: @@ -17857,9 +18627,11 @@ packages: path-to-regexp@1.9.0: resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} - path-to-regexp@8.2.0: - resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} - engines: {node: '>=16'} + path-to-regexp@3.3.0: + resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + + path-to-regexp@8.3.0: + resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} path-type@1.1.0: resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} @@ -17968,6 +18740,10 @@ packages: pkce-challenge@3.1.0: resolution: {integrity: sha512-bQ/0XPZZ7eX+cdAkd61uYWpfMhakH3NeteUF1R8GNa+LMqX8QFAkbCLqq+AYAns1/ueACBu/BMWhrlKGrdvGZg==} + pkce-challenge@4.1.0: + resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==} + engines: {node: '>=16.20.0'} + pkce-challenge@5.0.0: resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} engines: {node: '>=16.20.0'} @@ -18030,8 +18806,8 @@ packages: popmotion@11.0.3: resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} - portfinder@1.0.37: - resolution: {integrity: sha512-yuGIEjDAYnnOex9ddMnKZEMFE0CcGo6zbfzDklkmT1m5z734ss6JMzN9rNB3+RR7iS+F10D4/BVIaXOyh8PQKw==} + portfinder@1.0.38: + resolution: {integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==} engines: {node: '>= 10.12'} possible-typed-array-names@1.1.0: @@ -18118,8 +18894,8 @@ packages: peerDependencies: postcss: ^8.0.0 - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + postcss-js@4.1.0: + resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 @@ -18140,16 +18916,22 @@ packages: ts-node: optional: true - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} peerDependencies: + jiti: '>=1.21.0' postcss: '>=8.0.9' - ts-node: '>=9.0.0' + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: + jiti: + optional: true postcss: optional: true - ts-node: + tsx: + optional: true + yaml: optional: true postcss-load-options@1.2.0: @@ -18171,8 +18953,8 @@ packages: postcss: ^7.0.0 || ^8.0.1 webpack: ^4.0.0 || ^5.0.0 - postcss-loader@8.1.1: - resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} + postcss-loader@8.2.0: + resolution: {integrity: sha512-tHX+RkpsXVcc7st4dSdDGliI+r4aAQDuv+v3vFYHixb6YgjreG5AG4SEB0kDK8u2s6htqEEpKlkhSBUTvWKYnA==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -18476,6 +19258,10 @@ packages: resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} engines: {node: '>=0.10.0'} + presentable-error@0.0.1: + resolution: {integrity: sha512-E6rsNU1QNJgB3sjj7OANinGncFKuK+164sLXw1/CqBjj/EkXSoSdHCtWQGBNlREIGLnL7IEUEGa08YFVUbrhVg==} + engines: {node: '>=16'} + prettier-linter-helpers@1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} @@ -18528,10 +19314,18 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-format@30.2.0: + resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + pretty-hrtime@1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} engines: {node: '>= 0.8'} + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + engines: {node: '>=18'} + prism-react-renderer@2.4.1: resolution: {integrity: sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==} peerDependencies: @@ -18609,6 +19403,10 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + protobufjs@7.5.4: + resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} + engines: {node: '>=12.0.0'} + proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -18658,6 +19456,9 @@ packages: pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + pure-rand@7.0.1: + resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} + q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} @@ -18666,6 +19467,10 @@ packages: (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) + qified@0.5.2: + resolution: {integrity: sha512-7gJ6mxcQb9vUBOtbKm5mDevbe2uRcOEVp1g4gb/Q+oLntB3HY8eBhOYRxFI2mlDFlY1e4DOSCptzxarXRvzxCA==} + engines: {node: '>=20'} + qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} @@ -18717,6 +19522,10 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + range-parser@1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -18725,9 +19534,9 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} - raw-body@3.0.0: - resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} - engines: {node: '>= 0.8'} + raw-body@3.0.1: + resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==} + engines: {node: '>= 0.10'} raw-loader@4.0.2: resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} @@ -18805,8 +19614,8 @@ packages: resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==} engines: {node: '>=16.14.0'} - react-docgen@8.0.0: - resolution: {integrity: sha512-kmob/FOTwep7DUWf9KjuenKX0vyvChr3oTdvvPt09V60Iz75FJp+T/0ZeHMbAfJj2WaVWqAPP5Hmm3PYzSPPKg==} + react-docgen@8.0.2: + resolution: {integrity: sha512-+NRMYs2DyTP4/tqWz371Oo50JqmWltR1h2gcdgUMAWZJIAvrd0/SqlCfx7tpzpl/s36rzw6qH2MjoNrxtRNYhA==} engines: {node: ^20.9.0 || >=22} react-dom@18.2.0: @@ -18814,6 +19623,11 @@ packages: peerDependencies: react: ^18.2.0 + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + react-dom@19.1.0: resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} peerDependencies: @@ -18901,8 +19715,8 @@ packages: peerDependencies: react: ^16.8.4 || ^17.0.0 || ^18.0.0 - react-intl@7.1.11: - resolution: {integrity: sha512-tnVoRCWvW5Ie2ikYSdPF7z3+880yCe/9xPmitFeRPw3RYDcCfR4m8ZYa4MBq19W4adt9Z+PQA4FaMBCJ7E+HCQ==} + react-intl@7.1.14: + resolution: {integrity: sha512-VE/0Wi/lHJlBC7APQpCzLUdIt3GB5B0GZrRW8Q+ACbkHI4j+Wwgg9J1TniN6zmLHmPH5gxXcMy+fkSPfw5p1WQ==} peerDependencies: react: 16 || 17 || 18 || 19 typescript: ^5.6.0 @@ -18922,11 +19736,11 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-is@19.1.1: - resolution: {integrity: sha512-tr41fA15Vn8p4X9ntI+yCyeGSf1TlYaY5vlTZfQmeLBrFo3psOPX6HhTDnFNL9uj3EhP0KAQ80cugCl4b4BERA==} + react-is@19.2.0: + resolution: {integrity: sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==} - react-json-view-lite@2.4.2: - resolution: {integrity: sha512-m7uTsXDgPQp8R9bJO4HD/66+i218eyQPAb+7/dGQpwg8i4z2afTFqtHJPQFHvJfgDCjGQ1HSGlL3HtrZDa3Tdg==} + react-json-view-lite@2.5.0: + resolution: {integrity: sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==} engines: {node: '>=18'} peerDependencies: react: ^18.0.0 || ^19.0.0 @@ -19033,6 +19847,12 @@ packages: peerDependencies: typescript: 3.x.x + react-simple-code-editor@0.14.1: + resolution: {integrity: sha512-BR5DtNRy+AswWJECyA17qhUDvrrCZ6zXOCfkQY5zSmb96BVUbpVAv03WpcjcwtCwiLbIANx3gebHOcXYn1EHow==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + react-split-pane@0.1.92: resolution: {integrity: sha512-GfXP1xSzLMcLJI5BM36Vh7GgZBpy+U/X0no+VM3fxayv+p1Jly5HpMofZJraeaMl73b3hvlr+N9zJKvLB/uz9w==} peerDependencies: @@ -19052,8 +19872,14 @@ packages: '@types/react': optional: true - react-syntax-highlighter@15.6.1: - resolution: {integrity: sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==} + react-syntax-highlighter@15.6.6: + resolution: {integrity: sha512-DgXrc+AZF47+HvAPEmn7Ua/1p10jNoVZVI/LoPiYdtY+OM+/nG5yefLHKJwdKqY1adMuHFbeyBaG9j64ML7vTw==} + peerDependencies: + react: '>= 0.14.0' + + react-syntax-highlighter@16.1.0: + resolution: {integrity: sha512-E40/hBiP5rCNwkeBN1vRP+xow1X0pndinO+z3h7HLsHyjztbyjfzNWNKuAsJj+7DLam9iT4AaaOZnueCU+Nplg==} + engines: {node: '>= 16.20.2'} peerDependencies: react: '>= 0.14.0' @@ -19079,6 +19905,10 @@ packages: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + react@19.1.0: resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} engines: {node: '>=0.10.0'} @@ -19110,9 +19940,9 @@ packages: resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} engines: {node: '>=12'} - read-pkg@8.1.0: - resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==} - engines: {node: '>=16'} + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} read@1.0.7: resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} @@ -19214,8 +20044,11 @@ packages: refractor@3.6.0: resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} - regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + refractor@5.0.0: + resolution: {integrity: sha512-QXOrHQF5jOpjjLfiNk5GFnWhRXvxjUVnlFxkeDmewR5sXkr3iM46Zo+CnRR8B+MDVqkULW4EcLVcRBNOPXHosw==} + + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} engines: {node: '>=4'} regenerate@1.4.2: @@ -19245,8 +20078,8 @@ packages: regexpu-core@2.0.0: resolution: {integrity: sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==} - regexpu-core@6.2.0: - resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} engines: {node: '>=4'} registry-auth-token@3.4.0: @@ -19266,8 +20099,8 @@ packages: resolution: {integrity: sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==} hasBin: true - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} hasBin: true rehype-raw@6.1.1: @@ -19419,8 +20252,8 @@ packages: resolve@1.17.0: resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true @@ -19466,10 +20299,6 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rev-hash@3.0.0: - resolution: {integrity: sha512-s+87HfEKAu95TaTxnbCobn0/BkbzR23LHSwVdYvr8mn5+PPjzy+hTWyh92b5oaLgig9TKPe5d6ZcubsVBtUrZg==} - engines: {node: '>=8'} - rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} @@ -19558,8 +20387,8 @@ packages: resolution: {integrity: sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==} hasBin: true - rollup@4.46.2: - resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} + rollup@4.53.2: + resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -19571,8 +20400,8 @@ packages: resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} engines: {node: 6.* || >= 7.*} - run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} run-async@2.4.1: @@ -19595,6 +20424,9 @@ packages: resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} engines: {npm: '>=2.0.0'} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -19661,8 +20493,8 @@ packages: sass-embedded: optional: true - sass-loader@16.0.5: - resolution: {integrity: sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==} + sass-loader@16.0.6: + resolution: {integrity: sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -19682,16 +20514,16 @@ packages: webpack: optional: true - sass@1.90.0: - resolution: {integrity: sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==} + sass@1.94.1: + resolution: {integrity: sha512-/YVm5FRQaRlr3oNh2LLFYne1PdPlRZGyKnHh1sLleOqLcohTR4eUUvBjBIqkl1fEXd1MGOHgzJGJh+LgTtV4KQ==} engines: {node: '>=14.0.0'} hasBin: true sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + sax@1.4.3: + resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} saxes@3.1.11: resolution: {integrity: sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==} @@ -19727,13 +20559,13 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - schema-utils@4.3.2: - resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} - secretlint@9.3.4: - resolution: {integrity: sha512-iNOzgMX/+W1SQNW/TW6eikGChyaPiazr2AEXjzjpoB0R6QJEulvlwhn0KLT1/xjPfdYrk3yiXZM40csUqET8uQ==} - engines: {node: ^14.13.1 || >=16.0.0} + secretlint@10.2.2: + resolution: {integrity: sha512-xVpkeHV/aoWe4vP4TansF622nBEImzCY73y/0042DuJ29iKIaqgoJ8fGxre3rVSHHbxar4FdJobmTnLp9AU0eg==} + engines: {node: '>=20.0.0'} hasBin: true secure-compare@3.0.1: @@ -19742,8 +20574,8 @@ packages: select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - selenium-webdriver@4.34.0: - resolution: {integrity: sha512-zGfQFcsASAv3KrYzYh+iw4fFqB7iZAgHW7BU6rRz7isK1i1X4x3LvjmZad4bUUgHDwTnAhlqTzDh21byB+zHMg==} + selenium-webdriver@4.38.0: + resolution: {integrity: sha512-5/UXXFSQmn7FGQkbcpAqvfhzflUdMWtT7QqpEgkFD6Q6rDucxB5EUfzgjmr6JbUj30QodcW3mDXehzoeS/Vy5w==} engines: {node: '>= 20.0.0'} selfsigned@2.4.1: @@ -19766,8 +20598,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true @@ -19779,9 +20611,6 @@ packages: resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} engines: {node: '>= 18'} - sentence-case@3.0.4: - resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} - serialize-error@8.1.0: resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} engines: {node: '>=10'} @@ -19802,6 +20631,9 @@ packages: resolution: {integrity: sha512-JndLBslCLA/ebr7rS3d+/EKkzTsTi1jI2T9l+vHfAaGJ7A7NhtDpSZ0lx81HCNWnnE0yHncG+SSnVf9IMxOwXQ==} engines: {node: '>= 0.8.0'} + serve-handler@6.1.6: + resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} + serve-index@1.9.1: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} @@ -19927,9 +20759,6 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -19966,12 +20795,8 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} slugify@1.6.6: @@ -19982,9 +20807,6 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - sockjs-client@1.1.5: resolution: {integrity: sha512-PmPRkAYIeuRgX+ZSieViT4Z3Q23bLS2Itm/ck1tSf5P0/yVuFDiI5q9mcnpXoMdToaPSRS9MEyUx/aaBxrFzyw==} @@ -19995,8 +20817,8 @@ packages: resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} engines: {node: '>= 10'} - socks@2.8.6: - resolution: {integrity: sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA==} + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} sort-keys@1.1.2: @@ -20072,6 +20894,9 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + spawn-rx@5.1.2: + resolution: {integrity: sha512-/y7tJKALVZ1lPzeZZB9jYnmtrL7d0N2zkorii5a7r7dhHkWIuLTzZpZzMJLK1dmYRgX/NCc4iarTO3F7BS2c/A==} + spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -20094,9 +20919,6 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} engines: {node: '>=0.10.0'} @@ -20188,8 +21010,8 @@ packages: prettier: optional: true - storybook@9.1.1: - resolution: {integrity: sha512-q6GaGZdVZh6rjOdGnc+4hGTu8ECyhyjQDw4EZNxKtQjDO8kqtuxbFm8l/IP2l+zLVJAatGWKkaX9Qcd7QZxz+Q==} + storybook@9.1.16: + resolution: {integrity: sha512-339U14K6l46EFyRvaPS2ZlL7v7Pb+LlcXT8KAETrGPxq8v1sAjj2HAOB6zrlAK3M+0+ricssfAwsLCwt7Eg8TQ==} hasBin: true peerDependencies: prettier: ^2 || ^3 @@ -20260,6 +21082,10 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + string-width@8.1.0: + resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==} + engines: {node: '>=20'} + string.fromcodepoint@0.2.1: resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==} @@ -20325,8 +21151,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom@2.0.0: @@ -20353,6 +21179,10 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + strip-indent@1.0.1: resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==} engines: {node: '>=0.10.0'} @@ -20362,8 +21192,8 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + strip-indent@4.1.1: + resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} engines: {node: '>=12'} strip-json-comments@2.0.1: @@ -20419,17 +21249,17 @@ packages: peerDependencies: webpack: ^5.27.0 - style-mod@4.1.2: - resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} + style-mod@4.1.3: + resolution: {integrity: sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==} - style-to-js@1.1.17: - resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} style-to-object@0.3.0: resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} - style-to-object@1.0.9: - resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} style-value-types@5.0.0: resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} @@ -20452,8 +21282,8 @@ packages: peerDependencies: stylelint: ^16.18.0 - stylelint@16.23.0: - resolution: {integrity: sha512-69T5aS2LUY306ekt1Q1oaSPwz/jaG9HjyMix3UMrai1iEbuOafBe2Dh8xlyczrxFAy89qcKyZWWtc42XLx3Bbw==} + stylelint@16.25.0: + resolution: {integrity: sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ==} engines: {node: '>=18.12.0'} hasBin: true @@ -20529,9 +21359,9 @@ packages: resolution: {integrity: sha512-CgqMyZrbOPpc+WqH7aga4JWkDPso23EgypLsbQ6gN3uoPWwwiLjXvzgrwGADBExvCRJrWFzAeK1bSoSpE7ixSQ==} hasBin: true - svgicons2svgfont@10.0.6: - resolution: {integrity: sha512-fUgQEVg3XwTbOHvlXahHGqCet5Wvfo1bV4DCvbSRvjsOCPCRunYbG4dUJCPegps37BMph3eOrfoobhH5AWuC6A==} - engines: {node: '>=12.0.0'} + svgicons2svgfont@12.0.0: + resolution: {integrity: sha512-fjyDkhiG0M1TPBtZzD12QV3yDcG2fUgiqHPOCYzf7hHE40Hl3GhnE6P1njsJCCByhwM7MiufyDW3L7IOR5dg9w==} + engines: {node: '>=16.15.0'} hasBin: true svgicons2svgfont@5.0.2: @@ -20569,8 +21399,8 @@ packages: resolution: {integrity: sha512-v/hu7KQQtospyDLpZxz7m5c7s90aj53YEkJ/A8x3mLPlSgIkZ6RKJkTjBG75P1p/fo5IeSA4TycyJg3VSu/aPw==} deprecated: 'Please migrate to Workbox: https://developers.google.com/web/tools/workbox/guides/migrations/migrate-from-sw' - swagger-client@3.35.6: - resolution: {integrity: sha512-OgwNneIdC45KXwOfwrlkwgWPeAKiV4K75mOnZioTddo1mpp9dTboCDVJas7185Ww1ziBwzShBqXpNGmyha9ZQg==} + swagger-client@3.36.0: + resolution: {integrity: sha512-9fkjxGHXuKy20jj8zwE6RwgFSOGKAyOD5U7aKgW/+/futtHZHOdZeqiEkb97sptk2rdBv7FEiUQDNlWZR186RA==} swagger-ui-react@5.21.0: resolution: {integrity: sha512-lS5paITM1kkcBb/BTTSMHKelh8elHfcuUP4T3R3mO80tDR0AYJL2HR5UdQD6nV1LwdvekzRM8gKjJA6hVayi0A==} @@ -20578,11 +21408,11 @@ packages: react: '>=16.8.0 <19' react-dom: '>=16.8.0 <19' - swagger-ui-react@5.27.1: - resolution: {integrity: sha512-wwDoavIeJI/Pwiavn32FMJ5dfptz0BAOKjSrj7EdU22QdP3gdk9+MZHdzzjxWURmVj0kc0XoQfsFgjln0toJaw==} + swagger-ui-react@5.30.2: + resolution: {integrity: sha512-0tS9GOcswKuQrIpCyvDoCDs6xS8B6MRC+iE7P99WfVXDhAIU+U7iFHuS4e7zucSh9qXvcL7KsXs623c+4oBe6w==} peerDependencies: - react: '>=16.8.0 <19' - react-dom: '>=16.8.0 <19' + react: '>=16.8.0 <20' + react-dom: '>=16.8.0 <20' swc-loader@0.2.6: resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==} @@ -20600,6 +21430,10 @@ packages: synchronous-promise@2.0.17: resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} + synckit@0.11.11: + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + engines: {node: ^14.18.0 || >=16.0.0} + system-architecture@0.1.0: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} @@ -20607,8 +21441,8 @@ packages: tabbable@5.3.3: resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tabbable@6.3.0: + resolution: {integrity: sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==} table@5.4.6: resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} @@ -20618,13 +21452,16 @@ packages: resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} - tailwindcss@3.4.17: - resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} + tailwind-merge@2.6.0: + resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + + tailwindcss@3.4.18: + resolution: {integrity: sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==} engines: {node: '>=14.0.0'} hasBin: true - tailwindcss@4.1.11: - resolution: {integrity: sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==} + tailwindcss@4.1.17: + resolution: {integrity: sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==} tapable@0.2.9: resolution: {integrity: sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==} @@ -20634,8 +21471,8 @@ packages: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} engines: {node: '>=6'} - tapable@2.2.2: - resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} tar-fs@3.1.1: @@ -20684,6 +21521,10 @@ packages: resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} engines: {node: '>=8'} + terminal-link@4.0.0: + resolution: {integrity: sha512-lk+vH+MccxNqgVqSnkMVKx4VLJfnLjDBGzH16JVZjKE2DoxP57s6/vt6JmXV5I3jBcfGrxNrYtC+mPtU7WJztA==} + engines: {node: '>=18'} + terser-webpack-plugin@4.2.3: resolution: {integrity: sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==} engines: {node: '>= 10.13.0'} @@ -20711,8 +21552,8 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - terser@5.43.1: - resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} + terser@5.44.1: + resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} engines: {node: '>=10'} hasBin: true @@ -20747,8 +21588,8 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - thingies@1.21.0: - resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} + thingies@2.5.0: + resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} engines: {node: '>=10.18'} peerDependencies: tslib: ^2 @@ -20796,8 +21637,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tinyrainbow@1.2.0: @@ -20812,23 +21653,23 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} - tinyspy@4.0.3: - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + tinyspy@4.0.4: + resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} - tmp@0.2.4: - resolution: {integrity: sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ==} + tmp@0.2.5: + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-buffer@1.2.1: - resolution: {integrity: sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==} + to-buffer@1.2.2: + resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} engines: {node: '>= 0.4'} to-fast-properties@1.0.3: @@ -20890,8 +21731,8 @@ packages: traverse@0.3.9: resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} - tree-dump@1.0.3: - resolution: {integrity: sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==} + tree-dump@1.1.0: + resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -21017,8 +21858,8 @@ packages: resolution: {integrity: sha512-8t3bu2FcEkXb+D4L+Cn8qiK2E2C6Ms4/GQChvz6IMbVurcFHLXrhW4EMtfaol1a1ASQACZGDUGit4NHnX9g7hQ==} engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} - ts-loader@9.5.2: - resolution: {integrity: sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==} + ts-loader@9.5.4: + resolution: {integrity: sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==} engines: {node: '>=12.0.0'} peerDependencies: typescript: '*' @@ -21033,6 +21874,20 @@ packages: ts-morph@26.0.0: resolution: {integrity: sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==} + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + ts-pnp@1.2.0: resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} engines: {node: '>=6'} @@ -21130,14 +21985,18 @@ packages: resolution: {integrity: sha512-U56aG2Ylw7psLOmakjemAzmpqVgeadwENg9oaDjaZG5NYX4WB6+7h74bNPcc+0BXsoU5A/XWiHabDXyzFOmsxQ==} hasBin: true + ttf2eot@3.1.0: + resolution: {integrity: sha512-aHTbcYosNHVqb2Qtt9Xfta77ae/5y0VfdwNLUS6sGBeGr22cX2JDMo/i5h3uuOf+FAD3akYOr17+fYd5NK8aXw==} + hasBin: true + ttf2woff2@2.0.3: resolution: {integrity: sha512-HVI+ZVmIbHAxfmbxV/Ahjh20che2WUCs4xWIcCUaD/BLEof/ylYUjnc0DAhpYsAzEJy1kQwkOQD45RLgtWQHfw==} engines: {node: '>=0.12'} hasBin: true - ttf2woff2@4.0.5: - resolution: {integrity: sha512-zpoU0NopfjoyVqkFeQ722SyKk/n607mm5OHxuDS/wCCSy82B8H3hHXrezftA2KMbKqfJIjie2lsJHdvPnBGbsw==} - engines: {node: '>=12'} + ttf2woff2@5.0.0: + resolution: {integrity: sha512-FplhShJd3rT8JGa8N04YWQuP7xRvwr9AIq+9/z5O/5ubqNiCADshKl8v51zJDFkhDVcYpdUqUpm7T4M53Z2JoQ==} + engines: {node: '>=14'} hasBin: true ttf2woff@2.0.2: @@ -21202,10 +22061,6 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} - type-fest@4.41.0: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} @@ -21264,8 +22119,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - ua-parser-js@1.0.40: - resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} + ua-parser-js@1.0.41: + resolution: {integrity: sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==} hasBin: true uc.micro@1.0.6: @@ -21312,8 +22167,8 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@7.13.0: - resolution: {integrity: sha512-l+zSMssRqrzDcb3fjMkjjLGmuiiK2pMIcV++mJaAc9vhjSGpvM7h43QgP+OAMb1GImHmbPyG2tBXeuyG5iY4gA==} + undici@7.16.0: + resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} engines: {node: '>=20.18.1'} unfetch@4.2.0: @@ -21330,12 +22185,12 @@ packages: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} - unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} engines: {node: '>=4'} - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} engines: {node: '>=4'} unicorn-magic@0.1.0: @@ -21408,8 +22263,8 @@ packages: unist-util-is@5.2.1: resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} unist-util-position-from-estree@2.0.0: resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} @@ -21441,8 +22296,8 @@ packages: unist-util-visit-parents@5.1.3: resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} unist-util-visit@2.0.3: resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} @@ -21479,6 +22334,9 @@ packages: unraw@3.0.0: resolution: {integrity: sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==} + unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + untildify@2.1.0: resolution: {integrity: sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig==} engines: {node: '>=0.10.0'} @@ -21501,8 +22359,8 @@ packages: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + update-browserslist-db@1.1.4: + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -21511,15 +22369,9 @@ packages: resolution: {integrity: sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==} engines: {node: '>=4'} - upper-case-first@2.0.2: - resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} - upper-case@1.1.3: resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} - upper-case@2.0.2: - resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} - uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -21611,8 +22463,8 @@ packages: '@types/react': optional: true - use-sync-external-store@1.5.0: - resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -21664,6 +22516,9 @@ packages: engines: {node: '>=8'} hasBin: true + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + v8-compile-cache@2.4.0: resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} @@ -21694,8 +22549,8 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - version-range@4.14.0: - resolution: {integrity: sha512-gjb0ARm9qlcBAonU4zPwkl9ecKkas+tC2CGwFfptTCWWIVTWY1YUbT2zZKsOAF1jR/tNxxyLwwG0cb42XlYcTg==} + version-range@4.15.0: + resolution: {integrity: sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==} engines: {node: '>=4'} vfile-location@3.2.0: @@ -21713,12 +22568,6 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vsce@2.15.0: - resolution: {integrity: sha512-P8E9LAZvBCQnoGoizw65JfGvyMqNGlHdlUXD1VAuxtvYAaHBKLBdKPnpy60XKVDAkQCfmMu53g+gq9FM+ydepw==} - engines: {node: '>= 14'} - deprecated: vsce has been renamed to @vscode/vsce. Install using @vscode/vsce instead. - hasBin: true - vscode-debugadapter-testsupport@1.51.0: resolution: {integrity: sha512-rb8tfn7J3kxLi1rRhEyG5ggGkFcJH2WrYYrq6Vb1tDAcHoFXF580M1dAA2jPOrc0I14GuWxMnndvfGkfG10VxA==} deprecated: This package has been renamed to @vscode/debugadapter-testsupport, please update to the new name @@ -21832,9 +22681,9 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - vscode-ws-jsonrpc@3.4.0: - resolution: {integrity: sha512-jkNZvX0LdHt4skPxMw/jFePr3jRCJU6ZmO28oPoQ7RwNSkwU3uN8mgtxACYEbOY68bYmi/b/uJzhxewKCz1P4w==} - engines: {node: '>=18.19.0', npm: '>=10.2.3'} + vscode-ws-jsonrpc@3.5.0: + resolution: {integrity: sha512-13ZDy7Od4AfEPK2HIfY3DtyRi4FVsvFql1yobVJrpIoHOKGGJpIjVvIJpMxkrHzCZzWlYlg+WEu2hrYkCTvM0Q==} + engines: {node: '>=20.10.0', npm: '>=10.2.3'} w3c-hr-time@1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} @@ -21968,8 +22817,8 @@ packages: webpack: optional: true - webpack-dev-middleware@7.4.2: - resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} + webpack-dev-middleware@7.4.5: + resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} engines: {node: '>= 18.12.0'} peerDependencies: webpack: ^5.0.0 @@ -22009,11 +22858,6 @@ packages: peerDependencies: webpack: 1 || 2 || 3 - webpack-merge-and-include-globally@2.3.4: - resolution: {integrity: sha512-s5dd7m3ycVBlC7C6GAx91JQzbjhxC/NJRuT2sCkg8WCcF8CE1x/7xwVXqgmt0Fr/H/0sX5C5HE2RdU6+vCY5yg==} - peerDependencies: - webpack: '>=1.0.0' - webpack-merge@5.10.0: resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} engines: {node: '>=10.0.0'} @@ -22044,8 +22888,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.101.0: - resolution: {integrity: sha512-B4t+nJqytPeuZlHuIKTbalhljIFXeNRqrUGAQgTGlfOl2lXXKXw+yZu6bicycP+PUlM44CxBjCFD6aciKFT3LQ==} + webpack@5.103.0: + resolution: {integrity: sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -22181,8 +23025,8 @@ packages: workerpool@6.5.1: resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - workerpool@9.3.3: - resolution: {integrity: sha512-slxCaKbYjEdFT/o2rH9xS1hf4uRDch1w7Uo+apxhZ+sf/1d9e0ZVkn42kPNGP2dgjIx6YFvSevj0zHvbWe2jdw==} + workerpool@9.3.4: + resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} wrap-ansi@2.1.0: resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} @@ -22204,8 +23048,8 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} wrappy@1.0.2: @@ -22288,10 +23132,6 @@ packages: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} - xml2js@0.4.23: - resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} - engines: {node: '>=4.0.0'} - xml2js@0.5.0: resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} engines: {node: '>=4.0.0'} @@ -22404,14 +23244,22 @@ packages: yazl@2.5.1: resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==} + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.2.1: - resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + yup@1.4.0: resolution: {integrity: sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==} @@ -22432,8 +23280,8 @@ packages: zod@4.1.11: resolution: {integrity: sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==} - zustand@5.0.7: - resolution: {integrity: sha512-Ot6uqHDW/O2VdYsKLLU8GQu8sCOM1LcoE8RwvLv9uuRT9s6SOHCKs0ZEOhxg+I1Ld+A1Q5lwx+UlKXXUoCZITg==} + zustand@5.0.8: + resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=18.0.0' @@ -22458,31 +23306,52 @@ packages: snapshots: - '@adobe/css-tools@4.4.3': {} + '@adobe/css-tools@4.4.4': {} - '@ai-sdk/amazon-bedrock@3.0.30(zod@4.1.11)': + '@ai-sdk/amazon-bedrock@3.0.56(zod@4.1.11)': dependencies: - '@ai-sdk/anthropic': 2.0.23(zod@4.1.11) + '@ai-sdk/anthropic': 2.0.45(zod@4.1.11) '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.10(zod@4.1.11) - '@smithy/eventstream-codec': 4.0.5 - '@smithy/util-utf8': 4.0.0 + '@ai-sdk/provider-utils': 3.0.17(zod@4.1.11) + '@smithy/eventstream-codec': 4.2.5 + '@smithy/util-utf8': 4.2.0 aws4fetch: 1.0.20 zod: 4.1.11 - '@ai-sdk/anthropic@2.0.23(zod@4.1.11)': + '@ai-sdk/anthropic@2.0.45(zod@3.25.76)': dependencies: '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.10(zod@4.1.11) + '@ai-sdk/provider-utils': 3.0.17(zod@3.25.76) + zod: 3.25.76 + + '@ai-sdk/anthropic@2.0.45(zod@4.1.11)': + dependencies: + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.17(zod@4.1.11) zod: 4.1.11 - '@ai-sdk/gateway@1.0.32(zod@4.1.11)': + '@ai-sdk/gateway@2.0.9(zod@3.25.76)': + dependencies: + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.17(zod@3.25.76) + '@vercel/oidc': 3.0.3 + zod: 3.25.76 + + '@ai-sdk/gateway@2.0.9(zod@4.1.11)': dependencies: '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.10(zod@4.1.11) + '@ai-sdk/provider-utils': 3.0.17(zod@4.1.11) + '@vercel/oidc': 3.0.3 zod: 4.1.11 - '@ai-sdk/provider-utils@3.0.10(zod@4.1.11)': + '@ai-sdk/provider-utils@3.0.17(zod@3.25.76)': + dependencies: + '@ai-sdk/provider': 2.0.0 + '@standard-schema/spec': 1.0.0 + eventsource-parser: 3.0.6 + zod: 3.25.76 + + '@ai-sdk/provider-utils@3.0.17(zod@4.1.11)': dependencies: '@ai-sdk/provider': 2.0.0 '@standard-schema/spec': 1.0.0 @@ -22497,20 +23366,20 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@apidevtools/json-schema-ref-parser@11.6.1': dependencies: '@jsdevtools/ono': 7.1.3 '@types/json-schema': 7.0.15 - js-yaml: 4.1.0 + js-yaml: 4.1.1 '@apidevtools/json-schema-ref-parser@12.0.2': dependencies: '@jsdevtools/ono': 7.1.3 '@types/json-schema': 7.0.15 - js-yaml: 4.1.0 + js-yaml: 4.1.1 '@aw-web-design/x-default-browser@1.4.126': dependencies: @@ -22519,21 +23388,21 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.862.0 + '@aws-sdk/types': 3.930.0 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.862.0 + '@aws-sdk/types': 3.930.0 tslib: 2.8.1 '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-locate-window': 3.804.0 + '@aws-sdk/types': 3.930.0 + '@aws-sdk/util-locate-window': 3.893.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -22542,15 +23411,15 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-locate-window': 3.804.0 + '@aws-sdk/types': 3.930.0 + '@aws-sdk/util-locate-window': 3.893.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.862.0 + '@aws-sdk/types': 3.930.0 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -22559,429 +23428,428 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.862.0 + '@aws-sdk/types': 3.930.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.862.0': + '@aws-sdk/client-s3@3.933.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.862.0 - '@aws-sdk/credential-provider-node': 3.862.0 - '@aws-sdk/middleware-bucket-endpoint': 3.862.0 - '@aws-sdk/middleware-expect-continue': 3.862.0 - '@aws-sdk/middleware-flexible-checksums': 3.862.0 - '@aws-sdk/middleware-host-header': 3.862.0 - '@aws-sdk/middleware-location-constraint': 3.862.0 - '@aws-sdk/middleware-logger': 3.862.0 - '@aws-sdk/middleware-recursion-detection': 3.862.0 - '@aws-sdk/middleware-sdk-s3': 3.862.0 - '@aws-sdk/middleware-ssec': 3.862.0 - '@aws-sdk/middleware-user-agent': 3.862.0 - '@aws-sdk/region-config-resolver': 3.862.0 - '@aws-sdk/signature-v4-multi-region': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-endpoints': 3.862.0 - '@aws-sdk/util-user-agent-browser': 3.862.0 - '@aws-sdk/util-user-agent-node': 3.862.0 - '@aws-sdk/xml-builder': 3.862.0 - '@smithy/config-resolver': 4.1.5 - '@smithy/core': 3.8.0 - '@smithy/eventstream-serde-browser': 4.0.5 - '@smithy/eventstream-serde-config-resolver': 4.1.3 - '@smithy/eventstream-serde-node': 4.0.5 - '@smithy/fetch-http-handler': 5.1.1 - '@smithy/hash-blob-browser': 4.0.5 - '@smithy/hash-node': 4.0.5 - '@smithy/hash-stream-node': 4.0.5 - '@smithy/invalid-dependency': 4.0.5 - '@smithy/md5-js': 4.0.5 - '@smithy/middleware-content-length': 4.0.5 - '@smithy/middleware-endpoint': 4.1.18 - '@smithy/middleware-retry': 4.1.19 - '@smithy/middleware-serde': 4.0.9 - '@smithy/middleware-stack': 4.0.5 - '@smithy/node-config-provider': 4.1.4 - '@smithy/node-http-handler': 4.1.1 - '@smithy/protocol-http': 5.1.3 - '@smithy/smithy-client': 4.4.10 - '@smithy/types': 4.3.2 - '@smithy/url-parser': 4.0.5 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.26 - '@smithy/util-defaults-mode-node': 4.0.26 - '@smithy/util-endpoints': 3.0.7 - '@smithy/util-middleware': 4.0.5 - '@smithy/util-retry': 4.0.7 - '@smithy/util-stream': 4.2.4 - '@smithy/util-utf8': 4.0.0 - '@smithy/util-waiter': 4.0.7 - '@types/uuid': 9.0.8 + '@aws-sdk/core': 3.932.0 + '@aws-sdk/credential-provider-node': 3.933.0 + '@aws-sdk/middleware-bucket-endpoint': 3.930.0 + '@aws-sdk/middleware-expect-continue': 3.930.0 + '@aws-sdk/middleware-flexible-checksums': 3.932.0 + '@aws-sdk/middleware-host-header': 3.930.0 + '@aws-sdk/middleware-location-constraint': 3.930.0 + '@aws-sdk/middleware-logger': 3.930.0 + '@aws-sdk/middleware-recursion-detection': 3.933.0 + '@aws-sdk/middleware-sdk-s3': 3.932.0 + '@aws-sdk/middleware-ssec': 3.930.0 + '@aws-sdk/middleware-user-agent': 3.932.0 + '@aws-sdk/region-config-resolver': 3.930.0 + '@aws-sdk/signature-v4-multi-region': 3.932.0 + '@aws-sdk/types': 3.930.0 + '@aws-sdk/util-endpoints': 3.930.0 + '@aws-sdk/util-user-agent-browser': 3.930.0 + '@aws-sdk/util-user-agent-node': 3.932.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.4 + '@smithy/eventstream-serde-browser': 4.2.5 + '@smithy/eventstream-serde-config-resolver': 4.3.5 + '@smithy/eventstream-serde-node': 4.2.5 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-blob-browser': 4.2.6 + '@smithy/hash-node': 4.2.5 + '@smithy/hash-stream-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/md5-js': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.11 + '@smithy/middleware-retry': 4.4.11 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.7 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.10 + '@smithy/util-defaults-mode-node': 4.2.13 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-stream': 4.5.6 + '@smithy/util-utf8': 4.2.0 + '@smithy/util-waiter': 4.2.5 tslib: 2.8.1 - uuid: 9.0.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.862.0': + '@aws-sdk/client-sso@3.933.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.862.0 - '@aws-sdk/middleware-host-header': 3.862.0 - '@aws-sdk/middleware-logger': 3.862.0 - '@aws-sdk/middleware-recursion-detection': 3.862.0 - '@aws-sdk/middleware-user-agent': 3.862.0 - '@aws-sdk/region-config-resolver': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-endpoints': 3.862.0 - '@aws-sdk/util-user-agent-browser': 3.862.0 - '@aws-sdk/util-user-agent-node': 3.862.0 - '@smithy/config-resolver': 4.1.5 - '@smithy/core': 3.8.0 - '@smithy/fetch-http-handler': 5.1.1 - '@smithy/hash-node': 4.0.5 - '@smithy/invalid-dependency': 4.0.5 - '@smithy/middleware-content-length': 4.0.5 - '@smithy/middleware-endpoint': 4.1.18 - '@smithy/middleware-retry': 4.1.19 - '@smithy/middleware-serde': 4.0.9 - '@smithy/middleware-stack': 4.0.5 - '@smithy/node-config-provider': 4.1.4 - '@smithy/node-http-handler': 4.1.1 - '@smithy/protocol-http': 5.1.3 - '@smithy/smithy-client': 4.4.10 - '@smithy/types': 4.3.2 - '@smithy/url-parser': 4.0.5 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.26 - '@smithy/util-defaults-mode-node': 4.0.26 - '@smithy/util-endpoints': 3.0.7 - '@smithy/util-middleware': 4.0.5 - '@smithy/util-retry': 4.0.7 - '@smithy/util-utf8': 4.0.0 + '@aws-sdk/core': 3.932.0 + '@aws-sdk/middleware-host-header': 3.930.0 + '@aws-sdk/middleware-logger': 3.930.0 + '@aws-sdk/middleware-recursion-detection': 3.933.0 + '@aws-sdk/middleware-user-agent': 3.932.0 + '@aws-sdk/region-config-resolver': 3.930.0 + '@aws-sdk/types': 3.930.0 + '@aws-sdk/util-endpoints': 3.930.0 + '@aws-sdk/util-user-agent-browser': 3.930.0 + '@aws-sdk/util-user-agent-node': 3.932.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.4 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.11 + '@smithy/middleware-retry': 4.4.11 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.7 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.10 + '@smithy/util-defaults-mode-node': 4.2.13 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.862.0': - dependencies: - '@aws-sdk/types': 3.862.0 - '@aws-sdk/xml-builder': 3.862.0 - '@smithy/core': 3.8.0 - '@smithy/node-config-provider': 4.1.4 - '@smithy/property-provider': 4.0.5 - '@smithy/protocol-http': 5.1.3 - '@smithy/signature-v4': 5.1.3 - '@smithy/smithy-client': 4.4.10 - '@smithy/types': 4.3.2 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.5 - '@smithy/util-utf8': 4.0.0 - fast-xml-parser: 5.2.5 + '@aws-sdk/core@3.932.0': + dependencies: + '@aws-sdk/types': 3.930.0 + '@aws-sdk/xml-builder': 3.930.0 + '@smithy/core': 3.18.4 + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/signature-v4': 5.3.5 + '@smithy/smithy-client': 4.9.7 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.862.0': + '@aws-sdk/credential-provider-env@3.932.0': dependencies: - '@aws-sdk/core': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@smithy/property-provider': 4.0.5 - '@smithy/types': 4.3.2 + '@aws-sdk/core': 3.932.0 + '@aws-sdk/types': 3.930.0 + '@smithy/property-provider': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.862.0': - dependencies: - '@aws-sdk/core': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@smithy/fetch-http-handler': 5.1.1 - '@smithy/node-http-handler': 4.1.1 - '@smithy/property-provider': 4.0.5 - '@smithy/protocol-http': 5.1.3 - '@smithy/smithy-client': 4.4.10 - '@smithy/types': 4.3.2 - '@smithy/util-stream': 4.2.4 + '@aws-sdk/credential-provider-http@3.932.0': + dependencies: + '@aws-sdk/core': 3.932.0 + '@aws-sdk/types': 3.930.0 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/node-http-handler': 4.4.5 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.7 + '@smithy/types': 4.9.0 + '@smithy/util-stream': 4.5.6 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.862.0': - dependencies: - '@aws-sdk/core': 3.862.0 - '@aws-sdk/credential-provider-env': 3.862.0 - '@aws-sdk/credential-provider-http': 3.862.0 - '@aws-sdk/credential-provider-process': 3.862.0 - '@aws-sdk/credential-provider-sso': 3.862.0 - '@aws-sdk/credential-provider-web-identity': 3.862.0 - '@aws-sdk/nested-clients': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@smithy/credential-provider-imds': 4.0.7 - '@smithy/property-provider': 4.0.5 - '@smithy/shared-ini-file-loader': 4.0.5 - '@smithy/types': 4.3.2 + '@aws-sdk/credential-provider-ini@3.933.0': + dependencies: + '@aws-sdk/core': 3.932.0 + '@aws-sdk/credential-provider-env': 3.932.0 + '@aws-sdk/credential-provider-http': 3.932.0 + '@aws-sdk/credential-provider-process': 3.932.0 + '@aws-sdk/credential-provider-sso': 3.933.0 + '@aws-sdk/credential-provider-web-identity': 3.933.0 + '@aws-sdk/nested-clients': 3.933.0 + '@aws-sdk/types': 3.930.0 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-node@3.862.0': - dependencies: - '@aws-sdk/credential-provider-env': 3.862.0 - '@aws-sdk/credential-provider-http': 3.862.0 - '@aws-sdk/credential-provider-ini': 3.862.0 - '@aws-sdk/credential-provider-process': 3.862.0 - '@aws-sdk/credential-provider-sso': 3.862.0 - '@aws-sdk/credential-provider-web-identity': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@smithy/credential-provider-imds': 4.0.7 - '@smithy/property-provider': 4.0.5 - '@smithy/shared-ini-file-loader': 4.0.5 - '@smithy/types': 4.3.2 + '@aws-sdk/credential-provider-node@3.933.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.932.0 + '@aws-sdk/credential-provider-http': 3.932.0 + '@aws-sdk/credential-provider-ini': 3.933.0 + '@aws-sdk/credential-provider-process': 3.932.0 + '@aws-sdk/credential-provider-sso': 3.933.0 + '@aws-sdk/credential-provider-web-identity': 3.933.0 + '@aws-sdk/types': 3.930.0 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-process@3.862.0': + '@aws-sdk/credential-provider-process@3.932.0': dependencies: - '@aws-sdk/core': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@smithy/property-provider': 4.0.5 - '@smithy/shared-ini-file-loader': 4.0.5 - '@smithy/types': 4.3.2 + '@aws-sdk/core': 3.932.0 + '@aws-sdk/types': 3.930.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.862.0': + '@aws-sdk/credential-provider-sso@3.933.0': dependencies: - '@aws-sdk/client-sso': 3.862.0 - '@aws-sdk/core': 3.862.0 - '@aws-sdk/token-providers': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@smithy/property-provider': 4.0.5 - '@smithy/shared-ini-file-loader': 4.0.5 - '@smithy/types': 4.3.2 + '@aws-sdk/client-sso': 3.933.0 + '@aws-sdk/core': 3.932.0 + '@aws-sdk/token-providers': 3.933.0 + '@aws-sdk/types': 3.930.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-web-identity@3.862.0': + '@aws-sdk/credential-provider-web-identity@3.933.0': dependencies: - '@aws-sdk/core': 3.862.0 - '@aws-sdk/nested-clients': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@smithy/property-provider': 4.0.5 - '@smithy/types': 4.3.2 + '@aws-sdk/core': 3.932.0 + '@aws-sdk/nested-clients': 3.933.0 + '@aws-sdk/types': 3.930.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/middleware-bucket-endpoint@3.862.0': + '@aws-sdk/middleware-bucket-endpoint@3.930.0': dependencies: - '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-arn-parser': 3.804.0 - '@smithy/node-config-provider': 4.1.4 - '@smithy/protocol-http': 5.1.3 - '@smithy/types': 4.3.2 - '@smithy/util-config-provider': 4.0.0 + '@aws-sdk/types': 3.930.0 + '@aws-sdk/util-arn-parser': 3.893.0 + '@smithy/node-config-provider': 4.3.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-config-provider': 4.2.0 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.862.0': + '@aws-sdk/middleware-expect-continue@3.930.0': dependencies: - '@aws-sdk/types': 3.862.0 - '@smithy/protocol-http': 5.1.3 - '@smithy/types': 4.3.2 + '@aws-sdk/types': 3.930.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.862.0': + '@aws-sdk/middleware-flexible-checksums@3.932.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@smithy/is-array-buffer': 4.0.0 - '@smithy/node-config-provider': 4.1.4 - '@smithy/protocol-http': 5.1.3 - '@smithy/types': 4.3.2 - '@smithy/util-middleware': 4.0.5 - '@smithy/util-stream': 4.2.4 - '@smithy/util-utf8': 4.0.0 + '@aws-sdk/core': 3.932.0 + '@aws-sdk/types': 3.930.0 + '@smithy/is-array-buffer': 4.2.0 + '@smithy/node-config-provider': 4.3.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-stream': 4.5.6 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.862.0': + '@aws-sdk/middleware-host-header@3.930.0': dependencies: - '@aws-sdk/types': 3.862.0 - '@smithy/protocol-http': 5.1.3 - '@smithy/types': 4.3.2 + '@aws-sdk/types': 3.930.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.862.0': + '@aws-sdk/middleware-location-constraint@3.930.0': dependencies: - '@aws-sdk/types': 3.862.0 - '@smithy/types': 4.3.2 + '@aws-sdk/types': 3.930.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.862.0': + '@aws-sdk/middleware-logger@3.930.0': dependencies: - '@aws-sdk/types': 3.862.0 - '@smithy/types': 4.3.2 + '@aws-sdk/types': 3.930.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.862.0': + '@aws-sdk/middleware-recursion-detection@3.933.0': dependencies: - '@aws-sdk/types': 3.862.0 - '@smithy/protocol-http': 5.1.3 - '@smithy/types': 4.3.2 + '@aws-sdk/types': 3.930.0 + '@aws/lambda-invoke-store': 0.2.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.862.0': - dependencies: - '@aws-sdk/core': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-arn-parser': 3.804.0 - '@smithy/core': 3.8.0 - '@smithy/node-config-provider': 4.1.4 - '@smithy/protocol-http': 5.1.3 - '@smithy/signature-v4': 5.1.3 - '@smithy/smithy-client': 4.4.10 - '@smithy/types': 4.3.2 - '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.5 - '@smithy/util-stream': 4.2.4 - '@smithy/util-utf8': 4.0.0 + '@aws-sdk/middleware-sdk-s3@3.932.0': + dependencies: + '@aws-sdk/core': 3.932.0 + '@aws-sdk/types': 3.930.0 + '@aws-sdk/util-arn-parser': 3.893.0 + '@smithy/core': 3.18.4 + '@smithy/node-config-provider': 4.3.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/signature-v4': 5.3.5 + '@smithy/smithy-client': 4.9.7 + '@smithy/types': 4.9.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-stream': 4.5.6 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.862.0': + '@aws-sdk/middleware-ssec@3.930.0': dependencies: - '@aws-sdk/types': 3.862.0 - '@smithy/types': 4.3.2 + '@aws-sdk/types': 3.930.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.862.0': + '@aws-sdk/middleware-user-agent@3.932.0': dependencies: - '@aws-sdk/core': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-endpoints': 3.862.0 - '@smithy/core': 3.8.0 - '@smithy/protocol-http': 5.1.3 - '@smithy/types': 4.3.2 + '@aws-sdk/core': 3.932.0 + '@aws-sdk/types': 3.930.0 + '@aws-sdk/util-endpoints': 3.930.0 + '@smithy/core': 3.18.4 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.862.0': + '@aws-sdk/nested-clients@3.933.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.862.0 - '@aws-sdk/middleware-host-header': 3.862.0 - '@aws-sdk/middleware-logger': 3.862.0 - '@aws-sdk/middleware-recursion-detection': 3.862.0 - '@aws-sdk/middleware-user-agent': 3.862.0 - '@aws-sdk/region-config-resolver': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@aws-sdk/util-endpoints': 3.862.0 - '@aws-sdk/util-user-agent-browser': 3.862.0 - '@aws-sdk/util-user-agent-node': 3.862.0 - '@smithy/config-resolver': 4.1.5 - '@smithy/core': 3.8.0 - '@smithy/fetch-http-handler': 5.1.1 - '@smithy/hash-node': 4.0.5 - '@smithy/invalid-dependency': 4.0.5 - '@smithy/middleware-content-length': 4.0.5 - '@smithy/middleware-endpoint': 4.1.18 - '@smithy/middleware-retry': 4.1.19 - '@smithy/middleware-serde': 4.0.9 - '@smithy/middleware-stack': 4.0.5 - '@smithy/node-config-provider': 4.1.4 - '@smithy/node-http-handler': 4.1.1 - '@smithy/protocol-http': 5.1.3 - '@smithy/smithy-client': 4.4.10 - '@smithy/types': 4.3.2 - '@smithy/url-parser': 4.0.5 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.26 - '@smithy/util-defaults-mode-node': 4.0.26 - '@smithy/util-endpoints': 3.0.7 - '@smithy/util-middleware': 4.0.5 - '@smithy/util-retry': 4.0.7 - '@smithy/util-utf8': 4.0.0 + '@aws-sdk/core': 3.932.0 + '@aws-sdk/middleware-host-header': 3.930.0 + '@aws-sdk/middleware-logger': 3.930.0 + '@aws-sdk/middleware-recursion-detection': 3.933.0 + '@aws-sdk/middleware-user-agent': 3.932.0 + '@aws-sdk/region-config-resolver': 3.930.0 + '@aws-sdk/types': 3.930.0 + '@aws-sdk/util-endpoints': 3.930.0 + '@aws-sdk/util-user-agent-browser': 3.930.0 + '@aws-sdk/util-user-agent-node': 3.932.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.4 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.11 + '@smithy/middleware-retry': 4.4.11 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.7 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.10 + '@smithy/util-defaults-mode-node': 4.2.13 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/region-config-resolver@3.862.0': + '@aws-sdk/region-config-resolver@3.930.0': dependencies: - '@aws-sdk/types': 3.862.0 - '@smithy/node-config-provider': 4.1.4 - '@smithy/types': 4.3.2 - '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.5 + '@aws-sdk/types': 3.930.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.862.0': + '@aws-sdk/signature-v4-multi-region@3.932.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@smithy/protocol-http': 5.1.3 - '@smithy/signature-v4': 5.1.3 - '@smithy/types': 4.3.2 + '@aws-sdk/middleware-sdk-s3': 3.932.0 + '@aws-sdk/types': 3.930.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/signature-v4': 5.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/token-providers@3.862.0': + '@aws-sdk/token-providers@3.933.0': dependencies: - '@aws-sdk/core': 3.862.0 - '@aws-sdk/nested-clients': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@smithy/property-provider': 4.0.5 - '@smithy/shared-ini-file-loader': 4.0.5 - '@smithy/types': 4.3.2 + '@aws-sdk/core': 3.932.0 + '@aws-sdk/nested-clients': 3.933.0 + '@aws-sdk/types': 3.930.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/types@3.862.0': + '@aws-sdk/types@3.930.0': dependencies: - '@smithy/types': 4.3.2 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/util-arn-parser@3.804.0': + '@aws-sdk/util-arn-parser@3.893.0': dependencies: tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.862.0': + '@aws-sdk/util-endpoints@3.930.0': dependencies: - '@aws-sdk/types': 3.862.0 - '@smithy/types': 4.3.2 - '@smithy/url-parser': 4.0.5 - '@smithy/util-endpoints': 3.0.7 + '@aws-sdk/types': 3.930.0 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-endpoints': 3.2.5 tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.804.0': + '@aws-sdk/util-locate-window@3.893.0': dependencies: tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.862.0': + '@aws-sdk/util-user-agent-browser@3.930.0': dependencies: - '@aws-sdk/types': 3.862.0 - '@smithy/types': 4.3.2 - bowser: 2.11.0 + '@aws-sdk/types': 3.930.0 + '@smithy/types': 4.9.0 + bowser: 2.12.1 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.862.0': + '@aws-sdk/util-user-agent-node@3.932.0': dependencies: - '@aws-sdk/middleware-user-agent': 3.862.0 - '@aws-sdk/types': 3.862.0 - '@smithy/node-config-provider': 4.1.4 - '@smithy/types': 4.3.2 + '@aws-sdk/middleware-user-agent': 3.932.0 + '@aws-sdk/types': 3.930.0 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/xml-builder@3.862.0': + '@aws-sdk/xml-builder@3.930.0': dependencies: - '@smithy/types': 4.3.2 + '@smithy/types': 4.9.0 + fast-xml-parser: 5.2.5 tslib: 2.8.1 + '@aws/lambda-invoke-store@0.2.0': {} + '@azu/format-text@1.0.2': {} '@azu/style-format@1.0.1': @@ -22992,61 +23860,61 @@ snapshots: dependencies: tslib: 2.8.1 - '@azure/core-auth@1.10.0': + '@azure/core-auth@1.10.1': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.13.0 + '@azure/core-util': 1.13.1 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/core-client@1.10.0': + '@azure/core-client@1.10.1': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.0 - '@azure/core-rest-pipeline': 1.22.0 - '@azure/core-tracing': 1.3.0 - '@azure/core-util': 1.13.0 + '@azure/core-auth': 1.10.1 + '@azure/core-rest-pipeline': 1.22.2 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/core-rest-pipeline@1.22.0': + '@azure/core-rest-pipeline@1.22.2': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.0 - '@azure/core-tracing': 1.3.0 - '@azure/core-util': 1.13.0 + '@azure/core-auth': 1.10.1 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 - '@typespec/ts-http-runtime': 0.3.0 + '@typespec/ts-http-runtime': 0.3.2 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/core-tracing@1.3.0': + '@azure/core-tracing@1.3.1': dependencies: tslib: 2.8.1 - '@azure/core-util@1.13.0': + '@azure/core-util@1.13.1': dependencies: '@azure/abort-controller': 2.1.2 - '@typespec/ts-http-runtime': 0.3.0 + '@typespec/ts-http-runtime': 0.3.2 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/identity@4.11.1': + '@azure/identity@4.13.0': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.0 - '@azure/core-client': 1.10.0 - '@azure/core-rest-pipeline': 1.22.0 - '@azure/core-tracing': 1.3.0 - '@azure/core-util': 1.13.0 + '@azure/core-auth': 1.10.1 + '@azure/core-client': 1.10.1 + '@azure/core-rest-pipeline': 1.22.2 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 - '@azure/msal-browser': 4.19.0 - '@azure/msal-node': 3.7.0 + '@azure/msal-browser': 4.26.1 + '@azure/msal-node': 3.8.2 open: 10.2.0 tslib: 2.8.1 transitivePeerDependencies: @@ -23054,47 +23922,47 @@ snapshots: '@azure/logger@1.3.0': dependencies: - '@typespec/ts-http-runtime': 0.3.0 + '@typespec/ts-http-runtime': 0.3.2 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/msal-browser@4.19.0': + '@azure/msal-browser@4.26.1': dependencies: - '@azure/msal-common': 15.10.0 + '@azure/msal-common': 15.13.1 - '@azure/msal-common@15.10.0': {} + '@azure/msal-common@15.13.1': {} - '@azure/msal-node@3.7.0': + '@azure/msal-node@3.8.2': dependencies: - '@azure/msal-common': 15.10.0 + '@azure/msal-common': 15.13.1 jsonwebtoken: 9.0.2 uuid: 8.3.2 '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.0': {} + '@babel/compat-data@7.28.5': {} '@babel/core@7.12.9': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.12.9) - '@babel/helpers': 7.28.2 - '@babel/parser': 7.28.0 + '@babel/generator': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.12.9) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 convert-source-map: 1.9.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 lodash: 4.17.21 - resolve: 1.22.10 + resolve: 1.22.11 semver: 5.7.2 source-map: 0.5.7 transitivePeerDependencies: @@ -23104,61 +23972,102 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.7) - '@babel/helpers': 7.28.2 - '@babel/parser': 7.28.0 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.27.7) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 convert-source-map: 2.0.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.28.0': + '@babel/core@7.28.5': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.28.0 + '@babel/compat-data': 7.28.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.1 + browserslist: 4.28.0 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.7)': + '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.7) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.5 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.7)': + '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.28.5 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.2.0 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.4.0 semver: 6.3.1 + optional: true '@babel/helper-define-polyfill-provider@0.0.3(@babel/core@7.27.7)': dependencies: @@ -23166,10 +24075,10 @@ snapshots: '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 - debug: 4.4.1(supports-color@8.1.1) + '@babel/traverse': 7.28.5 + debug: 4.4.3(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.10 + resolve: 1.22.11 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -23180,10 +24089,10 @@ snapshots: '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 - debug: 4.4.1(supports-color@8.1.1) + '@babel/traverse': 7.28.5 + debug: 4.4.3(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.10 + resolve: 1.22.11 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -23193,49 +24102,70 @@ snapshots: '@babel/core': 7.27.7 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.10 + resolve: 1.22.11 transitivePeerDependencies: - supports-color + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + debug: 4.4.3(supports-color@8.1.1) + lodash.debounce: 4.0.8 + resolve: 1.22.11 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.27.1': + '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.12.9)': + '@babel/helper-module-transforms@7.28.3(@babel/core@7.12.9)': dependencies: '@babel/core': 7.12.9 '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.7)': + '@babel/helper-module-transforms@7.28.3(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@babel/helper-plugin-utils@7.10.4': {} @@ -23245,89 +24175,148 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/helper-wrap-function': 7.28.3 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.3 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color + optional: true '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-wrap-function@7.27.1': + '@babel/helper-wrap-function@7.28.3': dependencies: '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/helpers@7.28.2': + '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 - '@babel/parser@7.28.0': + '@babel/parser@7.28.5': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.7)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.27.7) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.27.7)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color + optional: true '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -23335,7 +24324,7 @@ snapshots: '@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.27.7) transitivePeerDependencies: @@ -23355,13 +24344,13 @@ snapshots: '@babel/plugin-proposal-object-rest-spread@7.12.1(@babel/core@7.12.9)': dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.10.4 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.12.9) '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.27.7)': dependencies: - '@babel/compat-data': 7.28.0 + '@babel/compat-data': 7.28.5 '@babel/core': 7.27.7 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 @@ -23380,7 +24369,7 @@ snapshots: '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -23389,11 +24378,16 @@ snapshots: dependencies: '@babel/core': 7.27.7 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + optional: true + '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.7) transitivePeerDependencies: @@ -23429,9 +24423,9 @@ snapshots: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-flow@7.22.5(@babel/core@7.27.7)': + '@babel/plugin-syntax-flow@7.22.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.27.7)': @@ -23439,16 +24433,33 @@ snapshots: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 @@ -23469,6 +24480,11 @@ snapshots: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 @@ -23519,26 +24535,54 @@ snapshots: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.7) - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 @@ -23548,33 +24592,73 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.27.7)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + + '@babel/plugin-transform-block-scoping@7.28.5(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-block-scoping@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.27.7)': + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.0(@babel/core@7.27.7)': + '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + + '@babel/plugin-transform-classes@7.28.4(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-annotate-as-pure': 7.27.3 @@ -23582,62 +24666,135 @@ snapshots: '@babel/helper-globals': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.7) - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 - '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.27.7)': + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 + optional: true + + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.7) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 + optional: true '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.7) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 + optional: true '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.27.7)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + + '@babel/plugin-transform-exponentiation-operator@7.28.5(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-exponentiation-operator@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 @@ -23646,101 +24803,218 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color + optional: true '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.7)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + + '@babel/plugin-transform-logical-assignment-operators@7.28.5(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-logical-assignment-operators@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.7) + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.27.7) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color + optional: true '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.7) + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.27.7) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.27.7)': + '@babel/plugin-transform-modules-systemjs@7.28.5(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.7) + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-systemjs@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.7) + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-rest-spread@7.28.0(@babel/core@7.27.7)': + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + + '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.7) - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 @@ -23749,12 +25023,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.7)': + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + + '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 @@ -23762,6 +25051,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.12.9)': dependencies: '@babel/core': 7.12.9 @@ -23772,33 +25070,69 @@ snapshots: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 @@ -23806,6 +25140,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 @@ -23813,7 +25154,18 @@ snapshots: '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.7) - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -23823,27 +25175,58 @@ snapshots: '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.28.1(@babel/core@7.27.7)': + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.7) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 + optional: true '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 @@ -23852,67 +25235,132 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.27.7)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + + '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.7) transitivePeerDependencies: - supports-color + '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + optional: true + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.7) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 + optional: true '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.27.7) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 + optional: true '@babel/preset-env@7.27.2(@babel/core@7.27.7)': dependencies: - '@babel/compat-data': 7.28.0 + '@babel/compat-data': 7.28.5 '@babel/core': 7.27.7 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.27.7) '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.27.7) '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.27.7) '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.27.7) '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.7) '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.7) '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.7) @@ -23921,41 +25369,41 @@ snapshots: '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.27.7) '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-classes': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.27.7) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.27.7) '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-exponentiation-operator': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-logical-assignment-operators': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-object-rest-spread': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.27.7) '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.7) '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-regenerator': 7.28.1(@babel/core@7.27.7) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.27.7) '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.7) @@ -23971,11 +25419,87 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.27.7) babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.7) babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.27.7) - core-js-compat: 3.45.0 + core-js-compat: 3.47.0 semver: 6.3.1 transitivePeerDependencies: - supports-color + '@babel/preset-env@7.27.2(@babel/core@7.28.5)': + dependencies: + '@babel/compat-data': 7.28.5 + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.5) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.5) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-exponentiation-operator': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-logical-assignment-operators': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.5) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.28.5) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) + core-js-compat: 3.47.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + optional: true + '@babel/preset-flow@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 @@ -23983,13 +25507,28 @@ snapshots: '@babel/helper-validator-option': 7.27.1 '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.27.7) + '@babel/preset-flow@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.5) + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 esutils: 2.0.3 + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.28.5 + esutils: 2.0.3 + optional: true + '@babel/preset-react@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 @@ -24002,14 +25541,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.22.15(@babel/core@7.27.7)': + '@babel/preset-react@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.22.15(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color @@ -24020,11 +25571,22 @@ snapshots: '@babel/helper-validator-option': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.27.7) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/register@7.27.1(@babel/core@7.27.7)': + '@babel/register@7.28.3(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 clone-deep: 4.0.1 @@ -24033,38 +25595,38 @@ snapshots: pirates: 4.0.7 source-map-support: 0.5.21 - '@babel/runtime-corejs3@7.28.2': + '@babel/runtime-corejs3@7.28.4': dependencies: - core-js-pure: 3.45.0 + core-js-pure: 3.47.0 - '@babel/runtime@7.28.2': {} + '@babel/runtime@7.28.4': {} '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 - '@babel/traverse@7.28.0': + '@babel/traverse@7.28.5': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.5 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/types': 7.28.2 - debug: 4.4.1(supports-color@8.1.1) + '@babel/types': 7.28.5 + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/types@7.28.2': + '@babel/types@7.28.5': dependencies: '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@base2/pretty-print-object@1.0.1': {} - '@bazel/runfiles@6.3.1': {} + '@bazel/runfiles@6.5.0': {} '@bcoe/v8-coverage@0.2.3': {} @@ -24105,190 +25667,210 @@ snapshots: '@biomejs/cli-win32-x64@1.9.4': optional: true + '@cacheable/memory@2.0.5': + dependencies: + '@cacheable/utils': 2.3.1 + '@keyv/bigmap': 1.3.0(keyv@5.5.4) + hookified: 1.13.0 + keyv: 5.5.4 + + '@cacheable/utils@2.3.1': + dependencies: + hashery: 1.2.0 + keyv: 5.5.4 + '@cnakazawa/watch@1.0.4': dependencies: exec-sh: 0.3.6 minimist: 1.2.8 - '@codemirror/autocomplete@6.18.6': + '@codemirror/autocomplete@6.19.1': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 - '@lezer/common': 1.2.3 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.3.0 - '@codemirror/commands@6.8.1': + '@codemirror/commands@6.10.0': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 - '@lezer/common': 1.2.3 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.3.0 '@codemirror/lang-angular@0.1.4': dependencies: '@codemirror/lang-html': 6.4.11 '@codemirror/lang-javascript': 6.2.4 - '@codemirror/language': 6.11.2 - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@codemirror/language': 6.11.3 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@codemirror/lang-cpp@6.0.3': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/cpp': 1.1.3 '@codemirror/lang-css@6.3.1': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.1 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@lezer/common': 1.2.3 + '@lezer/common': 1.3.0 '@lezer/css': 1.3.0 '@codemirror/lang-go@6.0.1': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.1 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@lezer/common': 1.2.3 + '@lezer/common': 1.3.0 '@lezer/go': 1.0.1 '@codemirror/lang-html@6.4.11': dependencies: - '@codemirror/autocomplete': 6.18.6 + '@codemirror/autocomplete': 6.19.1 '@codemirror/lang-css': 6.3.1 '@codemirror/lang-javascript': 6.2.4 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 - '@lezer/common': 1.2.3 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.3.0 '@lezer/css': 1.3.0 '@lezer/html': 1.3.12 '@codemirror/lang-java@6.0.2': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/java': 1.1.3 '@codemirror/lang-javascript@6.2.4': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.1 + '@codemirror/language': 6.11.3 '@codemirror/lint': 6.8.5 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 - '@lezer/common': 1.2.3 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.3.0 '@lezer/javascript': 1.5.4 + '@codemirror/lang-jinja@6.0.0': + dependencies: + '@codemirror/lang-html': 6.4.11 + '@codemirror/language': 6.11.3 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 + '@codemirror/lang-json@6.0.2': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/json': 1.0.3 '@codemirror/lang-less@6.0.2': dependencies: '@codemirror/lang-css': 6.3.1 - '@codemirror/language': 6.11.2 - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@codemirror/language': 6.11.3 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@codemirror/lang-liquid@6.3.0': dependencies: - '@codemirror/autocomplete': 6.18.6 + '@codemirror/autocomplete': 6.19.1 '@codemirror/lang-html': 6.4.11 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 - '@codemirror/lang-markdown@6.4.0': + '@codemirror/lang-markdown@6.5.0': dependencies: - '@codemirror/autocomplete': 6.18.6 + '@codemirror/autocomplete': 6.19.1 '@codemirror/lang-html': 6.4.11 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 - '@lezer/common': 1.2.3 - '@lezer/markdown': 1.4.3 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.3.0 + '@lezer/markdown': 1.6.0 '@codemirror/lang-php@6.0.2': dependencies: '@codemirror/lang-html': 6.4.11 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@lezer/common': 1.2.3 + '@lezer/common': 1.3.0 '@lezer/php': 1.0.5 '@codemirror/lang-python@6.2.1': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.1 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@lezer/common': 1.2.3 + '@lezer/common': 1.3.0 '@lezer/python': 1.1.18 '@codemirror/lang-rust@6.0.2': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/rust': 1.0.2 '@codemirror/lang-sass@6.0.2': dependencies: '@codemirror/lang-css': 6.3.1 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@lezer/common': 1.2.3 + '@lezer/common': 1.3.0 '@lezer/sass': 1.1.0 '@codemirror/lang-sql@6.10.0': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.1 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@codemirror/lang-vue@0.1.3': dependencies: '@codemirror/lang-html': 6.4.11 '@codemirror/lang-javascript': 6.2.4 - '@codemirror/language': 6.11.2 - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@codemirror/language': 6.11.3 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@codemirror/lang-wast@6.0.2': dependencies: - '@codemirror/language': 6.11.2 - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@codemirror/language': 6.11.3 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@codemirror/lang-xml@6.1.0': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.1 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 - '@lezer/common': 1.2.3 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.3.0 '@lezer/xml': 1.0.6 '@codemirror/lang-yaml@6.1.2': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.1 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@lezer/yaml': 1.0.3 - '@codemirror/language-data@6.5.1': + '@codemirror/language-data@6.5.2': dependencies: '@codemirror/lang-angular': 0.1.4 '@codemirror/lang-cpp': 6.0.3 @@ -24297,10 +25879,11 @@ snapshots: '@codemirror/lang-html': 6.4.11 '@codemirror/lang-java': 6.0.2 '@codemirror/lang-javascript': 6.2.4 + '@codemirror/lang-jinja': 6.0.0 '@codemirror/lang-json': 6.0.2 '@codemirror/lang-less': 6.0.2 '@codemirror/lang-liquid': 6.3.0 - '@codemirror/lang-markdown': 6.4.0 + '@codemirror/lang-markdown': 6.5.0 '@codemirror/lang-php': 6.0.2 '@codemirror/lang-python': 6.2.1 '@codemirror/lang-rust': 6.0.2 @@ -24310,40 +25893,40 @@ snapshots: '@codemirror/lang-wast': 6.0.2 '@codemirror/lang-xml': 6.1.0 '@codemirror/lang-yaml': 6.1.2 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/legacy-modes': 6.5.2 - '@codemirror/language@6.11.2': + '@codemirror/language@6.11.3': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 - style-mod: 4.1.2 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 + style-mod: 4.1.3 '@codemirror/legacy-modes@6.5.2': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/lint@6.8.5': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.8 crelt: 1.0.6 - '@codemirror/merge@6.11.0': + '@codemirror/merge@6.11.2': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 - '@lezer/highlight': 1.2.1 - style-mod: 4.1.2 + '@codemirror/view': 6.38.8 + '@lezer/highlight': 1.2.3 + style-mod: 4.1.3 '@codemirror/search@6.5.11': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.8 crelt: 1.0.6 '@codemirror/state@6.5.2': @@ -24352,16 +25935,16 @@ snapshots: '@codemirror/theme-one-dark@6.1.3': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 - '@lezer/highlight': 1.2.1 + '@codemirror/view': 6.38.8 + '@lezer/highlight': 1.2.3 - '@codemirror/view@6.38.1': + '@codemirror/view@6.38.8': dependencies: '@codemirror/state': 6.5.2 crelt: 1.0.6 - style-mod: 4.1.2 + style-mod: 4.1.3 w3c-keyname: 2.2.8 '@codesandbox/nodebox@0.1.8': @@ -24380,19 +25963,19 @@ snapshots: '@codesandbox/sandpack-react@2.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/commands': 6.8.1 + '@codemirror/autocomplete': 6.19.1 + '@codemirror/commands': 6.10.0 '@codemirror/lang-css': 6.3.1 '@codemirror/lang-html': 6.4.11 '@codemirror/lang-javascript': 6.2.4 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.8 '@codesandbox/sandpack-client': 2.19.8 - '@lezer/highlight': 1.2.1 + '@lezer/highlight': 1.2.3 '@react-hook/intersection-observer': 3.1.2(react@18.2.0) '@stitches/core': 1.2.8 - anser: 2.3.2 + anser: 2.3.3 clean-set: 1.1.2 dequal: 2.0.3 escape-carriage: 1.3.1 @@ -24407,6 +25990,10 @@ snapshots: '@colors/colors@1.6.0': {} + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-tokenizer': 3.0.4 @@ -24422,9 +26009,9 @@ snapshots: dependencies: postcss-selector-parser: 7.1.0 - '@dabh/diagnostics@2.0.3': + '@dabh/diagnostics@2.0.8': dependencies: - colorspace: 1.1.4 + '@so-ric/colorspace': 1.1.6 enabled: 2.0.0 kuler: 2.0.0 @@ -24440,12 +26027,28 @@ snapshots: '@discoveryjs/json-ext@0.6.3': {} - '@dual-bundle/import-meta-resolve@4.1.0': {} + '@dual-bundle/import-meta-resolve@4.2.1': {} + + '@emnapi/core@1.7.1': + dependencies: + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.7.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.1.0': + dependencies: + tslib: 2.8.1 + optional: true '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.27.1 - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.3 @@ -24483,7 +26086,7 @@ snapshots: '@emotion/memoize': 0.7.4 optional: true - '@emotion/is-prop-valid@1.3.1': + '@emotion/is-prop-valid@1.4.0': dependencies: '@emotion/memoize': 0.9.0 @@ -24492,9 +26095,9 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@17.0.87)(react@19.1.0)': + '@emotion/react@11.14.0(@types/react@17.0.90)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -24504,13 +26107,13 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 19.1.0 optionalDependencies: - '@types/react': 17.0.87 + '@types/react': 17.0.90 transitivePeerDependencies: - supports-color '@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -24526,7 +26129,7 @@ snapshots: '@emotion/react@11.14.0(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -24546,30 +26149,30 @@ snapshots: '@emotion/memoize': 0.9.0 '@emotion/unitless': 0.10.0 '@emotion/utils': 1.4.2 - csstype: 3.1.3 + csstype: 3.2.3 '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@17.0.87)(react@19.1.0))(@types/react@17.0.87)(react@19.1.0)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@17.0.90)(react@19.1.0))(@types/react@17.0.90)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 - '@emotion/is-prop-valid': 1.3.1 - '@emotion/react': 11.14.0(@types/react@17.0.87)(react@19.1.0) + '@emotion/is-prop-valid': 1.4.0 + '@emotion/react': 11.14.0(@types/react@17.0.90)(react@19.1.0) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0) '@emotion/utils': 1.4.2 react: 19.1.0 optionalDependencies: - '@types/react': 17.0.87 + '@types/react': 17.0.90 transitivePeerDependencies: - supports-color '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 - '@emotion/is-prop-valid': 1.3.1 + '@emotion/is-prop-valid': 1.4.0 '@emotion/react': 11.14.0(@types/react@18.2.0)(react@18.2.0) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.2.0) @@ -24582,9 +26185,9 @@ snapshots: '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.2.0)(react@19.1.0))(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 - '@emotion/is-prop-valid': 1.3.1 + '@emotion/is-prop-valid': 1.4.0 '@emotion/react': 11.14.0(@types/react@18.2.0)(react@19.1.0) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.2.0) @@ -24597,9 +26200,9 @@ snapshots: '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.2.0)(react@19.1.0))(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 - '@emotion/is-prop-valid': 1.3.1 + '@emotion/is-prop-valid': 1.4.0 '@emotion/react': 11.14.0(@types/react@18.2.0)(react@19.1.0) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0) @@ -24624,105 +26227,105 @@ snapshots: '@emotion/weak-memoize@0.4.0': {} - '@esbuild/aix-ppc64@0.25.8': + '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/android-arm64@0.25.8': + '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm@0.25.8': + '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-x64@0.25.8': + '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.25.8': + '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-x64@0.25.8': + '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.25.8': + '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.25.8': + '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/linux-arm64@0.25.8': + '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm@0.25.8': + '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-ia32@0.25.8': + '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-loong64@0.25.8': + '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-mips64el@0.25.8': + '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-ppc64@0.25.8': + '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.25.8': + '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-s390x@0.25.8': + '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-x64@0.25.8': + '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.25.8': + '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.25.8': + '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.25.8': + '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.25.8': + '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.25.8': + '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/sunos-x64@0.25.8': + '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/win32-arm64@0.25.8': + '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-ia32@0.25.8': + '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-x64@0.25.8': + '@esbuild/win32-x64@0.25.12': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': dependencies: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.26.0(jiti@2.6.1))': dependencies: - eslint: 9.26.0(jiti@2.5.1) + eslint: 9.26.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.27.0(jiti@2.6.1))': dependencies: - eslint: 9.27.0(jiti@2.5.1) + eslint: 9.27.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.1': {} + '@eslint-community/regexpp@4.12.2': {} '@eslint/config-array@0.20.1': dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.1(supports-color@8.1.1) + '@eslint/object-schema': 2.1.7 + debug: 4.4.3(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -24737,19 +26340,19 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/core@0.15.1': + '@eslint/core@0.15.2': dependencies: '@types/json-schema': 7.0.15 '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -24758,12 +26361,12 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -24775,11 +26378,11 @@ snapshots: '@eslint/js@9.27.0': {} - '@eslint/object-schema@2.1.6': {} + '@eslint/object-schema@2.1.7': {} - '@eslint/plugin-kit@0.3.4': + '@eslint/plugin-kit@0.3.5': dependencies: - '@eslint/core': 0.15.1 + '@eslint/core': 0.15.2 levn: 0.4.1 '@fal-works/esbuild-plugin-global-externals@2.1.2': {} @@ -24788,37 +26391,43 @@ snapshots: dependencies: '@floating-ui/utils': 0.2.10 - '@floating-ui/dom@1.7.3': + '@floating-ui/dom@1.7.4': dependencies: '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@floating-ui/react-dom@2.1.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@floating-ui/dom': 1.7.3 + '@floating-ui/dom': 1.7.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@floating-ui/react-dom@2.1.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@floating-ui/react-dom@2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/dom': 1.7.3 + '@floating-ui/dom': 1.7.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/react-dom@2.1.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@floating-ui/dom': 1.7.4 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) '@floating-ui/react@0.26.28(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@floating-ui/react-dom': 2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@floating-ui/react-dom': 2.1.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@floating-ui/utils': 0.2.10 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - tabbable: 6.2.0 + tabbable: 6.3.0 '@floating-ui/utils@0.2.10': {} - '@formatjs/ecma402-abstract@2.3.4': + '@formatjs/ecma402-abstract@2.3.6': dependencies: '@formatjs/fast-memoize': 2.2.7 - '@formatjs/intl-localematcher': 0.6.1 + '@formatjs/intl-localematcher': 0.6.2 decimal.js: 10.6.0 tslib: 2.8.1 @@ -24826,37 +26435,37 @@ snapshots: dependencies: tslib: 2.8.1 - '@formatjs/icu-messageformat-parser@2.11.2': + '@formatjs/icu-messageformat-parser@2.11.4': dependencies: - '@formatjs/ecma402-abstract': 2.3.4 - '@formatjs/icu-skeleton-parser': 1.8.14 + '@formatjs/ecma402-abstract': 2.3.6 + '@formatjs/icu-skeleton-parser': 1.8.16 tslib: 2.8.1 - '@formatjs/icu-skeleton-parser@1.8.14': + '@formatjs/icu-skeleton-parser@1.8.16': dependencies: - '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/ecma402-abstract': 2.3.6 tslib: 2.8.1 - '@formatjs/intl-localematcher@0.6.1': + '@formatjs/intl-localematcher@0.6.2': dependencies: tslib: 2.8.1 - '@formatjs/intl@3.1.6(typescript@4.9.5)': + '@formatjs/intl@3.1.8(typescript@4.9.5)': dependencies: - '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/ecma402-abstract': 2.3.6 '@formatjs/fast-memoize': 2.2.7 - '@formatjs/icu-messageformat-parser': 2.11.2 - intl-messageformat: 10.7.16 + '@formatjs/icu-messageformat-parser': 2.11.4 + intl-messageformat: 10.7.18 tslib: 2.8.1 optionalDependencies: typescript: 4.9.5 - '@formatjs/intl@3.1.6(typescript@5.8.3)': + '@formatjs/intl@3.1.8(typescript@5.8.3)': dependencies: - '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/ecma402-abstract': 2.3.6 '@formatjs/fast-memoize': 2.2.7 - '@formatjs/icu-messageformat-parser': 2.11.2 - intl-messageformat: 10.7.16 + '@formatjs/icu-messageformat-parser': 2.11.4 + intl-messageformat: 10.7.18 tslib: 2.8.1 optionalDependencies: typescript: 5.8.3 @@ -24867,23 +26476,23 @@ snapshots: '@github/markdown-toolbar-element@2.2.3': {} - '@graphiql/react@0.26.2(@codemirror/language@6.11.2)(@types/node@22.15.35)(@types/react-dom@18.2.0)(@types/react@18.2.0)(graphql@16.11.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@graphiql/react@0.26.2(@codemirror/language@6.11.3)(@types/node@22.15.35)(@types/react-dom@18.2.0)(@types/react@18.2.0)(graphql@16.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@graphiql/toolkit': 0.11.3(@types/node@22.15.35)(graphql@16.11.0) + '@graphiql/toolkit': 0.11.3(@types/node@22.15.35)(graphql@16.12.0) '@headlessui/react': 1.7.19(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-dialog': 1.1.14(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-dropdown-menu': 2.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-tooltip': 1.2.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@types/codemirror': 5.60.16 + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.2.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/codemirror': 5.60.17 clsx: 1.2.1 - codemirror: 5.65.19 - codemirror-graphql: 2.2.4(@codemirror/language@6.11.2)(codemirror@5.65.19)(graphql@16.11.0) + codemirror: 5.65.20 + codemirror-graphql: 2.2.4(@codemirror/language@6.11.3)(codemirror@5.65.20)(graphql@16.12.0) copy-to-clipboard: 3.3.3 framer-motion: 6.5.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) get-value: 3.0.1 - graphql: 16.11.0 - graphql-language-service: 5.5.0(graphql@16.11.0) + graphql: 16.12.0 + graphql-language-service: 5.5.0(graphql@16.12.0) markdown-it: 14.1.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -24895,11 +26504,11 @@ snapshots: - '@types/react-dom' - graphql-ws - '@graphiql/toolkit@0.11.3(@types/node@22.15.35)(graphql@16.11.0)': + '@graphiql/toolkit@0.11.3(@types/node@22.15.35)(graphql@16.12.0)': dependencies: '@n1ru4l/push-pull-async-iterable-iterator': 3.2.0 - graphql: 16.11.0 - meros: 1.3.1(@types/node@22.15.35) + graphql: 16.12.0 + meros: 1.3.2(@types/node@22.15.35) transitivePeerDependencies: - '@types/node' @@ -24923,15 +26532,15 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@headlessui/react@2.2.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@headlessui/react@2.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@floating-ui/react': 0.26.28(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/focus': 3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/interactions': 3.25.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/focus': 3.21.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/interactions': 3.25.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@tanstack/react-virtual': 3.13.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - use-sync-external-store: 1.5.0(react@18.2.0) + use-sync-external-store: 1.6.0(react@18.2.0) '@hookform/resolvers@2.9.11(react-hook-form@7.56.4(react@18.2.0))': dependencies: @@ -24946,6 +26555,11 @@ snapshots: '@standard-schema/utils': 0.3.0 react-hook-form: 7.56.4(react@18.2.0) + '@hookform/resolvers@5.2.2(react-hook-form@7.56.4(react@18.2.0))': + dependencies: + '@standard-schema/utils': 0.3.0 + react-hook-form: 7.56.4(react@18.2.0) + '@hookform/resolvers@5.2.2(react-hook-form@7.63.0(react@18.2.0))': dependencies: '@standard-schema/utils': 0.3.0 @@ -24953,15 +26567,15 @@ snapshots: '@humanfs/core@0.19.1': {} - '@humanfs/node@0.16.6': + '@humanfs/node@0.16.7': dependencies: '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.3 '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -24970,8 +26584,6 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@humanwhocodes/retry@0.3.1': {} - '@humanwhocodes/retry@0.4.3': {} '@iarna/toml@2.2.5': {} @@ -24986,7 +26598,7 @@ snapshots: dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -24996,7 +26608,7 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.14.1 + js-yaml: 4.1.1 resolve-from: 5.0.0 '@istanbuljs/schema@0.1.3': {} @@ -25018,6 +26630,15 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 + '@jest/console@30.2.0': + dependencies: + '@jest/types': 30.2.0 + '@types/node': 22.15.35 + chalk: 4.1.2 + jest-message-util: 30.2.0 + jest-util: 30.2.0 + slash: 3.0.0 + '@jest/core@25.5.4': dependencies: '@jest/console': 25.5.0 @@ -25054,7 +26675,7 @@ snapshots: - supports-color - utf-8-validate - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -25068,7 +26689,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0) + jest-config: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -25089,6 +26710,44 @@ snapshots: - supports-color - ts-node + '@jest/core@30.2.0(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3))': + dependencies: + '@jest/console': 30.2.0 + '@jest/pattern': 30.0.1 + '@jest/reporters': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.15.35 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 4.3.1 + exit-x: 0.2.2 + graceful-fs: 4.2.11 + jest-changed-files: 30.2.0 + jest-config: 30.2.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) + jest-haste-map: 30.2.0 + jest-message-util: 30.2.0 + jest-regex-util: 30.0.1 + jest-resolve: 30.2.0 + jest-resolve-dependencies: 30.2.0 + jest-runner: 30.2.0 + jest-runtime: 30.2.0 + jest-snapshot: 30.2.0 + jest-util: 30.2.0 + jest-validate: 30.2.0 + jest-watcher: 30.2.0 + micromatch: 4.0.8 + pretty-format: 30.2.0 + slash: 3.0.0 + transitivePeerDependencies: + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + + '@jest/diff-sequences@30.0.1': {} + '@jest/environment@25.5.0': dependencies: '@jest/fake-timers': 25.5.0 @@ -25102,10 +26761,21 @@ snapshots: '@types/node': 22.15.35 jest-mock: 29.7.0 + '@jest/environment@30.2.0': + dependencies: + '@jest/fake-timers': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.15.35 + jest-mock: 30.2.0 + '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 + '@jest/expect-utils@30.2.0': + dependencies: + '@jest/get-type': 30.1.0 + '@jest/expect@29.7.0': dependencies: expect: 29.7.0 @@ -25113,6 +26783,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/expect@30.2.0': + dependencies: + expect: 30.2.0 + jest-snapshot: 30.2.0 + transitivePeerDependencies: + - supports-color + '@jest/fake-timers@25.5.0': dependencies: '@jest/types': 25.5.0 @@ -25130,6 +26807,17 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 + '@jest/fake-timers@30.2.0': + dependencies: + '@jest/types': 30.2.0 + '@sinonjs/fake-timers': 13.0.5 + '@types/node': 22.15.35 + jest-message-util: 30.2.0 + jest-mock: 30.2.0 + jest-util: 30.2.0 + + '@jest/get-type@30.1.0': {} + '@jest/globals@25.5.2': dependencies: '@jest/environment': 25.5.0 @@ -25145,6 +26833,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/globals@30.2.0': + dependencies: + '@jest/environment': 30.2.0 + '@jest/expect': 30.2.0 + '@jest/types': 30.2.0 + jest-mock: 30.2.0 + transitivePeerDependencies: + - supports-color + + '@jest/pattern@30.0.1': + dependencies: + '@types/node': 22.15.35 + jest-regex-util: 30.0.1 + '@jest/reporters@25.5.1': dependencies: '@bcoe/v8-coverage': 0.2.3 @@ -25153,7 +26855,7 @@ snapshots: '@jest/transform': 25.5.1 '@jest/types': 25.5.0 chalk: 3.0.0 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -25161,7 +26863,7 @@ snapshots: istanbul-lib-instrument: 4.0.3 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 + istanbul-reports: 3.2.0 jest-haste-map: 25.5.1 jest-resolve: 25.5.1 jest-util: 25.5.0 @@ -25183,10 +26885,10 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 '@types/node': 22.15.35 chalk: 4.1.2 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -25194,7 +26896,7 @@ snapshots: istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 + istanbul-reports: 3.2.0 jest-message-util: 29.7.0 jest-util: 29.7.0 jest-worker: 29.7.0 @@ -25205,10 +26907,49 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/reporters@30.2.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 22.15.35 + chalk: 4.1.2 + collect-v8-coverage: 1.0.3 + exit-x: 0.2.2 + glob: 10.5.0 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.2.0 + jest-message-util: 30.2.0 + jest-util: 30.2.0 + jest-worker: 30.2.0 + slash: 3.0.0 + string-length: 4.0.2 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 + '@jest/schemas@30.0.5': + dependencies: + '@sinclair/typebox': 0.34.41 + + '@jest/snapshot-utils@30.2.0': + dependencies: + '@jest/types': 30.2.0 + chalk: 4.1.2 + graceful-fs: 4.2.11 + natural-compare: 1.4.0 + '@jest/source-map@25.5.0': dependencies: callsites: 3.1.0 @@ -25217,7 +26958,13 @@ snapshots: '@jest/source-map@29.6.3': dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/source-map@30.0.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.31 callsites: 3.1.0 graceful-fs: 4.2.11 @@ -25226,14 +26973,21 @@ snapshots: '@jest/console': 25.5.0 '@jest/types': 25.5.0 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 '@jest/test-result@29.7.0': dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 + + '@jest/test-result@30.2.0': + dependencies: + '@jest/console': 30.2.0 + '@jest/types': 30.2.0 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.3 '@jest/test-sequencer@25.5.4': dependencies: @@ -25255,6 +27009,13 @@ snapshots: jest-haste-map: 29.7.0 slash: 3.0.0 + '@jest/test-sequencer@30.2.0': + dependencies: + '@jest/test-result': 30.2.0 + graceful-fs: 4.2.11 + jest-haste-map: 30.2.0 + slash: 3.0.0 + '@jest/transform@25.5.1': dependencies: '@babel/core': 7.27.7 @@ -25300,7 +27061,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -25316,11 +27077,31 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/transform@30.2.0': + dependencies: + '@babel/core': 7.27.7 + '@jest/types': 30.2.0 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 7.0.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 30.2.0 + jest-regex-util: 30.0.1 + jest-util: 30.2.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + '@jest/types@25.5.0': dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 1.1.2 - '@types/yargs': 15.0.19 + '@types/yargs': 15.0.20 chalk: 3.0.0 '@jest/types@26.6.2': @@ -25328,7 +27109,7 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 22.15.35 - '@types/yargs': 15.0.19 + '@types/yargs': 15.0.20 chalk: 4.1.2 '@jest/types@29.6.3': @@ -25337,35 +27118,55 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 22.15.35 - '@types/yargs': 17.0.33 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + + '@jest/types@30.2.0': + dependencies: + '@jest/pattern': 30.0.1 + '@jest/schemas': 30.0.5 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.15.35 + '@types/yargs': 17.0.35 chalk: 4.1.2 '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.8.3)': dependencies: - glob: 10.4.5 - magic-string: 0.30.17 + glob: 10.5.0 + magic-string: 0.30.21 react-docgen-typescript: 2.4.0(typescript@5.8.3) optionalDependencies: typescript: 5.8.3 - '@jridgewell/gen-mapping@0.3.12': + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/source-map@0.3.10': + '@jridgewell/source-map@0.3.11': dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/sourcemap-codec@1.5.4': {} + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping@0.3.29': + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 '@jsdevtools/ono@7.1.3': {} @@ -25373,7 +27174,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/buffers@1.0.0(tslib@2.8.1)': + '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -25381,29 +27182,39 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/json-pack@1.8.0(tslib@2.8.1)': + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': dependencies: '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/json-pointer': 1.0.1(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) hyperdyperid: 1.2.0 - thingies: 1.21.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/json-pointer@1.0.1(tslib@2.8.1)': + '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': dependencies: + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) tslib: 2.8.1 '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': dependencies: - '@jsonjoy.com/buffers': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) tslib: 2.8.1 '@juggle/resize-observer@3.4.0': {} - '@keyv/serialize@1.1.0': {} + '@keyv/bigmap@1.3.0(keyv@5.5.4)': + dependencies: + hashery: 1.2.0 + hookified: 1.13.0 + keyv: 5.5.4 + + '@keyv/serialize@1.1.1': {} '@leichtgewicht/ip-codec@2.0.5': {} @@ -25551,98 +27362,98 @@ snapshots: '@lexical/offset': 0.17.1 lexical: 0.17.1 - '@lezer/common@1.2.3': {} + '@lezer/common@1.3.0': {} '@lezer/cpp@1.1.3': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@lezer/css@1.3.0': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@lezer/go@1.0.1': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 - '@lezer/highlight@1.2.1': + '@lezer/highlight@1.2.3': dependencies: - '@lezer/common': 1.2.3 + '@lezer/common': 1.3.0 '@lezer/html@1.3.12': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@lezer/java@1.1.3': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@lezer/javascript@1.5.4': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@lezer/json@1.0.3': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 - '@lezer/lr@1.4.2': + '@lezer/lr@1.4.3': dependencies: - '@lezer/common': 1.2.3 + '@lezer/common': 1.3.0 - '@lezer/markdown@1.4.3': + '@lezer/markdown@1.6.0': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 '@lezer/php@1.0.5': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@lezer/python@1.1.18': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@lezer/rust@1.0.2': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@lezer/sass@1.1.0': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@lezer/xml@1.0.6': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@lezer/yaml@1.0.3': dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/common': 1.3.0 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.3 '@marijn/find-cluster-break@1.0.2': {} @@ -25686,7 +27497,7 @@ snapshots: '@types/react': 18.2.0 react: 19.1.0 - '@mdx-js/react@3.1.0(@types/react@18.2.0)(react@19.1.0)': + '@mdx-js/react@3.1.1(@types/react@18.2.0)(react@19.1.0)': dependencies: '@types/mdx': 2.0.13 '@types/react': 18.2.0 @@ -25694,13 +27505,13 @@ snapshots: '@mdx-js/util@1.6.22': {} - '@mdxeditor/editor@3.14.0(@codemirror/language@6.11.2)(@lezer/highlight@1.2.1)(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@mdxeditor/editor@3.14.0(@codemirror/language@6.11.3)(@lezer/highlight@1.2.3)(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@codemirror/lang-markdown': 6.4.0 - '@codemirror/language-data': 6.5.1 - '@codemirror/merge': 6.11.0 + '@codemirror/lang-markdown': 6.5.0 + '@codemirror/language-data': 6.5.2 + '@codemirror/merge': 6.11.2 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.8 '@codesandbox/sandpack-react': 2.20.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@lexical/clipboard': 0.17.1 '@lexical/link': 0.17.1 @@ -25713,18 +27524,18 @@ snapshots: '@lexical/utils': 0.17.1 '@mdxeditor/gurx': 1.2.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/colors': 3.0.0 - '@radix-ui/react-dialog': 1.1.14(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-icons': 1.3.2(react@18.2.0) '@radix-ui/react-popover': 1.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-select': 2.2.6(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-toggle-group': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-toolbar': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-tooltip': 1.2.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) classnames: 2.5.1 - cm6-theme-basic-light: 0.2.0(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)(@lezer/highlight@1.2.1) + cm6-theme-basic-light: 0.2.0(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/highlight@1.2.3) codemirror: 6.0.2 downshift: 7.6.2(react@18.2.0) - js-yaml: 4.1.0 + js-yaml: 4.1.1 lexical: 0.17.1 mdast-util-directive: 3.1.0 mdast-util-from-markdown: 2.0.2 @@ -25763,9 +27574,9 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@microsoft/1ds-core-js@4.3.9(tslib@2.8.1)': + '@microsoft/1ds-core-js@4.3.10(tslib@2.8.1)': dependencies: - '@microsoft/applicationinsights-core-js': 3.3.9(tslib@2.8.1) + '@microsoft/applicationinsights-core-js': 3.3.10(tslib@2.8.1) '@microsoft/applicationinsights-shims': 3.0.1 '@microsoft/dynamicproto-js': 2.0.3 '@nevware21/ts-async': 0.5.4 @@ -25773,9 +27584,9 @@ snapshots: transitivePeerDependencies: - tslib - '@microsoft/1ds-post-js@4.3.9(tslib@2.8.1)': + '@microsoft/1ds-post-js@4.3.10(tslib@2.8.1)': dependencies: - '@microsoft/1ds-core-js': 4.3.9(tslib@2.8.1) + '@microsoft/1ds-core-js': 4.3.10(tslib@2.8.1) '@microsoft/applicationinsights-shims': 3.0.1 '@microsoft/dynamicproto-js': 2.0.3 '@nevware21/ts-async': 0.5.4 @@ -25783,25 +27594,25 @@ snapshots: transitivePeerDependencies: - tslib - '@microsoft/applicationinsights-channel-js@3.3.9(tslib@2.8.1)': + '@microsoft/applicationinsights-channel-js@3.3.10(tslib@2.8.1)': dependencies: - '@microsoft/applicationinsights-common': 3.3.9(tslib@2.8.1) - '@microsoft/applicationinsights-core-js': 3.3.9(tslib@2.8.1) + '@microsoft/applicationinsights-common': 3.3.10(tslib@2.8.1) + '@microsoft/applicationinsights-core-js': 3.3.10(tslib@2.8.1) '@microsoft/applicationinsights-shims': 3.0.1 '@microsoft/dynamicproto-js': 2.0.3 '@nevware21/ts-async': 0.5.4 '@nevware21/ts-utils': 0.12.5 tslib: 2.8.1 - '@microsoft/applicationinsights-common@3.3.9(tslib@2.8.1)': + '@microsoft/applicationinsights-common@3.3.10(tslib@2.8.1)': dependencies: - '@microsoft/applicationinsights-core-js': 3.3.9(tslib@2.8.1) + '@microsoft/applicationinsights-core-js': 3.3.10(tslib@2.8.1) '@microsoft/applicationinsights-shims': 3.0.1 '@microsoft/dynamicproto-js': 2.0.3 '@nevware21/ts-utils': 0.12.5 tslib: 2.8.1 - '@microsoft/applicationinsights-core-js@3.3.9(tslib@2.8.1)': + '@microsoft/applicationinsights-core-js@3.3.10(tslib@2.8.1)': dependencies: '@microsoft/applicationinsights-shims': 3.0.1 '@microsoft/dynamicproto-js': 2.0.3 @@ -25813,11 +27624,11 @@ snapshots: dependencies: '@nevware21/ts-utils': 0.12.5 - '@microsoft/applicationinsights-web-basic@3.3.9(tslib@2.8.1)': + '@microsoft/applicationinsights-web-basic@3.3.10(tslib@2.8.1)': dependencies: - '@microsoft/applicationinsights-channel-js': 3.3.9(tslib@2.8.1) - '@microsoft/applicationinsights-common': 3.3.9(tslib@2.8.1) - '@microsoft/applicationinsights-core-js': 3.3.9(tslib@2.8.1) + '@microsoft/applicationinsights-channel-js': 3.3.10(tslib@2.8.1) + '@microsoft/applicationinsights-common': 3.3.10(tslib@2.8.1) + '@microsoft/applicationinsights-core-js': 3.3.10(tslib@2.8.1) '@microsoft/applicationinsights-shims': 3.0.1 '@microsoft/dynamicproto-js': 2.0.3 '@nevware21/ts-async': 0.5.4 @@ -25853,9 +27664,92 @@ snapshots: dependencies: exenv-es6: 1.1.1 - '@modelcontextprotocol/sdk@1.17.1': + '@modelcontextprotocol/inspector-cli@0.17.2': + dependencies: + '@modelcontextprotocol/sdk': 1.22.0 + commander: 13.1.0 + spawn-rx: 5.1.2 + transitivePeerDependencies: + - '@cfworker/json-schema' + - supports-color + + '@modelcontextprotocol/inspector-client@0.17.2(@types/react-dom@18.2.0)(@types/react@18.2.0)': dependencies: + '@modelcontextprotocol/sdk': 1.22.0 + '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-icons': 1.3.2(react@18.3.1) + '@radix-ui/react-label': 2.1.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': 2.2.6(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.4(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-switch': 1.2.6(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-toast': 1.2.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ajv: 6.12.6 + class-variance-authority: 0.7.1 + clsx: 2.1.1 + cmdk: 1.1.1(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + lucide-react: 0.523.0(react@18.3.1) + pkce-challenge: 4.1.0 + prismjs: 1.30.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-simple-code-editor: 0.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + serve-handler: 6.1.6 + tailwind-merge: 2.6.0 + zod: 3.25.76 + transitivePeerDependencies: + - '@cfworker/json-schema' + - '@types/react' + - '@types/react-dom' + - supports-color + + '@modelcontextprotocol/inspector-server@0.17.2': + dependencies: + '@modelcontextprotocol/sdk': 1.22.0 + cors: 2.8.5 + express: 5.1.0 + shell-quote: 1.8.3 + spawn-rx: 5.1.2 + ws: 8.18.3 + zod: 3.25.76 + transitivePeerDependencies: + - '@cfworker/json-schema' + - bufferutil + - supports-color + - utf-8-validate + + '@modelcontextprotocol/inspector@0.17.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.18)(@types/react-dom@18.2.0)(@types/react@18.2.0)(typescript@5.8.3)': + dependencies: + '@modelcontextprotocol/inspector-cli': 0.17.2 + '@modelcontextprotocol/inspector-client': 0.17.2(@types/react-dom@18.2.0)(@types/react@18.2.0) + '@modelcontextprotocol/inspector-server': 0.17.2 + '@modelcontextprotocol/sdk': 1.22.0 + concurrently: 9.2.1 + node-fetch: 3.3.2 + open: 10.2.0 + shell-quote: 1.8.3 + spawn-rx: 5.1.2 + ts-node: 10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.18)(typescript@5.8.3) + zod: 3.25.76 + transitivePeerDependencies: + - '@cfworker/json-schema' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - bufferutil + - supports-color + - typescript + - utf-8-validate + + '@modelcontextprotocol/sdk@1.22.0': + dependencies: + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) content-type: 1.0.5 cors: 2.8.5 cross-spawn: 7.0.6 @@ -25864,26 +27758,26 @@ snapshots: express: 5.1.0 express-rate-limit: 7.5.1(express@5.1.0) pkce-challenge: 5.0.0 - raw-body: 3.0.0 + raw-body: 3.0.1 zod: 3.25.76 zod-to-json-schema: 3.24.6(zod@3.25.76) transitivePeerDependencies: - supports-color - '@monaco-editor/loader@1.5.0': + '@monaco-editor/loader@1.6.1': dependencies: state-local: 1.0.7 '@monaco-editor/react@4.7.0(monaco-editor@0.52.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@monaco-editor/loader': 1.5.0 + '@monaco-editor/loader': 1.6.1 monaco-editor: 0.52.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) '@monaco-editor/react@4.7.0(monaco-editor@0.52.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@monaco-editor/loader': 1.5.0 + '@monaco-editor/loader': 1.6.1 monaco-editor: 0.52.2 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -25930,12 +27824,20 @@ snapshots: '@n1ru4l/push-pull-async-iterable-iterator@3.2.0': {} + '@napi-rs/wasm-runtime@0.2.12': + dependencies: + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 + '@tybys/wasm-util': 0.10.1 + optional: true + '@ndelangen/get-tarball@3.0.9': dependencies: gunzip-maybe: 1.4.2 pump: 3.0.3 tar-fs: 3.1.1 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - react-native-b4a @@ -25962,12 +27864,12 @@ snapshots: '@npmcli/fs@1.1.1': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.2 + semver: 7.7.3 '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.2 + semver: 7.7.3 '@npmcli/move-file@1.1.2': dependencies: @@ -26064,92 +27966,111 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@pkgr/core@0.2.9': {} + '@playwright/test@1.55.1': dependencies: playwright: 1.55.1 - '@pmmmwh/react-refresh-webpack-plugin@0.5.17(@types/webpack@5.28.5(webpack-cli@4.10.0))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.101.0)': + '@pmmmwh/react-refresh-webpack-plugin@0.5.17(@types/webpack@5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.103.0)': dependencies: ansi-html: 0.0.9 - core-js-pure: 3.45.0 + core-js-pure: 3.47.0 error-stack-parser: 2.1.4 html-entities: 2.6.0 loader-utils: 2.0.4 react-refresh: 0.11.0 - schema-utils: 4.3.2 + schema-utils: 4.3.3 source-map: 0.7.6 - webpack: 5.101.0(webpack-cli@4.10.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) optionalDependencies: - '@types/webpack': 5.28.5(webpack-cli@4.10.0) + '@types/webpack': 5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) type-fest: 4.41.0 - webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.101.0) + webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.103.0) webpack-hot-middleware: 2.26.1 - '@pmmmwh/react-refresh-webpack-plugin@0.5.17(@types/webpack@5.28.5(webpack-cli@5.1.4))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.101.0)': + '@pmmmwh/react-refresh-webpack-plugin@0.5.17(@types/webpack@5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17)))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)))': dependencies: ansi-html: 0.0.9 - core-js-pure: 3.45.0 + core-js-pure: 3.47.0 error-stack-parser: 2.1.4 html-entities: 2.6.0 loader-utils: 2.0.4 react-refresh: 0.11.0 - schema-utils: 4.3.2 + schema-utils: 4.3.3 source-map: 0.7.6 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) optionalDependencies: - '@types/webpack': 5.28.5(webpack-cli@5.1.4) + '@types/webpack': 5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17)) type-fest: 4.41.0 - webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.101.0) + webpack-dev-server: 5.2.2(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) webpack-hot-middleware: 2.26.1 - '@pmmmwh/react-refresh-webpack-plugin@0.5.17(@types/webpack@5.28.5(webpack-cli@6.0.1))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.101.0)': + '@pmmmwh/react-refresh-webpack-plugin@0.5.17(@types/webpack@5.28.5(webpack-cli@4.10.0))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.103.0)': dependencies: ansi-html: 0.0.9 - core-js-pure: 3.45.0 + core-js-pure: 3.47.0 error-stack-parser: 2.1.4 html-entities: 2.6.0 loader-utils: 2.0.4 react-refresh: 0.11.0 - schema-utils: 4.3.2 + schema-utils: 4.3.3 source-map: 0.7.6 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(webpack-cli@4.10.0) optionalDependencies: - '@types/webpack': 5.28.5(webpack-cli@6.0.1) + '@types/webpack': 5.28.5(webpack-cli@4.10.0) type-fest: 4.41.0 - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) + webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.103.0) webpack-hot-middleware: 2.26.1 - '@pmmmwh/react-refresh-webpack-plugin@0.5.17(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1)(webpack@5.101.0)': + '@pmmmwh/react-refresh-webpack-plugin@0.5.17(@types/webpack@5.28.5(webpack-cli@5.1.4))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.103.0)': dependencies: ansi-html: 0.0.9 - core-js-pure: 3.45.0 + core-js-pure: 3.47.0 error-stack-parser: 2.1.4 html-entities: 2.6.0 loader-utils: 2.0.4 react-refresh: 0.11.0 - schema-utils: 4.3.2 + schema-utils: 4.3.3 source-map: 0.7.6 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) + optionalDependencies: + '@types/webpack': 5.28.5(webpack-cli@5.1.4) + type-fest: 4.41.0 + webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.103.0) + webpack-hot-middleware: 2.26.1 + + '@pmmmwh/react-refresh-webpack-plugin@0.5.17(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.103.0))(webpack-hot-middleware@2.26.1)(webpack@5.103.0)': + dependencies: + ansi-html: 0.0.9 + core-js-pure: 3.47.0 + error-stack-parser: 2.1.4 + html-entities: 2.6.0 + loader-utils: 2.0.4 + react-refresh: 0.11.0 + schema-utils: 4.3.3 + source-map: 0.7.6 + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: '@types/webpack': 5.28.5 type-fest: 4.41.0 - webpack-dev-server: 5.2.2(webpack@5.101.0) + webpack-dev-server: 5.2.2(webpack@5.103.0) webpack-hot-middleware: 2.26.1 - '@pmmmwh/react-refresh-webpack-plugin@0.6.1(@types/webpack@5.28.5(webpack-cli@5.1.4))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.101.0)': + '@pmmmwh/react-refresh-webpack-plugin@0.6.1(@types/webpack@5.28.5(webpack-cli@5.1.4))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.103.0)': dependencies: - anser: 2.3.2 - core-js-pure: 3.45.0 + anser: 2.3.3 + core-js-pure: 3.47.0 error-stack-parser: 2.1.4 html-entities: 2.6.0 react-refresh: 0.11.0 - schema-utils: 4.3.2 + schema-utils: 4.3.3 source-map: 0.7.6 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: '@types/webpack': 5.28.5(webpack-cli@5.1.4) type-fest: 4.41.0 - webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.101.0) + webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.103.0) webpack-hot-middleware: 2.26.1 '@projectstorm/geometry@6.7.4': {} @@ -26343,25 +28264,46 @@ snapshots: - '@types/react' - supports-color + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + '@radix-ui/colors@3.0.0': {} '@radix-ui/number@1.0.1': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/number@1.1.1': {} '@radix-ui/primitive@1.0.1': dependencies: - '@babel/runtime': 7.28.2 - - '@radix-ui/primitive@1.1.2': {} + '@babel/runtime': 7.28.4 '@radix-ui/primitive@1.1.3': {} '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -26371,7 +28313,7 @@ snapshots: '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -26388,9 +28330,34 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 + '@radix-ui/react-arrow@1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(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) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + + '@radix-ui/react-checkbox@1.3.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + '@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -26403,7 +28370,7 @@ snapshots: '@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.0)(react@19.1.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.0)(react@19.1.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -26426,6 +28393,18 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 + '@radix-ui/react-collection@1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + '@radix-ui/react-collection@1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@19.1.0) @@ -26440,14 +28419,14 @@ snapshots: '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 18.2.0 optionalDependencies: '@types/react': 18.2.0 '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 @@ -26458,6 +28437,12 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-compose-refs@1.1.2(@types/react@18.2.0)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-compose-refs@1.1.2(@types/react@18.2.0)(react@19.1.0)': dependencies: react: 19.1.0 @@ -26466,14 +28451,14 @@ snapshots: '@radix-ui/react-context@1.0.1(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 18.2.0 optionalDependencies: '@types/react': 18.2.0 '@radix-ui/react-context@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 @@ -26484,23 +28469,29 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-context@1.1.2(@types/react@18.2.0)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-context@1.1.2(@types/react@18.2.0)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 - '@radix-ui/react-dialog@1.1.14(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-dialog@1.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-id': 1.1.1(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-slot': 1.2.3(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.2.0) @@ -26512,16 +28503,38 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 + '@radix-ui/react-dialog@1.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.3.1) + aria-hidden: 1.2.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.7.1(@types/react@18.2.0)(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + '@radix-ui/react-direction@1.0.1(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 18.2.0 optionalDependencies: '@types/react': 18.2.0 '@radix-ui/react-direction@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 @@ -26532,6 +28545,12 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-direction@1.1.1(@types/react@18.2.0)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-direction@1.1.1(@types/react@18.2.0)(react@19.1.0)': dependencies: react: 19.1.0 @@ -26540,7 +28559,7 @@ snapshots: '@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -26554,7 +28573,7 @@ snapshots: '@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.0)(react@19.1.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -26566,9 +28585,9 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-dismissable-layer@1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.0)(react@18.2.0) @@ -26579,26 +28598,26 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-dropdown-menu@2.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-id': 1.1.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-menu': 2.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.2.0) react: 18.2.0 @@ -26609,33 +28628,33 @@ snapshots: '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 18.2.0 optionalDependencies: '@types/react': 18.2.0 '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 - '@radix-ui/react-focus-guards@1.1.2(@types/react@18.2.0)(react@18.2.0)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@18.2.0)(react@18.2.0)': dependencies: react: 18.2.0 optionalDependencies: '@types/react': 18.2.0 - '@radix-ui/react-focus-guards@1.1.3(@types/react@18.2.0)(react@18.2.0)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@18.2.0)(react@18.3.1)': dependencies: - react: 18.2.0 + react: 18.3.1 optionalDependencies: '@types/react': 18.2.0 '@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.0)(react@18.2.0) @@ -26647,7 +28666,7 @@ snapshots: '@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.0)(react@19.1.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.0)(react@19.1.0) @@ -26668,13 +28687,28 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + '@radix-ui/react-icons@1.3.2(react@18.2.0)': dependencies: react: 18.2.0 + '@radix-ui/react-icons@1.3.2(react@18.3.1)': + dependencies: + react: 18.3.1 + '@radix-ui/react-id@1.0.1(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.0)(react@18.2.0) react: 18.2.0 optionalDependencies: @@ -26682,7 +28716,7 @@ snapshots: '@radix-ui/react-id@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 optionalDependencies: @@ -26695,6 +28729,13 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-id@1.1.1(@types/react@18.2.0)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-id@1.1.1(@types/react@18.2.0)(react@19.1.0)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@19.1.0) @@ -26702,22 +28743,31 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 - '@radix-ui/react-menu@2.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-label@2.1.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(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) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + + '@radix-ui/react-menu@2.1.16(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-direction': 1.1.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-id': 1.1.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-popper': 1.2.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-slot': 1.2.3(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.0)(react@18.2.0) aria-hidden: 1.2.6 @@ -26751,10 +28801,33 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 + '@radix-ui/react-popover@1.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.3.1) + aria-hidden: 1.2.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.7.1(@types/react@18.2.0)(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + '@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 - '@floating-ui/react-dom': 2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@babel/runtime': 7.28.4 + '@floating-ui/react-dom': 2.1.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.0)(react@18.2.0) @@ -26772,8 +28845,8 @@ snapshots: '@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 - '@floating-ui/react-dom': 2.1.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@babel/runtime': 7.28.4 + '@floating-ui/react-dom': 2.1.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.0)(react@19.1.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.0)(react@19.1.0) @@ -26789,9 +28862,9 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-popper@1.2.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-popper@1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@floating-ui/react-dom': 2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@floating-ui/react-dom': 2.1.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.2.0) @@ -26807,27 +28880,27 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-popper@1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@floating-ui/react-dom': 2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-use-rect': 1.1.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@18.2.0)(react@18.2.0) + '@radix-ui/react-popper@1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.2.0)(react@18.3.1) '@radix-ui/rect': 1.1.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 '@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -26837,7 +28910,7 @@ snapshots: '@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -26855,12 +28928,12 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-presence@1.1.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 @@ -26875,9 +28948,19 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 + '@radix-ui/react-presence@1.1.5(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-slot': 1.0.2(@types/react@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -26887,7 +28970,7 @@ snapshots: '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-slot': 1.0.2(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -26904,6 +28987,15 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 + '@radix-ui/react-primitive@2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + '@radix-ui/react-primitive@2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-slot': 1.2.3(@types/react@18.2.0)(react@19.1.0) @@ -26913,9 +29005,27 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-roving-focus@1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-primitive@2.1.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-slot': 1.2.4(@types/react@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + + '@radix-ui/react-primitive@2.1.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.2.4(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.2.0) @@ -26930,9 +29040,26 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-roving-focus@1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@19.1.0) '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@19.1.0) @@ -26949,7 +29076,7 @@ snapshots: '@radix-ui/react-select@1.2.2(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -26979,7 +29106,7 @@ snapshots: '@radix-ui/react-select@1.2.2(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -27036,6 +29163,35 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 + '@radix-ui/react-select@2.2.6(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.7.1(@types/react@18.2.0)(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + '@radix-ui/react-separator@1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -27056,7 +29212,7 @@ snapshots: '@radix-ui/react-slot@1.0.2(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.0)(react@18.2.0) react: 18.2.0 optionalDependencies: @@ -27064,7 +29220,7 @@ snapshots: '@radix-ui/react-slot@1.0.2(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 optionalDependencies: @@ -27077,6 +29233,13 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-slot@1.2.3(@types/react@18.2.0)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-slot@1.2.3(@types/react@18.2.0)(react@19.1.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@19.1.0) @@ -27084,14 +29247,79 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 - '@radix-ui/react-toggle-group@1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-slot@1.2.4(@types/react@18.2.0)(react@18.2.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.0 + + '@radix-ui/react-slot@1.2.4(@types/react@18.2.0)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + + '@radix-ui/react-switch@1.2.6(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + + '@radix-ui/react-tabs@1.1.13(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + + '@radix-ui/react-toast@1.2.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(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) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + + '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-direction': 1.1.1(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-toggle': 1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -27099,14 +29327,14 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-toggle-group@1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@19.1.0) '@radix-ui/react-direction': 1.1.1(@types/react@18.2.0)(react@19.1.0) '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-toggle': 1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -27114,9 +29342,9 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-toggle@1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-toggle@1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.2.0) react: 18.2.0 @@ -27125,9 +29353,9 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-toggle@1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-toggle@1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 @@ -27136,46 +29364,46 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-toolbar@1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-toolbar@1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-direction': 1.1.1(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-separator': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-toggle-group': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-toolbar@1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-toolbar@1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@19.1.0) '@radix-ui/react-direction': 1.1.1(@types/react@18.2.0)(react@19.1.0) '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-separator': 1.1.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-toggle-group': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 - '@radix-ui/react-tooltip@1.2.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@radix-ui/primitive': 1.1.2 + '@radix-ui/primitive': 1.1.3 '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-id': 1.1.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-popper': 1.2.7(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-slot': 1.2.3(@types/react@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.2.0) @@ -27186,16 +29414,36 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(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) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 18.2.0 optionalDependencies: '@types/react': 18.2.0 '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 @@ -27206,6 +29454,12 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.2.0)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.2.0)(react@19.1.0)': dependencies: react: 19.1.0 @@ -27214,7 +29468,7 @@ snapshots: '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.0)(react@18.2.0) react: 18.2.0 optionalDependencies: @@ -27222,7 +29476,7 @@ snapshots: '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 optionalDependencies: @@ -27236,6 +29490,14 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.2.0)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.2.0)(react@19.1.0)': dependencies: '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.2.0)(react@19.1.0) @@ -27251,6 +29513,13 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.2.0)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.2.0)(react@19.1.0)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@19.1.0) @@ -27260,7 +29529,7 @@ snapshots: '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.0)(react@18.2.0) react: 18.2.0 optionalDependencies: @@ -27268,7 +29537,7 @@ snapshots: '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 optionalDependencies: @@ -27281,16 +29550,23 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.2.0)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 18.2.0 optionalDependencies: '@types/react': 18.2.0 '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 @@ -27301,6 +29577,12 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.2.0)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.2.0)(react@19.1.0)': dependencies: react: 19.1.0 @@ -27309,14 +29591,14 @@ snapshots: '@radix-ui/react-use-previous@1.0.1(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 18.2.0 optionalDependencies: '@types/react': 18.2.0 '@radix-ui/react-use-previous@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 @@ -27327,9 +29609,15 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-use-previous@1.1.1(@types/react@18.2.0)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-use-rect@1.0.1(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/rect': 1.0.1 react: 18.2.0 optionalDependencies: @@ -27337,7 +29625,7 @@ snapshots: '@radix-ui/react-use-rect@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/rect': 1.0.1 react: 19.1.0 optionalDependencies: @@ -27350,9 +29638,16 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-use-rect@1.1.1(@types/react@18.2.0)(react@18.3.1)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-use-size@1.0.1(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.0)(react@18.2.0) react: 18.2.0 optionalDependencies: @@ -27360,7 +29655,7 @@ snapshots: '@radix-ui/react-use-size@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 optionalDependencies: @@ -27373,9 +29668,16 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + '@radix-ui/react-use-size@1.1.1(@types/react@18.2.0)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.2.0 + '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -27385,7 +29687,7 @@ snapshots: '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -27402,28 +29704,46 @@ snapshots: '@types/react': 18.2.0 '@types/react-dom': 18.2.0 + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.2.0)(@types/react@18.2.0)(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) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + + '@radix-ui/react-visually-hidden@1.2.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.0 + '@types/react-dom': 18.2.0 + '@radix-ui/rect@1.0.1': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@radix-ui/rect@1.1.1': {} - '@react-aria/focus@3.21.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@react-aria/focus@3.21.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@react-aria/interactions': 3.25.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.30.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-types/shared': 3.31.0(react@18.2.0) + '@react-aria/interactions': 3.25.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.31.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-types/shared': 3.32.1(react@18.2.0) '@swc/helpers': 0.5.17 clsx: 2.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@react-aria/interactions@3.25.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@react-aria/interactions@3.25.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/ssr': 3.9.10(react@18.2.0) - '@react-aria/utils': 3.30.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.31.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@react-stately/flags': 3.1.2 - '@react-types/shared': 3.31.0(react@18.2.0) + '@react-types/shared': 3.32.1(react@18.2.0) '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -27433,12 +29753,12 @@ snapshots: '@swc/helpers': 0.5.17 react: 18.2.0 - '@react-aria/utils@3.30.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@react-aria/utils@3.31.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@react-aria/ssr': 3.9.10(react@18.2.0) '@react-stately/flags': 3.1.2 '@react-stately/utils': 3.10.8(react@18.2.0) - '@react-types/shared': 3.31.0(react@18.2.0) + '@react-types/shared': 3.32.1(react@18.2.0) '@swc/helpers': 0.5.17 clsx: 2.1.1 react: 18.2.0 @@ -27469,22 +29789,22 @@ snapshots: '@swc/helpers': 0.5.17 react: 18.2.0 - '@react-types/shared@3.31.0(react@18.2.0)': + '@react-types/shared@3.32.1(react@18.2.0)': dependencies: react: 18.2.0 - '@redhat-developer/locators@1.15.0(@redhat-developer/page-objects@1.15.0(selenium-webdriver@4.34.0)(typescript@5.8.3))(selenium-webdriver@4.34.0)': + '@redhat-developer/locators@1.17.0(@redhat-developer/page-objects@1.17.0(selenium-webdriver@4.38.0)(typescript@5.8.3))(selenium-webdriver@4.38.0)': dependencies: - '@redhat-developer/page-objects': 1.15.0(selenium-webdriver@4.34.0)(typescript@5.8.3) - selenium-webdriver: 4.34.0 + '@redhat-developer/page-objects': 1.17.0(selenium-webdriver@4.38.0)(typescript@5.8.3) + selenium-webdriver: 4.38.0 - '@redhat-developer/page-objects@1.15.0(selenium-webdriver@4.34.0)(typescript@5.8.3)': + '@redhat-developer/page-objects@1.17.0(selenium-webdriver@4.38.0)(typescript@5.8.3)': dependencies: - clipboardy: 4.0.0 + clipboardy: 5.0.0 clone-deep: 4.0.1 compare-versions: 6.1.1 - fs-extra: 11.3.1 - selenium-webdriver: 4.34.0 + fs-extra: 11.3.2 + selenium-webdriver: 4.38.0 type-fest: 4.41.0 typescript: 5.8.3 @@ -27507,41 +29827,41 @@ snapshots: glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.25.9 - resolve: 1.22.10 + resolve: 1.22.11 rollup: 1.32.1 - '@rollup/plugin-commonjs@28.0.6(rollup@4.46.2)': + '@rollup/plugin-commonjs@28.0.9(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.6(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.3) is-reference: 1.2.1 - magic-string: 0.30.17 + magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: - rollup: 4.46.2 + rollup: 4.53.2 '@rollup/plugin-json@4.1.0(rollup@1.32.1)': dependencies: '@rollup/pluginutils': 3.1.0(rollup@1.32.1) rollup: 1.32.1 - '@rollup/plugin-json@6.1.0(rollup@4.46.2)': + '@rollup/plugin-json@6.1.0(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) optionalDependencies: - rollup: 4.46.2 + rollup: 4.53.2 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.46.2)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.2)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.10 + resolve: 1.22.11 optionalDependencies: - rollup: 4.46.2 + rollup: 4.53.2 '@rollup/plugin-node-resolve@9.0.0(rollup@1.32.1)': dependencies: @@ -27550,7 +29870,7 @@ snapshots: builtin-modules: 3.3.0 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.10 + resolve: 1.22.11 rollup: 1.32.1 '@rollup/plugin-replace@2.4.2(rollup@1.32.1)': @@ -27571,72 +29891,78 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.2.0(rollup@4.46.2)': + '@rollup/pluginutils@5.3.0(rollup@4.53.2)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.46.2 + rollup: 4.53.2 + + '@rollup/rollup-android-arm-eabi@4.53.2': + optional: true + + '@rollup/rollup-android-arm64@4.53.2': + optional: true - '@rollup/rollup-android-arm-eabi@4.46.2': + '@rollup/rollup-darwin-arm64@4.53.2': optional: true - '@rollup/rollup-android-arm64@4.46.2': + '@rollup/rollup-darwin-x64@4.53.2': optional: true - '@rollup/rollup-darwin-arm64@4.46.2': + '@rollup/rollup-freebsd-arm64@4.53.2': optional: true - '@rollup/rollup-darwin-x64@4.46.2': + '@rollup/rollup-freebsd-x64@4.53.2': optional: true - '@rollup/rollup-freebsd-arm64@4.46.2': + '@rollup/rollup-linux-arm-gnueabihf@4.53.2': optional: true - '@rollup/rollup-freebsd-x64@4.46.2': + '@rollup/rollup-linux-arm-musleabihf@4.53.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.46.2': + '@rollup/rollup-linux-arm64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.46.2': + '@rollup/rollup-linux-arm64-musl@4.53.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.46.2': + '@rollup/rollup-linux-loong64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.46.2': + '@rollup/rollup-linux-ppc64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.46.2': + '@rollup/rollup-linux-riscv64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.46.2': + '@rollup/rollup-linux-riscv64-musl@4.53.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.46.2': + '@rollup/rollup-linux-s390x-gnu@4.53.2': optional: true - '@rollup/rollup-linux-riscv64-musl@4.46.2': + '@rollup/rollup-linux-x64-gnu@4.53.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.46.2': + '@rollup/rollup-linux-x64-musl@4.53.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.46.2': + '@rollup/rollup-openharmony-arm64@4.53.2': optional: true - '@rollup/rollup-linux-x64-musl@4.46.2': + '@rollup/rollup-win32-arm64-msvc@4.53.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.46.2': + '@rollup/rollup-win32-ia32-msvc@4.53.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.46.2': + '@rollup/rollup-win32-x64-gnu@4.53.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.46.2': + '@rollup/rollup-win32-x64-msvc@4.53.2': optional: true '@rtsao/scc@1.1.0': {} @@ -27645,79 +29971,79 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@secretlint/config-creator@9.3.4': + '@secretlint/config-creator@10.2.2': dependencies: - '@secretlint/types': 9.3.4 + '@secretlint/types': 10.2.2 - '@secretlint/config-loader@9.3.4': + '@secretlint/config-loader@10.2.2': dependencies: - '@secretlint/profiler': 9.3.4 - '@secretlint/resolver': 9.3.4 - '@secretlint/types': 9.3.4 + '@secretlint/profiler': 10.2.2 + '@secretlint/resolver': 10.2.2 + '@secretlint/types': 10.2.2 ajv: 8.17.1 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) rc-config-loader: 4.1.3 transitivePeerDependencies: - supports-color - '@secretlint/core@9.3.4': + '@secretlint/core@10.2.2': dependencies: - '@secretlint/profiler': 9.3.4 - '@secretlint/types': 9.3.4 - debug: 4.4.1(supports-color@8.1.1) + '@secretlint/profiler': 10.2.2 + '@secretlint/types': 10.2.2 + debug: 4.4.3(supports-color@8.1.1) structured-source: 4.0.0 transitivePeerDependencies: - supports-color - '@secretlint/formatter@9.3.4': + '@secretlint/formatter@10.2.2': dependencies: - '@secretlint/resolver': 9.3.4 - '@secretlint/types': 9.3.4 - '@textlint/linter-formatter': 14.8.4 - '@textlint/module-interop': 14.8.4 - '@textlint/types': 14.8.4 - chalk: 4.1.2 - debug: 4.4.1(supports-color@8.1.1) + '@secretlint/resolver': 10.2.2 + '@secretlint/types': 10.2.2 + '@textlint/linter-formatter': 15.4.0 + '@textlint/module-interop': 15.4.0 + '@textlint/types': 15.4.0 + chalk: 5.6.2 + debug: 4.4.3(supports-color@8.1.1) pluralize: 8.0.0 - strip-ansi: 6.0.1 + strip-ansi: 7.1.2 table: 6.9.0 - terminal-link: 2.1.1 + terminal-link: 4.0.0 transitivePeerDependencies: - supports-color - '@secretlint/node@9.3.4': + '@secretlint/node@10.2.2': dependencies: - '@secretlint/config-loader': 9.3.4 - '@secretlint/core': 9.3.4 - '@secretlint/formatter': 9.3.4 - '@secretlint/profiler': 9.3.4 - '@secretlint/source-creator': 9.3.4 - '@secretlint/types': 9.3.4 - debug: 4.4.1(supports-color@8.1.1) - p-map: 4.0.0 + '@secretlint/config-loader': 10.2.2 + '@secretlint/core': 10.2.2 + '@secretlint/formatter': 10.2.2 + '@secretlint/profiler': 10.2.2 + '@secretlint/source-creator': 10.2.2 + '@secretlint/types': 10.2.2 + debug: 4.4.3(supports-color@8.1.1) + p-map: 7.0.4 transitivePeerDependencies: - supports-color - '@secretlint/profiler@9.3.4': {} + '@secretlint/profiler@10.2.2': {} - '@secretlint/resolver@9.3.4': {} + '@secretlint/resolver@10.2.2': {} - '@secretlint/secretlint-formatter-sarif@9.3.4': + '@secretlint/secretlint-formatter-sarif@10.2.2': dependencies: - node-sarif-builder: 2.0.3 + node-sarif-builder: 3.3.0 - '@secretlint/secretlint-rule-no-dotenv@9.3.4': + '@secretlint/secretlint-rule-no-dotenv@10.2.2': dependencies: - '@secretlint/types': 9.3.4 + '@secretlint/types': 10.2.2 - '@secretlint/secretlint-rule-preset-recommend@9.3.4': {} + '@secretlint/secretlint-rule-preset-recommend@10.2.2': {} - '@secretlint/source-creator@9.3.4': + '@secretlint/source-creator@10.2.2': dependencies: - '@secretlint/types': 9.3.4 + '@secretlint/types': 10.2.2 istextorbinary: 9.5.0 - '@secretlint/types@9.3.4': {} + '@secretlint/types@10.2.2': {} '@sentry/cli@1.77.3(encoding@0.1.13)': dependencies: @@ -27749,12 +30075,16 @@ snapshots: '@sinclair/typebox@0.27.8': {} + '@sinclair/typebox@0.34.41': {} + '@sindresorhus/is@5.6.0': {} - '@sindresorhus/is@7.0.2': {} + '@sindresorhus/is@7.1.1': {} '@sindresorhus/merge-streams@2.3.0': {} + '@sindresorhus/merge-streams@4.0.0': {} + '@sinonjs/commons@1.8.6': dependencies: type-detect: 4.0.8 @@ -27767,10 +30097,14 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 + '@sinonjs/fake-timers@13.0.5': + dependencies: + '@sinonjs/commons': 3.0.1 + '@size-limit/esbuild@11.2.0(size-limit@11.2.0)': dependencies: - esbuild: 0.25.8 - nanoid: 5.1.5 + esbuild: 0.25.12 + nanoid: 5.1.6 size-limit: 11.2.0 '@size-limit/file@11.2.0(size-limit@11.2.0)': @@ -27783,255 +30117,254 @@ snapshots: '@size-limit/file': 11.2.0(size-limit@11.2.0) size-limit: 11.2.0 - '@smithy/abort-controller@4.0.5': + '@smithy/abort-controller@4.2.5': dependencies: - '@smithy/types': 4.3.2 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/chunked-blob-reader-native@4.0.0': + '@smithy/chunked-blob-reader-native@4.2.1': dependencies: - '@smithy/util-base64': 4.0.0 + '@smithy/util-base64': 4.3.0 tslib: 2.8.1 - '@smithy/chunked-blob-reader@5.0.0': + '@smithy/chunked-blob-reader@5.2.0': dependencies: tslib: 2.8.1 - '@smithy/config-resolver@4.1.5': + '@smithy/config-resolver@4.4.3': dependencies: - '@smithy/node-config-provider': 4.1.4 - '@smithy/types': 4.3.2 - '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 tslib: 2.8.1 - '@smithy/core@3.8.0': - dependencies: - '@smithy/middleware-serde': 4.0.9 - '@smithy/protocol-http': 5.1.3 - '@smithy/types': 4.3.2 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.5 - '@smithy/util-stream': 4.2.4 - '@smithy/util-utf8': 4.0.0 - '@types/uuid': 9.0.8 + '@smithy/core@3.18.4': + dependencies: + '@smithy/middleware-serde': 4.2.6 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-stream': 4.5.6 + '@smithy/util-utf8': 4.2.0 + '@smithy/uuid': 1.1.0 tslib: 2.8.1 - uuid: 9.0.1 - '@smithy/credential-provider-imds@4.0.7': + '@smithy/credential-provider-imds@4.2.5': dependencies: - '@smithy/node-config-provider': 4.1.4 - '@smithy/property-provider': 4.0.5 - '@smithy/types': 4.3.2 - '@smithy/url-parser': 4.0.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 tslib: 2.8.1 - '@smithy/eventstream-codec@4.0.5': + '@smithy/eventstream-codec@4.2.5': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.3.2 - '@smithy/util-hex-encoding': 4.0.0 + '@smithy/types': 4.9.0 + '@smithy/util-hex-encoding': 4.2.0 tslib: 2.8.1 - '@smithy/eventstream-serde-browser@4.0.5': + '@smithy/eventstream-serde-browser@4.2.5': dependencies: - '@smithy/eventstream-serde-universal': 4.0.5 - '@smithy/types': 4.3.2 + '@smithy/eventstream-serde-universal': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/eventstream-serde-config-resolver@4.1.3': + '@smithy/eventstream-serde-config-resolver@4.3.5': dependencies: - '@smithy/types': 4.3.2 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/eventstream-serde-node@4.0.5': + '@smithy/eventstream-serde-node@4.2.5': dependencies: - '@smithy/eventstream-serde-universal': 4.0.5 - '@smithy/types': 4.3.2 + '@smithy/eventstream-serde-universal': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/eventstream-serde-universal@4.0.5': + '@smithy/eventstream-serde-universal@4.2.5': dependencies: - '@smithy/eventstream-codec': 4.0.5 - '@smithy/types': 4.3.2 + '@smithy/eventstream-codec': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.1.1': + '@smithy/fetch-http-handler@5.3.6': dependencies: - '@smithy/protocol-http': 5.1.3 - '@smithy/querystring-builder': 4.0.5 - '@smithy/types': 4.3.2 - '@smithy/util-base64': 4.0.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/querystring-builder': 4.2.5 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 tslib: 2.8.1 - '@smithy/hash-blob-browser@4.0.5': + '@smithy/hash-blob-browser@4.2.6': dependencies: - '@smithy/chunked-blob-reader': 5.0.0 - '@smithy/chunked-blob-reader-native': 4.0.0 - '@smithy/types': 4.3.2 + '@smithy/chunked-blob-reader': 5.2.0 + '@smithy/chunked-blob-reader-native': 4.2.1 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/hash-node@4.0.5': + '@smithy/hash-node@4.2.5': dependencies: - '@smithy/types': 4.3.2 - '@smithy/util-buffer-from': 4.0.0 - '@smithy/util-utf8': 4.0.0 + '@smithy/types': 4.9.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/hash-stream-node@4.0.5': + '@smithy/hash-stream-node@4.2.5': dependencies: - '@smithy/types': 4.3.2 - '@smithy/util-utf8': 4.0.0 + '@smithy/types': 4.9.0 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/invalid-dependency@4.0.5': + '@smithy/invalid-dependency@4.2.5': dependencies: - '@smithy/types': 4.3.2 + '@smithy/types': 4.9.0 tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.8.1 - '@smithy/is-array-buffer@4.0.0': + '@smithy/is-array-buffer@4.2.0': dependencies: tslib: 2.8.1 - '@smithy/md5-js@4.0.5': + '@smithy/md5-js@4.2.5': dependencies: - '@smithy/types': 4.3.2 - '@smithy/util-utf8': 4.0.0 + '@smithy/types': 4.9.0 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/middleware-content-length@4.0.5': + '@smithy/middleware-content-length@4.2.5': dependencies: - '@smithy/protocol-http': 5.1.3 - '@smithy/types': 4.3.2 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.1.18': + '@smithy/middleware-endpoint@4.3.11': dependencies: - '@smithy/core': 3.8.0 - '@smithy/middleware-serde': 4.0.9 - '@smithy/node-config-provider': 4.1.4 - '@smithy/shared-ini-file-loader': 4.0.5 - '@smithy/types': 4.3.2 - '@smithy/url-parser': 4.0.5 - '@smithy/util-middleware': 4.0.5 + '@smithy/core': 3.18.4 + '@smithy/middleware-serde': 4.2.6 + '@smithy/node-config-provider': 4.3.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-middleware': 4.2.5 tslib: 2.8.1 - '@smithy/middleware-retry@4.1.19': + '@smithy/middleware-retry@4.4.11': dependencies: - '@smithy/node-config-provider': 4.1.4 - '@smithy/protocol-http': 5.1.3 - '@smithy/service-error-classification': 4.0.7 - '@smithy/smithy-client': 4.4.10 - '@smithy/types': 4.3.2 - '@smithy/util-middleware': 4.0.5 - '@smithy/util-retry': 4.0.7 - '@types/uuid': 9.0.8 + '@smithy/node-config-provider': 4.3.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/service-error-classification': 4.2.5 + '@smithy/smithy-client': 4.9.7 + '@smithy/types': 4.9.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/uuid': 1.1.0 tslib: 2.8.1 - uuid: 9.0.1 - '@smithy/middleware-serde@4.0.9': + '@smithy/middleware-serde@4.2.6': dependencies: - '@smithy/protocol-http': 5.1.3 - '@smithy/types': 4.3.2 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/middleware-stack@4.0.5': + '@smithy/middleware-stack@4.2.5': dependencies: - '@smithy/types': 4.3.2 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/node-config-provider@4.1.4': + '@smithy/node-config-provider@4.3.5': dependencies: - '@smithy/property-provider': 4.0.5 - '@smithy/shared-ini-file-loader': 4.0.5 - '@smithy/types': 4.3.2 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/node-http-handler@4.1.1': + '@smithy/node-http-handler@4.4.5': dependencies: - '@smithy/abort-controller': 4.0.5 - '@smithy/protocol-http': 5.1.3 - '@smithy/querystring-builder': 4.0.5 - '@smithy/types': 4.3.2 + '@smithy/abort-controller': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/querystring-builder': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/property-provider@4.0.5': + '@smithy/property-provider@4.2.5': dependencies: - '@smithy/types': 4.3.2 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/protocol-http@5.1.3': + '@smithy/protocol-http@5.3.5': dependencies: - '@smithy/types': 4.3.2 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/querystring-builder@4.0.5': + '@smithy/querystring-builder@4.2.5': dependencies: - '@smithy/types': 4.3.2 - '@smithy/util-uri-escape': 4.0.0 + '@smithy/types': 4.9.0 + '@smithy/util-uri-escape': 4.2.0 tslib: 2.8.1 - '@smithy/querystring-parser@4.0.5': + '@smithy/querystring-parser@4.2.5': dependencies: - '@smithy/types': 4.3.2 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/service-error-classification@4.0.7': + '@smithy/service-error-classification@4.2.5': dependencies: - '@smithy/types': 4.3.2 + '@smithy/types': 4.9.0 - '@smithy/shared-ini-file-loader@4.0.5': + '@smithy/shared-ini-file-loader@4.4.0': dependencies: - '@smithy/types': 4.3.2 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/signature-v4@5.1.3': + '@smithy/signature-v4@5.3.5': dependencies: - '@smithy/is-array-buffer': 4.0.0 - '@smithy/protocol-http': 5.1.3 - '@smithy/types': 4.3.2 - '@smithy/util-hex-encoding': 4.0.0 - '@smithy/util-middleware': 4.0.5 - '@smithy/util-uri-escape': 4.0.0 - '@smithy/util-utf8': 4.0.0 + '@smithy/is-array-buffer': 4.2.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-uri-escape': 4.2.0 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/smithy-client@4.4.10': + '@smithy/smithy-client@4.9.7': dependencies: - '@smithy/core': 3.8.0 - '@smithy/middleware-endpoint': 4.1.18 - '@smithy/middleware-stack': 4.0.5 - '@smithy/protocol-http': 5.1.3 - '@smithy/types': 4.3.2 - '@smithy/util-stream': 4.2.4 + '@smithy/core': 3.18.4 + '@smithy/middleware-endpoint': 4.3.11 + '@smithy/middleware-stack': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-stream': 4.5.6 tslib: 2.8.1 - '@smithy/types@4.3.2': + '@smithy/types@4.9.0': dependencies: tslib: 2.8.1 - '@smithy/url-parser@4.0.5': + '@smithy/url-parser@4.2.5': dependencies: - '@smithy/querystring-parser': 4.0.5 - '@smithy/types': 4.3.2 + '@smithy/querystring-parser': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/util-base64@4.0.0': + '@smithy/util-base64@4.3.0': dependencies: - '@smithy/util-buffer-from': 4.0.0 - '@smithy/util-utf8': 4.0.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/util-body-length-browser@4.0.0': + '@smithy/util-body-length-browser@4.2.0': dependencies: tslib: 2.8.1 - '@smithy/util-body-length-node@4.0.0': + '@smithy/util-body-length-node@4.2.1': dependencies: tslib: 2.8.1 @@ -28040,66 +30373,65 @@ snapshots: '@smithy/is-array-buffer': 2.2.0 tslib: 2.8.1 - '@smithy/util-buffer-from@4.0.0': + '@smithy/util-buffer-from@4.2.0': dependencies: - '@smithy/is-array-buffer': 4.0.0 + '@smithy/is-array-buffer': 4.2.0 tslib: 2.8.1 - '@smithy/util-config-provider@4.0.0': + '@smithy/util-config-provider@4.2.0': dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.0.26': + '@smithy/util-defaults-mode-browser@4.3.10': dependencies: - '@smithy/property-provider': 4.0.5 - '@smithy/smithy-client': 4.4.10 - '@smithy/types': 4.3.2 - bowser: 2.11.0 + '@smithy/property-provider': 4.2.5 + '@smithy/smithy-client': 4.9.7 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.0.26': + '@smithy/util-defaults-mode-node@4.2.13': dependencies: - '@smithy/config-resolver': 4.1.5 - '@smithy/credential-provider-imds': 4.0.7 - '@smithy/node-config-provider': 4.1.4 - '@smithy/property-provider': 4.0.5 - '@smithy/smithy-client': 4.4.10 - '@smithy/types': 4.3.2 + '@smithy/config-resolver': 4.4.3 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/smithy-client': 4.9.7 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/util-endpoints@3.0.7': + '@smithy/util-endpoints@3.2.5': dependencies: - '@smithy/node-config-provider': 4.1.4 - '@smithy/types': 4.3.2 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/util-hex-encoding@4.0.0': + '@smithy/util-hex-encoding@4.2.0': dependencies: tslib: 2.8.1 - '@smithy/util-middleware@4.0.5': + '@smithy/util-middleware@4.2.5': dependencies: - '@smithy/types': 4.3.2 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/util-retry@4.0.7': + '@smithy/util-retry@4.2.5': dependencies: - '@smithy/service-error-classification': 4.0.7 - '@smithy/types': 4.3.2 + '@smithy/service-error-classification': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/util-stream@4.2.4': + '@smithy/util-stream@4.5.6': dependencies: - '@smithy/fetch-http-handler': 5.1.1 - '@smithy/node-http-handler': 4.1.1 - '@smithy/types': 4.3.2 - '@smithy/util-base64': 4.0.0 - '@smithy/util-buffer-from': 4.0.0 - '@smithy/util-hex-encoding': 4.0.0 - '@smithy/util-utf8': 4.0.0 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/node-http-handler': 4.4.5 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/util-uri-escape@4.0.0': + '@smithy/util-uri-escape@4.2.0': dependencies: tslib: 2.8.1 @@ -28108,17 +30440,26 @@ snapshots: '@smithy/util-buffer-from': 2.2.0 tslib: 2.8.1 - '@smithy/util-utf8@4.0.0': + '@smithy/util-utf8@4.2.0': + dependencies: + '@smithy/util-buffer-from': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-waiter@4.2.5': dependencies: - '@smithy/util-buffer-from': 4.0.0 + '@smithy/abort-controller': 4.2.5 + '@smithy/types': 4.9.0 tslib: 2.8.1 - '@smithy/util-waiter@4.0.7': + '@smithy/uuid@1.1.0': dependencies: - '@smithy/abort-controller': 4.0.5 - '@smithy/types': 4.3.2 tslib: 2.8.1 + '@so-ric/colorspace@1.1.6': + dependencies: + color: 5.0.3 + text-hex: 1.0.0 + '@standard-schema/spec@1.0.0': {} '@standard-schema/utils@0.3.0': {} @@ -28134,7 +30475,7 @@ snapshots: '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.45.0 + core-js: 3.47.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -28209,13 +30550,13 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) uuid: 9.0.1 - '@storybook/addon-actions@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/addon-actions@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) uuid: 9.0.1 '@storybook/addon-backgrounds@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -28227,7 +30568,7 @@ snapshots: '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 memoizerific: 1.11.3 regenerator-runtime: 0.13.11 @@ -28282,25 +30623,25 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/addon-backgrounds@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/addon-backgrounds@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/addon-controls@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': + '@storybook/addon-controls@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': dependencies: '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/node-logger': 6.5.16 '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.45.0 + core-js: 3.47.0 lodash: 4.17.21 ts-dedent: 2.2.0 optionalDependencies: @@ -28316,18 +30657,18 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/addon-controls@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': + '@storybook/addon-controls@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': dependencies: '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/node-logger': 6.5.16 '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.45.0 + core-js: 3.47.0 lodash: 4.17.21 ts-dedent: 2.2.0 optionalDependencies: @@ -28396,14 +30737,14 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/addon-controls@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/addon-controls@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/addon-docs@6.5.16(@babel/core@7.27.7)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.101.0)': + '@storybook/addon-docs@6.5.16(@babel/core@7.27.7)(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.103.0)': dependencies: '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.7) '@babel/preset-env': 7.27.2(@babel/core@7.27.7) @@ -28412,7 +30753,7 @@ snapshots: '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/docs-tools': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -28423,8 +30764,8 @@ snapshots: '@storybook/source-loader': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) - core-js: 3.45.0 + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) + core-js: 3.47.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -28448,7 +30789,7 @@ snapshots: - webpack - webpack-cli - '@storybook/addon-docs@6.5.16(@babel/core@7.27.7)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.101.0)': + '@storybook/addon-docs@6.5.16(@babel/core@7.27.7)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.103.0)': dependencies: '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.7) '@babel/preset-env': 7.27.2(@babel/core@7.27.7) @@ -28457,7 +30798,7 @@ snapshots: '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/docs-tools': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -28468,8 +30809,8 @@ snapshots: '@storybook/source-loader': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) - core-js: 3.45.0 + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) + core-js: 3.47.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -28510,7 +30851,7 @@ snapshots: '@storybook/react-dom-shim': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.4.6 - fs-extra: 11.3.1 + fs-extra: 11.3.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) remark-external-links: 8.0.0 @@ -28539,7 +30880,7 @@ snapshots: '@storybook/react-dom-shim': 7.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@storybook/theming': 7.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@storybook/types': 7.4.6 - fs-extra: 11.3.1 + fs-extra: 11.3.2 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) remark-external-links: 8.0.0 @@ -28553,7 +30894,7 @@ snapshots: '@storybook/addon-docs@8.6.14(@types/react@18.2.0)(storybook@8.6.14(prettier@3.5.3))': dependencies: - '@mdx-js/react': 3.1.0(@types/react@18.2.0)(react@19.1.0) + '@mdx-js/react': 3.1.1(@types/react@18.2.0)(react@19.1.0) '@storybook/blocks': 8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.14(prettier@3.5.3)) '@storybook/csf-plugin': 8.6.14(storybook@8.6.14(prettier@3.5.3)) '@storybook/react-dom-shim': 8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.14(prettier@3.5.3)) @@ -28564,55 +30905,55 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@storybook/addon-docs@8.6.14(@types/react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/addon-docs@8.6.14(@types/react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - '@mdx-js/react': 3.1.0(@types/react@18.2.0)(react@19.1.0) - '@storybook/blocks': 8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/csf-plugin': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/react-dom-shim': 8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@mdx-js/react': 3.1.1(@types/react@18.2.0)(react@19.1.0) + '@storybook/blocks': 8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/csf-plugin': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/react-dom-shim': 8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-docs@9.1.1(@types/react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/addon-docs@9.1.16(@types/react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - '@mdx-js/react': 3.1.0(@types/react@18.2.0)(react@19.1.0) - '@storybook/csf-plugin': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/icons': 1.4.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/react-dom-shim': 9.1.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@mdx-js/react': 3.1.1(@types/react@18.2.0)(react@19.1.0) + '@storybook/csf-plugin': 9.1.16(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/icons': 1.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@storybook/react-dom-shim': 9.1.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.101.0)': + '@storybook/addon-essentials@6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.103.0)': dependencies: '@babel/core': 7.27.7 '@storybook/addon-actions': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-backgrounds': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/addon-controls': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) - '@storybook/addon-docs': 6.5.16(@babel/core@7.27.7)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.101.0) + '@storybook/addon-controls': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/addon-docs': 6.5.16(@babel/core@7.27.7)(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.103.0) '@storybook/addon-measure': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-outline': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-toolbars': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-viewport': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) '@storybook/node-logger': 6.5.16 - core-js: 3.45.0 + core-js: 3.47.0 regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/builder-webpack5': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - webpack: 5.101.0(webpack-cli@4.10.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) transitivePeerDependencies: - '@storybook/mdx2-csf' - '@swc/core' @@ -28624,29 +30965,29 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/addon-essentials@6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.101.0)': + '@storybook/addon-essentials@6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.103.0)': dependencies: '@babel/core': 7.27.7 '@storybook/addon-actions': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-backgrounds': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/addon-controls': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) - '@storybook/addon-docs': 6.5.16(@babel/core@7.27.7)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.101.0) + '@storybook/addon-controls': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/addon-docs': 6.5.16(@babel/core@7.27.7)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.103.0) '@storybook/addon-measure': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-outline': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-toolbars': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-viewport': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) '@storybook/node-logger': 6.5.16 - core-js: 3.45.0 + core-js: 3.47.0 regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(webpack-cli@4.10.0) transitivePeerDependencies: - '@storybook/mdx2-csf' - '@swc/core' @@ -28722,18 +31063,18 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.6.14(@types/react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': - dependencies: - '@storybook/addon-actions': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/addon-backgrounds': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/addon-controls': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/addon-docs': 8.6.14(@types/react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/addon-highlight': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/addon-measure': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/addon-outline': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/addon-toolbars': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/addon-viewport': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + '@storybook/addon-essentials@8.6.14(@types/react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': + dependencies: + '@storybook/addon-actions': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-backgrounds': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-controls': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-docs': 8.6.14(@types/react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-highlight': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-measure': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-outline': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-toolbars': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-viewport': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' @@ -28749,10 +31090,10 @@ snapshots: '@storybook/global': 5.0.0 storybook: 8.6.14(prettier@3.5.3) - '@storybook/addon-highlight@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/addon-highlight@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) '@storybook/addon-interactions@8.6.14(storybook@8.6.14(prettier@3.5.3))': dependencies: @@ -28771,7 +31112,7 @@ snapshots: '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/router': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/qs': 6.14.0 - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 prop-types: 15.8.1 qs: 6.14.0 @@ -28805,10 +31146,10 @@ snapshots: optionalDependencies: react: 18.2.0 - '@storybook/addon-links@8.6.14(react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/addon-links@8.6.14(react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 optionalDependencies: react: 18.2.0 @@ -28821,7 +31162,7 @@ snapshots: '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 optionalDependencies: react: 18.2.0 @@ -28867,10 +31208,10 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) tiny-invariant: 1.3.3 - '@storybook/addon-measure@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/addon-measure@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) tiny-invariant: 1.3.3 '@storybook/addon-onboarding@8.6.14(storybook@8.6.14(prettier@3.5.3))': @@ -28885,7 +31226,7 @@ snapshots: '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 @@ -28933,10 +31274,10 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/addon-outline@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/addon-outline@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 '@storybook/addon-toolbars@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -28946,7 +31287,7 @@ snapshots: '@storybook/client-logger': 6.5.16 '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.45.0 + core-js: 3.47.0 regenerator-runtime: 0.13.11 optionalDependencies: react: 18.2.0 @@ -28984,9 +31325,9 @@ snapshots: dependencies: storybook: 8.6.14(prettier@3.5.3) - '@storybook/addon-toolbars@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/addon-toolbars@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) '@storybook/addon-viewport@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: @@ -28996,7 +31337,7 @@ snapshots: '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/core-events': 6.5.16 '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 memoizerific: 1.11.3 prop-types: 15.8.1 @@ -29046,10 +31387,10 @@ snapshots: memoizerific: 1.11.3 storybook: 8.6.14(prettier@3.5.3) - '@storybook/addon-viewport@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/addon-viewport@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: memoizerific: 1.11.3 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) '@storybook/addons@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: @@ -29061,7 +31402,7 @@ snapshots: '@storybook/router': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/webpack-env': 1.18.8 - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -29077,7 +31418,7 @@ snapshots: '@storybook/router': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@storybook/theming': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@types/webpack-env': 1.18.8 - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -29108,7 +31449,7 @@ snapshots: '@storybook/router': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/semver': 7.3.2 '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.45.0 + core-js: 3.47.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -29130,7 +31471,7 @@ snapshots: '@storybook/router': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@storybook/semver': 7.3.2 '@storybook/theming': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - core-js: 3.45.0 + core-js: 3.47.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -29160,7 +31501,7 @@ snapshots: color-convert: 2.0.1 dequal: 2.0.3 lodash: 4.17.21 - markdown-to-jsx: 7.7.13(react@18.2.0) + markdown-to-jsx: 7.7.17(react@18.2.0) memoizerific: 1.11.3 polished: 4.3.1 react: 18.2.0 @@ -29193,7 +31534,7 @@ snapshots: color-convert: 2.0.1 dequal: 2.0.3 lodash: 4.17.21 - markdown-to-jsx: 7.7.13(react@19.1.0) + markdown-to-jsx: 7.7.17(react@19.1.0) memoizerific: 1.11.3 polished: 4.3.1 react: 19.1.0 @@ -29211,7 +31552,7 @@ snapshots: '@storybook/blocks@8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.5.3))': dependencies: - '@storybook/icons': 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/icons': 1.6.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) storybook: 8.6.14(prettier@3.5.3) ts-dedent: 2.2.0 optionalDependencies: @@ -29220,17 +31561,17 @@ snapshots: '@storybook/blocks@8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.14(prettier@3.5.3))': dependencies: - '@storybook/icons': 1.4.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@storybook/icons': 1.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) storybook: 8.6.14(prettier@3.5.3) ts-dedent: 2.2.0 optionalDependencies: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@storybook/blocks@8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/blocks@8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - '@storybook/icons': 1.4.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + '@storybook/icons': 1.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 optionalDependencies: react: 19.1.0 @@ -29244,27 +31585,89 @@ snapshots: '@storybook/node-logger': 7.6.20 '@types/ejs': 3.1.5 '@types/find-cache-dir': 3.2.1 - '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.25.8) + '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.25.12) browser-assert: 1.2.1 ejs: 3.1.10 - esbuild: 0.25.8 + esbuild: 0.25.12 esbuild-plugin-alias: 0.2.1 express: 4.21.2 find-cache-dir: 3.3.2 - fs-extra: 11.3.1 + fs-extra: 11.3.2 process: 0.11.10 util: 0.12.5 transitivePeerDependencies: - encoding - supports-color - '@storybook/builder-vite@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/builder-vite@9.1.16(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': + dependencies: + '@storybook/csf-plugin': 9.1.16(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) + ts-dedent: 2.2.0 + + '@storybook/builder-webpack4@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: - '@storybook/csf-plugin': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + '@babel/core': 7.27.7 + '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/channel-postmessage': 6.5.16 + '@storybook/channels': 6.5.16 + '@storybook/client-api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/client-logger': 6.5.16 + '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core-events': 6.5.16 + '@storybook/node-logger': 6.5.16 + '@storybook/preview-web': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/router': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/semver': 7.3.2 + '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/ui': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/node': 16.18.126 + '@types/webpack': 4.41.40 + autoprefixer: 9.8.8 + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + case-sensitive-paths-webpack-plugin: 2.4.0 + core-js: 3.47.0 + css-loader: 3.6.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + file-loader: 6.2.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 4.1.6 + glob: 7.2.3 + glob-promise: 3.4.0(glob@7.2.3) + global: 4.4.0 + html-webpack-plugin: 4.5.2(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + pnp-webpack-plugin: 1.6.4(typescript@5.8.3) + postcss: 7.0.39 + postcss-flexbugs-fixes: 4.2.1 + postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + raw-loader: 4.0.2(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + stable: 0.1.8 + style-loader: 1.3.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + terser-webpack-plugin: 4.2.3(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) ts-dedent: 2.2.0 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))))(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + util-deprecate: 1.0.2 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + webpack-dev-middleware: 3.7.3(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + webpack-filter-warnings-plugin: 1.2.1(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + webpack-hot-middleware: 2.26.1 + webpack-virtual-modules: 0.2.2 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - eslint + - supports-color + - uglify-js + - vue-template-compiler + - webpack-cli - '@storybook/builder-webpack4@6.5.16(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': + '@storybook/builder-webpack4@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': dependencies: '@babel/core': 7.27.7 '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -29274,7 +31677,7 @@ snapshots: '@storybook/client-api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) '@storybook/core-events': 6.5.16 '@storybook/node-logger': 6.5.16 '@storybook/preview-web': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -29286,33 +31689,33 @@ snapshots: '@types/node': 16.18.126 '@types/webpack': 4.41.40 autoprefixer: 9.8.8 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.45.0 - css-loader: 3.6.0(webpack@5.101.0) - file-loader: 6.2.0(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 3.6.0(webpack@5.103.0) + file-loader: 6.2.0(webpack@5.103.0) find-up: 5.0.0 fork-ts-checker-webpack-plugin: 4.1.6 glob: 7.2.3 glob-promise: 3.4.0(glob@7.2.3) global: 4.4.0 - html-webpack-plugin: 4.5.2(webpack@5.101.0) + html-webpack-plugin: 4.5.2(webpack@5.103.0) pnp-webpack-plugin: 1.6.4(typescript@5.8.3) postcss: 7.0.39 postcss-flexbugs-fixes: 4.2.1 - postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.101.0) - raw-loader: 4.0.2(webpack@5.101.0) + postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.103.0) + raw-loader: 4.0.2(webpack@5.103.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) stable: 0.1.8 - style-loader: 1.3.0(webpack@5.101.0) - terser-webpack-plugin: 4.2.3(webpack@5.101.0) + style-loader: 1.3.0(webpack@5.103.0) + terser-webpack-plugin: 4.2.3(webpack@5.103.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-dev-middleware: 3.7.3(webpack@5.101.0) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.101.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) + webpack-dev-middleware: 3.7.3(webpack@5.103.0) + webpack-filter-warnings-plugin: 1.2.1(webpack@5.103.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.2.2 optionalDependencies: @@ -29326,7 +31729,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': + '@storybook/builder-webpack4@6.5.16(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: '@babel/core': 7.27.7 '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -29336,7 +31739,7 @@ snapshots: '@storybook/client-api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/core-events': 6.5.16 '@storybook/node-logger': 6.5.16 '@storybook/preview-web': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -29348,33 +31751,33 @@ snapshots: '@types/node': 16.18.126 '@types/webpack': 4.41.40 autoprefixer: 9.8.8 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.45.0 - css-loader: 3.6.0(webpack@5.101.0) - file-loader: 6.2.0(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 3.6.0(webpack@5.103.0) + file-loader: 6.2.0(webpack@5.103.0) find-up: 5.0.0 fork-ts-checker-webpack-plugin: 4.1.6 glob: 7.2.3 glob-promise: 3.4.0(glob@7.2.3) global: 4.4.0 - html-webpack-plugin: 4.5.2(webpack@5.101.0) + html-webpack-plugin: 4.5.2(webpack@5.103.0) pnp-webpack-plugin: 1.6.4(typescript@5.8.3) postcss: 7.0.39 postcss-flexbugs-fixes: 4.2.1 - postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.101.0) - raw-loader: 4.0.2(webpack@5.101.0) + postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.103.0) + raw-loader: 4.0.2(webpack@5.103.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) stable: 0.1.8 - style-loader: 1.3.0(webpack@5.101.0) - terser-webpack-plugin: 4.2.3(webpack@5.101.0) + style-loader: 1.3.0(webpack@5.103.0) + terser-webpack-plugin: 4.2.3(webpack@5.103.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-dev-middleware: 3.7.3(webpack@5.101.0) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-dev-middleware: 3.7.3(webpack@5.103.0) + webpack-filter-warnings-plugin: 1.2.1(webpack@5.103.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.2.2 optionalDependencies: @@ -29388,7 +31791,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': + '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: '@babel/core': 7.27.7 '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -29398,7 +31801,7 @@ snapshots: '@storybook/client-api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/core-events': 6.5.16 '@storybook/node-logger': 6.5.16 '@storybook/preview-web': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -29410,33 +31813,33 @@ snapshots: '@types/node': 16.18.126 '@types/webpack': 4.41.40 autoprefixer: 9.8.8 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.45.0 - css-loader: 3.6.0(webpack@5.101.0) - file-loader: 6.2.0(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 3.6.0(webpack@5.103.0) + file-loader: 6.2.0(webpack@5.103.0) find-up: 5.0.0 fork-ts-checker-webpack-plugin: 4.1.6 glob: 7.2.3 glob-promise: 3.4.0(glob@7.2.3) global: 4.4.0 - html-webpack-plugin: 4.5.2(webpack@5.101.0) + html-webpack-plugin: 4.5.2(webpack@5.103.0) pnp-webpack-plugin: 1.6.4(typescript@5.8.3) postcss: 7.0.39 postcss-flexbugs-fixes: 4.2.1 - postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.101.0) - raw-loader: 4.0.2(webpack@5.101.0) + postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.103.0) + raw-loader: 4.0.2(webpack@5.103.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) stable: 0.1.8 - style-loader: 1.3.0(webpack@5.101.0) - terser-webpack-plugin: 4.2.3(webpack@5.101.0) + style-loader: 1.3.0(webpack@5.103.0) + terser-webpack-plugin: 4.2.3(webpack@5.103.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@4.10.0) - webpack-dev-middleware: 3.7.3(webpack@5.101.0) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-dev-middleware: 3.7.3(webpack@5.103.0) + webpack-filter-warnings-plugin: 1.2.1(webpack@5.103.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.2.2 optionalDependencies: @@ -29450,7 +31853,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': + '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': dependencies: '@babel/core': 7.27.7 '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -29460,7 +31863,7 @@ snapshots: '@storybook/client-api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) '@storybook/core-events': 6.5.16 '@storybook/node-logger': 6.5.16 '@storybook/preview-web': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -29472,33 +31875,33 @@ snapshots: '@types/node': 16.18.126 '@types/webpack': 4.41.40 autoprefixer: 9.8.8 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.45.0 - css-loader: 3.6.0(webpack@5.101.0) - file-loader: 6.2.0(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 3.6.0(webpack@5.103.0) + file-loader: 6.2.0(webpack@5.103.0) find-up: 5.0.0 fork-ts-checker-webpack-plugin: 4.1.6 glob: 7.2.3 glob-promise: 3.4.0(glob@7.2.3) global: 4.4.0 - html-webpack-plugin: 4.5.2(webpack@5.101.0) + html-webpack-plugin: 4.5.2(webpack@5.103.0) pnp-webpack-plugin: 1.6.4(typescript@5.8.3) postcss: 7.0.39 postcss-flexbugs-fixes: 4.2.1 - postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.101.0) - raw-loader: 4.0.2(webpack@5.101.0) + postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.103.0) + raw-loader: 4.0.2(webpack@5.103.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) stable: 0.1.8 - style-loader: 1.3.0(webpack@5.101.0) - terser-webpack-plugin: 4.2.3(webpack@5.101.0) + style-loader: 1.3.0(webpack@5.103.0) + terser-webpack-plugin: 4.2.3(webpack@5.103.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@6.0.1) - webpack-dev-middleware: 3.7.3(webpack@5.101.0) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@4.10.0) + webpack-dev-middleware: 3.7.3(webpack@5.103.0) + webpack-filter-warnings-plugin: 1.2.1(webpack@5.103.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.2.2 optionalDependencies: @@ -29512,7 +31915,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': + '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': dependencies: '@babel/core': 7.27.7 '@storybook/addons': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -29522,7 +31925,7 @@ snapshots: '@storybook/client-api': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@storybook/client-logger': 6.5.16 '@storybook/components': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) '@storybook/core-events': 6.5.16 '@storybook/node-logger': 6.5.16 '@storybook/preview-web': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -29534,33 +31937,33 @@ snapshots: '@types/node': 16.18.126 '@types/webpack': 4.41.40 autoprefixer: 9.8.8 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.45.0 - css-loader: 3.6.0(webpack@5.101.0) - file-loader: 6.2.0(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 3.6.0(webpack@5.103.0) + file-loader: 6.2.0(webpack@5.103.0) find-up: 5.0.0 fork-ts-checker-webpack-plugin: 4.1.6 glob: 7.2.3 glob-promise: 3.4.0(glob@7.2.3) global: 4.4.0 - html-webpack-plugin: 4.5.2(webpack@5.101.0) + html-webpack-plugin: 4.5.2(webpack@5.103.0) pnp-webpack-plugin: 1.6.4(typescript@4.9.5) postcss: 7.0.39 postcss-flexbugs-fixes: 4.2.1 - postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.101.0) - raw-loader: 4.0.2(webpack@5.101.0) + postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.103.0) + raw-loader: 4.0.2(webpack@5.103.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) stable: 0.1.8 - style-loader: 1.3.0(webpack@5.101.0) - terser-webpack-plugin: 4.2.3(webpack@5.101.0) + style-loader: 1.3.0(webpack@5.103.0) + terser-webpack-plugin: 4.2.3(webpack@5.103.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-dev-middleware: 3.7.3(webpack@5.101.0) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-dev-middleware: 3.7.3(webpack@5.103.0) + webpack-filter-warnings-plugin: 1.2.1(webpack@5.103.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.2.2 optionalDependencies: @@ -29574,7 +31977,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': + '@storybook/builder-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': dependencies: '@babel/core': 7.27.7 '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -29584,7 +31987,7 @@ snapshots: '@storybook/client-api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) '@storybook/core-events': 6.5.16 '@storybook/node-logger': 6.5.16 '@storybook/preview-web': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -29593,27 +31996,27 @@ snapshots: '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/node': 16.18.126 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) babel-plugin-named-exports-order: 0.0.2 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.45.0 - css-loader: 5.2.7(webpack@5.101.0) - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 5.2.7(webpack@5.103.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)(webpack@5.103.0) glob: 7.2.3 glob-promise: 3.4.0(glob@7.2.3) - html-webpack-plugin: 5.6.3(webpack@5.101.0) + html-webpack-plugin: 5.6.5(webpack@5.103.0) path-browserify: 1.0.1 process: 0.11.10 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) stable: 0.1.8 - style-loader: 2.0.0(webpack@5.101.0) - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + style-loader: 2.0.0(webpack@5.103.0) + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@4.10.0) - webpack-dev-middleware: 4.3.0(webpack@5.101.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) + webpack-dev-middleware: 4.3.0(webpack@5.103.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.4.6 optionalDependencies: @@ -29628,7 +32031,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': + '@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': dependencies: '@babel/core': 7.27.7 '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -29638,7 +32041,7 @@ snapshots: '@storybook/client-api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 '@storybook/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) '@storybook/core-events': 6.5.16 '@storybook/node-logger': 6.5.16 '@storybook/preview-web': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -29647,27 +32050,27 @@ snapshots: '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/node': 16.18.126 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) babel-plugin-named-exports-order: 0.0.2 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.45.0 - css-loader: 5.2.7(webpack@5.101.0) - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 5.2.7(webpack@5.103.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)(webpack@5.103.0) glob: 7.2.3 glob-promise: 3.4.0(glob@7.2.3) - html-webpack-plugin: 5.6.3(webpack@5.101.0) + html-webpack-plugin: 5.6.5(webpack@5.103.0) path-browserify: 1.0.1 process: 0.11.10 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) stable: 0.1.8 - style-loader: 2.0.0(webpack@5.101.0) - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + style-loader: 2.0.0(webpack@5.103.0) + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@6.0.1) - webpack-dev-middleware: 4.3.0(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@4.10.0) + webpack-dev-middleware: 4.3.0(webpack@5.103.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.4.6 optionalDependencies: @@ -29701,33 +32104,33 @@ snapshots: '@storybook/router': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/store': 7.4.6 '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@swc/core': 1.13.3(@swc/helpers@0.5.17) + '@swc/core': 1.15.2(@swc/helpers@0.5.17) '@types/node': 16.18.126 - '@types/semver': 7.7.0 - babel-loader: 9.2.1(@babel/core@7.27.7)(webpack@5.101.0) + '@types/semver': 7.7.1 + babel-loader: 9.2.1(@babel/core@7.27.7)(webpack@5.103.0) babel-plugin-named-exports-order: 0.0.2 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 constants-browserify: 1.0.0 - css-loader: 6.11.0(webpack@5.101.0) + css-loader: 6.11.0(webpack@5.103.0) express: 4.21.2 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.101.0) - fs-extra: 11.3.1 - html-webpack-plugin: 5.6.3(webpack@5.101.0) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.103.0) + fs-extra: 11.3.2 + html-webpack-plugin: 5.6.5(webpack@5.103.0) path-browserify: 1.0.1 process: 0.11.10 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - semver: 7.7.2 - style-loader: 3.3.4(webpack@5.101.0) - swc-loader: 0.2.6(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + semver: 7.7.3 + style-loader: 3.3.4(webpack@5.103.0) + swc-loader: 0.2.6(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack-cli@5.1.4) - webpack-dev-middleware: 6.1.3(webpack@5.101.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@5.1.4) + webpack-dev-middleware: 6.1.3(webpack@5.103.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.5.0 optionalDependencies: @@ -29762,33 +32165,33 @@ snapshots: '@storybook/router': 7.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@storybook/store': 7.4.6 '@storybook/theming': 7.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@swc/core': 1.13.3(@swc/helpers@0.5.17) + '@swc/core': 1.15.2(@swc/helpers@0.5.17) '@types/node': 16.18.126 - '@types/semver': 7.7.0 - babel-loader: 9.2.1(@babel/core@7.27.7)(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))) + '@types/semver': 7.7.1 + babel-loader: 9.2.1(@babel/core@7.27.7)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) babel-plugin-named-exports-order: 0.0.2 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 constants-browserify: 1.0.0 - css-loader: 6.11.0(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))) + css-loader: 6.11.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) express: 4.21.2 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))) - fs-extra: 11.3.1 - html-webpack-plugin: 5.6.3(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + fs-extra: 11.3.2 + html-webpack-plugin: 5.6.5(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) path-browserify: 1.0.1 process: 0.11.10 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - semver: 7.7.2 - style-loader: 3.3.4(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))) - swc-loader: 0.2.6(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))) - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))) + semver: 7.7.3 + style-loader: 3.3.4(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + swc-loader: 0.2.6(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)) - webpack-dev-middleware: 6.1.3(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + webpack-dev-middleware: 6.1.3(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.5.0 optionalDependencies: @@ -29804,31 +32207,31 @@ snapshots: - uglify-js - webpack-cli - '@storybook/builder-webpack5@8.6.14(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3)': + '@storybook/builder-webpack5@8.6.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3)': dependencies: '@storybook/core-webpack': 8.6.14(storybook@8.6.14(prettier@3.5.3)) - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.4.3 constants-browserify: 1.0.0 - css-loader: 6.11.0(webpack@5.101.0) + css-loader: 6.11.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)) es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.101.0) - html-webpack-plugin: 5.6.3(webpack@5.101.0) - magic-string: 0.30.17 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)) + html-webpack-plugin: 5.6.5(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)) + magic-string: 0.30.21 path-browserify: 1.0.1 process: 0.11.10 - semver: 7.7.2 + semver: 7.7.3 storybook: 8.6.14(prettier@3.5.3) - style-loader: 3.3.4(webpack@5.101.0) - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + style-loader: 3.3.4(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)) + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-dev-middleware: 6.1.3(webpack@5.101.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12) + webpack-dev-middleware: 6.1.3(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -29840,31 +32243,31 @@ snapshots: - uglify-js - webpack-cli - '@storybook/builder-webpack5@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4)': + '@storybook/builder-webpack5@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4)': dependencies: - '@storybook/core-webpack': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@types/semver': 7.7.0 + '@storybook/core-webpack': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@types/semver': 7.7.1 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.4.3 constants-browserify: 1.0.0 - css-loader: 6.11.0(webpack@5.101.0) + css-loader: 6.11.0(webpack@5.103.0) es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.101.0) - html-webpack-plugin: 5.6.3(webpack@5.101.0) - magic-string: 0.30.17 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.103.0) + html-webpack-plugin: 5.6.5(webpack@5.103.0) + magic-string: 0.30.21 path-browserify: 1.0.1 process: 0.11.10 - semver: 7.7.2 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) - style-loader: 3.3.4(webpack@5.101.0) - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + semver: 7.7.3 + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) + style-loader: 3.3.4(webpack@5.103.0) + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-dev-middleware: 6.1.3(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-dev-middleware: 6.1.3(webpack@5.103.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -29881,7 +32284,7 @@ snapshots: '@storybook/channels': 6.5.16 '@storybook/client-logger': 6.5.16 '@storybook/core-events': 6.5.16 - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 qs: 6.14.0 telejson: 6.0.8 @@ -29890,13 +32293,13 @@ snapshots: dependencies: '@storybook/channels': 6.5.16 '@storybook/client-logger': 6.5.16 - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 telejson: 6.0.8 '@storybook/channels@6.5.16': dependencies: - core-js: 3.45.0 + core-js: 3.47.0 ts-dedent: 2.2.0 util-deprecate: 1.0.2 @@ -29922,7 +32325,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/preset-env': 7.27.2(@babel/core@7.27.7) - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@ndelangen/get-tarball': 3.0.9 '@storybook/codemod': 7.6.20 '@storybook/core-common': 7.6.20(encoding@0.1.13) @@ -29932,18 +32335,18 @@ snapshots: '@storybook/node-logger': 7.6.20 '@storybook/telemetry': 7.6.20(encoding@0.1.13) '@storybook/types': 7.6.20 - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 '@yarnpkg/fslib': 2.10.3 '@yarnpkg/libzip': 2.3.0 chalk: 4.1.2 commander: 6.2.1 cross-spawn: 7.0.6 detect-indent: 6.1.0 - envinfo: 7.14.0 + envinfo: 7.20.0 execa: 5.1.1 express: 4.21.2 find-up: 5.0.0 - fs-extra: 11.3.1 + fs-extra: 11.3.2 get-npm-tarball-url: 2.1.0 get-port: 5.1.1 giget: 1.2.5 @@ -29955,12 +32358,13 @@ snapshots: prompts: 2.4.2 puppeteer-core: 2.1.1 read-pkg-up: 7.0.1 - semver: 7.7.2 + semver: 7.7.3 strip-json-comments: 3.1.1 tempy: 1.0.1 ts-dedent: 2.2.0 util-deprecate: 1.0.2 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - bufferutil - encoding @@ -29968,15 +32372,15 @@ snapshots: - supports-color - utf-8-validate - '@storybook/cli@9.1.1(@babel/preset-env@7.27.2(@babel/core@7.27.7))(@testing-library/dom@10.4.1)(prettier@3.5.3)': + '@storybook/cli@9.1.16(@babel/preset-env@7.27.2(@babel/core@7.28.5))(@testing-library/dom@10.4.1)(prettier@3.5.3)': dependencies: - '@storybook/codemod': 9.1.1(@babel/preset-env@7.27.2(@babel/core@7.27.7))(@testing-library/dom@10.4.1) - '@types/semver': 7.7.0 + '@storybook/codemod': 9.1.16(@babel/preset-env@7.27.2(@babel/core@7.28.5))(@testing-library/dom@10.4.1) + '@types/semver': 7.7.1 commander: 12.1.0 - create-storybook: 9.1.1 + create-storybook: 9.1.16 giget: 1.2.5 - jscodeshift: 0.15.2(@babel/preset-env@7.27.2(@babel/core@7.27.7)) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + jscodeshift: 0.15.2(@babel/preset-env@7.27.2(@babel/core@7.28.5)) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 transitivePeerDependencies: - '@babel/preset-env' @@ -29999,7 +32403,7 @@ snapshots: '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/qs': 6.14.0 '@types/webpack-env': 1.18.8 - core-js: 3.45.0 + core-js: 3.47.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -30024,7 +32428,7 @@ snapshots: '@storybook/store': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@types/qs': 6.14.0 '@types/webpack-env': 1.18.8 - core-js: 3.45.0 + core-js: 3.47.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -30045,7 +32449,7 @@ snapshots: '@storybook/client-logger@6.5.16': dependencies: - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 '@storybook/client-logger@7.4.6': @@ -30060,7 +32464,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/preset-env': 7.27.2(@babel/core@7.27.7) - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@storybook/csf': 0.1.13 '@storybook/csf-tools': 7.6.20 '@storybook/node-logger': 7.6.20 @@ -30075,15 +32479,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/codemod@9.1.1(@babel/preset-env@7.27.2(@babel/core@7.27.7))(@testing-library/dom@10.4.1)': + '@storybook/codemod@9.1.16(@babel/preset-env@7.27.2(@babel/core@7.28.5))(@testing-library/dom@10.4.1)': dependencies: '@types/cross-spawn': 6.0.6 cross-spawn: 7.0.6 - es-toolkit: 1.39.8 + es-toolkit: 1.42.0 globby: 14.1.0 - jscodeshift: 0.15.2(@babel/preset-env@7.27.2(@babel/core@7.27.7)) + jscodeshift: 0.15.2(@babel/preset-env@7.27.2(@babel/core@7.28.5)) prettier: 3.5.3 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) tiny-invariant: 1.3.3 transitivePeerDependencies: - '@babel/preset-env' @@ -30099,7 +32503,7 @@ snapshots: '@storybook/client-logger': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.45.0 + core-js: 3.47.0 memoizerific: 1.11.3 qs: 6.14.0 react: 18.2.0 @@ -30112,7 +32516,7 @@ snapshots: '@storybook/client-logger': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/theming': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - core-js: 3.45.0 + core-js: 3.47.0 memoizerific: 1.11.3 qs: 6.14.0 react: 19.1.0 @@ -30123,7 +32527,7 @@ snapshots: '@storybook/components@7.4.6(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-toolbar': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 7.4.6 '@storybook/csf': 0.1.13 '@storybook/global': 5.0.0 @@ -30141,7 +32545,7 @@ snapshots: '@storybook/components@7.4.6(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-toolbar': 1.1.10(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@storybook/client-logger': 7.4.6 '@storybook/csf': 0.1.13 '@storybook/global': 5.0.0 @@ -30160,11 +32564,39 @@ snapshots: dependencies: storybook: 8.6.14(prettier@3.5.3) - '@storybook/components@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/components@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) + + '@storybook/core-client@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)))': + dependencies: + '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/channel-postmessage': 6.5.16 + '@storybook/channel-websocket': 6.5.16 + '@storybook/client-api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/client-logger': 6.5.16 + '@storybook/core-events': 6.5.16 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/preview-web': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/ui': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + airbnb-js-shims: 2.2.1 + ansi-to-html: 0.6.15 + core-js: 3.47.0 + global: 4.4.0 + lodash: 4.17.21 + qs: 6.14.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + regenerator-runtime: 0.13.11 + ts-dedent: 2.2.0 + unfetch: 4.2.0 + util-deprecate: 1.0.2 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + optionalDependencies: + typescript: 5.8.3 - '@storybook/core-client@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0)': + '@storybook/core-client@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0)': dependencies: '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/channel-postmessage': 6.5.16 @@ -30178,7 +32610,7 @@ snapshots: '@storybook/ui': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 lodash: 4.17.21 qs: 6.14.0 @@ -30188,11 +32620,11 @@ snapshots: ts-dedent: 2.2.0 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) optionalDependencies: typescript: 5.8.3 - '@storybook/core-client@6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.101.0)': + '@storybook/core-client@6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.103.0)': dependencies: '@storybook/addons': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@storybook/channel-postmessage': 6.5.16 @@ -30206,7 +32638,7 @@ snapshots: '@storybook/ui': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 lodash: 4.17.21 qs: 6.14.0 @@ -30216,7 +32648,7 @@ snapshots: ts-dedent: 2.2.0 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: typescript: 4.9.5 @@ -30225,7 +32657,72 @@ snapshots: '@storybook/client-logger': 7.4.6 '@storybook/preview-api': 7.4.6 - '@storybook/core-common@6.5.16(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': + '@storybook/core-common@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': + dependencies: + '@babel/core': 7.27.7 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.7) + '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.27.7) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.27.7) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.27.7) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.27.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.27.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.7) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.27.7) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.27.7) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.27.7) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.7) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.7) + '@babel/preset-env': 7.27.2(@babel/core@7.27.7) + '@babel/preset-react': 7.27.1(@babel/core@7.27.7) + '@babel/preset-typescript': 7.27.1(@babel/core@7.27.7) + '@babel/register': 7.28.3(@babel/core@7.27.7) + '@storybook/node-logger': 6.5.16 + '@storybook/semver': 7.3.2 + '@types/node': 16.18.126 + '@types/pretty-hrtime': 1.0.3 + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + babel-plugin-macros: 3.1.0 + babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.7) + chalk: 4.1.2 + core-js: 3.47.0 + express: 4.21.2 + file-system-cache: 1.1.0 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + fs-extra: 9.1.0 + glob: 7.2.3 + handlebars: 4.7.8 + interpret: 2.2.0 + json5: 2.2.3 + lazy-universal-dotenv: 3.0.1 + picomatch: 2.3.1 + pkg-dir: 5.0.0 + pretty-hrtime: 1.0.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + resolve-from: 5.0.0 + slash: 3.0.0 + telejson: 6.0.8 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - eslint + - supports-color + - uglify-js + - vue-template-compiler + - webpack-cli + + '@storybook/core-common@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': dependencies: '@babel/core': 7.27.7 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.7) @@ -30238,9 +32735,9 @@ snapshots: '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.27.7) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.7) '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.27.7) - '@babel/plugin-transform-classes': 7.28.0(@babel/core@7.27.7) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.27.7) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.27.7) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.7) '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.7) @@ -30248,20 +32745,20 @@ snapshots: '@babel/preset-env': 7.27.2(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) '@babel/preset-typescript': 7.27.1(@babel/core@7.27.7) - '@babel/register': 7.27.1(@babel/core@7.27.7) + '@babel/register': 7.28.3(@babel/core@7.27.7) '@storybook/node-logger': 6.5.16 '@storybook/semver': 7.3.2 '@types/node': 16.18.126 '@types/pretty-hrtime': 1.0.3 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) babel-plugin-macros: 3.1.0 babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.7) chalk: 4.1.2 - core-js: 3.45.0 + core-js: 3.47.0 express: 4.21.2 file-system-cache: 1.1.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)(webpack@5.103.0) fs-extra: 9.1.0 glob: 7.2.3 handlebars: 4.7.8 @@ -30278,7 +32775,7 @@ snapshots: telejson: 6.0.8 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -30290,7 +32787,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-common@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': + '@storybook/core-common@6.5.16(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: '@babel/core': 7.27.7 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.7) @@ -30303,9 +32800,9 @@ snapshots: '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.27.7) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.7) '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.27.7) - '@babel/plugin-transform-classes': 7.28.0(@babel/core@7.27.7) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.27.7) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.27.7) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.7) '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.7) @@ -30313,20 +32810,20 @@ snapshots: '@babel/preset-env': 7.27.2(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) '@babel/preset-typescript': 7.27.1(@babel/core@7.27.7) - '@babel/register': 7.27.1(@babel/core@7.27.7) + '@babel/register': 7.28.3(@babel/core@7.27.7) '@storybook/node-logger': 6.5.16 '@storybook/semver': 7.3.2 '@types/node': 16.18.126 '@types/pretty-hrtime': 1.0.3 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) babel-plugin-macros: 3.1.0 babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.7) chalk: 4.1.2 - core-js: 3.45.0 + core-js: 3.47.0 express: 4.21.2 file-system-cache: 1.1.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3)(webpack@5.103.0) fs-extra: 9.1.0 glob: 7.2.3 handlebars: 4.7.8 @@ -30343,7 +32840,7 @@ snapshots: telejson: 6.0.8 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -30355,7 +32852,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-common@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': + '@storybook/core-common@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: '@babel/core': 7.27.7 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.7) @@ -30368,9 +32865,9 @@ snapshots: '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.27.7) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.7) '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.27.7) - '@babel/plugin-transform-classes': 7.28.0(@babel/core@7.27.7) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.27.7) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.27.7) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.7) '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.7) @@ -30378,20 +32875,20 @@ snapshots: '@babel/preset-env': 7.27.2(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) '@babel/preset-typescript': 7.27.1(@babel/core@7.27.7) - '@babel/register': 7.27.1(@babel/core@7.27.7) + '@babel/register': 7.28.3(@babel/core@7.27.7) '@storybook/node-logger': 6.5.16 '@storybook/semver': 7.3.2 '@types/node': 16.18.126 '@types/pretty-hrtime': 1.0.3 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) babel-plugin-macros: 3.1.0 babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.7) chalk: 4.1.2 - core-js: 3.45.0 + core-js: 3.47.0 express: 4.21.2 file-system-cache: 1.1.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)(webpack@5.103.0) fs-extra: 9.1.0 glob: 7.2.3 handlebars: 4.7.8 @@ -30408,7 +32905,7 @@ snapshots: telejson: 6.0.8 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@4.10.0) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -30420,7 +32917,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-common@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': + '@storybook/core-common@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': dependencies: '@babel/core': 7.27.7 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.7) @@ -30433,9 +32930,9 @@ snapshots: '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.27.7) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.7) '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.27.7) - '@babel/plugin-transform-classes': 7.28.0(@babel/core@7.27.7) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.27.7) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.27.7) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.7) '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.7) @@ -30443,20 +32940,20 @@ snapshots: '@babel/preset-env': 7.27.2(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) '@babel/preset-typescript': 7.27.1(@babel/core@7.27.7) - '@babel/register': 7.27.1(@babel/core@7.27.7) + '@babel/register': 7.28.3(@babel/core@7.27.7) '@storybook/node-logger': 6.5.16 '@storybook/semver': 7.3.2 '@types/node': 16.18.126 '@types/pretty-hrtime': 1.0.3 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) babel-plugin-macros: 3.1.0 babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.7) chalk: 4.1.2 - core-js: 3.45.0 + core-js: 3.47.0 express: 4.21.2 file-system-cache: 1.1.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)(webpack@5.103.0) fs-extra: 9.1.0 glob: 7.2.3 handlebars: 4.7.8 @@ -30473,7 +32970,7 @@ snapshots: telejson: 6.0.8 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(webpack-cli@4.10.0) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -30485,7 +32982,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-common@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': + '@storybook/core-common@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': dependencies: '@babel/core': 7.27.7 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.7) @@ -30498,9 +32995,9 @@ snapshots: '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.27.7) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.7) '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.27.7) - '@babel/plugin-transform-classes': 7.28.0(@babel/core@7.27.7) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.27.7) + '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.27.7) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.27.7) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.7) '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.7) @@ -30508,20 +33005,20 @@ snapshots: '@babel/preset-env': 7.27.2(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) '@babel/preset-typescript': 7.27.1(@babel/core@7.27.7) - '@babel/register': 7.27.1(@babel/core@7.27.7) + '@babel/register': 7.28.3(@babel/core@7.27.7) '@storybook/node-logger': 6.5.16 '@storybook/semver': 7.3.2 '@types/node': 16.18.126 '@types/pretty-hrtime': 1.0.3 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) babel-plugin-macros: 3.1.0 babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.7) chalk: 4.1.2 - core-js: 3.45.0 + core-js: 3.47.0 express: 4.21.2 file-system-cache: 1.1.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@4.9.5)(webpack@5.101.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.6.1))(typescript@4.9.5)(webpack@5.103.0) fs-extra: 9.1.0 glob: 7.2.3 handlebars: 4.7.8 @@ -30538,7 +33035,7 @@ snapshots: telejson: 6.0.8 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: @@ -30560,13 +33057,13 @@ snapshots: '@types/node-fetch': 2.6.13 '@types/pretty-hrtime': 1.0.3 chalk: 4.1.2 - esbuild: 0.25.8 - esbuild-register: 3.6.0(esbuild@0.25.8) + esbuild: 0.25.12 + esbuild-register: 3.6.0(esbuild@0.25.12) file-system-cache: 2.3.0 find-cache-dir: 3.3.2 find-up: 5.0.0 - fs-extra: 11.3.1 - glob: 10.4.5 + fs-extra: 11.3.2 + glob: 10.5.0 handlebars: 4.7.8 lazy-universal-dotenv: 4.0.0 node-fetch: 2.6.13(encoding@0.1.13) @@ -30585,17 +33082,17 @@ snapshots: '@storybook/node-logger': 7.6.20 '@storybook/types': 7.6.20 '@types/find-cache-dir': 3.2.1 - '@types/node': 18.19.121 + '@types/node': 18.19.130 '@types/node-fetch': 2.6.13 '@types/pretty-hrtime': 1.0.3 chalk: 4.1.2 - esbuild: 0.25.8 - esbuild-register: 3.6.0(esbuild@0.25.8) + esbuild: 0.25.12 + esbuild-register: 3.6.0(esbuild@0.25.12) file-system-cache: 2.3.0 find-cache-dir: 3.3.2 find-up: 5.0.0 - fs-extra: 11.3.1 - glob: 10.4.5 + fs-extra: 11.3.2 + glob: 10.5.0 handlebars: 4.7.8 lazy-universal-dotenv: 4.0.0 node-fetch: 2.6.13(encoding@0.1.13) @@ -30610,7 +33107,7 @@ snapshots: '@storybook/core-events@6.5.16': dependencies: - core-js: 3.45.0 + core-js: 3.47.0 '@storybook/core-events@7.4.6': dependencies: @@ -30620,20 +33117,86 @@ snapshots: dependencies: ts-dedent: 2.2.0 - '@storybook/core-server@6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': + '@storybook/core-server@6.5.16(@storybook/builder-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@storybook/manager-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@storybook/builder-webpack4': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/core-events': 6.5.16 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/csf-tools': 6.5.16 + '@storybook/manager-webpack4': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/node-logger': 6.5.16 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/telemetry': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@types/node': 16.18.126 + '@types/node-fetch': 2.6.13 + '@types/pretty-hrtime': 1.0.3 + '@types/webpack': 4.41.40 + better-opn: 2.1.1 + boxen: 5.1.2 + chalk: 4.1.2 + cli-table3: 0.6.5 + commander: 6.2.1 + compression: 1.8.1 + core-js: 3.47.0 + cpy: 8.1.2 + detect-port: 1.6.1 + express: 4.21.2 + fs-extra: 9.1.0 + global: 4.4.0 + globby: 11.1.0 + ip: 2.0.1 + lodash: 4.17.21 + node-fetch: 2.6.13(encoding@0.1.13) + open: 8.4.2 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + regenerator-runtime: 0.13.11 + serve-favicon: 2.5.1 + slash: 3.0.0 + telejson: 6.0.8 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + watchpack: 2.4.4 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) + ws: 8.18.3 + x-default-browser: 0.4.0 + optionalDependencies: + '@storybook/builder-webpack5': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/manager-webpack5': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + typescript: 5.8.3 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - '@swc/core' + - bufferutil + - encoding + - esbuild + - eslint + - supports-color + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@storybook/core-server@6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/builder-webpack4': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/csf-tools': 6.5.16 - '@storybook/manager-webpack4': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/manager-webpack4': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) '@storybook/node-logger': 6.5.16 '@storybook/semver': 7.3.2 '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/telemetry': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/telemetry': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) '@types/node': 16.18.126 '@types/node-fetch': 2.6.13 '@types/pretty-hrtime': 1.0.3 @@ -30644,7 +33207,7 @@ snapshots: cli-table3: 0.6.5 commander: 6.2.1 compression: 1.8.1 - core-js: 3.45.0 + core-js: 3.47.0 cpy: 8.1.2 detect-port: 1.6.1 express: 4.21.2 @@ -30666,12 +33229,12 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 watchpack: 2.4.4 - webpack: 5.101.0(webpack-cli@4.10.0) + webpack: 5.103.0(webpack-cli@4.10.0) ws: 8.18.3 x-default-browser: 0.4.0 optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) - '@storybook/manager-webpack5': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/manager-webpack5': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) typescript: 5.8.3 transitivePeerDependencies: - '@storybook/mdx2-csf' @@ -30686,20 +33249,20 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-server@6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': + '@storybook/core-server@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/builder-webpack4': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/csf-tools': 6.5.16 - '@storybook/manager-webpack4': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/manager-webpack4': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/node-logger': 6.5.16 '@storybook/semver': 7.3.2 '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/telemetry': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/telemetry': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@types/node': 16.18.126 '@types/node-fetch': 2.6.13 '@types/pretty-hrtime': 1.0.3 @@ -30710,7 +33273,7 @@ snapshots: cli-table3: 0.6.5 commander: 6.2.1 compression: 1.8.1 - core-js: 3.45.0 + core-js: 3.47.0 cpy: 8.1.2 detect-port: 1.6.1 express: 4.21.2 @@ -30732,12 +33295,10 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 watchpack: 2.4.4 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) ws: 8.18.3 x-default-browser: 0.4.0 optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) - '@storybook/manager-webpack5': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) typescript: 5.8.3 transitivePeerDependencies: - '@storybook/mdx2-csf' @@ -30752,20 +33313,20 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-server@6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': + '@storybook/core-server@6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.5.16(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/builder-webpack4': 6.5.16(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/csf-tools': 6.5.16 - '@storybook/manager-webpack4': 6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/manager-webpack4': 6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/node-logger': 6.5.16 '@storybook/semver': 7.3.2 '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/telemetry': 6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/telemetry': 6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@types/node': 16.18.126 '@types/node-fetch': 2.6.13 '@types/pretty-hrtime': 1.0.3 @@ -30776,7 +33337,7 @@ snapshots: cli-table3: 0.6.5 commander: 6.2.1 compression: 1.8.1 - core-js: 3.45.0 + core-js: 3.47.0 cpy: 8.1.2 detect-port: 1.6.1 express: 4.21.2 @@ -30798,7 +33359,7 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 watchpack: 2.4.4 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) ws: 8.18.3 x-default-browser: 0.4.0 optionalDependencies: @@ -30816,20 +33377,20 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-server@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': + '@storybook/core-server@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/builder-webpack4': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/csf-tools': 6.5.16 - '@storybook/manager-webpack4': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/manager-webpack4': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/node-logger': 6.5.16 '@storybook/semver': 7.3.2 '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/telemetry': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/telemetry': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@types/node': 16.18.126 '@types/node-fetch': 2.6.13 '@types/pretty-hrtime': 1.0.3 @@ -30840,7 +33401,7 @@ snapshots: cli-table3: 0.6.5 commander: 6.2.1 compression: 1.8.1 - core-js: 3.45.0 + core-js: 3.47.0 cpy: 8.1.2 detect-port: 1.6.1 express: 4.21.2 @@ -30862,7 +33423,7 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 watchpack: 2.4.4 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) ws: 8.18.3 x-default-browser: 0.4.0 optionalDependencies: @@ -30880,20 +33441,20 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-server@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': + '@storybook/core-server@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) - '@storybook/core-client': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) + '@storybook/builder-webpack4': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) + '@storybook/core-client': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/csf-tools': 6.5.16 - '@storybook/manager-webpack4': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) + '@storybook/manager-webpack4': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) '@storybook/node-logger': 6.5.16 '@storybook/semver': 7.3.2 '@storybook/store': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/telemetry': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) + '@storybook/telemetry': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) '@types/node': 16.18.126 '@types/node-fetch': 2.6.13 '@types/pretty-hrtime': 1.0.3 @@ -30904,7 +33465,7 @@ snapshots: cli-table3: 0.6.5 commander: 6.2.1 compression: 1.8.1 - core-js: 3.45.0 + core-js: 3.47.0 cpy: 8.1.2 detect-port: 1.6.1 express: 4.21.2 @@ -30926,7 +33487,7 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 watchpack: 2.4.4 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) ws: 8.18.3 x-default-browser: 0.4.0 optionalDependencies: @@ -30962,23 +33523,23 @@ snapshots: '@storybook/telemetry': 7.6.20(encoding@0.1.13) '@storybook/types': 7.6.20 '@types/detect-port': 1.3.5 - '@types/node': 18.19.121 + '@types/node': 18.19.130 '@types/pretty-hrtime': 1.0.3 - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 better-opn: 3.0.2 chalk: 4.1.2 cli-table3: 0.6.5 compression: 1.8.1 detect-port: 1.6.1 express: 4.21.2 - fs-extra: 11.3.1 + fs-extra: 11.3.2 globby: 11.1.0 lodash: 4.17.21 open: 8.4.2 pretty-hrtime: 1.0.3 prompts: 2.4.2 read-pkg-up: 7.0.1 - semver: 7.7.2 + semver: 7.7.3 telejson: 7.2.0 tiny-invariant: 1.3.3 ts-dedent: 2.2.0 @@ -31008,21 +33569,21 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/core-webpack@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/core-webpack@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/core@6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.101.0)': + '@storybook/core@6.5.16(@storybook/builder-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@storybook/manager-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.103.0)': dependencies: - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-server': 6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-server': 6.5.16(@storybook/builder-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@storybook/manager-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - webpack: 5.101.0(webpack-cli@4.10.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) - '@storybook/manager-webpack5': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/builder-webpack5': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/manager-webpack5': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) typescript: 5.8.3 transitivePeerDependencies: - '@storybook/mdx2-csf' @@ -31037,16 +33598,16 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core@6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.101.0)': + '@storybook/core@6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.103.0)': dependencies: - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-server': 6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-server': 6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(webpack-cli@4.10.0) optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) - '@storybook/manager-webpack5': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/manager-webpack5': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) typescript: 5.8.3 transitivePeerDependencies: - '@storybook/mdx2-csf' @@ -31061,13 +33622,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core@6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0)': + '@storybook/core@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)))': dependencies: - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-server': 6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + '@storybook/core-server': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -31083,13 +33644,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0)': + '@storybook/core@6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0)': dependencies: - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-server': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-server': 6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -31105,13 +33666,35 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.101.0)': + '@storybook/core@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0)': dependencies: - '@storybook/core-client': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.101.0) - '@storybook/core-server': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-server': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + webpack: 5.103.0(webpack-cli@5.1.4) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - '@swc/core' + - bufferutil + - encoding + - esbuild + - eslint + - supports-color + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + + '@storybook/core@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.103.0)': + dependencies: + '@storybook/core-client': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.103.0) + '@storybook/core-server': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: @@ -31132,12 +33715,12 @@ snapshots: '@storybook/theming': 8.6.14(storybook@8.6.14(prettier@3.5.3)) better-opn: 3.0.2 browser-assert: 1.2.1 - esbuild: 0.25.8 - esbuild-register: 3.6.0(esbuild@0.25.8) - jsdoc-type-pratt-parser: 4.1.0 + esbuild: 0.25.12 + esbuild-register: 3.6.0(esbuild@0.25.12) + jsdoc-type-pratt-parser: 4.8.0 process: 0.11.10 recast: 0.23.11 - semver: 7.7.2 + semver: 7.7.3 util: 0.12.5 ws: 8.18.3 optionalDependencies: @@ -31160,28 +33743,28 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) unplugin: 1.16.1 - '@storybook/csf-plugin@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/csf-plugin@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) unplugin: 1.16.1 - '@storybook/csf-plugin@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/csf-plugin@9.1.16(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) unplugin: 1.16.1 '@storybook/csf-tools@6.5.16': dependencies: '@babel/core': 7.27.7 - '@babel/generator': 7.28.0 - '@babel/parser': 7.28.0 + '@babel/generator': 7.28.5 + '@babel/parser': 7.28.5 '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.7) '@babel/preset-env': 7.27.2(@babel/core@7.27.7) - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/mdx1-csf': 0.0.1(@babel/core@7.27.7) - core-js: 3.45.0 + core-js: 3.47.0 fs-extra: 9.1.0 global: 4.4.0 regenerator-runtime: 0.13.11 @@ -31191,13 +33774,13 @@ snapshots: '@storybook/csf-tools@7.4.6': dependencies: - '@babel/generator': 7.28.0 - '@babel/parser': 7.28.0 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/generator': 7.28.5 + '@babel/parser': 7.28.5 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 '@storybook/csf': 0.1.13 '@storybook/types': 7.4.6 - fs-extra: 11.3.1 + fs-extra: 11.3.2 recast: 0.23.11 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -31205,13 +33788,13 @@ snapshots: '@storybook/csf-tools@7.6.20': dependencies: - '@babel/generator': 7.28.0 - '@babel/parser': 7.28.0 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/generator': 7.28.5 + '@babel/parser': 7.28.5 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 '@storybook/csf': 0.1.13 '@storybook/types': 7.6.20 - fs-extra: 11.3.1 + fs-extra: 11.3.2 recast: 0.23.11 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -31232,7 +33815,7 @@ snapshots: '@babel/core': 7.27.7 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.45.0 + core-js: 3.47.0 doctrine: 3.0.0 lodash: 4.17.21 regenerator-runtime: 0.13.11 @@ -31246,7 +33829,7 @@ snapshots: '@babel/core': 7.27.7 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/store': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - core-js: 3.45.0 + core-js: 3.47.0 doctrine: 3.0.0 lodash: 4.17.21 regenerator-runtime: 0.13.11 @@ -31269,12 +33852,12 @@ snapshots: '@storybook/global@5.0.0': {} - '@storybook/icons@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@storybook/icons@1.6.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@storybook/icons@1.4.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@storybook/icons@1.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -31285,11 +33868,11 @@ snapshots: '@vitest/utils': 2.1.9 storybook: 8.6.14(prettier@3.5.3) - '@storybook/instrumenter@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/instrumenter@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 '@vitest/utils': 2.1.9 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) optional: true '@storybook/manager-api@7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -31307,7 +33890,7 @@ snapshots: memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - semver: 7.7.2 + semver: 7.7.3 store2: 2.14.4 telejson: 7.2.0 ts-dedent: 2.2.0 @@ -31327,7 +33910,7 @@ snapshots: memoizerific: 1.11.3 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - semver: 7.7.2 + semver: 7.7.3 store2: 2.14.4 telejson: 7.2.0 ts-dedent: 2.2.0 @@ -31336,33 +33919,33 @@ snapshots: dependencies: storybook: 8.6.14(prettier@3.5.3) - '@storybook/manager-api@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/manager-api@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) - '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': + '@storybook/manager-webpack4@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: '@babel/core': 7.27.7 '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/node-logger': 6.5.16 '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/ui': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/node': 16.18.126 '@types/webpack': 4.41.40 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.45.0 - css-loader: 3.6.0(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 3.6.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) express: 4.21.2 - file-loader: 6.2.0(webpack@5.101.0) + file-loader: 6.2.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.101.0) + html-webpack-plugin: 4.5.2(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) node-fetch: 2.6.13(encoding@0.1.13) pnp-webpack-plugin: 1.6.4(typescript@5.8.3) react: 18.2.0 @@ -31370,14 +33953,14 @@ snapshots: read-pkg-up: 7.0.1 regenerator-runtime: 0.13.11 resolve-from: 5.0.0 - style-loader: 1.3.0(webpack@5.101.0) + style-loader: 1.3.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.101.0) + terser-webpack-plugin: 4.2.3(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))))(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-dev-middleware: 3.7.3(webpack@5.101.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + webpack-dev-middleware: 3.7.3(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) webpack-virtual-modules: 0.2.2 optionalDependencies: typescript: 5.8.3 @@ -31391,29 +33974,29 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': + '@storybook/manager-webpack4@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': dependencies: '@babel/core': 7.27.7 '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) '@storybook/node-logger': 6.5.16 '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/ui': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/node': 16.18.126 '@types/webpack': 4.41.40 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.45.0 - css-loader: 3.6.0(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 3.6.0(webpack@5.103.0) express: 4.21.2 - file-loader: 6.2.0(webpack@5.101.0) + file-loader: 6.2.0(webpack@5.103.0) find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.101.0) + html-webpack-plugin: 4.5.2(webpack@5.103.0) node-fetch: 2.6.13(encoding@0.1.13) pnp-webpack-plugin: 1.6.4(typescript@5.8.3) react: 18.2.0 @@ -31421,14 +34004,14 @@ snapshots: read-pkg-up: 7.0.1 regenerator-runtime: 0.13.11 resolve-from: 5.0.0 - style-loader: 1.3.0(webpack@5.101.0) + style-loader: 1.3.0(webpack@5.103.0) telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.101.0) + terser-webpack-plugin: 4.2.3(webpack@5.103.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-dev-middleware: 3.7.3(webpack@5.101.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) + webpack-dev-middleware: 3.7.3(webpack@5.103.0) webpack-virtual-modules: 0.2.2 optionalDependencies: typescript: 5.8.3 @@ -31442,29 +34025,29 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': + '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: '@babel/core': 7.27.7 '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/node-logger': 6.5.16 '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/ui': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/node': 16.18.126 '@types/webpack': 4.41.40 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.45.0 - css-loader: 3.6.0(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 3.6.0(webpack@5.103.0) express: 4.21.2 - file-loader: 6.2.0(webpack@5.101.0) + file-loader: 6.2.0(webpack@5.103.0) find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.101.0) + html-webpack-plugin: 4.5.2(webpack@5.103.0) node-fetch: 2.6.13(encoding@0.1.13) pnp-webpack-plugin: 1.6.4(typescript@5.8.3) react: 18.2.0 @@ -31472,14 +34055,14 @@ snapshots: read-pkg-up: 7.0.1 regenerator-runtime: 0.13.11 resolve-from: 5.0.0 - style-loader: 1.3.0(webpack@5.101.0) + style-loader: 1.3.0(webpack@5.103.0) telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.101.0) + terser-webpack-plugin: 4.2.3(webpack@5.103.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@4.10.0) - webpack-dev-middleware: 3.7.3(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-dev-middleware: 3.7.3(webpack@5.103.0) webpack-virtual-modules: 0.2.2 optionalDependencies: typescript: 5.8.3 @@ -31493,29 +34076,29 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': + '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: '@babel/core': 7.27.7 '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/node-logger': 6.5.16 '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/ui': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/node': 16.18.126 '@types/webpack': 4.41.40 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.45.0 - css-loader: 3.6.0(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 3.6.0(webpack@5.103.0) express: 4.21.2 - file-loader: 6.2.0(webpack@5.101.0) + file-loader: 6.2.0(webpack@5.103.0) find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.101.0) + html-webpack-plugin: 4.5.2(webpack@5.103.0) node-fetch: 2.6.13(encoding@0.1.13) pnp-webpack-plugin: 1.6.4(typescript@5.8.3) react: 18.2.0 @@ -31523,14 +34106,14 @@ snapshots: read-pkg-up: 7.0.1 regenerator-runtime: 0.13.11 resolve-from: 5.0.0 - style-loader: 1.3.0(webpack@5.101.0) + style-loader: 1.3.0(webpack@5.103.0) telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.101.0) + terser-webpack-plugin: 4.2.3(webpack@5.103.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@6.0.1) - webpack-dev-middleware: 3.7.3(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-dev-middleware: 3.7.3(webpack@5.103.0) webpack-virtual-modules: 0.2.2 optionalDependencies: typescript: 5.8.3 @@ -31544,29 +34127,80 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': + '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': + dependencies: + '@babel/core': 7.27.7 + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.7) + '@babel/preset-react': 7.27.1(@babel/core@7.27.7) + '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/node-logger': 6.5.16 + '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/ui': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/node': 16.18.126 + '@types/webpack': 4.41.40 + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) + case-sensitive-paths-webpack-plugin: 2.4.0 + chalk: 4.1.2 + core-js: 3.47.0 + css-loader: 3.6.0(webpack@5.103.0) + express: 4.21.2 + file-loader: 6.2.0(webpack@5.103.0) + find-up: 5.0.0 + fs-extra: 9.1.0 + html-webpack-plugin: 4.5.2(webpack@5.103.0) + node-fetch: 2.6.13(encoding@0.1.13) + pnp-webpack-plugin: 1.6.4(typescript@5.8.3) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.11 + resolve-from: 5.0.0 + style-loader: 1.3.0(webpack@5.103.0) + telejson: 6.0.8 + terser-webpack-plugin: 4.2.3(webpack@5.103.0) + ts-dedent: 2.2.0 + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) + util-deprecate: 1.0.2 + webpack: 5.103.0(webpack-cli@4.10.0) + webpack-dev-middleware: 3.7.3(webpack@5.103.0) + webpack-virtual-modules: 0.2.2 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - '@swc/core' + - encoding + - esbuild + - eslint + - supports-color + - uglify-js + - vue-template-compiler + - webpack-cli + + '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': dependencies: '@babel/core': 7.27.7 '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) '@storybook/addons': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/core-client': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) + '@storybook/core-client': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) '@storybook/node-logger': 6.5.16 '@storybook/theming': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@storybook/ui': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@types/node': 16.18.126 '@types/webpack': 4.41.40 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.45.0 - css-loader: 3.6.0(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 3.6.0(webpack@5.103.0) express: 4.21.2 - file-loader: 6.2.0(webpack@5.101.0) + file-loader: 6.2.0(webpack@5.103.0) find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.101.0) + html-webpack-plugin: 4.5.2(webpack@5.103.0) node-fetch: 2.6.13(encoding@0.1.13) pnp-webpack-plugin: 1.6.4(typescript@4.9.5) react: 19.1.0 @@ -31574,14 +34208,14 @@ snapshots: read-pkg-up: 7.0.1 regenerator-runtime: 0.13.11 resolve-from: 5.0.0 - style-loader: 1.3.0(webpack@5.101.0) + style-loader: 1.3.0(webpack@5.103.0) telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.101.0) + terser-webpack-plugin: 4.2.3(webpack@5.103.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0) util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-dev-middleware: 3.7.3(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-dev-middleware: 3.7.3(webpack@5.103.0) webpack-virtual-modules: 0.2.2 optionalDependencies: typescript: 4.9.5 @@ -31595,27 +34229,27 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': + '@storybook/manager-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': dependencies: '@babel/core': 7.27.7 '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) '@storybook/node-logger': 6.5.16 '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/ui': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/node': 16.18.126 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.45.0 - css-loader: 5.2.7(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 5.2.7(webpack@5.103.0) express: 4.21.2 find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 5.6.3(webpack@5.101.0) + html-webpack-plugin: 5.6.5(webpack@5.103.0) node-fetch: 2.6.13(encoding@0.1.13) process: 0.11.10 react: 18.2.0 @@ -31623,13 +34257,13 @@ snapshots: read-pkg-up: 7.0.1 regenerator-runtime: 0.13.11 resolve-from: 5.0.0 - style-loader: 2.0.0(webpack@5.101.0) + style-loader: 2.0.0(webpack@5.103.0) telejson: 6.0.8 - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@4.10.0) - webpack-dev-middleware: 4.3.0(webpack@5.101.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) + webpack-dev-middleware: 4.3.0(webpack@5.103.0) webpack-virtual-modules: 0.4.6 optionalDependencies: typescript: 5.8.3 @@ -31644,27 +34278,27 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': + '@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': dependencies: '@babel/core': 7.27.7 '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/core-client': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) '@storybook/node-logger': 6.5.16 '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/ui': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/node': 16.18.126 - babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.103.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 - core-js: 3.45.0 - css-loader: 5.2.7(webpack@5.101.0) + core-js: 3.47.0 + css-loader: 5.2.7(webpack@5.103.0) express: 4.21.2 find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 5.6.3(webpack@5.101.0) + html-webpack-plugin: 5.6.5(webpack@5.103.0) node-fetch: 2.6.13(encoding@0.1.13) process: 0.11.10 react: 18.2.0 @@ -31672,13 +34306,13 @@ snapshots: read-pkg-up: 7.0.1 regenerator-runtime: 0.13.11 resolve-from: 5.0.0 - style-loader: 2.0.0(webpack@5.101.0) + style-loader: 2.0.0(webpack@5.103.0) telejson: 6.0.8 - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@6.0.1) - webpack-dev-middleware: 4.3.0(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@4.10.0) + webpack-dev-middleware: 4.3.0(webpack@5.103.0) webpack-virtual-modules: 0.4.6 optionalDependencies: typescript: 5.8.3 @@ -31697,10 +34331,10 @@ snapshots: '@storybook/mdx1-csf@0.0.1(@babel/core@7.27.7)': dependencies: - '@babel/generator': 7.28.0 - '@babel/parser': 7.28.0 + '@babel/generator': 7.28.5 + '@babel/parser': 7.28.5 '@babel/preset-env': 7.27.2(@babel/core@7.27.7) - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@mdx-js/mdx': 1.6.22 '@types/lodash': 4.17.17 js-string-escape: 1.0.1 @@ -31718,7 +34352,7 @@ snapshots: dependencies: '@types/npmlog': 4.1.6 chalk: 4.1.2 - core-js: 3.45.0 + core-js: 3.47.0 npmlog: 5.0.1 pretty-hrtime: 1.0.3 @@ -31728,32 +34362,32 @@ snapshots: '@storybook/postinstall@6.5.16': dependencies: - core-js: 3.45.0 + core-js: 3.47.0 '@storybook/postinstall@7.4.6': {} - '@storybook/preset-react-webpack@7.4.6(@babel/core@7.27.7)(@types/webpack@5.28.5(webpack-cli@5.1.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)': + '@storybook/preset-react-webpack@7.4.6(@babel/core@7.28.5)(@types/webpack@5.28.5(webpack-cli@5.1.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)': dependencies: - '@babel/preset-flow': 7.27.1(@babel/core@7.27.7) - '@babel/preset-react': 7.27.1(@babel/core@7.27.7) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5(webpack-cli@5.1.4))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.101.0) + '@babel/preset-flow': 7.27.1(@babel/core@7.28.5) + '@babel/preset-react': 7.27.1(@babel/core@7.28.5) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5(webpack-cli@5.1.4))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.103.0) '@storybook/core-webpack': 7.4.6(encoding@0.1.13) '@storybook/docs-tools': 7.4.6(encoding@0.1.13) '@storybook/node-logger': 7.4.6 '@storybook/react': 7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.101.0) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.103.0) '@types/node': 16.18.126 - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 babel-plugin-add-react-displayname: 0.0.5 babel-plugin-react-docgen: 4.2.1 - fs-extra: 11.3.1 + fs-extra: 11.3.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-refresh: 0.11.0 - semver: 7.7.2 - webpack: 5.101.0(webpack-cli@5.1.4) + semver: 7.7.3 + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.5 typescript: 5.8.3 transitivePeerDependencies: - '@swc/core' @@ -31769,28 +34403,28 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@7.4.6(@babel/core@7.27.7)(@types/webpack@5.28.5)(encoding@0.1.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-hot-middleware@2.26.1)': + '@storybook/preset-react-webpack@7.4.6(@babel/core@7.28.5)(@types/webpack@5.28.5)(encoding@0.1.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-hot-middleware@2.26.1)': dependencies: - '@babel/preset-flow': 7.27.1(@babel/core@7.27.7) - '@babel/preset-react': 7.27.1(@babel/core@7.27.7) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1)(webpack@5.101.0) + '@babel/preset-flow': 7.27.1(@babel/core@7.28.5) + '@babel/preset-react': 7.27.1(@babel/core@7.28.5) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.103.0))(webpack-hot-middleware@2.26.1)(webpack@5.103.0) '@storybook/core-webpack': 7.4.6(encoding@0.1.13) '@storybook/docs-tools': 7.4.6(encoding@0.1.13) '@storybook/node-logger': 7.4.6 '@storybook/react': 7.4.6(encoding@0.1.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.101.0) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.103.0) '@types/node': 16.18.126 - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 babel-plugin-add-react-displayname: 0.0.5 babel-plugin-react-docgen: 4.2.1 - fs-extra: 11.3.1 + fs-extra: 11.3.2 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) react-refresh: 0.11.0 - semver: 7.7.2 - webpack: 5.101.0(webpack-cli@5.1.4) + semver: 7.7.3 + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.5 typescript: 5.8.3 transitivePeerDependencies: - '@swc/core' @@ -31806,22 +34440,22 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3)': + '@storybook/preset-react-webpack@8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.5.3)))(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3)': dependencies: '@storybook/core-webpack': 8.6.14(storybook@8.6.14(prettier@3.5.3)) '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.101.0) - '@types/semver': 7.7.0 + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)) + '@types/semver': 7.7.1 find-up: 5.0.0 - magic-string: 0.30.17 + magic-string: 0.30.21 react: 18.2.0 react-docgen: 7.1.1 react-dom: 18.2.0(react@18.2.0) - resolve: 1.22.10 - semver: 7.7.2 + resolve: 1.22.11 + semver: 7.7.3 storybook: 8.6.14(prettier@3.5.3) tsconfig-paths: 4.2.0 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -31832,22 +34466,22 @@ snapshots: - uglify-js - webpack-cli - '@storybook/preset-react-webpack@8.6.14(@storybook/test@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4)': + '@storybook/preset-react-webpack@8.6.14(@storybook/test@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4)': dependencies: - '@storybook/core-webpack': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.101.0) - '@types/semver': 7.7.0 + '@storybook/core-webpack': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.103.0) + '@types/semver': 7.7.1 find-up: 5.0.0 - magic-string: 0.30.17 + magic-string: 0.30.21 react: 18.2.0 react-docgen: 7.1.1 react-dom: 18.2.0(react@18.2.0) - resolve: 1.22.10 - semver: 7.7.2 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + resolve: 1.22.11 + semver: 7.7.3 + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) tsconfig-paths: 4.2.0 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -31896,9 +34530,9 @@ snapshots: dependencies: storybook: 8.6.14(prettier@3.5.3) - '@storybook/preview-api@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/preview-api@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) '@storybook/preview-web@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: @@ -31909,7 +34543,7 @@ snapshots: '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) ansi-to-html: 0.6.15 - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 lodash: 4.17.21 qs: 6.14.0 @@ -31930,7 +34564,7 @@ snapshots: '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/store': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) ansi-to-html: 0.6.15 - core-js: 3.45.0 + core-js: 3.47.0 global: 4.4.0 lodash: 4.17.21 qs: 6.14.0 @@ -31944,9 +34578,9 @@ snapshots: '@storybook/preview@7.4.6': {} - '@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@4.9.5)(webpack@5.101.0)': + '@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@4.9.5)(webpack@5.103.0)': dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.2.0 @@ -31954,13 +34588,41 @@ snapshots: react-docgen-typescript: 2.4.0(typescript@4.9.5) tslib: 2.8.1 typescript: 4.9.5 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) + transitivePeerDependencies: + - supports-color + + '@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)))': + dependencies: + debug: 4.4.3(supports-color@8.1.1) + endent: 2.1.0 + find-cache-dir: 3.3.2 + flat-cache: 3.2.0 + micromatch: 4.0.8 + react-docgen-typescript: 2.4.0(typescript@5.8.3) + tslib: 2.8.1 + typescript: 5.8.3 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + transitivePeerDependencies: + - supports-color + + '@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.103.0)': + dependencies: + debug: 4.4.3(supports-color@8.1.1) + endent: 2.1.0 + find-cache-dir: 3.3.2 + flat-cache: 3.2.0 + micromatch: 4.0.8 + react-docgen-typescript: 2.4.0(typescript@5.8.3) + tslib: 2.8.1 + typescript: 5.8.3 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) transitivePeerDependencies: - supports-color - '@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.101.0)': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12))': dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.2.0 @@ -31968,13 +34630,13 @@ snapshots: react-docgen-typescript: 2.4.0(typescript@5.8.3) tslib: 2.8.1 typescript: 5.8.3 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12) transitivePeerDependencies: - supports-color - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.101.0)': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.103.0)': dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.2.0 @@ -31982,7 +34644,7 @@ snapshots: react-docgen-typescript: 2.4.0(typescript@5.8.3) tslib: 2.8.1 typescript: 5.8.3 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) transitivePeerDependencies: - supports-color @@ -32002,11 +34664,11 @@ snapshots: react-dom: 18.2.0(react@18.2.0) storybook: 8.6.14(prettier@3.5.3) - '@storybook/react-dom-shim@8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/react-dom-shim@8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) '@storybook/react-dom-shim@8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.14(prettier@3.5.3))': dependencies: @@ -32014,47 +34676,47 @@ snapshots: react-dom: 19.1.0(react@19.1.0) storybook: 8.6.14(prettier@3.5.3) - '@storybook/react-dom-shim@8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/react-dom-shim@8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) - '@storybook/react-dom-shim@9.1.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/react-dom-shim@9.1.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) - '@storybook/react-vite@9.1.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.46.2)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)': + '@storybook/react-vite@9.1.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.53.2)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.8.3) - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) - '@storybook/builder-vite': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/react': 9.1.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) + '@storybook/builder-vite': 9.1.16(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/react': 9.1.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) find-up: 7.0.0 - magic-string: 0.30.17 + magic-string: 0.30.21 react: 19.1.0 - react-docgen: 8.0.0 + react-docgen: 8.0.2 react-dom: 19.1.0(react@19.1.0) - resolve: 1.22.10 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + resolve: 1.22.11 + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) tsconfig-paths: 4.2.0 transitivePeerDependencies: - rollup - supports-color - typescript - '@storybook/react-webpack5@7.4.6(@babel/core@7.27.7)(@swc/helpers@0.5.17)(@types/react-dom@18.2.0)(@types/react@18.2.0)(@types/webpack@5.28.5(webpack-cli@5.1.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)': + '@storybook/react-webpack5@7.4.6(@babel/core@7.28.5)(@swc/helpers@0.5.17)(@types/react-dom@18.2.0)(@types/react@18.2.0)(@types/webpack@5.28.5(webpack-cli@5.1.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)': dependencies: '@storybook/builder-webpack5': 7.4.6(@swc/helpers@0.5.17)(@types/react-dom@18.2.0)(@types/react@18.2.0)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@5.1.4) - '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.27.7)(@types/webpack@5.28.5(webpack-cli@5.1.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1) + '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.28.5)(@types/webpack@5.28.5(webpack-cli@5.1.4))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1) '@storybook/react': 7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@types/node': 16.18.126 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.5 typescript: 5.8.3 transitivePeerDependencies: - '@rspack/core' @@ -32074,16 +34736,16 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react-webpack5@7.4.6(@babel/core@7.27.7)(@swc/helpers@0.5.17)(@types/react-dom@18.2.0)(@types/react@18.2.0)(@types/webpack@5.28.5)(encoding@0.1.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-hot-middleware@2.26.1)': + '@storybook/react-webpack5@7.4.6(@babel/core@7.28.5)(@swc/helpers@0.5.17)(@types/react-dom@18.2.0)(@types/react@18.2.0)(@types/webpack@5.28.5)(encoding@0.1.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-hot-middleware@2.26.1)': dependencies: '@storybook/builder-webpack5': 7.4.6(@swc/helpers@0.5.17)(@types/react-dom@18.2.0)(@types/react@18.2.0)(encoding@0.1.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) - '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.27.7)(@types/webpack@5.28.5)(encoding@0.1.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-hot-middleware@2.26.1) + '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.28.5)(@types/webpack@5.28.5)(encoding@0.1.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-hot-middleware@2.26.1) '@storybook/react': 7.4.6(encoding@0.1.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3) '@types/node': 16.18.126 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.5 typescript: 5.8.3 transitivePeerDependencies: - '@rspack/core' @@ -32103,10 +34765,10 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react-webpack5@8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3)': + '@storybook/react-webpack5@8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.5.3)))(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3)': dependencies: - '@storybook/builder-webpack5': 8.6.14(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3) - '@storybook/preset-react-webpack': 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3) + '@storybook/builder-webpack5': 8.6.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3) + '@storybook/preset-react-webpack': 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.5.3)))(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3) '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -32122,14 +34784,14 @@ snapshots: - uglify-js - webpack-cli - '@storybook/react-webpack5@8.6.14(@storybook/test@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4)': + '@storybook/react-webpack5@8.6.14(@storybook/test@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4)': dependencies: - '@storybook/builder-webpack5': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4) - '@storybook/preset-react-webpack': 8.6.14(@storybook/test@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4) - '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) + '@storybook/builder-webpack5': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4) + '@storybook/preset-react-webpack': 8.6.14(@storybook/test@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4) + '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -32141,19 +34803,19 @@ snapshots: - uglify-js - webpack-cli - '@storybook/react@6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@types/webpack@5.28.5(webpack-cli@4.10.0))(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)': + '@storybook/react@6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@storybook/manager-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/webpack@5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)': dependencies: '@babel/preset-flow': 7.27.1(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5(webpack-cli@4.10.0))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.101.0) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.103.0) '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 - '@storybook/core': 6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/core': 6.5.16(@storybook/builder-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@storybook/manager-webpack5@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/docs-tools': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/node-logger': 6.5.16 - '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.101.0) + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.103.0) '@storybook/semver': 7.3.2 '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/estree': 0.0.51 @@ -32164,7 +34826,7 @@ snapshots: acorn-walk: 7.2.0 babel-plugin-add-react-displayname: 0.0.5 babel-plugin-react-docgen: 4.2.1 - core-js: 3.45.0 + core-js: 3.47.0 escodegen: 2.1.0 fs-extra: 9.1.0 global: 4.4.0 @@ -32180,11 +34842,11 @@ snapshots: require-from-string: 2.0.2 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@4.10.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) optionalDependencies: '@babel/core': 7.27.7 - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) - '@storybook/manager-webpack5': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/builder-webpack5': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/manager-webpack5': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) typescript: 5.8.3 transitivePeerDependencies: - '@storybook/mdx2-csf' @@ -32205,19 +34867,19 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react@6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@types/webpack@5.28.5(webpack-cli@6.0.1))(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)': + '@storybook/react@6.5.16(@babel/core@7.27.7)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@types/webpack@5.28.5(webpack-cli@4.10.0))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)': dependencies: '@babel/preset-flow': 7.27.1(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5(webpack-cli@6.0.1))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.101.0) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5(webpack-cli@4.10.0))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.103.0) '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 - '@storybook/core': 6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/core': 6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/docs-tools': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/node-logger': 6.5.16 - '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.101.0) + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.103.0) '@storybook/semver': 7.3.2 '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/estree': 0.0.51 @@ -32228,7 +34890,7 @@ snapshots: acorn-walk: 7.2.0 babel-plugin-add-react-displayname: 0.0.5 babel-plugin-react-docgen: 4.2.1 - core-js: 3.45.0 + core-js: 3.47.0 escodegen: 2.1.0 fs-extra: 9.1.0 global: 4.4.0 @@ -32244,11 +34906,11 @@ snapshots: require-from-string: 2.0.2 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(webpack-cli@4.10.0) optionalDependencies: '@babel/core': 7.27.7 - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) - '@storybook/manager-webpack5': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/manager-webpack5': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) typescript: 5.8.3 transitivePeerDependencies: - '@storybook/mdx2-csf' @@ -32269,19 +34931,19 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react@6.5.16(@babel/core@7.27.7)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1)': + '@storybook/react@6.5.16(@babel/core@7.27.7)(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/webpack@5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17)))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1)': dependencies: '@babel/preset-flow': 7.27.1(@babel/core@7.27.7) '@babel/preset-react': 7.27.1(@babel/core@7.27.7) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1)(webpack@5.101.0) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17)))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 - '@storybook/core': 6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/docs-tools': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/node-logger': 6.5.16 - '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.101.0) + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) '@storybook/semver': 7.3.2 '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/estree': 0.0.51 @@ -32292,7 +34954,7 @@ snapshots: acorn-walk: 7.2.0 babel-plugin-add-react-displayname: 0.0.5 babel-plugin-react-docgen: 4.2.1 - core-js: 3.45.0 + core-js: 3.47.0 escodegen: 2.1.0 fs-extra: 9.1.0 global: 4.4.0 @@ -32308,7 +34970,7 @@ snapshots: require-from-string: 2.0.2 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) optionalDependencies: '@babel/core': 7.27.7 typescript: 5.8.3 @@ -32331,19 +34993,19 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react@6.5.16(@babel/core@7.27.7)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1)': + '@storybook/react@6.5.16(@babel/core@7.28.5)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.103.0))(webpack-hot-middleware@2.26.1)': dependencies: - '@babel/preset-flow': 7.27.1(@babel/core@7.27.7) - '@babel/preset-react': 7.27.1(@babel/core@7.27.7) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1)(webpack@5.101.0) + '@babel/preset-flow': 7.27.1(@babel/core@7.28.5) + '@babel/preset-react': 7.27.1(@babel/core@7.28.5) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.103.0))(webpack-hot-middleware@2.26.1)(webpack@5.103.0) '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 - '@storybook/core': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core': 6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/docs-tools': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/node-logger': 6.5.16 - '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.101.0) + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.103.0) '@storybook/semver': 7.3.2 '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/estree': 0.0.51 @@ -32354,7 +35016,7 @@ snapshots: acorn-walk: 7.2.0 babel-plugin-add-react-displayname: 0.0.5 babel-plugin-react-docgen: 4.2.1 - core-js: 3.45.0 + core-js: 3.47.0 escodegen: 2.1.0 fs-extra: 9.1.0 global: 4.4.0 @@ -32370,9 +35032,9 @@ snapshots: require-from-string: 2.0.2 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.5 typescript: 5.8.3 transitivePeerDependencies: - '@storybook/mdx2-csf' @@ -32393,19 +35055,81 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react@6.5.16(@babel/core@7.27.7)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@4.9.5)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1)': + '@storybook/react@6.5.16(@babel/core@7.28.5)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.103.0))(webpack-hot-middleware@2.26.1)': dependencies: - '@babel/preset-flow': 7.27.1(@babel/core@7.27.7) - '@babel/preset-react': 7.27.1(@babel/core@7.27.7) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1)(webpack@5.101.0) + '@babel/preset-flow': 7.27.1(@babel/core@7.28.5) + '@babel/preset-react': 7.27.1(@babel/core@7.28.5) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.103.0))(webpack-hot-middleware@2.26.1)(webpack@5.103.0) + '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/client-logger': 6.5.16 + '@storybook/core': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/docs-tools': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/node-logger': 6.5.16 + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.103.0) + '@storybook/semver': 7.3.2 + '@storybook/store': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/estree': 0.0.51 + '@types/node': 16.18.126 + '@types/webpack-env': 1.18.8 + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + acorn-walk: 7.2.0 + babel-plugin-add-react-displayname: 0.0.5 + babel-plugin-react-docgen: 4.2.1 + core-js: 3.47.0 + escodegen: 2.1.0 + fs-extra: 9.1.0 + global: 4.4.0 + html-tags: 3.3.1 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-element-to-jsx-string: 14.3.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-refresh: 0.11.0 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.11 + require-from-string: 2.0.2 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + webpack: 5.103.0(webpack-cli@5.1.4) + optionalDependencies: + '@babel/core': 7.28.5 + typescript: 5.8.3 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - '@swc/core' + - '@types/webpack' + - bufferutil + - encoding + - esbuild + - eslint + - sockjs-client + - supports-color + - type-fest + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + + '@storybook/react@6.5.16(@babel/core@7.28.5)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(require-from-string@2.0.2)(type-fest@4.41.0)(typescript@4.9.5)(webpack-dev-server@5.2.2(webpack@5.103.0))(webpack-hot-middleware@2.26.1)': + dependencies: + '@babel/preset-flow': 7.27.1(@babel/core@7.28.5) + '@babel/preset-react': 7.27.1(@babel/core@7.28.5) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.103.0))(webpack-hot-middleware@2.26.1)(webpack@5.103.0) '@storybook/addons': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@storybook/client-logger': 6.5.16 - '@storybook/core': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.101.0) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) + '@storybook/core': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.103.0) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/docs-tools': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@storybook/node-logger': 6.5.16 - '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@4.9.5)(webpack@5.101.0) + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@4.9.5)(webpack@5.103.0) '@storybook/semver': 7.3.2 '@storybook/store': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@types/estree': 0.0.51 @@ -32416,7 +35140,7 @@ snapshots: acorn-walk: 7.2.0 babel-plugin-add-react-displayname: 0.0.5 babel-plugin-react-docgen: 4.2.1 - core-js: 3.45.0 + core-js: 3.47.0 escodegen: 2.1.0 fs-extra: 9.1.0 global: 4.4.0 @@ -32432,9 +35156,9 @@ snapshots: require-from-string: 2.0.2 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.5 typescript: 4.9.5 transitivePeerDependencies: - '@storybook/mdx2-csf' @@ -32532,35 +35256,35 @@ snapshots: '@storybook/test': 8.6.14(storybook@8.6.14(prettier@3.5.3)) typescript: 5.8.3 - '@storybook/react@8.6.14(@storybook/test@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)': + '@storybook/react@8.6.14(@storybook/test@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)': dependencies: - '@storybook/components': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/components': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/preview-api': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/react-dom-shim': 8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) - '@storybook/theming': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/manager-api': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/preview-api': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/react-dom-shim': 8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/theming': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) optionalDependencies: - '@storybook/test': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/test': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) typescript: 5.8.3 - '@storybook/react@9.1.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)': + '@storybook/react@9.1.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 9.1.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/react-dom-shim': 9.1.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) optionalDependencies: typescript: 5.8.3 '@storybook/router@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/client-logger': 6.5.16 - core-js: 3.45.0 + core-js: 3.47.0 memoizerific: 1.11.3 qs: 6.14.0 react: 18.2.0 @@ -32570,7 +35294,7 @@ snapshots: '@storybook/router@6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@storybook/client-logger': 6.5.16 - core-js: 3.45.0 + core-js: 3.47.0 memoizerific: 1.11.3 qs: 6.14.0 react: 19.1.0 @@ -32595,7 +35319,7 @@ snapshots: '@storybook/semver@7.3.2': dependencies: - core-js: 3.45.0 + core-js: 3.47.0 find-up: 4.1.0 '@storybook/source-loader@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -32603,7 +35327,7 @@ snapshots: '@storybook/addons': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.45.0 + core-js: 3.47.0 estraverse: 5.3.0 global: 4.4.0 loader-utils: 2.0.4 @@ -32619,7 +35343,7 @@ snapshots: '@storybook/client-logger': 6.5.16 '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.45.0 + core-js: 3.47.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -32639,7 +35363,7 @@ snapshots: '@storybook/client-logger': 6.5.16 '@storybook/core-events': 6.5.16 '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.45.0 + core-js: 3.47.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 @@ -32658,12 +35382,39 @@ snapshots: '@storybook/client-logger': 7.4.6 '@storybook/preview-api': 7.4.6 - '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': + '@storybook/telemetry@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': + dependencies: + '@storybook/client-logger': 6.5.16 + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + chalk: 4.1.2 + core-js: 3.47.0 + detect-package-manager: 2.0.1 + fetch-retry: 5.0.6 + fs-extra: 9.1.0 + global: 4.4.0 + isomorphic-unfetch: 3.1.0(encoding@0.1.13) + nanoid: 3.3.11 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.11 + transitivePeerDependencies: + - '@swc/core' + - encoding + - esbuild + - eslint + - react + - react-dom + - supports-color + - typescript + - uglify-js + - vue-template-compiler + - webpack-cli + + '@storybook/telemetry@6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': dependencies: '@storybook/client-logger': 6.5.16 - '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core-common': 6.5.16(@swc/core@1.15.2(@swc/helpers@0.5.17))(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) chalk: 4.1.2 - core-js: 3.45.0 + core-js: 3.47.0 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 fs-extra: 9.1.0 @@ -32685,12 +35436,12 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': + '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: '@storybook/client-logger': 6.5.16 - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) + '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) chalk: 4.1.2 - core-js: 3.45.0 + core-js: 3.47.0 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 fs-extra: 9.1.0 @@ -32712,12 +35463,12 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': + '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': dependencies: '@storybook/client-logger': 6.5.16 - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) chalk: 4.1.2 - core-js: 3.45.0 + core-js: 3.47.0 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 fs-extra: 9.1.0 @@ -32739,12 +35490,12 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)': + '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)': dependencies: '@storybook/client-logger': 6.5.16 - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0) chalk: 4.1.2 - core-js: 3.45.0 + core-js: 3.47.0 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 fs-extra: 9.1.0 @@ -32766,12 +35517,12 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': + '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': dependencies: '@storybook/client-logger': 6.5.16 - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.5.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) + '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.6.1))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) chalk: 4.1.2 - core-js: 3.45.0 + core-js: 3.47.0 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 fs-extra: 9.1.0 @@ -32801,7 +35552,7 @@ snapshots: chalk: 4.1.2 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 - fs-extra: 11.3.1 + fs-extra: 11.3.2 read-pkg-up: 7.0.1 transitivePeerDependencies: - encoding @@ -32818,22 +35569,22 @@ snapshots: '@vitest/spy': 2.0.5 storybook: 8.6.14(prettier@3.5.3) - '@storybook/test@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/test@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/instrumenter': 8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3)) '@testing-library/dom': 10.4.0 '@testing-library/jest-dom': 6.5.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) '@vitest/expect': 2.0.5 '@vitest/spy': 2.0.5 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) optional: true '@storybook/theming@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/client-logger': 6.5.16 - core-js: 3.45.0 + core-js: 3.47.0 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -32842,7 +35593,7 @@ snapshots: '@storybook/theming@6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@storybook/client-logger': 6.5.16 - core-js: 3.45.0 + core-js: 3.47.0 memoizerific: 1.11.3 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -32870,22 +35621,22 @@ snapshots: dependencies: storybook: 8.6.14(prettier@3.5.3) - '@storybook/theming@8.6.14(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))': + '@storybook/theming@8.6.14(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) '@storybook/types@7.4.6': dependencies: '@storybook/channels': 7.4.6 '@types/babel__core': 7.20.5 - '@types/express': 4.17.23 + '@types/express': 4.17.25 file-system-cache: 2.3.0 '@storybook/types@7.6.20': dependencies: '@storybook/channels': 7.6.20 '@types/babel__core': 7.20.5 - '@types/express': 4.17.23 + '@types/express': 4.17.25 file-system-cache: 2.3.0 '@storybook/ui@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -32899,7 +35650,7 @@ snapshots: '@storybook/router': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/semver': 7.3.2 '@storybook/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.45.0 + core-js: 3.47.0 memoizerific: 1.11.3 qs: 6.14.0 react: 18.2.0 @@ -32918,7 +35669,7 @@ snapshots: '@storybook/router': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@storybook/semver': 7.3.2 '@storybook/theming': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - core-js: 3.45.0 + core-js: 3.47.0 memoizerific: 1.11.3 qs: 6.14.0 react: 19.1.0 @@ -32926,20 +35677,20 @@ snapshots: regenerator-runtime: 0.13.11 resolve-from: 5.0.0 - '@swagger-api/apidom-ast@1.0.0-beta.45': + '@swagger-api/apidom-ast@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-error': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-error': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) unraw: 3.0.0 - '@swagger-api/apidom-core@1.0.0-beta.45': + '@swagger-api/apidom-core@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-ast': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-ast': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 '@types/ramda': 0.30.2 minim: 0.23.8 ramda: 0.30.1 @@ -32947,213 +35698,213 @@ snapshots: short-unique-id: 5.3.2 ts-mixer: 6.0.4 - '@swagger-api/apidom-error@1.0.0-beta.45': + '@swagger-api/apidom-error@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 + '@babel/runtime-corejs3': 7.28.4 - '@swagger-api/apidom-json-pointer@1.0.0-beta.45': + '@swagger-api/apidom-json-pointer@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 '@swaggerexpert/json-pointer': 2.10.2 - '@swagger-api/apidom-ns-api-design-systems@1.0.0-beta.45': + '@swagger-api/apidom-ns-api-design-systems@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 + '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 optional: true - '@swagger-api/apidom-ns-arazzo-1@1.0.0-beta.45': + '@swagger-api/apidom-ns-arazzo-1@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-json-schema-2020-12': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-json-schema-2020-12': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 optional: true - '@swagger-api/apidom-ns-asyncapi-2@1.0.0-beta.45': + '@swagger-api/apidom-ns-asyncapi-2@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-json-schema-draft-7': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-json-schema-draft-7': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 optional: true - '@swagger-api/apidom-ns-json-schema-2019-09@1.0.0-beta.45': + '@swagger-api/apidom-ns-json-schema-2019-09@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 - '@swagger-api/apidom-ns-json-schema-draft-7': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 + '@swagger-api/apidom-ns-json-schema-draft-7': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 - '@swagger-api/apidom-ns-json-schema-2020-12@1.0.0-beta.45': + '@swagger-api/apidom-ns-json-schema-2020-12@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 - '@swagger-api/apidom-ns-json-schema-2019-09': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 + '@swagger-api/apidom-ns-json-schema-2019-09': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 - '@swagger-api/apidom-ns-json-schema-draft-4@1.0.0-beta.45': + '@swagger-api/apidom-ns-json-schema-draft-4@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-ast': 1.0.0-beta.45 - '@swagger-api/apidom-core': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-ast': 1.0.0-rc.3 + '@swagger-api/apidom-core': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 - '@swagger-api/apidom-ns-json-schema-draft-6@1.0.0-beta.45': + '@swagger-api/apidom-ns-json-schema-draft-6@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 - '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 + '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 - '@swagger-api/apidom-ns-json-schema-draft-7@1.0.0-beta.45': + '@swagger-api/apidom-ns-json-schema-draft-7@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 - '@swagger-api/apidom-ns-json-schema-draft-6': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 + '@swagger-api/apidom-ns-json-schema-draft-6': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 - '@swagger-api/apidom-ns-openapi-2@1.0.0-beta.45': + '@swagger-api/apidom-ns-openapi-2@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 - '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 + '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 optional: true - '@swagger-api/apidom-ns-openapi-3-0@1.0.0-beta.45': + '@swagger-api/apidom-ns-openapi-3-0@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 - '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 + '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 - '@swagger-api/apidom-ns-openapi-3-1@1.0.0-beta.45': + '@swagger-api/apidom-ns-openapi-3-1@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-ast': 1.0.0-beta.45 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-json-pointer': 1.0.0-beta.45 - '@swagger-api/apidom-ns-json-schema-2020-12': 1.0.0-beta.45 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-ast': 1.0.0-rc.3 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-json-pointer': 1.0.0-rc.3 + '@swagger-api/apidom-ns-json-schema-2020-12': 1.0.0-rc.3 + '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) ts-mixer: 6.0.4 - '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-api-design-systems': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-api-design-systems': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-api-design-systems': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-api-design-systems': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-arazzo-1': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-arazzo-1': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-arazzo-1': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-arazzo-1': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-json@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-json@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-ast': 1.0.0-beta.45 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-ast': 1.0.0-rc.3 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) @@ -33162,78 +35913,78 @@ snapshots: web-tree-sitter: 0.24.5 optional: true - '@swagger-api/apidom-parser-adapter-openapi-json-2@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-openapi-json-2@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-openapi-2': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-openapi-2': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-openapi-2': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-openapi-2': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.3 '@types/ramda': 0.30.2 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optional: true - '@swagger-api/apidom-parser-adapter-yaml-1-2@1.0.0-beta.45': + '@swagger-api/apidom-parser-adapter-yaml-1-2@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-ast': 1.0.0-beta.45 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-ast': 1.0.0-rc.3 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 '@tree-sitter-grammars/tree-sitter-yaml': 0.7.1(tree-sitter@0.22.4) '@types/ramda': 0.30.2 ramda: 0.30.1 @@ -33242,38 +35993,38 @@ snapshots: web-tree-sitter: 0.24.5 optional: true - '@swagger-api/apidom-reference@1.0.0-beta.45': + '@swagger-api/apidom-reference@1.0.0-rc.3': dependencies: - '@babel/runtime-corejs3': 7.28.2 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 + '@babel/runtime-corejs3': 7.28.4 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 '@types/ramda': 0.30.2 - axios: 1.12.0 + axios: 1.12.2 minimatch: 7.4.6 process: 0.11.10 ramda: 0.30.1 ramda-adjunct: 5.1.0(ramda@0.30.1) optionalDependencies: - '@swagger-api/apidom-json-pointer': 1.0.0-beta.45 - '@swagger-api/apidom-ns-arazzo-1': 1.0.0-beta.45 - '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-beta.45 - '@swagger-api/apidom-ns-openapi-2': 1.0.0-beta.45 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.45 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-api-design-systems-json': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-api-design-systems-yaml': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-arazzo-json-1': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-arazzo-yaml-1': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-asyncapi-json-2': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-openapi-json-2': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-openapi-json-3-0': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-openapi-json-3-1': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-openapi-yaml-2': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1': 1.0.0-beta.45 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.45 + '@swagger-api/apidom-json-pointer': 1.0.0-rc.3 + '@swagger-api/apidom-ns-arazzo-1': 1.0.0-rc.3 + '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-rc.3 + '@swagger-api/apidom-ns-openapi-2': 1.0.0-rc.3 + '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-rc.3 + '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-api-design-systems-json': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-api-design-systems-yaml': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-arazzo-json-1': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-arazzo-yaml-1': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-asyncapi-json-2': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-json': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-openapi-json-2': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-openapi-json-3-0': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-openapi-json-3-1': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-openapi-yaml-2': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1': 1.0.0-rc.3 + '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-rc.3 transitivePeerDependencies: - debug @@ -33285,51 +36036,51 @@ snapshots: dependencies: apg-lite: 1.0.5 - '@swc/core-darwin-arm64@1.13.3': + '@swc/core-darwin-arm64@1.15.2': optional: true - '@swc/core-darwin-x64@1.13.3': + '@swc/core-darwin-x64@1.15.2': optional: true - '@swc/core-linux-arm-gnueabihf@1.13.3': + '@swc/core-linux-arm-gnueabihf@1.15.2': optional: true - '@swc/core-linux-arm64-gnu@1.13.3': + '@swc/core-linux-arm64-gnu@1.15.2': optional: true - '@swc/core-linux-arm64-musl@1.13.3': + '@swc/core-linux-arm64-musl@1.15.2': optional: true - '@swc/core-linux-x64-gnu@1.13.3': + '@swc/core-linux-x64-gnu@1.15.2': optional: true - '@swc/core-linux-x64-musl@1.13.3': + '@swc/core-linux-x64-musl@1.15.2': optional: true - '@swc/core-win32-arm64-msvc@1.13.3': + '@swc/core-win32-arm64-msvc@1.15.2': optional: true - '@swc/core-win32-ia32-msvc@1.13.3': + '@swc/core-win32-ia32-msvc@1.15.2': optional: true - '@swc/core-win32-x64-msvc@1.13.3': + '@swc/core-win32-x64-msvc@1.15.2': optional: true - '@swc/core@1.13.3(@swc/helpers@0.5.17)': + '@swc/core@1.15.2(@swc/helpers@0.5.17)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.24 - optionalDependencies: - '@swc/core-darwin-arm64': 1.13.3 - '@swc/core-darwin-x64': 1.13.3 - '@swc/core-linux-arm-gnueabihf': 1.13.3 - '@swc/core-linux-arm64-gnu': 1.13.3 - '@swc/core-linux-arm64-musl': 1.13.3 - '@swc/core-linux-x64-gnu': 1.13.3 - '@swc/core-linux-x64-musl': 1.13.3 - '@swc/core-win32-arm64-msvc': 1.13.3 - '@swc/core-win32-ia32-msvc': 1.13.3 - '@swc/core-win32-x64-msvc': 1.13.3 + '@swc/types': 0.1.25 + optionalDependencies: + '@swc/core-darwin-arm64': 1.15.2 + '@swc/core-darwin-x64': 1.15.2 + '@swc/core-linux-arm-gnueabihf': 1.15.2 + '@swc/core-linux-arm64-gnu': 1.15.2 + '@swc/core-linux-arm64-musl': 1.15.2 + '@swc/core-linux-x64-gnu': 1.15.2 + '@swc/core-linux-x64-musl': 1.15.2 + '@swc/core-win32-arm64-msvc': 1.15.2 + '@swc/core-win32-ia32-msvc': 1.15.2 + '@swc/core-win32-x64-msvc': 1.15.2 '@swc/helpers': 0.5.17 '@swc/counter@0.1.3': {} @@ -33338,7 +36089,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/types@0.1.24': + '@swc/types@0.1.25': dependencies: '@swc/counter': 0.1.3 @@ -33348,7 +36099,7 @@ snapshots: '@tanstack/query-core@4.27.0': {} - '@tanstack/query-core@4.40.0': {} + '@tanstack/query-core@4.41.0': {} '@tanstack/query-core@5.76.0': {} @@ -33356,7 +36107,7 @@ snapshots: '@tanstack/query-core@5.77.1': {} - '@tanstack/query-core@5.83.1': {} + '@tanstack/query-core@5.90.10': {} '@tanstack/query-persist-client-core@4.27.0': dependencies: @@ -33369,19 +36120,19 @@ snapshots: '@tanstack/react-query@4.0.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@tanstack/query-core': 4.40.0 + '@tanstack/query-core': 4.41.0 '@types/use-sync-external-store': 0.0.3 react: 18.2.0 - use-sync-external-store: 1.5.0(react@18.2.0) + use-sync-external-store: 1.6.0(react@18.2.0) optionalDependencies: react-dom: 18.2.0(react@18.2.0) '@tanstack/react-query@4.0.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@tanstack/query-core': 4.40.0 + '@tanstack/query-core': 4.41.0 '@types/use-sync-external-store': 0.0.3 react: 19.1.0 - use-sync-external-store: 1.5.0(react@19.1.0) + use-sync-external-store: 1.6.0(react@19.1.0) optionalDependencies: react-dom: 19.1.0(react@19.1.0) @@ -33389,7 +36140,7 @@ snapshots: dependencies: '@tanstack/query-core': 4.27.0 react: 18.2.0 - use-sync-external-store: 1.5.0(react@18.2.0) + use-sync-external-store: 1.6.0(react@18.2.0) optionalDependencies: react-dom: 18.2.0(react@18.2.0) @@ -33425,7 +36176,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -33436,7 +36187,7 @@ snapshots: '@testing-library/dom@10.4.1': dependencies: '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@types/aria-query': 5.0.4 aria-query: 5.3.0 dom-accessibility-api: 0.5.16 @@ -33446,7 +36197,7 @@ snapshots: '@testing-library/jest-dom@6.5.0': dependencies: - '@adobe/css-tools': 4.4.3 + '@adobe/css-tools': 4.4.4 aria-query: 5.3.2 chalk: 3.0.0 css.escape: 1.5.1 @@ -33456,7 +36207,7 @@ snapshots: '@testing-library/jest-dom@6.6.4': dependencies: - '@adobe/css-tools': 4.4.3 + '@adobe/css-tools': 4.4.4 aria-query: 5.3.2 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 @@ -33466,7 +36217,7 @@ snapshots: '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 '@testing-library/dom': 10.4.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -33482,18 +36233,18 @@ snapshots: dependencies: '@testing-library/dom': 10.4.1 - '@textlint/ast-node-types@14.8.4': {} + '@textlint/ast-node-types@15.4.0': {} - '@textlint/linter-formatter@14.8.4': + '@textlint/linter-formatter@15.4.0': dependencies: '@azu/format-text': 1.0.2 '@azu/style-format': 1.0.1 - '@textlint/module-interop': 14.8.4 - '@textlint/resolver': 14.8.4 - '@textlint/types': 14.8.4 + '@textlint/module-interop': 15.4.0 + '@textlint/resolver': 15.4.0 + '@textlint/types': 15.4.0 chalk: 4.1.2 - debug: 4.4.1(supports-color@8.1.1) - js-yaml: 3.14.1 + debug: 4.4.3(supports-color@8.1.1) + js-yaml: 4.1.1 lodash: 4.17.21 pluralize: 2.0.0 string-width: 4.2.3 @@ -33503,13 +36254,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@textlint/module-interop@14.8.4': {} + '@textlint/module-interop@15.4.0': {} - '@textlint/resolver@14.8.4': {} + '@textlint/resolver@15.4.0': {} - '@textlint/types@14.8.4': + '@textlint/types@15.4.0': dependencies: - '@textlint/ast-node-types': 14.8.4 + '@textlint/ast-node-types': 15.4.0 '@tokenizer/token@0.3.0': {} @@ -33537,31 +36288,44 @@ snapshots: '@ts-morph/common@0.27.0': dependencies: fast-glob: 3.3.3 - minimatch: 10.0.3 + minimatch: 10.1.1 path-browserify: 1.0.1 + '@tsconfig/node10@1.0.12': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@types/blueimp-md5@2.18.2': {} @@ -33580,9 +36344,10 @@ snapshots: '@types/chai@4.3.20': {} - '@types/chai@5.2.2': + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 '@types/classnames@2.3.4': dependencies: @@ -33592,13 +36357,13 @@ snapshots: dependencies: '@types/tern': 0.23.9 - '@types/codemirror@5.60.16': + '@types/codemirror@5.60.17': dependencies: '@types/tern': 0.23.9 '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 4.19.6 + '@types/express-serve-static-core': 4.19.7 '@types/node': 22.15.35 '@types/connect@3.4.38': @@ -33627,7 +36392,7 @@ snapshots: '@types/ejs@3.1.5': {} - '@types/emscripten@1.40.1': {} + '@types/emscripten@1.41.5': {} '@types/escodegen@0.0.6': {} @@ -33653,19 +36418,19 @@ snapshots: '@types/estree@1.0.8': {} - '@types/express-serve-static-core@4.19.6': + '@types/express-serve-static-core@4.19.7': dependencies: '@types/node': 22.15.35 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.5 + '@types/send': 1.2.1 - '@types/express@4.17.23': + '@types/express@4.17.25': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.6 + '@types/express-serve-static-core': 4.19.7 '@types/qs': 6.14.0 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.10 '@types/find-cache-dir@3.2.1': {} @@ -33713,7 +36478,7 @@ snapshots: '@types/http-errors@2.0.5': {} - '@types/http-proxy@1.17.16': + '@types/http-proxy@1.17.17': dependencies: '@types/node': 22.15.35 @@ -33744,6 +36509,11 @@ snapshots: expect: 29.7.0 pretty-format: 29.7.0 + '@types/jest@30.0.0': + dependencies: + expect: 30.2.0 + pretty-format: 30.2.0 + '@types/js-yaml@4.0.9': {} '@types/jsdom@20.0.1': @@ -33798,7 +36568,7 @@ snapshots: '@types/minimatch@6.0.0': dependencies: - minimatch: 10.0.3 + minimatch: 10.1.1 '@types/minimist@1.2.5': {} @@ -33813,19 +36583,19 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: '@types/node': 22.15.35 - form-data: 4.0.4 + form-data: 4.0.5 - '@types/node-forge@1.3.13': + '@types/node-forge@1.3.14': dependencies: '@types/node': 22.15.35 '@types/node@16.18.126': {} - '@types/node@18.19.121': + '@types/node@18.19.130': dependencies: undici-types: 5.26.5 - '@types/node@20.19.22': + '@types/node@20.19.25': dependencies: undici-types: 6.21.0 @@ -33904,17 +36674,17 @@ snapshots: dependencies: '@types/react': 18.2.0 - '@types/react@17.0.87': + '@types/react@17.0.90': dependencies: '@types/prop-types': 15.7.15 '@types/scheduler': 0.16.8 - csstype: 3.1.3 + csstype: 3.2.3 '@types/react@18.2.0': dependencies: '@types/prop-types': 15.7.15 '@types/scheduler': 0.26.0 - csstype: 3.1.3 + csstype: 3.2.3 '@types/resolve@1.17.1': dependencies: @@ -33932,27 +36702,31 @@ snapshots: '@types/scheduler@0.26.0': {} - '@types/selenium-webdriver@4.1.28': + '@types/selenium-webdriver@4.35.4': dependencies: '@types/node': 22.15.35 '@types/ws': 8.18.1 - '@types/semver@7.7.0': {} + '@types/semver@7.7.1': {} - '@types/send@0.17.5': + '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 '@types/node': 22.15.35 + '@types/send@1.2.1': + dependencies: + '@types/node': 22.15.35 + '@types/serve-index@1.9.4': dependencies: - '@types/express': 4.17.23 + '@types/express': 4.17.25 - '@types/serve-static@1.15.8': + '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 '@types/node': 22.15.35 - '@types/send': 0.17.5 + '@types/send': 0.17.6 '@types/sockjs@0.3.36': dependencies: @@ -34005,11 +36779,11 @@ snapshots: '@types/uuid@9.0.8': {} - '@types/vscode-notebook-renderer@1.72.3': {} + '@types/vscode-notebook-renderer@1.72.4': {} '@types/vscode-webview@1.57.5': {} - '@types/vscode@1.102.0': {} + '@types/vscode@1.106.1': {} '@types/webpack-env@1.18.8': {} @@ -34031,8 +36805,8 @@ snapshots: '@types/webpack@5.28.5': dependencies: '@types/node': 22.15.35 - tapable: 2.2.2 - webpack: 5.101.0(webpack-cli@5.1.4) + tapable: 2.3.0 + webpack: 5.103.0(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -34040,11 +36814,11 @@ snapshots: - webpack-cli optional: true - '@types/webpack@5.28.5(webpack-cli@4.10.0)': + '@types/webpack@5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17))': dependencies: '@types/node': 22.15.35 - tapable: 2.2.2 - webpack: 5.101.0(webpack-cli@4.10.0) + tapable: 2.3.0 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@swc/core' - esbuild @@ -34052,22 +36826,34 @@ snapshots: - webpack-cli optional: true - '@types/webpack@5.28.5(webpack-cli@5.1.4)': + '@types/webpack@5.28.5(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1)': dependencies: '@types/node': 22.15.35 - tapable: 2.2.2 - webpack: 5.101.0(webpack-cli@5.1.4) + tapable: 2.3.0 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack-cli - '@types/webpack@5.28.5(webpack-cli@6.0.1)': + '@types/webpack@5.28.5(webpack-cli@4.10.0)': dependencies: '@types/node': 22.15.35 - tapable: 2.2.2 - webpack: 5.101.0(webpack-cli@6.0.1) + tapable: 2.3.0 + webpack: 5.103.0(webpack-cli@4.10.0) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + optional: true + + '@types/webpack@5.28.5(webpack-cli@5.1.4)': + dependencies: + '@types/node': 22.15.35 + tapable: 2.3.0 + webpack: 5.103.0(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -34086,11 +36872,11 @@ snapshots: '@types/yargs-parser@21.0.3': {} - '@types/yargs@15.0.19': + '@types/yargs@15.0.20': dependencies: '@types/yargs-parser': 21.0.3 - '@types/yargs@17.0.33': + '@types/yargs@17.0.35': dependencies: '@types/yargs-parser': 21.0.3 @@ -34113,12 +36899,12 @@ snapshots: '@typescript-eslint/scope-manager': 5.48.2 '@typescript-eslint/type-utils': 5.48.2(eslint@8.57.1)(typescript@5.8.3) '@typescript-eslint/utils': 5.48.2(eslint@8.57.1)(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 ignore: 5.3.2 natural-compare-lite: 1.4.0 regexpp: 3.2.0 - semver: 7.7.2 + semver: 7.7.3 tsutils: 3.21.0(typescript@5.8.3) optionalDependencies: typescript: 5.8.3 @@ -34127,18 +36913,18 @@ snapshots: '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.8.3) '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - semver: 7.7.2 + semver: 7.7.3 ts-api-utils: 1.4.3(typescript@5.8.3) optionalDependencies: typescript: 5.8.3 @@ -34147,18 +36933,18 @@ snapshots: '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@8.33.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.33.1(eslint@8.57.1)(typescript@5.8.3) '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - semver: 7.7.2 + semver: 7.7.3 ts-api-utils: 1.4.3(typescript@5.8.3) optionalDependencies: typescript: 5.8.3 @@ -34167,7 +36953,7 @@ snapshots: '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.8.3) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.8.3) @@ -34183,15 +36969,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 9.27.0(jiti@2.5.1) + eslint: 9.27.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -34200,15 +36986,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3) + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.33.1(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.32.1(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 9.26.0(jiti@2.5.1) + eslint: 9.26.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -34217,15 +37003,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 9.27.0(jiti@2.5.1) + eslint: 9.27.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -34234,15 +37020,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.33.1 - '@typescript-eslint/type-utils': 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/utils': 8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.33.1 - eslint: 9.27.0(jiti@2.5.1) + eslint: 9.27.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -34279,7 +37065,7 @@ snapshots: '@typescript-eslint/scope-manager': 5.48.2 '@typescript-eslint/types': 5.48.2 '@typescript-eslint/typescript-estree': 5.48.2(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 optionalDependencies: typescript: 5.8.3 @@ -34292,7 +37078,7 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 optionalDependencies: typescript: 5.8.3 @@ -34305,21 +37091,21 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.32.1 '@typescript-eslint/types': 8.32.1 '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.32.1 - debug: 4.4.1(supports-color@8.1.1) - eslint: 9.27.0(jiti@2.5.1) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.27.0(jiti@2.6.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -34330,32 +37116,32 @@ snapshots: '@typescript-eslint/types': 8.33.1 '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.33.1 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.33.1 '@typescript-eslint/types': 8.33.1 '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.33.1 - debug: 4.4.1(supports-color@8.1.1) - eslint: 9.26.0(jiti@2.5.1) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.26.0(jiti@2.6.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.33.1 '@typescript-eslint/types': 8.33.1 '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.33.1 - debug: 4.4.1(supports-color@8.1.1) - eslint: 9.27.0(jiti@2.5.1) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.27.0(jiti@2.6.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -34364,16 +37150,16 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) '@typescript-eslint/types': 8.33.1 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.39.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.47.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.8.3) - '@typescript-eslint/types': 8.39.0 - debug: 4.4.1(supports-color@8.1.1) + '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.8.3) + '@typescript-eslint/types': 8.47.0 + debug: 4.4.3(supports-color@8.1.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -34403,16 +37189,16 @@ snapshots: '@typescript-eslint/types': 8.33.1 '@typescript-eslint/visitor-keys': 8.33.1 - '@typescript-eslint/scope-manager@8.39.0': + '@typescript-eslint/scope-manager@8.47.0': dependencies: - '@typescript-eslint/types': 8.39.0 - '@typescript-eslint/visitor-keys': 8.39.0 + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/visitor-keys': 8.47.0 '@typescript-eslint/tsconfig-utils@8.33.1(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/tsconfig-utils@8.39.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.47.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 @@ -34420,7 +37206,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 5.48.2(typescript@5.8.3) '@typescript-eslint/utils': 5.48.2(eslint@8.57.1)(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 tsutils: 3.21.0(typescript@5.8.3) optionalDependencies: @@ -34432,7 +37218,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.8.3) optionalDependencies: @@ -34444,7 +37230,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.8.3) optionalDependencies: @@ -34452,34 +37238,34 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.32.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.32.1(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) - eslint: 9.26.0(jiti@2.5.1) + '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.26.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) - eslint: 9.27.0(jiti@2.5.1) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.27.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) - eslint: 9.27.0(jiti@2.5.1) + '@typescript-eslint/utils': 8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.27.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -34495,16 +37281,16 @@ snapshots: '@typescript-eslint/types@8.33.1': {} - '@typescript-eslint/types@8.39.0': {} + '@typescript-eslint/types@8.47.0': {} '@typescript-eslint/typescript-estree@2.34.0(typescript@3.9.10)': dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) eslint-visitor-keys: 1.3.0 glob: 7.2.3 is-glob: 4.0.3 lodash: 4.17.21 - semver: 7.7.2 + semver: 7.7.3 tsutils: 3.21.0(typescript@3.9.10) optionalDependencies: typescript: 3.9.10 @@ -34515,10 +37301,10 @@ snapshots: dependencies: '@typescript-eslint/types': 5.48.2 '@typescript-eslint/visitor-keys': 5.48.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.7.2 + semver: 7.7.3 tsutils: 3.21.0(typescript@5.8.3) optionalDependencies: typescript: 5.8.3 @@ -34529,11 +37315,11 @@ snapshots: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.7.2 + semver: 7.7.3 ts-api-utils: 1.4.3(typescript@5.8.3) optionalDependencies: typescript: 5.8.3 @@ -34544,11 +37330,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.3 ts-api-utils: 1.4.3(typescript@5.8.3) optionalDependencies: typescript: 5.8.3 @@ -34559,11 +37345,11 @@ snapshots: dependencies: '@typescript-eslint/types': 8.32.1 '@typescript-eslint/visitor-keys': 8.32.1 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.3 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -34575,27 +37361,27 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) '@typescript-eslint/types': 8.33.1 '@typescript-eslint/visitor-keys': 8.33.1 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.3 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.39.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.47.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.39.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.8.3) - '@typescript-eslint/types': 8.39.0 - '@typescript-eslint/visitor-keys': 8.39.0 - debug: 4.4.1(supports-color@8.1.1) + '@typescript-eslint/project-service': 8.47.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.8.3) + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/visitor-keys': 8.47.0 + debug: 4.4.3(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.3 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -34604,35 +37390,35 @@ snapshots: '@typescript-eslint/utils@5.48.2(eslint@8.57.1)(typescript@5.8.3)': dependencies: '@types/json-schema': 7.0.15 - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 5.48.2 '@typescript-eslint/types': 5.48.2 '@typescript-eslint/typescript-estree': 5.48.2(typescript@5.8.3) eslint: 8.57.1 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@8.57.1) - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color - typescript '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) '@types/json-schema': 7.0.15 - '@types/semver': 7.7.0 + '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) eslint: 8.57.1 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color - typescript '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) @@ -34641,45 +37427,45 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.32.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/utils@8.32.1(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.26.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.32.1 '@typescript-eslint/types': 8.32.1 '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - eslint: 9.26.0(jiti@2.5.1) + eslint: 9.26.0(jiti@2.6.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.27.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.32.1 '@typescript-eslint/types': 8.32.1 '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - eslint: 9.27.0(jiti@2.5.1) + eslint: 9.27.0(jiti@2.6.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)': + '@typescript-eslint/utils@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.27.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.33.1 '@typescript-eslint/types': 8.33.1 '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) - eslint: 9.27.0(jiti@2.5.1) + eslint: 9.27.0(jiti@2.6.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.39.0(eslint@8.57.1)(typescript@5.8.3)': + '@typescript-eslint/utils@8.47.0(eslint@8.57.1)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.39.0 - '@typescript-eslint/types': 8.39.0 - '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.8.3) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.47.0 + '@typescript-eslint/types': 8.47.0 + '@typescript-eslint/typescript-estree': 8.47.0(typescript@5.8.3) eslint: 8.57.1 typescript: 5.8.3 transitivePeerDependencies: @@ -34710,12 +37496,12 @@ snapshots: '@typescript-eslint/types': 8.33.1 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.39.0': + '@typescript-eslint/visitor-keys@8.47.0': dependencies: - '@typescript-eslint/types': 8.39.0 + '@typescript-eslint/types': 8.47.0 eslint-visitor-keys: 4.2.1 - '@typespec/ts-http-runtime@0.3.0': + '@typespec/ts-http-runtime@0.3.2': dependencies: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -34725,21 +37511,21 @@ snapshots: '@uiw/codemirror-extensions-basic-setup@4.23.14(@codemirror/lint@6.8.5)': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/commands': 6.8.1 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.1 + '@codemirror/commands': 6.10.0 + '@codemirror/language': 6.11.3 '@codemirror/lint': 6.8.5 '@codemirror/search': 6.5.11 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.8 - '@uiw/react-codemirror@4.23.14(@codemirror/lint@6.8.5)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@uiw/react-codemirror@4.23.14(@codemirror/lint@6.8.5)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.2 - '@codemirror/commands': 6.8.1 + '@babel/runtime': 7.28.4 + '@codemirror/commands': 6.10.0 '@codemirror/state': 6.5.2 '@codemirror/theme-one-dark': 6.1.3 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.8 '@uiw/codemirror-extensions-basic-setup': 4.23.14(@codemirror/lint@6.8.5) codemirror: 6.0.2 react: 18.2.0 @@ -34749,26 +37535,87 @@ snapshots: '@ungap/structured-clone@1.3.0': {} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + optional: true + + '@unrs/resolver-binding-android-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + dependencies: + '@napi-rs/wasm-runtime': 0.2.12 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + optional: true + + '@vercel/oidc@3.0.3': {} + '@vitest/expect@2.0.5': dependencies: '@vitest/spy': 2.0.5 '@vitest/utils': 2.0.5 - chai: 5.2.1 + chai: 5.3.3 tinyrainbow: 1.2.0 '@vitest/expect@3.2.4': dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 - chai: 5.2.1 + chai: 5.3.3 tinyrainbow: 2.0.0 '@vitest/mocker@3.2.4': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 '@vitest/pretty-format@2.0.5': dependencies: @@ -34788,25 +37635,25 @@ snapshots: '@vitest/spy@3.2.4': dependencies: - tinyspy: 4.0.3 + tinyspy: 4.0.4 '@vitest/utils@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 estree-walker: 3.0.3 - loupe: 3.2.0 + loupe: 3.2.1 tinyrainbow: 1.2.0 '@vitest/utils@2.1.9': dependencies: '@vitest/pretty-format': 2.1.9 - loupe: 3.2.0 + loupe: 3.2.1 tinyrainbow: 1.2.0 '@vitest/utils@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - loupe: 3.2.0 + loupe: 3.2.1 tinyrainbow: 2.0.0 '@vscode-logging/logger@2.0.0': @@ -34838,13 +37685,13 @@ snapshots: '@vscode/extension-telemetry@1.0.0(tslib@2.8.1)': dependencies: - '@microsoft/1ds-core-js': 4.3.9(tslib@2.8.1) - '@microsoft/1ds-post-js': 4.3.9(tslib@2.8.1) - '@microsoft/applicationinsights-web-basic': 3.3.9(tslib@2.8.1) + '@microsoft/1ds-core-js': 4.3.10(tslib@2.8.1) + '@microsoft/1ds-post-js': 4.3.10(tslib@2.8.1) + '@microsoft/applicationinsights-web-basic': 3.3.10(tslib@2.8.1) transitivePeerDependencies: - tslib - '@vscode/iconv-lite-umd@0.7.0': {} + '@vscode/iconv-lite-umd@0.7.1': {} '@vscode/test-electron@2.5.2': dependencies: @@ -34852,87 +37699,59 @@ snapshots: https-proxy-agent: 7.0.6 jszip: 3.10.1 ora: 8.2.0 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color - '@vscode/vsce-sign-alpine-arm64@2.0.5': + '@vscode/vsce-sign-alpine-arm64@2.0.6': optional: true - '@vscode/vsce-sign-alpine-x64@2.0.5': + '@vscode/vsce-sign-alpine-x64@2.0.6': optional: true - '@vscode/vsce-sign-darwin-arm64@2.0.5': + '@vscode/vsce-sign-darwin-arm64@2.0.6': optional: true - '@vscode/vsce-sign-darwin-x64@2.0.5': + '@vscode/vsce-sign-darwin-x64@2.0.6': optional: true - '@vscode/vsce-sign-linux-arm64@2.0.5': + '@vscode/vsce-sign-linux-arm64@2.0.6': optional: true - '@vscode/vsce-sign-linux-arm@2.0.5': + '@vscode/vsce-sign-linux-arm@2.0.6': optional: true - '@vscode/vsce-sign-linux-x64@2.0.5': + '@vscode/vsce-sign-linux-x64@2.0.6': optional: true - '@vscode/vsce-sign-win32-arm64@2.0.5': + '@vscode/vsce-sign-win32-arm64@2.0.6': optional: true - '@vscode/vsce-sign-win32-x64@2.0.5': + '@vscode/vsce-sign-win32-x64@2.0.6': optional: true - '@vscode/vsce-sign@2.0.6': + '@vscode/vsce-sign@2.0.9': optionalDependencies: - '@vscode/vsce-sign-alpine-arm64': 2.0.5 - '@vscode/vsce-sign-alpine-x64': 2.0.5 - '@vscode/vsce-sign-darwin-arm64': 2.0.5 - '@vscode/vsce-sign-darwin-x64': 2.0.5 - '@vscode/vsce-sign-linux-arm': 2.0.5 - '@vscode/vsce-sign-linux-arm64': 2.0.5 - '@vscode/vsce-sign-linux-x64': 2.0.5 - '@vscode/vsce-sign-win32-arm64': 2.0.5 - '@vscode/vsce-sign-win32-x64': 2.0.5 - - '@vscode/vsce@2.21.1': - dependencies: - azure-devops-node-api: 11.2.0 - chalk: 2.4.2 - cheerio: 1.1.2 - commander: 6.2.1 - glob: 7.2.3 - hosted-git-info: 4.1.0 - jsonc-parser: 3.3.1 - leven: 3.1.0 - markdown-it: 12.3.2 - mime: 1.6.0 - minimatch: 3.1.2 - parse-semver: 1.1.1 - read: 1.0.7 - semver: 7.7.2 - tmp: 0.2.4 - typed-rest-client: 1.8.11 - url-join: 4.0.1 - xml2js: 0.5.0 - yauzl: 2.10.0 - yazl: 2.5.1 - optionalDependencies: - keytar: 7.9.0 - transitivePeerDependencies: - - bare-buffer - - react-native-b4a + '@vscode/vsce-sign-alpine-arm64': 2.0.6 + '@vscode/vsce-sign-alpine-x64': 2.0.6 + '@vscode/vsce-sign-darwin-arm64': 2.0.6 + '@vscode/vsce-sign-darwin-x64': 2.0.6 + '@vscode/vsce-sign-linux-arm': 2.0.6 + '@vscode/vsce-sign-linux-arm64': 2.0.6 + '@vscode/vsce-sign-linux-x64': 2.0.6 + '@vscode/vsce-sign-win32-arm64': 2.0.6 + '@vscode/vsce-sign-win32-x64': 2.0.6 '@vscode/vsce@2.32.0': dependencies: - '@azure/identity': 4.11.1 - '@vscode/vsce-sign': 2.0.6 + '@azure/identity': 4.13.0 + '@vscode/vsce-sign': 2.0.9 azure-devops-node-api: 12.5.0 chalk: 2.4.2 cheerio: 1.1.2 cockatiel: 3.2.1 commander: 6.2.1 - form-data: 4.0.4 + form-data: 4.0.5 glob: 7.2.3 hosted-git-info: 4.1.0 jsonc-parser: 3.3.1 @@ -34942,8 +37761,8 @@ snapshots: minimatch: 3.1.2 parse-semver: 1.1.1 read: 1.0.7 - semver: 7.7.2 - tmp: 0.2.4 + semver: 7.7.3 + tmp: 0.2.5 typed-rest-client: 1.8.11 url-join: 4.0.1 xml2js: 0.5.0 @@ -34952,25 +37771,26 @@ snapshots: optionalDependencies: keytar: 7.9.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - react-native-b4a - supports-color - '@vscode/vsce@3.4.2': + '@vscode/vsce@3.7.0': dependencies: - '@azure/identity': 4.11.1 - '@secretlint/node': 9.3.4 - '@secretlint/secretlint-formatter-sarif': 9.3.4 - '@secretlint/secretlint-rule-no-dotenv': 9.3.4 - '@secretlint/secretlint-rule-preset-recommend': 9.3.4 - '@vscode/vsce-sign': 2.0.6 + '@azure/identity': 4.13.0 + '@secretlint/node': 10.2.2 + '@secretlint/secretlint-formatter-sarif': 10.2.2 + '@secretlint/secretlint-rule-no-dotenv': 10.2.2 + '@secretlint/secretlint-rule-preset-recommend': 10.2.2 + '@vscode/vsce-sign': 2.0.9 azure-devops-node-api: 12.5.0 - chalk: 2.4.2 + chalk: 4.1.2 cheerio: 1.1.2 cockatiel: 3.2.1 commander: 12.1.0 - form-data: 4.0.4 - glob: 11.0.3 + form-data: 4.0.5 + glob: 11.1.0 hosted-git-info: 4.1.0 jsonc-parser: 3.3.1 leven: 3.1.0 @@ -34979,9 +37799,9 @@ snapshots: minimatch: 3.1.2 parse-semver: 1.1.1 read: 1.0.7 - secretlint: 9.3.4 - semver: 7.7.2 - tmp: 0.2.4 + secretlint: 10.2.2 + semver: 7.7.3 + tmp: 0.2.5 typed-rest-client: 1.8.11 url-join: 4.0.1 xml2js: 0.5.0 @@ -34990,6 +37810,7 @@ snapshots: optionalDependencies: keytar: 7.9.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - react-native-b4a - supports-color @@ -35086,81 +37907,81 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.101.0)': + '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.103.0)': dependencies: - webpack: 5.101.0(webpack-cli@4.10.0) - webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.103.0) - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.101.0)': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.103.0)': dependencies: - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.103.0) - '@webpack-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.101.0)': + '@webpack-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.103.0)': dependencies: - webpack: 5.101.0(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack@5.103.0) '@webpack-cli/info@1.5.0(webpack-cli@4.10.0)': dependencies: - envinfo: 7.14.0 - webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0) + envinfo: 7.20.0 + webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.103.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.101.0)': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.103.0)': dependencies: - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.103.0) - '@webpack-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.101.0)': + '@webpack-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.103.0)': dependencies: - webpack: 5.101.0(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack@5.103.0) '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)': dependencies: - webpack-cli: 4.10.0(webpack@5.101.0) + webpack-cli: 4.10.0(webpack@5.103.0) '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)(webpack-dev-server@5.2.2)': dependencies: - webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0) + webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.103.0) optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.101.0) + webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.103.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack@5.101.0)': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack@5.103.0)': dependencies: - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.103.0) optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.101.0) + webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.103.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.101.0)': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.103.0)': dependencies: - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.103.0) - '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.101.0)': + '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.103.0)': dependencies: - webpack: 5.101.0(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.103.0) optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) + webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.103.0) - '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack@5.101.0)': + '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack@5.103.0)': dependencies: - webpack: 5.101.0(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack@5.103.0) '@xmldom/xmldom@0.7.13': {} - '@xmldom/xmldom@0.8.10': {} + '@xmldom/xmldom@0.8.11': {} '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} - '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.25.8)': + '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.25.12)': dependencies: - esbuild: 0.25.8 + esbuild: 0.25.12 tslib: 2.8.1 '@yarnpkg/fslib@2.10.3': @@ -35170,7 +37991,7 @@ snapshots: '@yarnpkg/libzip@2.3.0': dependencies: - '@types/emscripten': 1.40.1 + '@types/emscripten': 1.41.5 tslib: 1.14.1 abab@1.0.4: {} @@ -35249,7 +38070,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -35269,11 +38090,19 @@ snapshots: clean-stack: 4.2.0 indent-string: 5.0.0 - ai@5.0.59(zod@4.1.11): + ai@5.0.93(zod@3.25.76): + dependencies: + '@ai-sdk/gateway': 2.0.9(zod@3.25.76) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.17(zod@3.25.76) + '@opentelemetry/api': 1.9.0 + zod: 3.25.76 + + ai@5.0.93(zod@4.1.11): dependencies: - '@ai-sdk/gateway': 1.0.32(zod@4.1.11) + '@ai-sdk/gateway': 2.0.9(zod@4.1.11) '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.10(zod@4.1.11) + '@ai-sdk/provider-utils': 3.0.17(zod@4.1.11) '@opentelemetry/api': 1.9.0 zod: 4.1.11 @@ -35331,7 +38160,7 @@ snapshots: ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -35342,7 +38171,7 @@ snapshots: amdefine@1.0.1: optional: true - anser@2.3.2: {} + anser@2.3.3: {} ansi-align@2.0.0: dependencies: @@ -35368,7 +38197,7 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.0.0: + ansi-escapes@7.2.0: dependencies: environment: 1.1.0 @@ -35384,7 +38213,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.2.2: {} ansi-styles@2.2.1: {} @@ -35398,7 +38227,7 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} ansi-to-html@0.6.15: dependencies: @@ -35457,6 +38286,8 @@ snapshots: delegates: 1.0.0 readable-stream: 3.6.2 + arg@4.1.3: {} + arg@5.0.2: {} argparse@1.0.10: @@ -35654,11 +38485,11 @@ snapshots: dependencies: tslib: 2.8.1 - autoprefixer@10.4.21(postcss@8.5.6): + autoprefixer@10.4.22(postcss@8.5.6): dependencies: - browserslist: 4.25.1 - caniuse-lite: 1.0.30001731 - fraction.js: 4.3.7 + browserslist: 4.28.0 + caniuse-lite: 1.0.30001755 + fraction.js: 5.3.4 normalize-range: 0.1.2 picocolors: 1.1.1 postcss: 8.5.6 @@ -35667,7 +38498,7 @@ snapshots: autoprefixer@6.7.7: dependencies: browserslist: 1.7.7 - caniuse-db: 1.0.30001731 + caniuse-db: 1.0.30001755 normalize-range: 0.1.2 num2fraction: 1.2.2 postcss: 5.2.18 @@ -35676,7 +38507,7 @@ snapshots: autoprefixer@7.1.6: dependencies: browserslist: 2.11.3 - caniuse-lite: 1.0.30001731 + caniuse-lite: 1.0.30001755 normalize-range: 0.1.2 num2fraction: 1.2.2 postcss: 6.0.23 @@ -35684,8 +38515,8 @@ snapshots: autoprefixer@9.8.8: dependencies: - browserslist: 4.25.1 - caniuse-lite: 1.0.30001731 + browserslist: 4.28.0 + caniuse-lite: 1.0.30001755 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -35704,23 +38535,18 @@ snapshots: aws4fetch@1.0.20: {} - axe-core@4.10.3: {} + axe-core@4.11.0: {} - axios@1.12.0: + axios@1.12.2: dependencies: follow-redirects: 1.15.11 - form-data: 4.0.4 + form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug axobject-query@4.1.0: {} - azure-devops-node-api@11.2.0: - dependencies: - tunnel: 0.0.6 - typed-rest-client: 1.8.11 - azure-devops-node-api@12.5.0: dependencies: tunnel: 0.0.6 @@ -35760,15 +38586,19 @@ snapshots: dependencies: '@babel/core': 7.27.7 + babel-core@7.0.0-bridge.0(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + babel-eslint@10.1.0(eslint@6.8.0): dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.0 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/parser': 7.28.5 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 eslint: 6.8.0 eslint-visitor-keys: 1.3.0 - resolve: 1.22.10 + resolve: 1.22.11 transitivePeerDependencies: - supports-color @@ -35899,42 +38729,72 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@10.0.0(@babel/core@7.27.7)(webpack@5.101.0): + babel-jest@30.2.0(@babel/core@7.27.7): + dependencies: + '@babel/core': 7.27.7 + '@jest/transform': 30.2.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 7.0.1 + babel-preset-jest: 30.2.0(@babel/core@7.27.7) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-loader@10.0.0(@babel/core@7.27.7)(webpack@5.103.0): dependencies: '@babel/core': 7.27.7 find-up: 5.0.0 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) - babel-loader@7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(webpack@5.101.0): + babel-loader@7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(webpack@5.103.0): dependencies: babel-core: 7.0.0-bridge.0(@babel/core@7.27.7) find-cache-dir: 1.0.0 loader-utils: 1.4.2 mkdirp: 0.5.6 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) - babel-loader@8.4.1(@babel/core@7.27.7)(webpack@5.101.0): + babel-loader@7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.28.5))(webpack@5.103.0): + dependencies: + babel-core: 7.0.0-bridge.0(@babel/core@7.28.5) + find-cache-dir: 1.0.0 + loader-utils: 1.4.2 + mkdirp: 0.5.6 + webpack: 5.103.0(webpack-cli@5.1.4) + + babel-loader@8.4.1(@babel/core@7.27.7)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): + dependencies: + '@babel/core': 7.27.7 + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + + babel-loader@8.4.1(@babel/core@7.27.7)(webpack@5.103.0): dependencies: '@babel/core': 7.27.7 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) - babel-loader@9.2.1(@babel/core@7.27.7)(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))): + babel-loader@9.2.1(@babel/core@7.27.7)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): dependencies: '@babel/core': 7.27.7 find-cache-dir: 4.0.0 - schema-utils: 4.3.2 - webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)) + schema-utils: 4.3.3 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) - babel-loader@9.2.1(@babel/core@7.27.7)(webpack@5.101.0): + babel-loader@9.2.1(@babel/core@7.27.7)(webpack@5.103.0): dependencies: '@babel/core': 7.27.7 find-cache-dir: 4.0.0 - schema-utils: 4.3.2 - webpack: 5.101.0(webpack-cli@5.1.4) + schema-utils: 4.3.3 + webpack: 5.103.0(webpack-cli@5.1.4) babel-messages@6.23.0: dependencies: @@ -35987,6 +38847,16 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-istanbul@7.0.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 6.0.3 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + babel-plugin-jest-hoist@20.0.3: {} babel-plugin-jest-hoist@22.4.4: {} @@ -35994,44 +38864,58 @@ snapshots: babel-plugin-jest-hoist@25.5.0: dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@types/babel__traverse': 7.28.0 babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 + babel-plugin-jest-hoist@30.2.0: + dependencies: + '@types/babel__core': 7.20.5 + babel-plugin-macros@2.8.0: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 cosmiconfig: 6.0.0 - resolve: 1.22.10 + resolve: 1.22.11 babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 cosmiconfig: 7.1.0 - resolve: 1.22.10 + resolve: 1.22.11 babel-plugin-named-exports-order@0.0.2: {} babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.27.7): dependencies: - '@babel/compat-data': 7.28.0 + '@babel/compat-data': 7.28.5 '@babel/core': 7.27.7 '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.27.7) semver: 6.3.1 transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): + dependencies: + '@babel/compat-data': 7.28.5 + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + optional: true + babel-plugin-polyfill-corejs3@0.1.7(@babel/core@7.27.7): dependencies: '@babel/core': 7.27.7 '@babel/helper-define-polyfill-provider': 0.1.5(@babel/core@7.27.7) - core-js-compat: 3.45.0 + core-js-compat: 3.47.0 transitivePeerDependencies: - supports-color @@ -36039,9 +38923,18 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.27.7) - core-js-compat: 3.45.0 + core-js-compat: 3.47.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + core-js-compat: 3.47.0 transitivePeerDependencies: - supports-color + optional: true babel-plugin-polyfill-regenerator@0.0.4(@babel/core@7.27.7): dependencies: @@ -36057,6 +38950,14 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + optional: true + babel-plugin-react-docgen@4.2.1: dependencies: ast-types: 0.14.2 @@ -36365,6 +39266,12 @@ snapshots: babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.27.7) + babel-preset-jest@30.2.0(@babel/core@7.27.7): + dependencies: + '@babel/core': 7.27.7 + babel-plugin-jest-hoist: 30.2.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.27.7) + babel-preset-react-app@3.1.2(babel-runtime@6.26.0): dependencies: babel-plugin-dynamic-import-node: 1.1.0 @@ -36445,16 +39352,17 @@ snapshots: balanced-match@2.0.0: {} - bare-events@2.7.0: {} + bare-events@2.8.2: {} - bare-fs@4.4.4: + bare-fs@4.5.1: dependencies: - bare-events: 2.7.0 + bare-events: 2.8.2 bare-path: 3.0.0 - bare-stream: 2.7.0(bare-events@2.7.0) - bare-url: 2.2.2 + bare-stream: 2.7.0(bare-events@2.8.2) + bare-url: 2.3.2 fast-fifo: 1.3.2 transitivePeerDependencies: + - bare-abort-controller - react-native-b4a optional: true @@ -36466,16 +39374,17 @@ snapshots: bare-os: 3.6.2 optional: true - bare-stream@2.7.0(bare-events@2.7.0): + bare-stream@2.7.0(bare-events@2.8.2): dependencies: streamx: 2.23.0 optionalDependencies: - bare-events: 2.7.0 + bare-events: 2.8.2 transitivePeerDependencies: + - bare-abort-controller - react-native-b4a optional: true - bare-url@2.2.2: + bare-url@2.3.2: dependencies: bare-path: 3.0.0 optional: true @@ -36484,6 +39393,8 @@ snapshots: base64-js@1.5.1: {} + baseline-browser-mapping@2.8.29: {} + basic-auth@2.0.1: dependencies: safe-buffer: 5.1.2 @@ -36519,7 +39430,7 @@ snapshots: binaryextensions@6.11.0: dependencies: - editions: 6.21.0 + editions: 6.22.0 bindings@1.5.0: dependencies: @@ -36560,12 +39471,12 @@ snapshots: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) http-errors: 2.0.0 iconv-lite: 0.6.3 on-finished: 2.4.1 qs: 6.14.0 - raw-body: 3.0.0 + raw-body: 3.0.1 type-is: 2.0.1 transitivePeerDependencies: - supports-color @@ -36579,7 +39490,7 @@ snapshots: boundary@2.0.0: {} - bowser@2.11.0: {} + bowser@2.12.1: {} boxen@1.3.0: dependencies: @@ -36635,20 +39546,21 @@ snapshots: browserslist@1.7.7: dependencies: - caniuse-db: 1.0.30001731 - electron-to-chromium: 1.5.198 + caniuse-db: 1.0.30001755 + electron-to-chromium: 1.5.255 browserslist@2.11.3: dependencies: - caniuse-lite: 1.0.30001731 - electron-to-chromium: 1.5.198 + caniuse-lite: 1.0.30001755 + electron-to-chromium: 1.5.255 - browserslist@4.25.1: + browserslist@4.28.0: dependencies: - caniuse-lite: 1.0.30001731 - electron-to-chromium: 1.5.198 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.1) + baseline-browser-mapping: 2.8.29 + caniuse-lite: 1.0.30001755 + electron-to-chromium: 1.5.255 + node-releases: 2.0.27 + update-browserslist-db: 1.1.4(browserslist@4.28.0) bs-logger@0.2.6: dependencies: @@ -36696,12 +39608,14 @@ snapshots: bundle-name@4.1.0: dependencies: - run-applescript: 7.0.0 + run-applescript: 7.1.0 byline@5.0.0: {} bytes-iec@3.1.1: {} + bytes@3.0.0: {} + bytes@3.1.2: {} c8@10.1.3: @@ -36712,7 +39626,7 @@ snapshots: foreground-child: 3.3.1 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-reports: 3.1.7 + istanbul-reports: 3.2.0 test-exclude: 7.0.1 v8-to-istanbul: 9.3.0 yargs: 17.7.2 @@ -36726,7 +39640,7 @@ snapshots: foreground-child: 2.0.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-reports: 3.1.7 + istanbul-reports: 3.2.0 rimraf: 3.0.2 test-exclude: 6.0.0 v8-to-istanbul: 9.3.0 @@ -36800,7 +39714,7 @@ snapshots: http-cache-semantics: 4.2.0 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.0.2 + normalize-url: 8.1.0 responselike: 3.0.0 cacheable-request@12.0.1: @@ -36810,13 +39724,16 @@ snapshots: http-cache-semantics: 4.2.0 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.0.2 + normalize-url: 8.1.0 responselike: 3.0.0 - cacheable@1.10.3: + cacheable@2.2.0: dependencies: - hookified: 1.11.0 - keyv: 5.5.0 + '@cacheable/memory': 2.0.5 + '@cacheable/utils': 2.3.1 + hookified: 1.13.0 + keyv: 5.5.4 + qified: 0.5.2 call-bind-apply-helpers@1.0.2: dependencies: @@ -36880,36 +39797,31 @@ snapshots: caniuse-api@1.6.1: dependencies: browserslist: 1.7.7 - caniuse-db: 1.0.30001731 + caniuse-db: 1.0.30001755 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 caniuse-api@3.0.0: dependencies: - browserslist: 4.25.1 - caniuse-lite: 1.0.30001731 + browserslist: 4.28.0 + caniuse-lite: 1.0.30001755 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-db@1.0.30001731: {} + caniuse-db@1.0.30001755: {} - caniuse-lite@1.0.30001731: {} + caniuse-lite@1.0.30001755: {} - canvas@3.1.2: + canvas@3.2.0: dependencies: node-addon-api: 7.1.1 prebuild-install: 7.1.3 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - react-native-b4a optional: true - capital-case@1.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - upper-case-first: 2.0.2 - capture-exit@2.0.0: dependencies: rsvp: 4.8.5 @@ -36920,6 +39832,8 @@ snapshots: case-sensitive-paths-webpack-plugin@2.4.0: {} + case@1.6.3: {} + caseless@0.12.0: {} ccount@1.1.0: {} @@ -36936,12 +39850,12 @@ snapshots: pathval: 1.1.1 type-detect: 4.1.0 - chai@5.2.1: + chai@5.3.3: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.2.0 + loupe: 3.2.1 pathval: 2.0.1 chainsaw@0.1.0: @@ -36972,22 +39886,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.5.0: {} - - change-case@4.1.2: - dependencies: - camel-case: 4.1.2 - capital-case: 1.0.4 - constant-case: 3.0.4 - dot-case: 3.0.4 - header-case: 2.0.4 - no-case: 3.0.4 - param-case: 3.0.4 - pascal-case: 3.1.2 - path-case: 3.0.4 - sentence-case: 3.0.4 - snake-case: 3.0.4 - tslib: 2.8.1 + chalk@5.6.2: {} char-regex@1.0.2: {} @@ -37035,7 +39934,7 @@ snapshots: parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 7.13.0 + undici: 7.16.0 whatwg-mimetype: 4.0.0 chokidar@1.7.0: @@ -37079,16 +39978,24 @@ snapshots: ci-info@3.9.0: {} + ci-info@4.3.1: {} + citty@0.1.6: dependencies: consola: 3.4.2 cjs-module-lexer@1.4.3: {} + cjs-module-lexer@2.1.1: {} + clap@1.2.3: dependencies: chalk: 1.1.3 + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + classnames@2.5.1: {} clean-css@4.2.4: @@ -37141,10 +40048,10 @@ snapshots: optionalDependencies: '@colors/colors': 1.5.0 - cli-truncate@4.0.0: + cli-truncate@5.1.1: dependencies: - slice-ansi: 5.0.0 - string-width: 7.2.0 + slice-ansi: 7.1.2 + string-width: 8.1.0 cli-width@2.2.1: {} @@ -37160,6 +40067,13 @@ snapshots: is-wsl: 3.1.0 is64bit: 2.0.0 + clipboardy@5.0.0: + dependencies: + execa: 9.6.0 + is-wayland: 0.1.0 + is-wsl: 3.1.0 + is64bit: 2.0.0 + cliui@3.2.0: dependencies: string-width: 1.0.2 @@ -37212,12 +40126,24 @@ snapshots: clsx@2.1.1: {} - cm6-theme-basic-light@0.2.0(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)(@lezer/highlight@1.2.1): + cm6-theme-basic-light@0.2.0(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)(@lezer/highlight@1.2.3): dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 - '@lezer/highlight': 1.2.1 + '@codemirror/view': 6.38.8 + '@lezer/highlight': 1.2.3 + + cmdk@1.1.1(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.2.0)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@18.2.0)(@types/react@18.2.0)(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: + - '@types/react' + - '@types/react-dom' co@4.6.0: {} @@ -37231,29 +40157,29 @@ snapshots: code-point-at@1.1.0: {} - codemirror-graphql@2.2.4(@codemirror/language@6.11.2)(codemirror@5.65.19)(graphql@16.11.0): + codemirror-graphql@2.2.4(@codemirror/language@6.11.3)(codemirror@5.65.20)(graphql@16.12.0): dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@types/codemirror': 0.0.90 - codemirror: 5.65.19 - graphql: 16.11.0 - graphql-language-service: 5.5.0(graphql@16.11.0) + codemirror: 5.65.20 + graphql: 16.12.0 + graphql-language-service: 5.5.0(graphql@16.12.0) - codemirror@5.65.19: {} + codemirror@5.65.20: {} codemirror@6.0.2: dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/commands': 6.8.1 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.1 + '@codemirror/commands': 6.10.0 + '@codemirror/language': 6.11.3 '@codemirror/lint': 6.8.5 '@codemirror/search': 6.5.11 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.8 collapse-white-space@1.0.6: {} - collect-v8-coverage@1.0.2: {} + collect-v8-coverage@1.0.3: {} color-convert@1.9.3: dependencies: @@ -37263,18 +40189,23 @@ snapshots: dependencies: color-name: 1.1.4 + color-convert@3.1.3: + dependencies: + color-name: 2.1.0 + color-name@1.1.3: {} color-name@1.1.4: {} + color-name@2.1.0: {} + color-string@0.3.0: dependencies: color-name: 1.1.4 - color-string@1.9.1: + color-string@2.1.4: dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 + color-name: 2.1.0 color-support@1.1.3: {} @@ -37284,10 +40215,10 @@ snapshots: color-convert: 1.9.3 color-string: 0.3.0 - color@3.2.1: + color@5.0.3: dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 + color-convert: 3.1.3 + color-string: 2.1.4 colord@2.9.3: {} @@ -37305,11 +40236,6 @@ snapshots: colors@1.4.0: {} - colorspace@1.1.4: - dependencies: - color: 3.2.1 - text-hex: 1.0.0 - combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -37326,7 +40252,7 @@ snapshots: commander@13.1.0: {} - commander@14.0.0: {} + commander@14.0.2: {} commander@2.13.0: {} @@ -37344,6 +40270,8 @@ snapshots: commander@8.3.0: {} + commander@9.5.0: {} + common-path-prefix@3.0.0: {} commondir@1.0.1: {} @@ -37377,6 +40305,15 @@ snapshots: dependencies: source-map: 0.6.1 + concurrently@9.2.1: + dependencies: + chalk: 4.1.2 + rxjs: 7.8.2 + shell-quote: 1.8.3 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + confbox@0.1.8: {} configstore@3.1.5: @@ -37396,21 +40333,15 @@ snapshots: console-control-strings@1.1.0: {} - constant-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - upper-case: 2.0.2 - constants-browserify@1.0.0: {} + content-disposition@0.5.2: {} + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 - content-disposition@1.0.0: - dependencies: - safe-buffer: 5.2.1 + content-disposition@1.0.1: {} content-type-parser@1.0.2: {} @@ -37446,14 +40377,14 @@ snapshots: dependencies: toggle-selection: 1.0.6 - copy-webpack-plugin@13.0.0(webpack@5.101.0): + copy-webpack-plugin@13.0.1(webpack@5.103.0): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 - schema-utils: 4.3.2 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 - tinyglobby: 0.2.14 - webpack: 5.101.0(webpack-cli@6.0.1) + tinyglobby: 0.2.15 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) copyfiles@2.4.1: dependencies: @@ -37465,15 +40396,15 @@ snapshots: untildify: 4.0.0 yargs: 16.2.0 - core-js-compat@3.45.0: + core-js-compat@3.47.0: dependencies: - browserslist: 4.25.1 + browserslist: 4.28.0 - core-js-pure@3.45.0: {} + core-js-pure@3.47.0: {} core-js@2.6.12: {} - core-js@3.45.0: {} + core-js@3.47.0: {} core-util-is@1.0.2: {} @@ -37496,7 +40427,7 @@ snapshots: cosmiconfig@2.2.2: dependencies: is-directory: 0.3.1 - js-yaml: 3.14.1 + js-yaml: 4.1.1 minimist: 1.2.8 object-assign: 4.1.1 os-homedir: 1.0.2 @@ -37522,7 +40453,7 @@ snapshots: cosmiconfig@8.3.6(typescript@5.8.3): dependencies: import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: @@ -37532,7 +40463,7 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: typescript: 5.8.3 @@ -37574,13 +40505,13 @@ snapshots: dependencies: capture-stack-trace: 1.0.2 - create-jest@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0): + create-jest@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.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@22.15.35)(babel-plugin-macros@3.1.0) + jest-config: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -37589,9 +40520,11 @@ snapshots: - supports-color - ts-node - create-storybook@9.1.1: + create-require@1.1.1: {} + + create-storybook@9.1.16: dependencies: - semver: 7.7.2 + semver: 7.7.3 crelt@1.0.6: {} @@ -37599,7 +40532,7 @@ snapshots: cron-parser@4.9.0: dependencies: - luxon: 3.7.1 + luxon: 3.7.2 cron-validator@1.3.1: {} @@ -37664,7 +40597,24 @@ snapshots: postcss-value-parser: 3.3.1 source-list-map: 2.0.1 - css-loader@3.6.0(webpack@5.101.0): + css-loader@3.6.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): + dependencies: + camelcase: 5.3.1 + cssesc: 3.0.0 + icss-utils: 4.1.1 + loader-utils: 1.4.2 + normalize-path: 3.0.0 + postcss: 7.0.39 + postcss-modules-extract-imports: 2.0.0 + postcss-modules-local-by-default: 3.0.3 + postcss-modules-scope: 2.2.0 + postcss-modules-values: 3.0.0 + postcss-value-parser: 4.2.0 + schema-utils: 2.7.1 + semver: 6.3.1 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + + css-loader@3.6.0(webpack@5.103.0): dependencies: camelcase: 5.3.1 cssesc: 3.0.0 @@ -37679,9 +40629,9 @@ snapshots: postcss-value-parser: 4.2.0 schema-utils: 2.7.1 semver: 6.3.1 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) - css-loader@5.2.7(webpack@5.101.0): + css-loader@5.2.7(webpack@5.103.0): dependencies: icss-utils: 5.1.0(postcss@8.5.6) loader-utils: 2.0.4 @@ -37692,10 +40642,23 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 schema-utils: 3.3.0 - semver: 7.7.2 - webpack: 5.101.0(webpack-cli@5.1.4) + semver: 7.7.3 + webpack: 5.103.0(webpack-cli@5.1.4) + + css-loader@6.11.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)): + dependencies: + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) + postcss-modules-scope: 3.2.1(postcss@8.5.6) + postcss-modules-values: 4.0.0(postcss@8.5.6) + postcss-value-parser: 4.2.0 + semver: 7.7.3 + optionalDependencies: + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12) - css-loader@6.11.0(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))): + css-loader@6.11.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -37704,11 +40667,11 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.6) postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.2 + semver: 7.7.3 optionalDependencies: - webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) - css-loader@6.11.0(webpack@5.101.0): + css-loader@6.11.0(webpack@5.103.0): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -37717,11 +40680,11 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.6) postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.2 + semver: 7.7.3 optionalDependencies: - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) - css-loader@7.1.2(webpack@5.101.0): + css-loader@7.1.2(webpack@5.103.0): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -37730,9 +40693,9 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.6) postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.2 + semver: 7.7.3 optionalDependencies: - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) css-select@4.3.0: dependencies: @@ -37877,7 +40840,7 @@ snapshots: dependencies: cssom: 0.3.8 - csstype@3.1.3: {} + csstype@3.2.3: {} cubic2quad@1.2.1: {} @@ -37957,7 +40920,7 @@ snapshots: dependencies: ms: 2.1.2 - debug@4.4.1(supports-color@8.1.1): + debug@4.4.3(supports-color@8.1.1): dependencies: ms: 2.1.3 optionalDependencies: @@ -37992,7 +40955,7 @@ snapshots: dedent@0.7.0: {} - dedent@1.6.0(babel-plugin-macros@3.1.0): + dedent@1.7.0(babel-plugin-macros@3.1.0): optionalDependencies: babel-plugin-macros: 3.1.0 @@ -38041,12 +41004,12 @@ snapshots: bplist-parser: 0.2.0 untildify: 4.0.0 - default-browser-id@5.0.0: {} + default-browser-id@5.0.1: {} - default-browser@5.2.1: + default-browser@5.4.0: dependencies: bundle-name: 4.1.0 - default-browser-id: 5.0.0 + default-browser-id: 5.0.1 default-require-extensions@1.0.0: dependencies: @@ -38085,7 +41048,7 @@ snapshots: del-cli@6.0.0: dependencies: - del: 8.0.0 + del: 8.0.1 meow: 13.2.0 del@2.2.2: @@ -38120,13 +41083,14 @@ snapshots: rimraf: 3.0.2 slash: 4.0.0 - del@8.0.0: + del@8.0.1: dependencies: globby: 14.1.0 is-glob: 4.0.3 is-path-cwd: 3.0.0 is-path-inside: 4.0.0 - p-map: 7.0.3 + p-map: 7.0.4 + presentable-error: 0.0.1 slash: 5.1.0 delayed-stream@1.0.0: {} @@ -38154,7 +41118,7 @@ snapshots: detect-libc@1.0.3: optional: true - detect-libc@2.0.4: {} + detect-libc@2.1.2: {} detect-newline@3.1.0: {} @@ -38174,7 +41138,7 @@ snapshots: detect-port@1.6.1: dependencies: address: 1.2.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -38182,7 +41146,7 @@ snapshots: dependencies: dequal: 2.0.3 - dexie@4.0.11: {} + dexie@4.2.1: {} diagnostic-channel-publishers@0.3.5(diagnostic-channel@0.2.0): dependencies: @@ -38282,6 +41246,10 @@ snapshots: optionalDependencies: '@types/trusted-types': 2.0.7 + dompurify@3.2.6: + optionalDependencies: + '@types/trusted-types': 2.0.7 + domutils@2.8.0: dependencies: dom-serializer: 1.4.1 @@ -38317,7 +41285,7 @@ snapshots: downshift@7.6.2(react@18.2.0): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 compute-scroll-into-view: 2.0.4 prop-types: 15.8.1 react: 18.2.0 @@ -38358,9 +41326,9 @@ snapshots: dependencies: safe-buffer: 5.2.1 - editions@6.21.0: + editions@6.22.0: dependencies: - version-range: 4.14.0 + version-range: 4.15.0 ee-first@1.1.1: {} @@ -38368,7 +41336,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.198: {} + electron-to-chromium@1.5.255: {} email-addresses@5.0.0: {} @@ -38378,7 +41346,7 @@ snapshots: emittery@0.13.1: {} - emoji-regex@10.4.0: {} + emoji-regex@10.6.0: {} emoji-regex@7.0.3: {} @@ -38426,7 +41394,7 @@ snapshots: enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.2 + tapable: 2.3.0 enquirer@2.4.1: dependencies: @@ -38443,7 +41411,7 @@ snapshots: env-paths@2.2.1: {} - envinfo@7.14.0: {} + envinfo@7.20.0: {} environment@1.1.0: {} @@ -38455,7 +41423,7 @@ snapshots: dependencies: prr: 1.0.1 - error-ex@1.3.2: + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -38580,7 +41548,7 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - es-toolkit@1.39.8: {} + es-toolkit@1.42.0: {} es5-ext@0.10.64: dependencies: @@ -38599,8 +41567,6 @@ snapshots: es6-promise@4.2.8: {} - es6-promisify@6.1.1: {} - es6-shim@0.35.8: {} es6-symbol@3.1.4: @@ -38617,41 +41583,41 @@ snapshots: esbuild-plugin-alias@0.2.1: {} - esbuild-register@3.6.0(esbuild@0.25.8): - dependencies: - debug: 4.4.1(supports-color@8.1.1) - esbuild: 0.25.8 - transitivePeerDependencies: - - supports-color - - esbuild@0.25.8: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.8 - '@esbuild/android-arm': 0.25.8 - '@esbuild/android-arm64': 0.25.8 - '@esbuild/android-x64': 0.25.8 - '@esbuild/darwin-arm64': 0.25.8 - '@esbuild/darwin-x64': 0.25.8 - '@esbuild/freebsd-arm64': 0.25.8 - '@esbuild/freebsd-x64': 0.25.8 - '@esbuild/linux-arm': 0.25.8 - '@esbuild/linux-arm64': 0.25.8 - '@esbuild/linux-ia32': 0.25.8 - '@esbuild/linux-loong64': 0.25.8 - '@esbuild/linux-mips64el': 0.25.8 - '@esbuild/linux-ppc64': 0.25.8 - '@esbuild/linux-riscv64': 0.25.8 - '@esbuild/linux-s390x': 0.25.8 - '@esbuild/linux-x64': 0.25.8 - '@esbuild/netbsd-arm64': 0.25.8 - '@esbuild/netbsd-x64': 0.25.8 - '@esbuild/openbsd-arm64': 0.25.8 - '@esbuild/openbsd-x64': 0.25.8 - '@esbuild/openharmony-arm64': 0.25.8 - '@esbuild/sunos-x64': 0.25.8 - '@esbuild/win32-arm64': 0.25.8 - '@esbuild/win32-ia32': 0.25.8 - '@esbuild/win32-x64': 0.25.8 + esbuild-register@3.6.0(esbuild@0.25.12): + dependencies: + debug: 4.4.3(supports-color@8.1.1) + esbuild: 0.25.12 + transitivePeerDependencies: + - supports-color + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 escalade@3.2.0: {} @@ -38715,7 +41681,7 @@ snapshots: dependencies: debug: 3.2.7 is-core-module: 2.16.1 - resolve: 1.22.10 + resolve: 1.22.11 eslint-module-utils@2.12.1(eslint@6.8.0): dependencies: @@ -38757,7 +41723,7 @@ snapshots: array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 ast-types-flow: 0.0.8 - axe-core: 4.10.3 + axe-core: 4.11.0 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 @@ -38790,21 +41756,21 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-react-hooks@5.2.0(eslint@9.26.0(jiti@2.5.1)): + eslint-plugin-react-hooks@5.2.0(eslint@9.26.0(jiti@2.6.1)): dependencies: - eslint: 9.26.0(jiti@2.5.1) + eslint: 9.26.0(jiti@2.6.1) - eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.5.1)): + eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.6.1)): dependencies: - eslint: 9.27.0(jiti@2.5.1) + eslint: 9.27.0(jiti@2.6.1) - eslint-plugin-react-refresh@0.4.20(eslint@8.57.1): + eslint-plugin-react-refresh@0.4.24(eslint@8.57.1): dependencies: eslint: 8.57.1 - eslint-plugin-react-refresh@0.4.20(eslint@9.27.0(jiti@2.5.1)): + eslint-plugin-react-refresh@0.4.24(eslint@9.27.0(jiti@2.6.1)): dependencies: - eslint: 9.27.0(jiti@2.5.1) + eslint: 9.27.0(jiti@2.6.1) eslint-plugin-react@7.37.5(eslint@6.8.0): dependencies: @@ -38850,26 +41816,26 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-storybook@9.1.1(eslint@8.57.1)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3): + eslint-plugin-storybook@9.1.16(eslint@8.57.1)(storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3): dependencies: - '@typescript-eslint/utils': 8.39.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.47.0(eslint@8.57.1)(typescript@5.8.3) eslint: 8.57.1 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3) + storybook: 9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.5.1)): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.6.1)): dependencies: - eslint: 9.26.0(jiti@2.5.1) + eslint: 9.26.0(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3) - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1)): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1)): dependencies: - eslint: 9.27.0(jiti@2.5.1) + eslint: 9.27.0(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3) eslint-scope@5.1.1: dependencies: @@ -38913,7 +41879,7 @@ snapshots: ajv: 6.12.6 chalk: 2.4.2 cross-spawn: 6.0.6 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) doctrine: 3.0.0 eslint-scope: 5.1.1 eslint-utils: 1.4.3 @@ -38930,7 +41896,7 @@ snapshots: imurmurhash: 0.1.4 inquirer: 7.3.3 is-glob: 4.0.3 - js-yaml: 3.14.1 + js-yaml: 4.1.1 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.3.0 lodash: 4.17.21 @@ -38951,8 +41917,8 @@ snapshots: eslint@8.57.1: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.2 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 '@humanwhocodes/config-array': 0.13.0 @@ -38962,7 +41928,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -38980,7 +41946,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 + js-yaml: 4.1.1 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -38992,26 +41958,26 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@9.26.0(jiti@2.5.1): + eslint@9.26.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.5.1)) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.26.0(jiti@2.6.1)) + '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.20.1 '@eslint/config-helpers': 0.2.3 '@eslint/core': 0.13.0 '@eslint/eslintrc': 3.3.1 '@eslint/js': 9.26.0 - '@eslint/plugin-kit': 0.3.4 - '@humanfs/node': 0.16.6 + '@eslint/plugin-kit': 0.3.5 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@modelcontextprotocol/sdk': 1.17.1 + '@modelcontextprotocol/sdk': 1.22.0 '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -39032,21 +41998,22 @@ snapshots: optionator: 0.9.4 zod: 3.25.76 optionalDependencies: - jiti: 2.5.1 + jiti: 2.6.1 transitivePeerDependencies: + - '@cfworker/json-schema' - supports-color - eslint@9.27.0(jiti@2.5.1): + eslint@9.27.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.5.1)) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.27.0(jiti@2.6.1)) + '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.20.1 '@eslint/config-helpers': 0.2.3 '@eslint/core': 0.14.0 '@eslint/eslintrc': 3.3.1 '@eslint/js': 9.27.0 - '@eslint/plugin-kit': 0.3.4 - '@humanfs/node': 0.16.6 + '@eslint/plugin-kit': 0.3.5 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 @@ -39054,7 +42021,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -39074,7 +42041,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.5.1 + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -39123,8 +42090,8 @@ snapshots: estree-to-babel@3.2.1: dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 c8: 7.14.0 transitivePeerDependencies: - supports-color @@ -39165,7 +42132,9 @@ snapshots: events-universal@1.0.1: dependencies: - bare-events: 2.7.0 + bare-events: 2.8.2 + transitivePeerDependencies: + - bare-abort-controller events@3.3.0: {} @@ -39254,8 +42223,25 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + execa@9.6.0: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.2 + exenv-es6@1.1.1: {} + exit-x@0.2.2: {} + exit@0.1.2: {} expand-template@2.0.3: {} @@ -39290,7 +42276,16 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - exponential-backoff@3.1.2: {} + expect@30.2.0: + dependencies: + '@jest/expect-utils': 30.2.0 + '@jest/get-type': 30.1.0 + jest-matcher-utils: 30.2.0 + jest-message-util: 30.2.0 + jest-mock: 30.2.0 + jest-util: 30.2.0 + + exponential-backoff@3.1.3: {} express-rate-limit@7.5.1(express@5.1.0): dependencies: @@ -39334,11 +42329,11 @@ snapshots: dependencies: accepts: 2.0.0 body-parser: 2.2.0 - content-disposition: 1.0.0 + content-disposition: 1.0.1 content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -39385,12 +42380,12 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - extract-text-webpack-plugin@3.0.2(webpack@5.101.0): + extract-text-webpack-plugin@3.0.2(webpack@5.103.0): dependencies: async: 2.6.4 loader-utils: 1.4.2 schema-utils: 0.3.0 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) webpack-sources: 1.4.3 extract-zip@1.7.0: @@ -39402,19 +42397,19 @@ snapshots: extsprintf@1.3.0: {} - fantasticon@1.2.3: + fantasticon@3.0.0: dependencies: - change-case: 4.1.2 + case: 1.6.3 cli-color: 2.0.4 - commander: 7.2.0 - glob: 7.2.3 + commander: 12.1.0 + glob: 10.5.0 handlebars: 4.7.8 slugify: 1.6.6 svg2ttf: 6.0.3 - svgicons2svgfont: 10.0.6 - ttf2eot: 2.0.0 + svgicons2svgfont: 12.0.0 + ttf2eot: 3.1.0 ttf2woff: 3.0.0 - ttf2woff2: 4.0.5 + ttf2woff2: 5.0.0 transitivePeerDependencies: - supports-color @@ -39453,7 +42448,7 @@ snapshots: fast-safe-stringify@2.1.1: {} - fast-uri@3.0.6: {} + fast-uri@3.1.0: {} fast-xml-parser@5.2.5: dependencies: @@ -39503,7 +42498,7 @@ snapshots: object-assign: 4.1.1 promise: 7.3.1 setimmediate: 1.0.5 - ua-parser-js: 1.0.40 + ua-parser-js: 1.0.41 transitivePeerDependencies: - encoding @@ -39511,7 +42506,7 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.4.6(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -39532,9 +42527,13 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - file-entry-cache@10.1.3: + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + + file-entry-cache@10.1.4: dependencies: - flat-cache: 6.1.12 + flat-cache: 6.1.19 file-entry-cache@5.0.1: dependencies: @@ -39554,17 +42553,23 @@ snapshots: minimatch: 3.1.2 proper-lockfile: 1.2.0 - file-loader@1.1.5(webpack@5.101.0): + file-loader@1.1.5(webpack@5.103.0): dependencies: loader-utils: 1.4.2 schema-utils: 0.3.0 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) + + file-loader@6.2.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) - file-loader@6.2.0(webpack@5.101.0): + file-loader@6.2.0(webpack@5.103.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) file-system-cache@1.1.0: dependencies: @@ -39630,7 +42635,7 @@ snapshots: finalhandler@2.1.0: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -39723,11 +42728,11 @@ snapshots: flatted: 3.3.3 keyv: 4.5.4 - flat-cache@6.1.12: + flat-cache@6.1.19: dependencies: - cacheable: 1.10.3 + cacheable: 2.2.0 flatted: 3.3.3 - hookified: 1.11.0 + hookified: 1.13.0 flat@5.0.2: {} @@ -39737,7 +42742,7 @@ snapshots: flatten@1.0.3: {} - flow-parser@0.278.0: {} + flow-parser@0.291.0: {} flush-write-stream@1.1.1: dependencies: @@ -39772,7 +42777,7 @@ snapshots: forever-agent@0.6.1: {} - fork-ts-checker-webpack-plugin@0.2.10(typescript@5.8.3)(webpack@5.101.0): + fork-ts-checker-webpack-plugin@0.2.10(typescript@5.8.3)(webpack@5.103.0): dependencies: babel-code-frame: 6.26.0 chalk: 1.1.3 @@ -39783,7 +42788,7 @@ snapshots: lodash.startswith: 4.2.1 minimatch: 3.1.2 typescript: 5.8.3 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) fork-ts-checker-webpack-plugin@4.1.6: dependencies: @@ -39795,7 +42800,7 @@ snapshots: tapable: 1.1.3 worker-rpc: 0.1.1 - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.26.0(jiti@2.6.1))(typescript@5.8.3)(webpack@5.103.0): dependencies: '@babel/code-frame': 7.27.1 '@types/json-schema': 7.0.15 @@ -39808,14 +42813,14 @@ snapshots: memfs: 3.5.3 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.7.2 + semver: 7.7.3 tapable: 1.1.3 typescript: 5.8.3 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: - eslint: 9.26.0(jiti@2.5.1) + eslint: 9.26.0(jiti@2.6.1) - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@4.9.5)(webpack@5.101.0): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.27.0(jiti@2.6.1))(typescript@4.9.5)(webpack@5.103.0): dependencies: '@babel/code-frame': 7.27.1 '@types/json-schema': 7.0.15 @@ -39828,14 +42833,14 @@ snapshots: memfs: 3.5.3 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.7.2 + semver: 7.7.3 tapable: 1.1.3 typescript: 4.9.5 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: - eslint: 9.27.0(jiti@2.5.1) + eslint: 9.27.0(jiti@2.6.1) - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): dependencies: '@babel/code-frame': 7.27.1 '@types/json-schema': 7.0.15 @@ -39848,14 +42853,34 @@ snapshots: memfs: 3.5.3 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.7.2 + semver: 7.7.3 tapable: 1.1.3 typescript: 5.8.3 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) optionalDependencies: - eslint: 9.27.0(jiti@2.5.1) + eslint: 9.27.0(jiti@2.6.1) - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.3)(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.27.0(jiti@2.6.1))(typescript@5.8.3)(webpack@5.103.0): + dependencies: + '@babel/code-frame': 7.27.1 + '@types/json-schema': 7.0.15 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 6.0.0 + deepmerge: 4.3.1 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.5.3 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.7.3 + tapable: 1.1.3 + typescript: 5.8.3 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) + optionalDependencies: + eslint: 9.27.0(jiti@2.6.1) + + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)): dependencies: '@babel/code-frame': 7.27.1 chalk: 4.1.2 @@ -39867,12 +42892,12 @@ snapshots: minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.7.2 - tapable: 2.2.2 + semver: 7.7.3 + tapable: 2.3.0 typescript: 5.8.3 - webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12) - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.3)(webpack@5.101.0): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.3)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): dependencies: '@babel/code-frame': 7.27.1 chalk: 4.1.2 @@ -39884,12 +42909,29 @@ snapshots: minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.7.2 - tapable: 2.2.2 + semver: 7.7.3 + tapable: 2.3.0 typescript: 5.8.3 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) - fork-ts-checker-webpack-plugin@9.1.0(typescript@5.8.3)(webpack@5.101.0): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.3)(webpack@5.103.0): + dependencies: + '@babel/code-frame': 7.27.1 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.7.3 + tapable: 2.3.0 + typescript: 5.8.3 + webpack: 5.103.0(webpack-cli@5.1.4) + + fork-ts-checker-webpack-plugin@9.1.0(typescript@5.8.3)(webpack@5.103.0): dependencies: '@babel/code-frame': 7.27.1 chalk: 4.1.2 @@ -39901,16 +42943,16 @@ snapshots: minimatch: 3.1.2 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.7.2 - tapable: 2.2.2 + semver: 7.7.3 + tapable: 2.3.0 typescript: 5.8.3 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) form-data-encoder@2.1.4: {} form-data-encoder@4.1.0: {} - form-data@4.0.4: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -39926,7 +42968,7 @@ snapshots: forwarded@0.2.0: {} - fraction.js@4.3.7: {} + fraction.js@5.3.4: {} framer-motion@6.5.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: @@ -39965,25 +43007,25 @@ snapshots: fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@11.1.1: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 - fs-extra@11.3.1: + fs-extra@11.3.2: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@3.0.1: @@ -40008,7 +43050,7 @@ snapshots: dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-minipass@2.1.0: @@ -40029,7 +43071,7 @@ snapshots: fsevents@1.2.13: dependencies: bindings: 1.5.0 - nan: 2.23.0 + nan: 2.23.1 optional: true fsevents@2.3.2: @@ -40094,19 +43136,19 @@ snapshots: strip-ansi: 6.0.1 wide-align: 1.1.5 + generator-function@2.0.1: {} + generic-names@4.0.0: dependencies: loader-utils: 3.3.1 gensync@1.0.0-beta.2: {} - geometry-interfaces@1.1.4: {} - get-caller-file@1.0.3: {} get-caller-file@2.0.5: {} - get-east-asian-width@1.3.0: {} + get-east-asian-width@1.4.0: {} get-func-name@2.0.2: {} @@ -40182,7 +43224,7 @@ snapshots: email-addresses: 5.0.0 filenamify: 4.3.0 find-cache-dir: 3.3.2 - fs-extra: 11.3.1 + fs-extra: 11.3.2 globby: 11.1.0 giget@1.2.5: @@ -40221,6 +43263,10 @@ snapshots: '@types/glob': 8.1.0 glob: 7.2.3 + glob-to-regex.js@1.2.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + glob-to-regexp@0.3.0: {} glob-to-regexp@0.4.1: {} @@ -40229,7 +43275,7 @@ snapshots: dependencies: find-index: 0.1.1 - glob@10.4.5: + glob@10.5.0: dependencies: foreground-child: 3.3.1 jackspeak: 3.4.3 @@ -40238,14 +43284,14 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.0.3: + glob@11.1.0: dependencies: foreground-child: 3.3.1 jackspeak: 4.1.1 - minimatch: 10.0.3 + minimatch: 10.1.1 minipass: 7.1.2 package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 + path-scurry: 2.0.1 glob@5.0.15: dependencies: @@ -40302,7 +43348,7 @@ snapshots: global@4.4.0: dependencies: - min-document: 2.19.0 + min-document: 2.19.2 process: 0.11.10 globals@12.4.0: @@ -40392,7 +43438,7 @@ snapshots: got@14.4.7: dependencies: - '@sindresorhus/is': 7.0.2 + '@sindresorhus/is': 7.1.1 '@szmarczak/http-timer': 5.0.1 cacheable-lookup: 7.0.0 cacheable-request: 12.0.1 @@ -40422,16 +43468,16 @@ snapshots: graphemer@1.4.0: {} - graphiql-explorer@0.9.0(graphql@16.11.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + graphiql-explorer@0.9.0(graphql@16.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - graphql: 16.11.0 + graphql: 16.12.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - graphiql@3.7.0(@codemirror/language@6.11.2)(@types/node@22.15.35)(@types/react-dom@18.2.0)(@types/react@18.2.0)(graphql@16.11.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + graphiql@3.7.0(@codemirror/language@6.11.3)(@types/node@22.15.35)(@types/react-dom@18.2.0)(@types/react@18.2.0)(graphql@16.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@graphiql/react': 0.26.2(@codemirror/language@6.11.2)(@types/node@22.15.35)(@types/react-dom@18.2.0)(@types/react@18.2.0)(graphql@16.11.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - graphql: 16.11.0 + '@graphiql/react': 0.26.2(@codemirror/language@6.11.3)(@types/node@22.15.35)(@types/react-dom@18.2.0)(@types/react@18.2.0)(graphql@16.12.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + graphql: 16.12.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -40445,14 +43491,14 @@ snapshots: dependencies: lodash: 4.17.21 - graphql-language-service@5.5.0(graphql@16.11.0): + graphql-language-service@5.5.0(graphql@16.12.0): dependencies: debounce-promise: 3.1.2 - graphql: 16.11.0 + graphql: 16.12.0 nullthrows: 1.1.1 vscode-languageserver-types: 3.17.5 - graphql@16.11.0: {} + graphql@16.12.0: {} growly@1.3.0: {} @@ -40525,6 +43571,10 @@ snapshots: has@1.0.4: {} + hashery@1.2.0: + dependencies: + hookified: 1.13.0 + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -40636,7 +43686,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.17 + style-to-js: 1.1.21 unist-util-position: 5.0.0 vfile-message: 4.0.3 transitivePeerDependencies: @@ -40701,11 +43751,6 @@ snapshots: he@1.2.0: {} - header-case@2.0.4: - dependencies: - capital-case: 1.0.4 - tslib: 2.8.1 - heap@0.2.5: {} hey-listen@1.0.8: {} @@ -40729,7 +43774,7 @@ snapshots: dependencies: parse-passwd: 1.0.0 - hookified@1.11.0: {} + hookified@1.13.0: {} hosted-git-info@2.8.9: {} @@ -40782,7 +43827,7 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.43.1 + terser: 5.44.1 html-minifier@3.5.21: dependencies: @@ -40806,7 +43851,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@2.29.0(webpack@5.101.0): + html-webpack-plugin@2.29.0(webpack@5.103.0): dependencies: bluebird: 3.7.2 html-minifier: 3.5.21 @@ -40814,9 +43859,9 @@ snapshots: lodash: 4.17.21 pretty-error: 2.1.2 toposort: 1.0.7 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) - html-webpack-plugin@4.5.2(webpack@5.101.0): + html-webpack-plugin@4.5.2(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): dependencies: '@types/html-minifier-terser': 5.1.2 '@types/tapable': 1.0.12 @@ -40827,27 +43872,50 @@ snapshots: pretty-error: 2.1.2 tapable: 1.1.3 util.promisify: 1.0.0 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) - html-webpack-plugin@5.6.3(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))): + html-webpack-plugin@4.5.2(webpack@5.103.0): + dependencies: + '@types/html-minifier-terser': 5.1.2 + '@types/tapable': 1.0.12 + '@types/webpack': 4.41.40 + html-minifier-terser: 5.1.1 + loader-utils: 1.4.2 + lodash: 4.17.21 + pretty-error: 2.1.2 + tapable: 1.1.3 + util.promisify: 1.0.0 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) + + html-webpack-plugin@5.6.5(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)): + 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.3.0 + optionalDependencies: + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12) + + html-webpack-plugin@5.6.5(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): 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.2 + tapable: 2.3.0 optionalDependencies: - webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) - html-webpack-plugin@5.6.3(webpack@5.101.0): + html-webpack-plugin@5.6.5(webpack@5.103.0): 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.2 + tapable: 2.3.0 optionalDependencies: - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) htmlparser2@10.0.0: dependencies: @@ -40888,7 +43956,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -40896,26 +43964,26 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.23): + http-proxy-middleware@2.0.9(@types/express@4.17.25): dependencies: - '@types/http-proxy': 1.17.16 + '@types/http-proxy': 1.17.17 http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.8 optionalDependencies: - '@types/express': 4.17.23 + '@types/express': 4.17.25 transitivePeerDependencies: - debug @@ -40938,7 +44006,7 @@ snapshots: mime: 1.6.0 minimist: 1.2.8 opener: 1.5.2 - portfinder: 1.0.37 + portfinder: 1.0.38 secure-compare: 3.0.1 union: 0.5.0 url-join: 4.0.1 @@ -40960,21 +44028,21 @@ snapshots: https-proxy-agent@4.0.0: dependencies: agent-base: 5.1.1 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -40984,7 +44052,9 @@ snapshots: human-signals@5.0.0: {} - humanize-duration@3.33.0: {} + human-signals@8.0.1: {} + + humanize-duration@3.33.1: {} humanize-ms@1.2.1: dependencies: @@ -41009,6 +44079,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.7.0: + dependencies: + safer-buffer: 2.1.2 + icss-replace-symbols@1.1.0: {} icss-utils@2.1.0: @@ -41041,7 +44115,7 @@ snapshots: immutable@3.8.2: {} - immutable@5.1.3: {} + immutable@5.1.4: {} import-cwd@3.0.0: dependencies: @@ -41073,6 +44147,8 @@ snapshots: indent-string@5.0.0: {} + index-to-position@1.2.0: {} + indexes-of@1.0.1: {} infer-owner@1.0.4: {} @@ -41090,7 +44166,7 @@ snapshots: inline-style-parser@0.1.1: {} - inline-style-parser@0.2.4: {} + inline-style-parser@0.2.7: {} inquirer@3.3.0: dependencies: @@ -41139,11 +44215,11 @@ snapshots: intersection-observer@0.10.0: {} - intl-messageformat@10.7.16: + intl-messageformat@10.7.18: dependencies: - '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/ecma402-abstract': 2.3.6 '@formatjs/fast-memoize': 2.2.7 - '@formatjs/icu-messageformat-parser': 2.11.2 + '@formatjs/icu-messageformat-parser': 2.11.4 tslib: 2.8.1 invariant@2.2.4: @@ -41152,10 +44228,7 @@ snapshots: invert-kv@1.0.0: {} - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 + ip-address@10.1.0: {} ip-regex@2.1.0: {} @@ -41198,8 +44271,6 @@ snapshots: is-arrayish@0.2.1: {} - is-arrayish@0.3.2: {} - is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -41295,11 +44366,9 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@4.0.0: {} - - is-fullwidth-code-point@5.0.0: + is-fullwidth-code-point@5.1.0: dependencies: - get-east-asian-width: 1.3.0 + get-east-asian-width: 1.4.0 is-function@1.0.2: {} @@ -41307,9 +44376,10 @@ snapshots: is-generator-fn@2.1.0: {} - is-generator-function@1.1.0: + is-generator-function@1.1.2: dependencies: call-bound: 1.0.4 + generator-function: 2.0.1 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -41353,7 +44423,7 @@ snapshots: is-negative-zero@2.0.3: {} - is-network-error@1.1.0: {} + is-network-error@1.3.0: {} is-npm@1.0.0: {} @@ -41470,6 +44540,8 @@ snapshots: is-utf8@0.2.1: {} + is-wayland@0.1.0: {} + is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -41546,7 +44618,7 @@ snapshots: istanbul-lib-report: 1.1.5 istanbul-lib-source-maps: 1.2.6 istanbul-reports: 1.5.1 - js-yaml: 3.14.1 + js-yaml: 4.1.1 mkdirp: 0.5.6 once: 1.4.0 @@ -41580,7 +44652,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.27.7 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -41590,10 +44662,10 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.27.7 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -41620,17 +44692,25 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + istanbul-reports@1.5.1: dependencies: handlebars: 4.7.8 - istanbul-reports@3.1.7: + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 @@ -41643,7 +44723,7 @@ snapshots: esprima: 2.7.3 glob: 5.0.15 handlebars: 4.7.8 - js-yaml: 3.14.1 + js-yaml: 4.1.1 mkdirp: 0.5.6 nopt: 3.0.6 once: 1.4.0 @@ -41655,7 +44735,7 @@ snapshots: istextorbinary@9.5.0: dependencies: binaryextensions: 6.11.0 - editions: 6.21.0 + editions: 6.22.0 textextensions: 6.11.0 iterate-iterator@1.0.2: {} @@ -41704,6 +44784,12 @@ snapshots: jest-util: 29.7.0 p-limit: 3.1.0 + jest-changed-files@30.2.0: + dependencies: + execa: 5.1.1 + jest-util: 30.2.0 + p-limit: 3.1.0 + jest-circus@29.7.0(babel-plugin-macros@3.1.0): dependencies: '@jest/environment': 29.7.0 @@ -41713,7 +44799,7 @@ snapshots: '@types/node': 22.15.35 chalk: 4.1.2 co: 4.6.0 - dedent: 1.6.0(babel-plugin-macros@3.1.0) + dedent: 1.7.0(babel-plugin-macros@3.1.0) is-generator-fn: 2.1.0 jest-each: 29.7.0 jest-matcher-utils: 29.7.0 @@ -41730,6 +44816,32 @@ snapshots: - babel-plugin-macros - supports-color + jest-circus@30.2.0(babel-plugin-macros@3.1.0): + dependencies: + '@jest/environment': 30.2.0 + '@jest/expect': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.15.35 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.7.0(babel-plugin-macros@3.1.0) + is-generator-fn: 2.1.0 + jest-each: 30.2.0 + jest-matcher-utils: 30.2.0 + jest-message-util: 30.2.0 + jest-runtime: 30.2.0 + jest-snapshot: 30.2.0 + jest-util: 30.2.0 + p-limit: 3.1.0 + pretty-format: 30.2.0 + pure-rand: 7.0.1 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + jest-cli@20.0.4: dependencies: ansi-escapes: 1.4.0 @@ -41785,16 +44897,16 @@ snapshots: - supports-color - utf-8-validate - jest-cli@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0): + jest-cli@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0) + create-jest: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0) + jest-config: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -41804,6 +44916,25 @@ snapshots: - supports-color - ts-node + jest-cli@30.2.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)): + dependencies: + '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 + chalk: 4.1.2 + exit-x: 0.2.2 + import-local: 3.2.0 + jest-config: 30.2.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) + jest-util: 30.2.0 + jest-validate: 30.2.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + jest-config@20.0.4: dependencies: chalk: 1.1.3 @@ -41858,7 +44989,7 @@ snapshots: - supports-color - utf-8-validate - jest-config@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0): + jest-config@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)): dependencies: '@babel/core': 7.27.7 '@jest/test-sequencer': 29.7.0 @@ -41884,6 +45015,41 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.15.35 + ts-node: 10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@30.2.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)): + dependencies: + '@babel/core': 7.27.7 + '@jest/get-type': 30.1.0 + '@jest/pattern': 30.0.1 + '@jest/test-sequencer': 30.2.0 + '@jest/types': 30.2.0 + babel-jest: 30.2.0(@babel/core@7.27.7) + chalk: 4.1.2 + ci-info: 4.3.1 + deepmerge: 4.3.1 + glob: 10.5.0 + graceful-fs: 4.2.11 + jest-circus: 30.2.0(babel-plugin-macros@3.1.0) + jest-docblock: 30.2.0 + jest-environment-node: 30.2.0 + jest-regex-util: 30.0.1 + jest-resolve: 30.2.0 + jest-runner: 30.2.0 + jest-util: 30.2.0 + jest-validate: 30.2.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 30.2.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.15.35 + esbuild-register: 3.6.0(esbuild@0.25.12) + ts-node: 10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -41916,6 +45082,13 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-diff@30.2.0: + dependencies: + '@jest/diff-sequences': 30.0.1 + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + pretty-format: 30.2.0 + jest-docblock@20.0.3: {} jest-docblock@25.3.0: @@ -41926,6 +45099,10 @@ snapshots: dependencies: detect-newline: 3.1.0 + jest-docblock@30.2.0: + dependencies: + detect-newline: 3.1.0 + jest-each@25.5.0: dependencies: '@jest/types': 25.5.0 @@ -41942,6 +45119,14 @@ snapshots: jest-util: 29.7.0 pretty-format: 29.7.0 + jest-each@30.2.0: + dependencies: + '@jest/get-type': 30.1.0 + '@jest/types': 30.2.0 + chalk: 4.1.2 + jest-util: 30.2.0 + pretty-format: 30.2.0 + jest-environment-jsdom@20.0.3: dependencies: jest-mock: 20.0.3 @@ -42010,6 +45195,16 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 + jest-environment-node@30.2.0: + dependencies: + '@jest/environment': 30.2.0 + '@jest/fake-timers': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.15.35 + jest-mock: 30.2.0 + jest-util: 30.2.0 + jest-validate: 30.2.0 + jest-get-type@22.4.3: {} jest-get-type@25.2.6: {} @@ -42076,6 +45271,21 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + jest-haste-map@30.2.0: + dependencies: + '@jest/types': 30.2.0 + '@types/node': 22.15.35 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 30.0.1 + jest-util: 30.2.0 + jest-worker: 30.2.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + jest-jasmine2@20.0.4: dependencies: chalk: 1.1.3 @@ -42104,7 +45314,7 @@ snapshots: jest-jasmine2@25.5.4: dependencies: - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.5 '@jest/environment': 25.5.0 '@jest/source-map': 25.5.0 '@jest/test-result': 25.5.0 @@ -42137,6 +45347,11 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-leak-detector@30.2.0: + dependencies: + '@jest/get-type': 30.1.0 + pretty-format: 30.2.0 + jest-matcher-utils@20.0.3: dependencies: chalk: 1.1.3 @@ -42162,6 +45377,13 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-matcher-utils@30.2.0: + dependencies: + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + jest-diff: 30.2.0 + pretty-format: 30.2.0 + jest-matchers@20.0.3: dependencies: jest-diff: 20.0.3 @@ -42206,6 +45428,18 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 + jest-message-util@30.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 30.2.0 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 30.2.0 + slash: 3.0.0 + stack-utils: 2.0.6 + jest-mock@20.0.3: {} jest-mock@22.4.3: {} @@ -42220,6 +45454,12 @@ snapshots: '@types/node': 22.15.35 jest-util: 29.7.0 + jest-mock@30.2.0: + dependencies: + '@jest/types': 30.2.0 + '@types/node': 22.15.35 + jest-util: 30.2.0 + jest-pnp-resolver@1.2.3(jest-resolve@25.5.1): optionalDependencies: jest-resolve: 25.5.1 @@ -42228,6 +45468,10 @@ snapshots: optionalDependencies: jest-resolve: 29.7.0 + jest-pnp-resolver@1.2.3(jest-resolve@30.2.0): + optionalDependencies: + jest-resolve: 30.2.0 + jest-regex-util@20.0.3: {} jest-regex-util@22.4.3: {} @@ -42238,6 +45482,8 @@ snapshots: jest-regex-util@29.6.3: {} + jest-regex-util@30.0.1: {} + jest-resolve-dependencies@20.0.3: dependencies: jest-regex-util: 20.0.3 @@ -42255,6 +45501,13 @@ snapshots: transitivePeerDependencies: - supports-color + jest-resolve-dependencies@30.2.0: + dependencies: + jest-regex-util: 30.0.1 + jest-snapshot: 30.2.0 + transitivePeerDependencies: + - supports-color + jest-resolve@20.0.4: dependencies: browser-resolve: 1.11.3 @@ -42275,7 +45528,7 @@ snapshots: jest-pnp-resolver: 1.2.3(jest-resolve@25.5.1) read-pkg-up: 7.0.1 realpath-native: 2.0.0 - resolve: 1.22.10 + resolve: 1.22.11 slash: 3.0.0 jest-resolve@29.7.0: @@ -42286,10 +45539,21 @@ snapshots: jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) jest-util: 29.7.0 jest-validate: 29.7.0 - resolve: 1.22.10 + resolve: 1.22.11 resolve.exports: 2.0.3 slash: 3.0.0 + jest-resolve@30.2.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 30.2.0 + jest-pnp-resolver: 1.2.3(jest-resolve@30.2.0) + jest-util: 30.2.0 + jest-validate: 30.2.0 + slash: 3.0.0 + unrs-resolver: 1.11.1 + jest-runner@25.5.4: dependencies: '@jest/console': 25.5.0 @@ -42343,6 +45607,33 @@ snapshots: transitivePeerDependencies: - supports-color + jest-runner@30.2.0: + dependencies: + '@jest/console': 30.2.0 + '@jest/environment': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.15.35 + chalk: 4.1.2 + emittery: 0.13.1 + exit-x: 0.2.2 + graceful-fs: 4.2.11 + jest-docblock: 30.2.0 + jest-environment-node: 30.2.0 + jest-haste-map: 30.2.0 + jest-leak-detector: 30.2.0 + jest-message-util: 30.2.0 + jest-resolve: 30.2.0 + jest-runtime: 30.2.0 + jest-util: 30.2.0 + jest-watcher: 30.2.0 + jest-worker: 30.2.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + jest-runtime@20.0.4: dependencies: babel-core: 6.26.3 @@ -42370,9 +45661,9 @@ snapshots: '@jest/test-result': 25.5.0 '@jest/transform': 25.5.1 '@jest/types': 25.5.0 - '@types/yargs': 15.0.19 + '@types/yargs': 15.0.20 chalk: 3.0.0 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -42407,7 +45698,7 @@ snapshots: '@types/node': 22.15.35 chalk: 4.1.2 cjs-module-lexer: 1.4.3 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 glob: 7.2.3 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 @@ -42422,6 +45713,33 @@ snapshots: transitivePeerDependencies: - supports-color + jest-runtime@30.2.0: + dependencies: + '@jest/environment': 30.2.0 + '@jest/fake-timers': 30.2.0 + '@jest/globals': 30.2.0 + '@jest/source-map': 30.0.1 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.15.35 + chalk: 4.1.2 + cjs-module-lexer: 2.1.1 + collect-v8-coverage: 1.0.3 + glob: 10.5.0 + graceful-fs: 4.2.11 + jest-haste-map: 30.2.0 + jest-message-util: 30.2.0 + jest-mock: 30.2.0 + jest-regex-util: 30.0.1 + jest-resolve: 30.2.0 + jest-snapshot: 30.2.0 + jest-util: 30.2.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + jest-serializer@25.5.0: dependencies: graceful-fs: 4.2.11 @@ -42451,7 +45769,7 @@ snapshots: jest-snapshot@25.5.1: dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@jest/types': 25.5.0 '@types/prettier': 1.19.1 chalk: 3.0.0 @@ -42470,10 +45788,10 @@ snapshots: jest-snapshot@29.7.0: dependencies: '@babel/core': 7.27.7 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.5 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.7) '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.7) - '@babel/types': 7.28.2 + '@babel/types': 7.28.5 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -42488,7 +45806,33 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.7.2 + semver: 7.7.3 + transitivePeerDependencies: + - supports-color + + jest-snapshot@30.2.0: + dependencies: + '@babel/core': 7.27.7 + '@babel/generator': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.7) + '@babel/types': 7.28.5 + '@jest/expect-utils': 30.2.0 + '@jest/get-type': 30.1.0 + '@jest/snapshot-utils': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.27.7) + chalk: 4.1.2 + expect: 30.2.0 + graceful-fs: 4.2.11 + jest-diff: 30.2.0 + jest-matcher-utils: 30.2.0 + jest-message-util: 30.2.0 + jest-util: 30.2.0 + pretty-format: 30.2.0 + semver: 7.7.3 + synckit: 0.11.11 transitivePeerDependencies: - supports-color @@ -42538,6 +45882,15 @@ snapshots: graceful-fs: 4.2.11 picomatch: 2.3.1 + jest-util@30.2.0: + dependencies: + '@jest/types': 30.2.0 + '@types/node': 22.15.35 + chalk: 4.1.2 + ci-info: 4.3.1 + graceful-fs: 4.2.11 + picomatch: 4.0.3 + jest-validate@20.0.3: dependencies: chalk: 1.1.3 @@ -42571,6 +45924,15 @@ snapshots: leven: 3.1.0 pretty-format: 29.7.0 + jest-validate@30.2.0: + dependencies: + '@jest/get-type': 30.1.0 + '@jest/types': 30.2.0 + camelcase: 6.3.0 + chalk: 4.1.2 + leven: 3.1.0 + pretty-format: 30.2.0 + jest-watch-typeahead@0.5.0: dependencies: ansi-escapes: 4.3.2 @@ -42601,6 +45963,17 @@ snapshots: jest-util: 29.7.0 string-length: 4.0.2 + jest-watcher@30.2.0: + dependencies: + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 22.15.35 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 30.2.0 + string-length: 4.0.2 + jest-worker@24.9.0: dependencies: merge-stream: 2.0.0 @@ -42630,6 +46003,14 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 + jest-worker@30.2.0: + dependencies: + '@types/node': 22.15.35 + '@ungap/structured-clone': 1.3.0 + jest-util: 30.2.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + jest@20.0.4: dependencies: jest-cli: 20.0.4 @@ -42645,21 +46026,34 @@ snapshots: - supports-color - utf-8-validate - jest@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0): + jest@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0) + jest-cli: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest@30.2.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)): + dependencies: + '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) + '@jest/types': 30.2.0 + import-local: 3.2.0 + jest-cli: 30.2.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros + - esbuild-register - supports-color - ts-node jiti@1.21.7: {} - jiti@2.5.1: {} + jiti@2.6.1: {} joi@17.13.3: dependencies: @@ -42681,41 +46075,29 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@3.7.0: - dependencies: - argparse: 1.0.10 - esprima: 2.7.3 - - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 jsbn@0.1.1: {} - jsbn@1.1.0: {} - jschardet@3.1.4: {} jscodeshift@0.15.2(@babel/preset-env@7.27.2(@babel/core@7.27.7)): dependencies: '@babel/core': 7.27.7 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.5 '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.7) '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.27.7) '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.7) '@babel/preset-flow': 7.27.1(@babel/core@7.27.7) '@babel/preset-typescript': 7.27.1(@babel/core@7.27.7) - '@babel/register': 7.27.1(@babel/core@7.27.7) + '@babel/register': 7.28.3(@babel/core@7.27.7) babel-core: 7.0.0-bridge.0(@babel/core@7.27.7) chalk: 4.1.2 - flow-parser: 0.278.0 + flow-parser: 0.291.0 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -42728,7 +46110,34 @@ snapshots: transitivePeerDependencies: - supports-color - jsdoc-type-pratt-parser@4.1.0: {} + jscodeshift@0.15.2(@babel/preset-env@7.27.2(@babel/core@7.28.5)): + dependencies: + '@babel/core': 7.27.7 + '@babel/parser': 7.28.5 + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.27.7) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.7) + '@babel/preset-flow': 7.27.1(@babel/core@7.27.7) + '@babel/preset-typescript': 7.27.1(@babel/core@7.27.7) + '@babel/register': 7.28.3(@babel/core@7.27.7) + babel-core: 7.0.0-bridge.0(@babel/core@7.27.7) + chalk: 4.1.2 + flow-parser: 0.291.0 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.23.11 + temp: 0.8.4 + write-file-atomic: 2.4.3 + optionalDependencies: + '@babel/preset-env': 7.27.2(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + + jsdoc-type-pratt-parser@4.8.0: {} jsdom@11.12.0: dependencies: @@ -42743,12 +46152,12 @@ snapshots: escodegen: 1.14.3 html-encoding-sniffer: 1.0.2 left-pad: 1.3.0 - nwsapi: 2.2.21 + nwsapi: 2.2.22 parse5: 4.0.0 pn: 1.1.0 request: 2.88.2 request-promise-native: 1.0.9(request@2.88.2) - sax: 1.4.1 + sax: 1.4.3 symbol-tree: 3.2.4 tough-cookie: 2.5.0 w3c-hr-time: 1.0.2 @@ -42771,7 +46180,7 @@ snapshots: domexception: 1.0.1 escodegen: 1.14.3 html-encoding-sniffer: 1.0.2 - nwsapi: 2.2.21 + nwsapi: 2.2.22 parse5: 5.1.0 pn: 1.1.0 request: 2.88.2 @@ -42802,12 +46211,12 @@ snapshots: decimal.js: 10.6.0 domexception: 4.0.0 escodegen: 2.1.0 - form-data: 4.0.4 + form-data: 4.0.5 html-encoding-sniffer: 3.0.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.21 + nwsapi: 2.2.22 parse5: 7.3.0 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -42838,7 +46247,7 @@ snapshots: nwmatcher: 1.4.4 parse5: 1.5.1 request: 2.88.2 - sax: 1.4.1 + sax: 1.4.3 symbol-tree: 3.2.4 tough-cookie: 2.5.0 webidl-conversions: 4.0.2 @@ -42850,19 +46259,15 @@ snapshots: jsesc@1.3.0: {} - jsesc@3.0.2: {} - jsesc@3.1.0: {} json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} - json-parse-even-better-errors@3.0.2: {} - json-schema-to-ts@3.1.1: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 ts-algebra: 2.0.0 json-schema-traverse@0.3.1: {} @@ -42909,7 +46314,7 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: @@ -42920,7 +46325,7 @@ snapshots: jsonix@3.0.0: dependencies: amdefine: 0.1.1 - xmldom: '@xmldom/xmldom@0.8.10' + xmldom: '@xmldom/xmldom@0.8.11' xmlhttprequest: 1.8.0 jsonwebtoken@9.0.2: @@ -42934,7 +46339,7 @@ snapshots: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.7.2 + semver: 7.7.3 jsprim@1.4.2: dependencies: @@ -42977,6 +46382,7 @@ snapshots: node-addon-api: 4.3.0 prebuild-install: 7.1.3 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - react-native-b4a @@ -42984,9 +46390,9 @@ snapshots: dependencies: json-buffer: 3.0.1 - keyv@5.5.0: + keyv@5.5.4: dependencies: - '@keyv/serialize': 1.1.0 + '@keyv/serialize': 1.1.1 kill-port@2.0.1: dependencies: @@ -43019,16 +46425,16 @@ snapshots: dependencies: package-json: 4.0.1 - launch-editor@2.11.0: + launch-editor@2.12.0: dependencies: picocolors: 1.1.1 shell-quote: 1.8.3 lazy-universal-dotenv@3.0.1: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 app-root-dir: 1.0.2 - core-js: 3.45.0 + core-js: 3.47.0 dotenv: 8.6.0 dotenv-expand: 5.1.0 @@ -43070,8 +46476,6 @@ snapshots: lines-and-columns@1.2.4: {} - lines-and-columns@2.0.4: {} - linkify-it@3.0.3: dependencies: uc.micro: 1.0.6 @@ -43080,31 +46484,26 @@ snapshots: dependencies: uc.micro: 2.1.0 - lint-staged@16.1.4: + lint-staged@16.2.6: dependencies: - chalk: 5.5.0 - commander: 14.0.0 - debug: 4.4.1(supports-color@8.1.1) - lilconfig: 3.1.3 - listr2: 9.0.1 + commander: 14.0.2 + listr2: 9.0.5 micromatch: 4.0.8 - nano-spawn: 1.0.2 + nano-spawn: 2.0.0 pidtree: 0.6.0 string-argv: 0.3.2 yaml: 2.8.1 - transitivePeerDependencies: - - supports-color listenercount@1.0.1: {} - listr2@9.0.1: + listr2@9.0.5: dependencies: - cli-truncate: 4.0.0 + cli-truncate: 5.1.1 colorette: 2.0.20 eventemitter3: 5.0.1 log-update: 6.1.0 rfdc: 1.4.1 - wrap-ansi: 9.0.0 + wrap-ansi: 9.0.2 load-json-file@1.1.0: dependencies: @@ -43114,7 +46513,7 @@ snapshots: pinkie-promise: 2.0.1 strip-bom: 2.0.0 - loader-runner@4.3.0: {} + loader-runner@4.3.1: {} loader-utils@0.2.17: dependencies: @@ -43235,7 +46634,7 @@ snapshots: log-symbols@6.0.0: dependencies: - chalk: 5.5.0 + chalk: 5.6.2 is-unicode-supported: 1.3.0 log-update@2.3.0: @@ -43246,11 +46645,11 @@ snapshots: log-update@6.1.0: dependencies: - ansi-escapes: 7.0.0 + ansi-escapes: 7.2.0 cli-cursor: 5.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 logform@2.7.0: dependencies: @@ -43269,6 +46668,8 @@ snapshots: long-timeout@0.1.1: {} + long@5.3.2: {} + longest-streak@3.1.0: {} loose-envify@1.4.0: @@ -43286,7 +46687,7 @@ snapshots: dependencies: get-func-name: 2.0.2 - loupe@3.2.0: {} + loupe@3.2.1: {} lower-case@1.1.4: {} @@ -43305,7 +46706,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.1.0: {} + lru-cache@11.2.2: {} lru-cache@4.1.5: dependencies: @@ -43326,7 +46727,11 @@ snapshots: dependencies: es5-ext: 0.10.64 - luxon@3.7.1: {} + lucide-react@0.523.0(react@18.3.1): + dependencies: + react: 18.3.1 + + luxon@3.7.2: {} lz-string@1.5.0: {} @@ -43334,9 +46739,9 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 - magic-string@0.30.17: + magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 make-cancellable-promise@1.3.2: {} @@ -43355,7 +46760,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 make-error@1.3.6: {} @@ -43417,12 +46822,12 @@ snapshots: markdown-table@3.0.4: {} - markdown-to-jsx@7.7.13(react@18.2.0): - dependencies: + markdown-to-jsx@7.7.17(react@18.2.0): + optionalDependencies: react: 18.2.0 - markdown-to-jsx@7.7.13(react@19.1.0): - dependencies: + markdown-to-jsx@7.7.17(react@19.1.0): + optionalDependencies: react: 19.1.0 matches-selector@0.0.1: {} @@ -43457,7 +46862,7 @@ snapshots: mdast-util-to-markdown: 2.1.2 parse-entities: 4.0.2 stringify-entities: 4.0.4 - unist-util-visit-parents: 6.0.1 + unist-util-visit-parents: 6.0.2 transitivePeerDependencies: - supports-color @@ -43465,8 +46870,8 @@ snapshots: dependencies: '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 mdast-util-from-markdown@1.3.1: dependencies: @@ -43627,7 +47032,7 @@ snapshots: mdast-util-phrasing@4.1.0: dependencies: '@types/mdast': 4.0.4 - unist-util-is: 6.0.0 + unist-util-is: 6.0.1 mdast-util-to-hast@10.0.1: dependencies: @@ -43711,11 +47116,13 @@ snapshots: dependencies: fs-monkey: 1.1.0 - memfs@4.36.0: + memfs@4.51.0: dependencies: - '@jsonjoy.com/json-pack': 1.8.0(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) - tree-dump: 1.0.3(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 memoizee@0.4.17: @@ -43782,7 +47189,7 @@ snapshots: merge@1.2.1: {} - meros@1.3.1(@types/node@22.15.35): + meros@1.3.2(@types/node@22.15.35): optionalDependencies: '@types/node': 22.15.35 @@ -44165,7 +47572,7 @@ snapshots: micromark@3.2.0: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) decode-named-character-reference: 1.2.0 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -44187,7 +47594,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -44211,10 +47618,16 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime-db@1.33.0: {} + mime-db@1.52.0: {} mime-db@1.54.0: {} + mime-types@2.1.18: + dependencies: + mime-db: 1.33.0 + mime-types@2.1.35: dependencies: mime-db: 1.52.0 @@ -44241,17 +47654,17 @@ snapshots: mimic-response@4.0.0: {} - min-document@2.19.0: + min-document@2.19.2: dependencies: dom-walk: 0.1.2 min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.3(webpack@5.101.0): + mini-css-extract-plugin@2.9.4(webpack@5.103.0): dependencies: - schema-utils: 4.3.2 - tapable: 2.2.2 - webpack: 5.101.0(webpack-cli@4.10.0) + schema-utils: 4.3.3 + tapable: 2.3.0 + webpack: 5.103.0(webpack-cli@4.10.0) minim@0.23.8: dependencies: @@ -44259,7 +47672,7 @@ snapshots: minimalistic-assert@1.0.1: {} - minimatch@10.0.3: + minimatch@10.1.1: dependencies: '@isaacs/brace-expansion': 5.0.0 @@ -44355,7 +47768,7 @@ snapshots: mkdirp@3.0.1: {} - mlly@1.7.4: + mlly@1.8.0: dependencies: acorn: 8.15.0 pathe: 2.0.3 @@ -44367,13 +47780,13 @@ snapshots: ansi-colors: 4.1.3 browser-stdout: 1.3.1 chokidar: 3.6.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) diff: 5.2.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 glob: 8.1.0 he: 1.2.0 - js-yaml: 4.1.0 + js-yaml: 4.1.1 log-symbols: 4.1.0 minimatch: 5.1.6 ms: 2.1.3 @@ -44385,17 +47798,18 @@ snapshots: yargs-parser: 20.2.9 yargs-unparser: 2.0.0 - mocha@11.7.1: + mocha@11.7.5: dependencies: browser-stdout: 1.3.1 chokidar: 4.0.3 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) diff: 7.0.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 - glob: 10.4.5 + glob: 10.5.0 he: 1.2.0 - js-yaml: 4.1.0 + is-path-inside: 3.0.3 + js-yaml: 4.1.1 log-symbols: 4.1.0 minimatch: 9.0.5 ms: 2.1.3 @@ -44403,7 +47817,7 @@ snapshots: serialize-javascript: 6.0.2 strip-json-comments: 3.1.1 supports-color: 8.1.1 - workerpool: 9.3.3 + workerpool: 9.3.4 yargs: 17.7.2 yargs-parser: 21.1.1 yargs-unparser: 2.0.0 @@ -44428,13 +47842,13 @@ snapshots: vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 - monaco-page-objects@3.14.1(selenium-webdriver@4.34.0)(typescript@5.8.3): + monaco-page-objects@3.14.1(selenium-webdriver@4.38.0)(typescript@5.8.3): dependencies: clipboardy: 4.0.0 clone-deep: 4.0.1 compare-versions: 6.1.1 - fs-extra: 11.3.1 - selenium-webdriver: 4.34.0 + fs-extra: 11.3.2 + selenium-webdriver: 4.38.0 type-fest: 4.41.0 typescript: 5.8.3 @@ -44474,13 +47888,13 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nan@2.23.0: {} + nan@2.23.1: {} - nano-spawn@1.0.2: {} + nano-spawn@2.0.0: {} nanoid@3.3.11: {} - nanoid@5.1.5: {} + nanoid@5.1.6: {} nanospinner@1.2.2: dependencies: @@ -44488,6 +47902,8 @@ snapshots: napi-build-utils@2.0.0: {} + napi-postinstall@0.3.4: {} + natural-compare-lite@1.4.0: {} natural-compare@1.4.0: {} @@ -44521,9 +47937,9 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-abi@3.75.0: + node-abi@3.85.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 node-abort-controller@3.1.1: {} @@ -44589,14 +48005,14 @@ snapshots: node-gyp@9.4.1: dependencies: env-paths: 2.2.1 - exponential-backoff: 3.1.2 + exponential-backoff: 3.1.3 glob: 7.2.3 graceful-fs: 4.2.11 make-fetch-happen: 10.2.1 nopt: 6.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.7.2 + semver: 7.7.3 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -44604,15 +48020,15 @@ snapshots: node-int64@0.4.0: {} - node-loader@2.0.0(webpack@5.101.0): + node-loader@2.0.0(webpack@5.103.0): dependencies: loader-utils: 2.0.4 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) - node-loader@2.1.0(webpack@5.101.0): + node-loader@2.1.0(webpack@5.103.0): dependencies: loader-utils: 2.0.4 - webpack: 5.101.0(webpack-cli@4.10.0) + webpack: 5.103.0(webpack-cli@4.10.0) node-notifier@5.4.5: dependencies: @@ -44631,12 +48047,12 @@ snapshots: which: 1.3.1 optional: true - node-releases@2.0.19: {} + node-releases@2.0.27: {} - node-sarif-builder@2.0.3: + node-sarif-builder@3.3.0: dependencies: '@types/sarif': 2.1.7 - fs-extra: 10.1.0 + fs-extra: 11.3.2 node-schedule@2.1.1: dependencies: @@ -44660,7 +48076,7 @@ snapshots: normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.10 + resolve: 1.22.11 semver: 5.7.2 validate-npm-package-license: 3.0.4 @@ -44668,13 +48084,13 @@ snapshots: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.16.1 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-path@2.1.1: @@ -44694,7 +48110,7 @@ snapshots: normalize-url@6.1.0: {} - normalize-url@8.0.2: {} + normalize-url@8.1.0: {} npm-run-path@2.0.2: dependencies: @@ -44708,6 +48124,11 @@ snapshots: dependencies: path-key: 4.0.0 + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + npmlog@4.1.2: dependencies: are-we-there-yet: 1.1.7 @@ -44741,7 +48162,7 @@ snapshots: nwmatcher@1.4.4: {} - nwsapi@2.2.21: {} + nwsapi@2.2.22: {} nypm@0.5.4: dependencies: @@ -44849,7 +48270,7 @@ snapshots: open@10.2.0: dependencies: - default-browser: 5.2.1 + default-browser: 5.4.0 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 wsl-utils: 0.1.0 @@ -44922,7 +48343,7 @@ snapshots: ora@8.2.0: dependencies: - chalk: 5.5.0 + chalk: 5.6.2 cli-cursor: 5.0.0 cli-spinners: 2.9.2 is-interactive: 2.0.0 @@ -44930,7 +48351,7 @@ snapshots: log-symbols: 6.0.0 stdin-discarder: 0.2.2 string-width: 7.2.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 original@1.0.2: dependencies: @@ -45001,7 +48422,7 @@ snapshots: p-limit@4.0.0: dependencies: - yocto-queue: 1.2.1 + yocto-queue: 1.2.2 p-locate@2.0.0: dependencies: @@ -45039,7 +48460,7 @@ snapshots: dependencies: aggregate-error: 4.0.1 - p-map@7.0.3: {} + p-map@7.0.4: {} p-queue@6.6.2: dependencies: @@ -45049,7 +48470,7 @@ snapshots: p-retry@6.2.1: dependencies: '@types/retry': 0.12.2 - is-network-error: 1.1.0 + is-network-error: 1.3.0 retry: 0.13.1 p-timeout@3.2.0: @@ -45115,22 +48536,22 @@ snapshots: parse-json@2.2.0: dependencies: - error-ex: 1.3.2 + error-ex: 1.3.4 parse-json@5.2.0: dependencies: '@babel/code-frame': 7.27.1 - error-ex: 1.3.2 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-json@7.1.1: + parse-json@8.3.0: dependencies: '@babel/code-frame': 7.27.1 - error-ex: 1.3.2 - json-parse-even-better-errors: 3.0.2 - lines-and-columns: 2.0.4 - type-fest: 3.13.1 + index-to-position: 1.2.0 + type-fest: 4.41.0 + + parse-ms@4.0.0: {} parse-passwd@1.0.0: {} @@ -45168,11 +48589,6 @@ snapshots: path-browserify@1.0.1: {} - path-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - path-dirname@1.0.2: {} path-exists@2.1.0: @@ -45202,9 +48618,9 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-scurry@2.0.0: + path-scurry@2.0.1: dependencies: - lru-cache: 11.1.0 + lru-cache: 11.2.2 minipass: 7.1.2 path-to-regexp@0.1.12: {} @@ -45213,7 +48629,9 @@ snapshots: dependencies: isarray: 0.0.1 - path-to-regexp@8.2.0: {} + path-to-regexp@3.3.0: {} + + path-to-regexp@8.3.0: {} path-type@1.1.0: dependencies: @@ -45251,9 +48669,10 @@ snapshots: pdfjs-dist@4.8.69: optionalDependencies: - canvas: 3.1.2 + canvas: 3.2.0 path2d: 0.2.2 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - react-native-b4a @@ -45299,6 +48718,8 @@ snapshots: dependencies: crypto-js: 4.2.0 + pkce-challenge@4.1.0: {} + pkce-challenge@5.0.0: {} pkg-dir@2.0.0: @@ -45324,7 +48745,7 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.7.4 + mlly: 1.8.0 pathe: 2.0.3 playwright-core@1.55.1: {} @@ -45362,7 +48783,7 @@ snapshots: polished@4.3.1: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 popmotion@11.0.3: dependencies: @@ -45371,10 +48792,10 @@ snapshots: style-value-types: 5.0.0 tslib: 2.8.1 - portfinder@1.0.37: + portfinder@1.0.38: dependencies: async: 3.2.6 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -45400,7 +48821,7 @@ snapshots: postcss-colormin@5.3.1(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.28.0 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.5.6 @@ -45413,7 +48834,7 @@ snapshots: postcss-convert-values@5.1.3(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.28.0 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -45471,9 +48892,9 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.10 + resolve: 1.22.11 - postcss-js@4.0.1(postcss@8.5.6): + postcss-js@4.1.0(postcss@8.5.6): dependencies: camelcase-css: 2.0.1 postcss: 8.5.6 @@ -45485,19 +48906,21 @@ snapshots: postcss-load-options: 1.2.0 postcss-load-plugins: 2.3.0 - postcss-load-config@3.1.4(postcss@8.5.6): + postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.5.6 + ts-node: 10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3) - postcss-load-config@4.0.2(postcss@8.5.6): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.1): dependencies: lilconfig: 3.1.3 - yaml: 2.8.1 optionalDependencies: + jiti: 1.21.7 postcss: 8.5.6 + yaml: 2.8.1 postcss-load-options@1.2.0: dependencies: @@ -45516,24 +48939,34 @@ snapshots: postcss-load-config: 1.2.0 schema-utils: 0.3.0 - postcss-loader@4.3.0(postcss@7.0.39)(webpack@5.101.0): + postcss-loader@4.3.0(postcss@7.0.39)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): + dependencies: + cosmiconfig: 7.1.0 + klona: 2.0.6 + loader-utils: 2.0.4 + postcss: 7.0.39 + schema-utils: 3.3.0 + semver: 7.7.3 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + + postcss-loader@4.3.0(postcss@7.0.39)(webpack@5.103.0): dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 loader-utils: 2.0.4 postcss: 7.0.39 schema-utils: 3.3.0 - semver: 7.7.2 - webpack: 5.101.0(webpack-cli@6.0.1) + semver: 7.7.3 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) - postcss-loader@8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.101.0): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.8.3)(webpack@5.103.0): dependencies: cosmiconfig: 9.0.0(typescript@5.8.3) - jiti: 1.21.7 + jiti: 2.6.1 postcss: 8.5.6 - semver: 7.7.2 + semver: 7.7.3 optionalDependencies: - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(webpack-cli@6.0.1) transitivePeerDependencies: - typescript @@ -45563,7 +48996,7 @@ snapshots: postcss-merge-rules@5.1.4(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.28.0 caniuse-api: 3.0.0 cssnano-utils: 3.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -45603,7 +49036,7 @@ snapshots: postcss-minify-params@5.1.4(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.28.0 cssnano-utils: 3.1.0(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -45733,7 +49166,7 @@ snapshots: postcss-normalize-unicode@5.1.1(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.28.0 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -45777,7 +49210,7 @@ snapshots: postcss-reduce-initial@5.1.2(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.28.0 caniuse-api: 3.0.0 postcss: 8.5.6 @@ -45874,19 +49307,20 @@ snapshots: prebuild-install@7.1.3: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.2 expand-template: 2.0.3 github-from-package: 0.0.0 minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 2.0.0 - node-abi: 3.75.0 + node-abi: 3.85.0 pump: 3.0.3 rc: 1.2.8 simple-get: 4.0.1 tar-fs: 3.1.1 tunnel-agent: 0.6.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - react-native-b4a @@ -45896,6 +49330,8 @@ snapshots: prepend-http@1.0.4: {} + presentable-error@0.0.1: {} + prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 @@ -45949,8 +49385,18 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + pretty-format@30.2.0: + dependencies: + '@jest/schemas': 30.0.5 + ansi-styles: 5.2.0 + react-is: 18.3.1 + pretty-hrtime@1.0.3: {} + pretty-ms@9.3.0: + dependencies: + parse-ms: 4.0.0 + prism-react-renderer@2.4.1(react@18.2.0): dependencies: '@types/prismjs': 1.26.5 @@ -45971,7 +49417,7 @@ snapshots: dependencies: chalk: 2.4.2 cli-spinners: 1.3.1 - humanize-duration: 3.33.0 + humanize-duration: 3.33.1 log-update: 2.3.0 progress@2.0.3: {} @@ -46038,6 +49484,21 @@ snapshots: property-information@7.1.0: {} + protobufjs@7.5.4: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 22.15.35 + long: 5.3.2 + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -46080,7 +49541,7 @@ snapshots: puppeteer-core@2.1.1: dependencies: '@types/mime-types': 2.1.4 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) extract-zip: 1.7.0 https-proxy-agent: 4.0.0 mime: 2.6.0 @@ -46096,8 +49557,14 @@ snapshots: pure-rand@6.1.0: {} + pure-rand@7.0.1: {} + q@1.5.1: {} + qified@0.5.2: + dependencies: + hookified: 1.13.0 + qs@6.13.0: dependencies: side-channel: 1.1.0 @@ -46142,6 +49609,8 @@ snapshots: dependencies: safe-buffer: 5.2.1 + range-parser@1.2.0: {} + range-parser@1.2.1: {} raw-body@2.5.2: @@ -46151,23 +49620,29 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - raw-body@3.0.0: + raw-body@3.0.1: dependencies: bytes: 3.1.2 http-errors: 2.0.0 - iconv-lite: 0.6.3 + iconv-lite: 0.7.0 unpipe: 1.0.0 - raw-loader@4.0.2(webpack@5.101.0): + raw-loader@4.0.2(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + + raw-loader@4.0.2(webpack@5.103.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) rc-config-loader@4.1.3: dependencies: - debug: 4.4.1(supports-color@8.1.1) - js-yaml: 4.1.0 + debug: 4.4.3(supports-color@8.1.1) + js-yaml: 4.1.1 json5: 2.2.3 require-from-string: 2.0.2 transitivePeerDependencies: @@ -46266,8 +49741,8 @@ snapshots: react-docgen@5.4.3: dependencies: '@babel/core': 7.27.7 - '@babel/generator': 7.28.0 - '@babel/runtime': 7.28.2 + '@babel/generator': 7.28.5 + '@babel/runtime': 7.28.4 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 @@ -46281,30 +49756,30 @@ snapshots: react-docgen@7.1.1: dependencies: '@babel/core': 7.27.7 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 '@types/doctrine': 0.0.9 '@types/resolve': 1.20.6 doctrine: 3.0.0 - resolve: 1.22.10 - strip-indent: 4.0.0 + resolve: 1.22.11 + strip-indent: 4.1.1 transitivePeerDependencies: - supports-color - react-docgen@8.0.0: + react-docgen@8.0.2: dependencies: - '@babel/core': 7.27.7 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.2 + '@babel/core': 7.28.5 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 '@types/doctrine': 0.0.9 '@types/resolve': 1.20.6 doctrine: 3.0.0 - resolve: 1.22.10 - strip-indent: 4.0.0 + resolve: 1.22.11 + strip-indent: 4.1.1 transitivePeerDependencies: - supports-color @@ -46314,6 +49789,12 @@ snapshots: react: 18.2.0 scheduler: 0.23.2 + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + react-dom@19.1.0(react@19.1.0): dependencies: react: 19.1.0 @@ -46353,12 +49834,12 @@ snapshots: react-error-boundary@3.1.4(react@18.2.0): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 18.2.0 react-error-boundary@6.0.0(react@19.1.0): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 19.1.0 react-error-overlay@4.0.1: {} @@ -46407,7 +49888,7 @@ snapshots: react-inspector@5.1.1(react@18.2.0): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 is-dom: 1.1.0 prop-types: 15.8.1 react: 18.2.0 @@ -46420,29 +49901,29 @@ snapshots: dependencies: react: 19.1.0 - react-intl@7.1.11(react@18.2.0)(typescript@5.8.3): + react-intl@7.1.14(react@18.2.0)(typescript@5.8.3): dependencies: - '@formatjs/ecma402-abstract': 2.3.4 - '@formatjs/icu-messageformat-parser': 2.11.2 - '@formatjs/intl': 3.1.6(typescript@5.8.3) + '@formatjs/ecma402-abstract': 2.3.6 + '@formatjs/icu-messageformat-parser': 2.11.4 + '@formatjs/intl': 3.1.8(typescript@5.8.3) '@types/hoist-non-react-statics': 3.3.7(@types/react@18.2.0) '@types/react': 18.2.0 hoist-non-react-statics: 3.3.2 - intl-messageformat: 10.7.16 + intl-messageformat: 10.7.18 react: 18.2.0 tslib: 2.8.1 optionalDependencies: typescript: 5.8.3 - react-intl@7.1.11(react@19.1.0)(typescript@4.9.5): + react-intl@7.1.14(react@19.1.0)(typescript@4.9.5): dependencies: - '@formatjs/ecma402-abstract': 2.3.4 - '@formatjs/icu-messageformat-parser': 2.11.2 - '@formatjs/intl': 3.1.6(typescript@4.9.5) + '@formatjs/ecma402-abstract': 2.3.6 + '@formatjs/icu-messageformat-parser': 2.11.4 + '@formatjs/intl': 3.1.8(typescript@4.9.5) '@types/hoist-non-react-statics': 3.3.7(@types/react@18.2.0) '@types/react': 18.2.0 hoist-non-react-statics: 3.3.2 - intl-messageformat: 10.7.16 + intl-messageformat: 10.7.18 react: 19.1.0 tslib: 2.8.1 optionalDependencies: @@ -46456,9 +49937,9 @@ snapshots: react-is@18.3.1: {} - react-is@19.1.1: {} + react-is@19.2.0: {} - react-json-view-lite@2.4.2(react@18.2.0): + react-json-view-lite@2.5.0(react@18.2.0): dependencies: react: 18.2.0 @@ -46567,6 +50048,7 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - react-native-b4a @@ -46574,7 +50056,7 @@ snapshots: dependencies: '@types/use-sync-external-store': 0.0.6 react: 18.2.0 - use-sync-external-store: 1.5.0(react@18.2.0) + use-sync-external-store: 1.6.0(react@18.2.0) optionalDependencies: '@types/react': 18.2.0 redux: 5.0.1 @@ -46589,6 +50071,14 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + react-remove-scroll-bar@2.3.8(@types/react@18.2.0)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.3(@types/react@18.2.0)(react@18.3.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.2.0 + react-remove-scroll-bar@2.3.8(@types/react@18.2.0)(react@19.1.0): dependencies: react: 19.1.0 @@ -46630,22 +50120,33 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 - react-scripts-ts@3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(babel-runtime@6.26.0)(typescript@5.8.3): + react-remove-scroll@2.7.1(@types/react@18.2.0)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.8(@types/react@18.2.0)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.2.0)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.2.0)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.2.0)(react@18.3.1) + optionalDependencies: + '@types/react': 18.2.0 + + react-scripts-ts@3.1.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(babel-runtime@6.26.0)(typescript@5.8.3)(webpack-cli@6.0.1): dependencies: autoprefixer: 7.1.6 babel-jest: 20.0.3 - babel-loader: 7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(webpack@5.101.0) + babel-loader: 7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(webpack@5.103.0) babel-preset-react-app: 3.1.2(babel-runtime@6.26.0) case-sensitive-paths-webpack-plugin: 2.1.1 chalk: 1.1.3 css-loader: 0.28.7 dotenv: 4.0.0 dotenv-expand: 4.2.0 - extract-text-webpack-plugin: 3.0.2(webpack@5.101.0) - file-loader: 1.1.5(webpack@5.101.0) - fork-ts-checker-webpack-plugin: 0.2.10(typescript@5.8.3)(webpack@5.101.0) + extract-text-webpack-plugin: 3.0.2(webpack@5.103.0) + file-loader: 1.1.5(webpack@5.103.0) + fork-ts-checker-webpack-plugin: 0.2.10(typescript@5.8.3)(webpack@5.103.0) fs-extra: 3.0.1 - html-webpack-plugin: 2.29.0(webpack@5.101.0) + html-webpack-plugin: 2.29.0(webpack@5.103.0) jest: 20.0.4 object-assign: 4.1.1 postcss-flexbugs-fixes: 3.2.0 @@ -46656,7 +50157,7 @@ snapshots: resolve: 1.6.0 source-map-loader: 0.2.4 style-loader: 0.19.0 - sw-precache-webpack-plugin: 0.11.4(webpack@5.101.0) + sw-precache-webpack-plugin: 0.11.4(webpack@5.103.0) ts-jest: 22.0.1(jest@20.0.4)(typescript@5.8.3) ts-loader: 2.3.7 tsconfig-paths-webpack-plugin: 2.0.0 @@ -46664,11 +50165,11 @@ snapshots: tslint-config-prettier: 1.18.0 tslint-react: 3.6.0(tslint@5.20.1(typescript@5.8.3))(typescript@5.8.3) typescript: 5.8.3 - uglifyjs-webpack-plugin: 1.2.5(webpack@5.101.0) - url-loader: 0.6.2(file-loader@1.1.5(webpack@5.101.0)) - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-dev-server: 5.2.2(webpack@5.101.0) - webpack-manifest-plugin: 1.3.2(webpack@5.101.0) + uglifyjs-webpack-plugin: 1.2.5(webpack@5.103.0) + url-loader: 0.6.2(file-loader@1.1.5(webpack@5.103.0)) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) + webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.103.0) + webpack-manifest-plugin: 1.3.2(webpack@5.103.0) whatwg-fetch: 2.0.3 optionalDependencies: fsevents: 1.2.13 @@ -46684,22 +50185,22 @@ snapshots: - utf-8-validate - webpack-cli - react-scripts-ts@3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(babel-runtime@6.26.0)(typescript@5.8.3)(webpack-cli@6.0.1): + react-scripts-ts@3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.28.5))(babel-runtime@6.26.0)(typescript@5.8.3): dependencies: autoprefixer: 7.1.6 babel-jest: 20.0.3 - babel-loader: 7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(webpack@5.101.0) + babel-loader: 7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.28.5))(webpack@5.103.0) babel-preset-react-app: 3.1.2(babel-runtime@6.26.0) case-sensitive-paths-webpack-plugin: 2.1.1 chalk: 1.1.3 css-loader: 0.28.7 dotenv: 4.0.0 dotenv-expand: 4.2.0 - extract-text-webpack-plugin: 3.0.2(webpack@5.101.0) - file-loader: 1.1.5(webpack@5.101.0) - fork-ts-checker-webpack-plugin: 0.2.10(typescript@5.8.3)(webpack@5.101.0) + extract-text-webpack-plugin: 3.0.2(webpack@5.103.0) + file-loader: 1.1.5(webpack@5.103.0) + fork-ts-checker-webpack-plugin: 0.2.10(typescript@5.8.3)(webpack@5.103.0) fs-extra: 3.0.1 - html-webpack-plugin: 2.29.0(webpack@5.101.0) + html-webpack-plugin: 2.29.0(webpack@5.103.0) jest: 20.0.4 object-assign: 4.1.1 postcss-flexbugs-fixes: 3.2.0 @@ -46710,7 +50211,7 @@ snapshots: resolve: 1.6.0 source-map-loader: 0.2.4 style-loader: 0.19.0 - sw-precache-webpack-plugin: 0.11.4(webpack@5.101.0) + sw-precache-webpack-plugin: 0.11.4(webpack@5.103.0) ts-jest: 22.0.1(jest@20.0.4)(typescript@5.8.3) ts-loader: 2.3.7 tsconfig-paths-webpack-plugin: 2.0.0 @@ -46718,11 +50219,11 @@ snapshots: tslint-config-prettier: 1.18.0 tslint-react: 3.6.0(tslint@5.20.1(typescript@5.8.3))(typescript@5.8.3) typescript: 5.8.3 - uglifyjs-webpack-plugin: 1.2.5(webpack@5.101.0) - url-loader: 0.6.2(file-loader@1.1.5(webpack@5.101.0)) - webpack: 5.101.0(webpack-cli@6.0.1) - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) - webpack-manifest-plugin: 1.3.2(webpack@5.101.0) + uglifyjs-webpack-plugin: 1.2.5(webpack@5.103.0) + url-loader: 0.6.2(file-loader@1.1.5(webpack@5.103.0)) + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-dev-server: 5.2.2(webpack@5.103.0) + webpack-manifest-plugin: 1.3.2(webpack@5.103.0) whatwg-fetch: 2.0.3 optionalDependencies: fsevents: 1.2.13 @@ -46738,6 +50239,11 @@ snapshots: - utf-8-validate - webpack-cli + react-simple-code-editor@0.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-split-pane@0.1.92(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: prop-types: 15.8.1 @@ -46758,6 +50264,14 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + react-style-singleton@2.2.3(@types/react@18.2.0)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.2.0 + react-style-singleton@2.2.3(@types/react@18.2.0)(react@19.1.0): dependencies: get-nonce: 1.0.1 @@ -46766,9 +50280,9 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 - react-syntax-highlighter@15.6.1(react@18.2.0): + react-syntax-highlighter@15.6.6(react@18.2.0): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 highlight.js: 10.7.3 highlightjs-vue: 1.0.0 lowlight: 1.20.0 @@ -46776,15 +50290,25 @@ snapshots: react: 18.2.0 refractor: 3.6.0 + react-syntax-highlighter@16.1.0(react@18.2.0): + dependencies: + '@babel/runtime': 7.28.4 + highlight.js: 10.7.3 + highlightjs-vue: 1.0.0 + lowlight: 1.20.0 + prismjs: 1.30.0 + react: 18.2.0 + refractor: 5.0.0 + react-test-renderer@19.1.1(react@18.2.0): dependencies: react: 18.2.0 - react-is: 19.1.1 + react-is: 19.2.0 scheduler: 0.26.0 react-textarea-autosize@8.5.9(@types/react@18.2.0)(react@18.2.0): dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 react: 18.2.0 use-composed-ref: 1.4.0(@types/react@18.2.0)(react@18.2.0) use-latest: 1.3.0(@types/react@18.2.0)(react@18.2.0) @@ -46800,6 +50324,10 @@ snapshots: dependencies: loose-envify: 1.4.0 + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + react@19.1.0: {} read-cache@1.0.0: @@ -46843,12 +50371,13 @@ snapshots: parse-json: 5.2.0 type-fest: 1.4.0 - read-pkg@8.1.0: + read-pkg@9.0.1: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.2 - parse-json: 7.1.1 + parse-json: 8.3.0 type-fest: 4.41.0 + unicorn-magic: 0.1.0 read@1.0.7: dependencies: @@ -46929,15 +50458,15 @@ snapshots: rechoir@0.6.2: dependencies: - resolve: 1.22.10 + resolve: 1.22.11 rechoir@0.7.1: dependencies: - resolve: 1.22.10 + resolve: 1.22.11 rechoir@0.8.0: dependencies: - resolve: 1.22.10 + resolve: 1.22.11 recursive-readdir@2.2.1: dependencies: @@ -46956,7 +50485,7 @@ snapshots: redent@4.0.0: dependencies: indent-string: 5.0.0 - strip-indent: 4.0.0 + strip-indent: 4.1.1 reduce-css-calc@1.3.0: dependencies: @@ -46974,7 +50503,7 @@ snapshots: redux@4.2.1: dependencies: - '@babel/runtime': 7.28.2 + '@babel/runtime': 7.28.4 redux@5.0.1: {} @@ -46995,7 +50524,14 @@ snapshots: parse-entities: 2.0.0 prismjs: 1.30.0 - regenerate-unicode-properties@10.2.0: + refractor@5.0.0: + dependencies: + '@types/hast': 3.0.4 + '@types/prismjs': 1.26.5 + hastscript: 9.0.1 + parse-entities: 4.0.2 + + regenerate-unicode-properties@10.2.2: dependencies: regenerate: 1.4.2 @@ -47030,14 +50566,14 @@ snapshots: regjsgen: 0.2.0 regjsparser: 0.1.5 - regexpu-core@6.2.0: + regexpu-core@6.4.0: dependencies: regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 + regenerate-unicode-properties: 10.2.2 regjsgen: 0.8.0 - regjsparser: 0.12.0 + regjsparser: 0.13.0 unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 + unicode-match-property-value-ecmascript: 2.2.1 registry-auth-token@3.4.0: dependencies: @@ -47056,9 +50592,9 @@ snapshots: dependencies: jsesc: 0.5.0 - regjsparser@0.12.0: + regjsparser@0.13.0: dependencies: - jsesc: 3.0.2 + jsesc: 3.1.0 rehype-raw@6.1.1: dependencies: @@ -47238,7 +50774,7 @@ snapshots: combined-stream: 1.0.8 extend: 3.0.2 forever-agent: 0.6.1 - form-data: 4.0.4 + form-data: 4.0.5 har-validator: 5.1.5 http-signature: 1.2.0 is-typedarray: 1.0.0 @@ -47292,7 +50828,7 @@ snapshots: dependencies: path-parse: 1.0.7 - resolve@1.22.10: + resolve@1.22.11: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 @@ -47337,8 +50873,6 @@ snapshots: reusify@1.1.0: {} - rev-hash@3.0.0: {} - rfdc@1.4.1: {} rimraf@2.6.3: @@ -47355,23 +50889,23 @@ snapshots: rimraf@5.0.10: dependencies: - glob: 10.4.5 + glob: 10.5.0 rimraf@6.0.1: dependencies: - glob: 11.0.3 + glob: 11.1.0 package-json-from-dist: 1.0.1 - rollup-plugin-import-css@3.5.8(rollup@4.46.2): + rollup-plugin-import-css@3.5.8(rollup@4.53.2): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) - rollup: 4.46.2 + '@rollup/pluginutils': 5.3.0(rollup@4.53.2) + rollup: 4.53.2 - rollup-plugin-peer-deps-external@2.2.4(rollup@4.46.2): + rollup-plugin-peer-deps-external@2.2.4(rollup@4.53.2): dependencies: - rollup: 4.46.2 + rollup: 4.53.2 - rollup-plugin-postcss@4.0.2(postcss@8.5.6): + rollup-plugin-postcss@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)): dependencies: chalk: 4.1.2 concat-with-sourcemaps: 1.1.0 @@ -47380,10 +50914,10 @@ snapshots: p-queue: 6.6.2 pify: 5.0.0 postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6) + postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) postcss-modules: 4.3.1(postcss@8.5.6) promise.series: 0.2.0 - resolve: 1.22.10 + resolve: 1.22.11 rollup-pluginutils: 2.8.2 safe-identifier: 0.4.2 style-inject: 0.3.0 @@ -47425,13 +50959,13 @@ snapshots: tslib: 2.0.1 typescript: 3.9.10 - rollup-plugin-typescript2@0.36.0(rollup@4.46.2)(typescript@5.8.3): + rollup-plugin-typescript2@0.36.0(rollup@4.53.2)(typescript@5.8.3): dependencies: '@rollup/pluginutils': 4.2.1 find-cache-dir: 3.3.2 fs-extra: 10.1.0 - rollup: 4.46.2 - semver: 7.7.2 + rollup: 4.53.2 + semver: 7.7.3 tslib: 2.8.1 typescript: 5.8.3 @@ -47450,45 +50984,47 @@ snapshots: '@types/node': 22.15.35 acorn: 7.4.1 - rollup@4.46.2: + rollup@4.53.2: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.46.2 - '@rollup/rollup-android-arm64': 4.46.2 - '@rollup/rollup-darwin-arm64': 4.46.2 - '@rollup/rollup-darwin-x64': 4.46.2 - '@rollup/rollup-freebsd-arm64': 4.46.2 - '@rollup/rollup-freebsd-x64': 4.46.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.46.2 - '@rollup/rollup-linux-arm-musleabihf': 4.46.2 - '@rollup/rollup-linux-arm64-gnu': 4.46.2 - '@rollup/rollup-linux-arm64-musl': 4.46.2 - '@rollup/rollup-linux-loongarch64-gnu': 4.46.2 - '@rollup/rollup-linux-ppc64-gnu': 4.46.2 - '@rollup/rollup-linux-riscv64-gnu': 4.46.2 - '@rollup/rollup-linux-riscv64-musl': 4.46.2 - '@rollup/rollup-linux-s390x-gnu': 4.46.2 - '@rollup/rollup-linux-x64-gnu': 4.46.2 - '@rollup/rollup-linux-x64-musl': 4.46.2 - '@rollup/rollup-win32-arm64-msvc': 4.46.2 - '@rollup/rollup-win32-ia32-msvc': 4.46.2 - '@rollup/rollup-win32-x64-msvc': 4.46.2 + '@rollup/rollup-android-arm-eabi': 4.53.2 + '@rollup/rollup-android-arm64': 4.53.2 + '@rollup/rollup-darwin-arm64': 4.53.2 + '@rollup/rollup-darwin-x64': 4.53.2 + '@rollup/rollup-freebsd-arm64': 4.53.2 + '@rollup/rollup-freebsd-x64': 4.53.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.2 + '@rollup/rollup-linux-arm-musleabihf': 4.53.2 + '@rollup/rollup-linux-arm64-gnu': 4.53.2 + '@rollup/rollup-linux-arm64-musl': 4.53.2 + '@rollup/rollup-linux-loong64-gnu': 4.53.2 + '@rollup/rollup-linux-ppc64-gnu': 4.53.2 + '@rollup/rollup-linux-riscv64-gnu': 4.53.2 + '@rollup/rollup-linux-riscv64-musl': 4.53.2 + '@rollup/rollup-linux-s390x-gnu': 4.53.2 + '@rollup/rollup-linux-x64-gnu': 4.53.2 + '@rollup/rollup-linux-x64-musl': 4.53.2 + '@rollup/rollup-openharmony-arm64': 4.53.2 + '@rollup/rollup-win32-arm64-msvc': 4.53.2 + '@rollup/rollup-win32-ia32-msvc': 4.53.2 + '@rollup/rollup-win32-x64-gnu': 4.53.2 + '@rollup/rollup-win32-x64-msvc': 4.53.2 fsevents: 2.3.3 router@2.2.0: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 - path-to-regexp: 8.2.0 + path-to-regexp: 8.3.0 transitivePeerDependencies: - supports-color rsvp@4.8.5: {} - run-applescript@7.0.0: {} + run-applescript@7.1.0: {} run-async@2.4.1: {} @@ -47510,6 +51046,10 @@ snapshots: dependencies: tslib: 1.14.1 + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + sade@1.8.1: dependencies: mri: 1.2.0 @@ -47569,31 +51109,31 @@ snapshots: dependencies: truncate-utf8-bytes: 1.0.2 - sass-loader@13.3.3(sass@1.90.0)(webpack@5.101.0): + sass-loader@13.3.3(sass@1.94.1)(webpack@5.103.0): dependencies: neo-async: 2.6.2 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: - sass: 1.90.0 + sass: 1.94.1 - sass-loader@16.0.5(sass@1.90.0)(webpack@5.101.0): + sass-loader@16.0.6(sass@1.94.1)(webpack@5.103.0): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.90.0 - webpack: 5.101.0(webpack-cli@6.0.1) + sass: 1.94.1 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) - sass@1.90.0: + sass@1.94.1: dependencies: chokidar: 4.0.3 - immutable: 5.1.3 + immutable: 5.1.4 source-map-js: 1.2.1 optionalDependencies: '@parcel/watcher': 2.5.1 sax@1.2.4: {} - sax@1.4.1: {} + sax@1.4.3: {} saxes@3.1.11: dependencies: @@ -47636,22 +51176,22 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@4.3.2: + schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 ajv-formats: 2.1.1 ajv-keywords: 5.1.0(ajv@8.17.1) - secretlint@9.3.4: + secretlint@10.2.2: dependencies: - '@secretlint/config-creator': 9.3.4 - '@secretlint/formatter': 9.3.4 - '@secretlint/node': 9.3.4 - '@secretlint/profiler': 9.3.4 - debug: 4.4.1(supports-color@8.1.1) + '@secretlint/config-creator': 10.2.2 + '@secretlint/formatter': 10.2.2 + '@secretlint/node': 10.2.2 + '@secretlint/profiler': 10.2.2 + debug: 4.4.3(supports-color@8.1.1) globby: 14.1.0 - read-pkg: 8.1.0 + read-pkg: 9.0.1 transitivePeerDependencies: - supports-color @@ -47659,11 +51199,11 @@ snapshots: select-hose@2.0.0: {} - selenium-webdriver@4.34.0: + selenium-webdriver@4.38.0: dependencies: - '@bazel/runfiles': 6.3.1 + '@bazel/runfiles': 6.5.0 jszip: 3.10.1 - tmp: 0.2.4 + tmp: 0.2.5 ws: 8.18.3 transitivePeerDependencies: - bufferutil @@ -47671,7 +51211,7 @@ snapshots: selfsigned@2.4.1: dependencies: - '@types/node-forge': 1.3.13 + '@types/node-forge': 1.3.14 node-forge: 1.3.1 semver-diff@2.1.0: @@ -47684,7 +51224,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.2: {} + semver@7.7.3: {} send@0.19.0: dependencies: @@ -47704,7 +51244,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -47718,12 +51258,6 @@ snapshots: transitivePeerDependencies: - supports-color - sentence-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - upper-case-first: 2.0.2 - serialize-error@8.1.0: dependencies: type-fest: 0.20.2 @@ -47750,6 +51284,16 @@ snapshots: parseurl: 1.3.3 safe-buffer: 5.2.1 + serve-handler@6.1.6: + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + mime-types: 2.1.18 + minimatch: 3.1.2 + path-is-inside: 1.0.2 + path-to-regexp: 3.3.0 + range-parser: 1.2.0 + serve-index@1.9.1: dependencies: accepts: 1.3.8 @@ -47817,7 +51361,7 @@ snapshots: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - to-buffer: 1.2.1 + to-buffer: 1.2.2 shallow-clone@3.0.1: dependencies: @@ -47900,21 +51444,17 @@ snapshots: once: 1.4.0 simple-concat: 1.0.1 - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - sisteransi@1.0.5: {} size-limit@11.2.0: dependencies: bytes-iec: 3.1.1 chokidar: 4.0.3 - jiti: 2.5.1 + jiti: 2.6.1 lilconfig: 3.1.3 nanospinner: 1.2.2 picocolors: 1.1.1 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 slash@1.0.0: {} @@ -47938,25 +51478,15 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - slice-ansi@5.0.0: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - slice-ansi@7.1.0: + slice-ansi@7.1.2: dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 slugify@1.6.6: {} smart-buffer@4.2.0: {} - snake-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - sockjs-client@1.1.5: dependencies: debug: 2.6.9 @@ -47975,14 +51505,14 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) - socks: 2.8.6 + debug: 4.4.3(supports-color@8.1.1) + socks: 2.8.7 transitivePeerDependencies: - supports-color - socks@2.8.6: + socks@2.8.7: dependencies: - ip-address: 9.0.5 + ip-address: 10.1.0 smart-buffer: 4.2.0 sort-keys@1.1.2: @@ -48000,17 +51530,17 @@ snapshots: async: 2.6.4 loader-utils: 1.4.2 - source-map-loader@4.0.2(webpack@5.101.0): + source-map-loader@4.0.2(webpack@5.103.0): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) - source-map-loader@5.0.0(webpack@5.101.0): + source-map-loader@5.0.0(webpack@5.103.0): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) source-map-resolve@0.6.0: dependencies: @@ -48050,6 +51580,13 @@ snapshots: space-separated-tokens@2.0.2: {} + spawn-rx@5.1.2: + dependencies: + debug: 4.4.3(supports-color@8.1.1) + rxjs: 7.8.2 + transitivePeerDependencies: + - supports-color + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -48066,7 +51603,7 @@ snapshots: spdy-transport@3.0.0: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -48077,7 +51614,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -48087,8 +51624,6 @@ snapshots: sprintf-js@1.0.3: {} - sprintf-js@1.1.3: {} - sshpk@1.18.0: dependencies: asn1: 0.2.6 @@ -48182,7 +51717,7 @@ snapshots: - supports-color - utf-8-validate - storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.5.3): + storybook@9.1.16(@testing-library/dom@10.4.1)(prettier@3.5.3): dependencies: '@storybook/global': 5.0.0 '@testing-library/jest-dom': 6.6.4 @@ -48191,10 +51726,10 @@ snapshots: '@vitest/mocker': 3.2.4 '@vitest/spy': 3.2.4 better-opn: 3.0.2 - esbuild: 0.25.8 - esbuild-register: 3.6.0(esbuild@0.25.8) + esbuild: 0.25.12 + esbuild-register: 3.6.0(esbuild@0.25.12) recast: 0.23.11 - semver: 7.7.2 + semver: 7.7.3 ws: 8.18.3 optionalDependencies: prettier: 3.5.3 @@ -48216,7 +51751,7 @@ snapshots: streamroller@3.1.5: dependencies: date-format: 4.0.14 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) fs-extra: 8.1.0 transitivePeerDependencies: - supports-color @@ -48227,6 +51762,7 @@ snapshots: fast-fifo: 1.3.2 text-decoder: 1.2.3 transitivePeerDependencies: + - bare-abort-controller - react-native-b4a strict-event-emitter@0.4.6: {} @@ -48278,13 +51814,18 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string-width@7.2.0: dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 - strip-ansi: 7.1.0 + emoji-regex: 10.6.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 + + string-width@8.1.0: + dependencies: + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 string.fromcodepoint@0.2.1: {} @@ -48386,9 +51927,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.2 strip-bom@2.0.0: dependencies: @@ -48404,6 +51945,8 @@ snapshots: strip-final-newline@3.0.0: {} + strip-final-newline@4.0.0: {} + strip-indent@1.0.1: dependencies: get-stdin: 4.0.1 @@ -48412,9 +51955,7 @@ snapshots: dependencies: min-indent: 1.0.1 - strip-indent@4.0.0: - dependencies: - min-indent: 1.0.1 + strip-indent@4.1.1: {} strip-json-comments@2.0.1: {} @@ -48442,43 +51983,53 @@ snapshots: loader-utils: 1.4.2 schema-utils: 0.3.0 - style-loader@1.3.0(webpack@5.101.0): + style-loader@1.3.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): + dependencies: + loader-utils: 2.0.4 + schema-utils: 2.7.1 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + + style-loader@1.3.0(webpack@5.103.0): dependencies: loader-utils: 2.0.4 schema-utils: 2.7.1 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) - style-loader@2.0.0(webpack@5.101.0): + style-loader@2.0.0(webpack@5.103.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) + + style-loader@3.3.4(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)): + dependencies: + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12) - style-loader@3.3.4(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))): + style-loader@3.3.4(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): dependencies: - webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) - style-loader@3.3.4(webpack@5.101.0): + style-loader@3.3.4(webpack@5.103.0): dependencies: - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) - style-loader@4.0.0(webpack@5.101.0): + style-loader@4.0.0(webpack@5.103.0): dependencies: - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) - style-mod@4.1.2: {} + style-mod@4.1.3: {} - style-to-js@1.1.17: + style-to-js@1.1.21: dependencies: - style-to-object: 1.0.9 + style-to-object: 1.0.14 style-to-object@0.3.0: dependencies: inline-style-parser: 0.1.1 - style-to-object@1.0.9: + style-to-object@1.0.14: dependencies: - inline-style-parser: 0.2.4 + inline-style-parser: 0.2.7 style-value-types@5.0.0: dependencies: @@ -48487,35 +52038,35 @@ snapshots: stylehacks@5.1.1(postcss@8.5.6): dependencies: - browserslist: 4.25.1 + browserslist: 4.28.0 postcss: 8.5.6 postcss-selector-parser: 6.1.2 - stylelint-config-recommended@16.0.0(stylelint@16.23.0(typescript@5.8.3)): + stylelint-config-recommended@16.0.0(stylelint@16.25.0(typescript@5.8.3)): dependencies: - stylelint: 16.23.0(typescript@5.8.3) + stylelint: 16.25.0(typescript@5.8.3) - stylelint-config-standard@38.0.0(stylelint@16.23.0(typescript@5.8.3)): + stylelint-config-standard@38.0.0(stylelint@16.25.0(typescript@5.8.3)): dependencies: - stylelint: 16.23.0(typescript@5.8.3) - stylelint-config-recommended: 16.0.0(stylelint@16.23.0(typescript@5.8.3)) + stylelint: 16.25.0(typescript@5.8.3) + stylelint-config-recommended: 16.0.0(stylelint@16.25.0(typescript@5.8.3)) - stylelint@16.23.0(typescript@5.8.3): + stylelint@16.25.0(typescript@5.8.3): dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) - '@dual-bundle/import-meta-resolve': 4.1.0 + '@dual-bundle/import-meta-resolve': 4.2.1 balanced-match: 2.0.0 colord: 2.9.3 cosmiconfig: 9.0.0(typescript@5.8.3) css-functions-list: 3.2.3 css-tree: 3.1.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 10.1.3 + file-entry-cache: 10.1.4 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 @@ -48552,9 +52103,9 @@ snapshots: sucrase@3.35.0: dependencies: - '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 - glob: 10.4.5 + glob: 10.5.0 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 @@ -48602,10 +52153,10 @@ snapshots: svg-tags@1.0.0: {} - svg-url-loader@8.0.0(webpack@5.101.0): + svg-url-loader@8.0.0(webpack@5.103.0): dependencies: - file-loader: 6.2.0(webpack@5.101.0) - webpack: 5.101.0(webpack-cli@6.0.1) + file-loader: 6.2.0(webpack@5.103.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) svg2ttf@4.3.0: dependencies: @@ -48614,7 +52165,7 @@ snapshots: lodash: 4.17.21 microbuffer: 1.0.0 svgpath: 2.6.0 - xmldom: '@xmldom/xmldom@0.8.10' + xmldom: '@xmldom/xmldom@0.8.11' svg2ttf@6.0.3: dependencies: @@ -48625,14 +52176,11 @@ snapshots: microbuffer: 1.0.0 svgpath: 2.6.0 - svgicons2svgfont@10.0.6: + svgicons2svgfont@12.0.0: dependencies: - commander: 7.2.0 - geometry-interfaces: 1.1.4 - glob: 7.2.3 - neatequal: 1.0.0 - readable-stream: 3.6.2 - sax: 1.4.1 + commander: 9.5.0 + glob: 8.1.0 + sax: 1.4.3 svg-pathdata: 6.0.3 svgicons2svgfont@5.0.2: @@ -48640,7 +52188,7 @@ snapshots: commander: 2.20.3 neatequal: 1.0.0 readable-stream: 2.3.8 - sax: 1.4.1 + sax: 1.4.3 string.fromcodepoint: 0.2.1 string.prototype.codepointat: 0.2.1 svg-pathdata: 1.0.4 @@ -48650,7 +52198,7 @@ snapshots: coa: 1.0.4 colors: 1.1.2 csso: 2.3.2 - js-yaml: 3.7.0 + js-yaml: 4.1.1 mkdirp: 0.5.6 sax: 1.2.4 whet.extend: 0.9.9 @@ -48667,12 +52215,12 @@ snapshots: svgpath@2.6.0: {} - sw-precache-webpack-plugin@0.11.4(webpack@5.101.0): + sw-precache-webpack-plugin@0.11.4(webpack@5.103.0): dependencies: del: 2.2.2 sw-precache: 5.2.1 uglify-js: 3.19.3 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) sw-precache@5.2.1: dependencies: @@ -48692,19 +52240,19 @@ snapshots: path-to-regexp: 1.9.0 serviceworker-cache-polyfill: 4.0.0 - swagger-client@3.35.6: + swagger-client@3.36.0: dependencies: - '@babel/runtime-corejs3': 7.28.2 + '@babel/runtime-corejs3': 7.28.4 '@scarf/scarf': 1.4.0 - '@swagger-api/apidom-core': 1.0.0-beta.45 - '@swagger-api/apidom-error': 1.0.0-beta.45 - '@swagger-api/apidom-json-pointer': 1.0.0-beta.45 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.45 - '@swagger-api/apidom-reference': 1.0.0-beta.45 + '@swagger-api/apidom-core': 1.0.0-rc.3 + '@swagger-api/apidom-error': 1.0.0-rc.3 + '@swagger-api/apidom-json-pointer': 1.0.0-rc.3 + '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-rc.3 + '@swagger-api/apidom-reference': 1.0.0-rc.3 '@swaggerexpert/cookie': 2.0.2 deepmerge: 4.3.1 fast-json-patch: 3.1.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 neotraverse: 0.6.18 node-abort-controller: 3.1.1 node-fetch-commonjs: 3.3.2 @@ -48717,7 +52265,7 @@ snapshots: swagger-ui-react@5.21.0(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@babel/runtime-corejs3': 7.28.2 + '@babel/runtime-corejs3': 7.28.4 '@scarf/scarf': 1.4.0 base64-js: 1.5.1 classnames: 2.5.1 @@ -48727,7 +52275,7 @@ snapshots: ieee754: 1.2.1 immutable: 3.8.2 js-file-download: 0.4.12 - js-yaml: 4.1.0 + js-yaml: 4.1.1 lodash: 4.17.21 prop-types: 15.8.1 randexp: 0.5.3 @@ -48740,14 +52288,14 @@ snapshots: react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-inspector: 6.0.2(react@18.2.0) react-redux: 9.2.0(@types/react@18.2.0)(react@18.2.0)(redux@5.0.1) - react-syntax-highlighter: 15.6.1(react@18.2.0) + react-syntax-highlighter: 15.6.6(react@18.2.0) redux: 5.0.1 redux-immutable: 4.0.0(immutable@3.8.2) remarkable: 2.0.1 reselect: 5.1.1 serialize-error: 8.1.0 sha.js: 2.4.12 - swagger-client: 3.35.6 + swagger-client: 3.36.0 url-parse: 1.5.10 xml: 1.0.1 xml-but-prettier: 1.0.1 @@ -48756,19 +52304,20 @@ snapshots: - '@types/react' - debug - swagger-ui-react@5.27.1(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + swagger-ui-react@5.30.2(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@babel/runtime-corejs3': 7.28.2 + '@babel/runtime-corejs3': 7.28.4 '@scarf/scarf': 1.4.0 base64-js: 1.5.1 + buffer: 6.0.3 classnames: 2.5.1 css.escape: 1.5.1 deep-extend: 0.6.0 - dompurify: 3.2.4 + dompurify: 3.2.6 ieee754: 1.2.1 immutable: 3.8.2 js-file-download: 0.4.12 - js-yaml: 4.1.0 + js-yaml: 4.1.1 lodash: 4.17.21 prop-types: 15.8.1 randexp: 0.5.3 @@ -48781,14 +52330,14 @@ snapshots: react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-inspector: 6.0.2(react@18.2.0) react-redux: 9.2.0(@types/react@18.2.0)(react@18.2.0)(redux@5.0.1) - react-syntax-highlighter: 15.6.1(react@18.2.0) + react-syntax-highlighter: 16.1.0(react@18.2.0) redux: 5.0.1 redux-immutable: 4.0.0(immutable@3.8.2) remarkable: 2.0.1 reselect: 5.1.1 serialize-error: 8.1.0 sha.js: 2.4.12 - swagger-client: 3.35.6 + swagger-client: 3.36.0 url-parse: 1.5.10 xml: 1.0.1 xml-but-prettier: 1.0.1 @@ -48797,17 +52346,17 @@ snapshots: - '@types/react' - debug - swc-loader@0.2.6(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))): + swc-loader@0.2.6(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): dependencies: - '@swc/core': 1.13.3(@swc/helpers@0.5.17) + '@swc/core': 1.15.2(@swc/helpers@0.5.17) '@swc/counter': 0.1.3 - webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) - swc-loader@0.2.6(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0): + swc-loader@0.2.6(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0): dependencies: - '@swc/core': 1.13.3(@swc/helpers@0.5.17) + '@swc/core': 1.15.2(@swc/helpers@0.5.17) '@swc/counter': 0.1.3 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) symbol-tree@3.2.4: {} @@ -48823,11 +52372,15 @@ snapshots: synchronous-promise@2.0.17: {} + synckit@0.11.11: + dependencies: + '@pkgr/core': 0.2.9 + system-architecture@0.1.0: {} tabbable@5.3.3: {} - tabbable@6.2.0: {} + tabbable@6.3.0: {} table@5.4.6: dependencies: @@ -48844,7 +52397,9 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - tailwindcss@3.4.17: + tailwind-merge@2.6.0: {} + + tailwindcss@3.4.18(yaml@2.8.1): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -48862,31 +52417,33 @@ snapshots: picocolors: 1.1.1 postcss: 8.5.6 postcss-import: 15.1.0(postcss@8.5.6) - postcss-js: 4.0.1(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6) + postcss-js: 4.1.0(postcss@8.5.6) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.1) postcss-nested: 6.2.0(postcss@8.5.6) postcss-selector-parser: 6.1.2 - resolve: 1.22.10 + resolve: 1.22.11 sucrase: 3.35.0 transitivePeerDependencies: - - ts-node + - tsx + - yaml - tailwindcss@4.1.11: {} + tailwindcss@4.1.17: {} tapable@0.2.9: {} tapable@1.1.3: {} - tapable@2.2.2: {} + tapable@2.3.0: {} tar-fs@3.1.1: dependencies: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.4.4 + bare-fs: 4.5.1 bare-path: 3.0.0 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - react-native-b4a @@ -48896,6 +52453,7 @@ snapshots: fast-fifo: 1.3.2 streamx: 2.23.0 transitivePeerDependencies: + - bare-abort-controller - react-native-b4a tar@2.2.2: @@ -48917,6 +52475,7 @@ snapshots: dependencies: tar-fs: 3.1.1 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - react-native-b4a @@ -48965,7 +52524,25 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@4.2.3(webpack@5.101.0): + terminal-link@4.0.0: + dependencies: + ansi-escapes: 7.2.0 + supports-hyperlinks: 3.2.0 + + terser-webpack-plugin@4.2.3(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): + dependencies: + cacache: 15.3.0 + find-cache-dir: 3.3.2 + jest-worker: 26.6.2 + p-limit: 3.1.0 + schema-utils: 3.3.0 + serialize-javascript: 5.0.1 + source-map: 0.6.1 + terser: 5.44.1 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + webpack-sources: 1.4.3 + + terser-webpack-plugin@4.2.3(webpack@5.103.0): dependencies: cacache: 15.3.0 find-cache-dir: 3.3.2 @@ -48974,31 +52551,43 @@ snapshots: schema-utils: 3.3.0 serialize-javascript: 5.0.1 source-map: 0.6.1 - terser: 5.43.1 - webpack: 5.101.0(webpack-cli@6.0.1) + terser: 5.44.1 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) webpack-sources: 1.4.3 - terser-webpack-plugin@5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))): + terser-webpack-plugin@5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.3 + serialize-javascript: 6.0.2 + terser: 5.44.1 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12) + optionalDependencies: + '@swc/core': 1.15.2(@swc/helpers@0.5.17) + esbuild: 0.25.12 + + terser-webpack-plugin@5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.43.1 - webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)) + terser: 5.44.1 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) optionalDependencies: - '@swc/core': 1.13.3(@swc/helpers@0.5.17) + '@swc/core': 1.15.2(@swc/helpers@0.5.17) - terser-webpack-plugin@5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0): + terser-webpack-plugin@5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0): dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.43.1 - webpack: 5.101.0(webpack-cli@5.1.4) + terser: 5.44.1 + webpack: 5.103.0(webpack-cli@5.1.4) optionalDependencies: - '@swc/core': 1.13.3(@swc/helpers@0.5.17) + '@swc/core': 1.15.2(@swc/helpers@0.5.17) terser@4.8.1: dependencies: @@ -49006,9 +52595,9 @@ snapshots: source-map: 0.6.1 source-map-support: 0.5.21 - terser@5.43.1: + terser@5.44.1: dependencies: - '@jridgewell/source-map': 0.3.10 + '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -49030,7 +52619,7 @@ snapshots: test-exclude@7.0.1: dependencies: '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 + glob: 10.5.0 minimatch: 9.0.5 text-decoder@1.2.3: @@ -49045,7 +52634,7 @@ snapshots: textextensions@6.11.0: dependencies: - editions: 6.21.0 + editions: 6.22.0 thenify-all@1.6.0: dependencies: @@ -49055,7 +52644,7 @@ snapshots: dependencies: any-promise: 1.3.0 - thingies@1.21.0(tslib@2.8.1): + thingies@2.5.0(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -49099,9 +52688,9 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.14: + tinyglobby@0.2.15: dependencies: - fdir: 6.4.6(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 tinyrainbow@1.2.0: {} @@ -49110,17 +52699,17 @@ snapshots: tinyspy@3.0.2: {} - tinyspy@4.0.3: {} + tinyspy@4.0.4: {} tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - tmp@0.2.4: {} + tmp@0.2.5: {} tmpl@1.0.5: {} - to-buffer@1.2.1: + to-buffer@1.2.2: dependencies: isarray: 2.0.5 safe-buffer: 5.2.1 @@ -49188,7 +52777,7 @@ snapshots: traverse@0.3.9: {} - tree-dump@1.0.3(tslib@2.8.1): + tree-dump@1.1.0(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -49284,17 +52873,17 @@ snapshots: typescript: 3.9.10 yargs-parser: 18.1.3 - ts-jest@29.3.4(@babel/core@7.27.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.7))(jest@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0))(typescript@5.8.3): + ts-jest@29.3.4(@babel/core@7.27.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.7))(jest@29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0) + jest: 29.7.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.7.2 + semver: 7.7.3 type-fest: 4.41.0 typescript: 5.8.3 yargs-parser: 21.1.1 @@ -49304,6 +52893,27 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.27.7) + ts-jest@29.3.4(@babel/core@7.27.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@30.2.0(@babel/core@7.27.7))(esbuild@0.25.12)(jest@30.2.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)))(typescript@5.8.3): + dependencies: + bs-logger: 0.2.6 + ejs: 3.1.10 + fast-json-stable-stringify: 2.1.0 + jest: 30.2.0(@types/node@22.15.35)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.25.12))(ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3)) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.3 + type-fest: 4.41.0 + typescript: 5.8.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.27.7 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 30.2.0(@babel/core@7.27.7) + esbuild: 0.25.12 + ts-loader@2.3.7: dependencies: chalk: 2.4.2 @@ -49311,15 +52921,15 @@ snapshots: loader-utils: 1.4.2 semver: 5.7.2 - ts-loader@9.5.2(typescript@5.8.3)(webpack@5.101.0): + ts-loader@9.5.4(typescript@5.8.3)(webpack@5.103.0): dependencies: chalk: 4.1.2 enhanced-resolve: 5.18.3 micromatch: 4.0.8 - semver: 7.7.2 + semver: 7.7.3 source-map: 0.7.6 typescript: 5.8.3 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) ts-mixer@6.0.4: {} @@ -49333,6 +52943,47 @@ snapshots: '@ts-morph/common': 0.27.0 code-block-writer: 13.0.3 + ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.18)(typescript@5.8.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.12 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.15.18 + acorn: 8.15.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.15.2(@swc/helpers@0.5.17) + + ts-node@10.9.2(@swc/core@1.15.2(@swc/helpers@0.5.17))(@types/node@22.15.35)(typescript@5.8.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.12 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.15.35 + acorn: 8.15.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.15.2(@swc/helpers@0.5.17) + optional: true + ts-pnp@1.2.0(typescript@4.9.5): optionalDependencies: typescript: 4.9.5 @@ -49365,10 +53016,10 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/helper-module-imports': 7.27.1 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.5 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.7) '@babel/preset-env': 7.27.2(@babel/core@7.27.7) - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.5 '@rollup/plugin-babel': 5.3.1(@babel/core@7.27.7)(@types/babel__core@7.20.5)(rollup@1.32.1) '@rollup/plugin-commonjs': 11.1.0(rollup@1.32.1) '@rollup/plugin-json': 4.1.0(rollup@1.32.1) @@ -49413,7 +53064,7 @@ snapshots: rollup-plugin-terser: 5.3.1(rollup@1.32.1) rollup-plugin-typescript2: 0.27.3(rollup@1.32.1)(typescript@3.9.10) sade: 1.8.1 - semver: 7.7.2 + semver: 7.7.3 shelljs: 0.8.5 tiny-glob: 0.2.9 ts-jest: 25.5.1(jest@25.5.4)(typescript@3.9.10) @@ -49477,7 +53128,7 @@ snapshots: commander: 2.20.3 diff: 4.0.2 glob: 7.2.3 - js-yaml: 3.14.1 + js-yaml: 4.1.1 minimatch: 3.1.2 mkdirp: 0.5.6 resolve: 1.6.0 @@ -49494,10 +53145,10 @@ snapshots: commander: 2.20.3 diff: 4.0.2 glob: 7.2.3 - js-yaml: 3.14.1 + js-yaml: 4.1.1 minimatch: 3.1.2 mkdirp: 0.5.6 - resolve: 1.22.10 + resolve: 1.22.11 semver: 5.7.2 tslib: 1.14.1 tsutils: 2.29.0(typescript@4.9.5) @@ -49511,10 +53162,10 @@ snapshots: commander: 2.20.3 diff: 4.0.2 glob: 7.2.3 - js-yaml: 3.14.1 + js-yaml: 4.1.1 minimatch: 3.1.2 mkdirp: 0.5.6 - resolve: 1.22.10 + resolve: 1.22.11 semver: 5.7.2 tslib: 1.14.1 tsutils: 2.29.0(typescript@5.8.3) @@ -49550,18 +53201,22 @@ snapshots: argparse: 1.0.10 microbuffer: 1.0.0 + ttf2eot@3.1.0: + dependencies: + argparse: 2.0.1 + ttf2woff2@2.0.3: dependencies: bindings: 1.5.0 bufferstreams: 1.1.3 - nan: 2.23.0 + nan: 2.23.1 node-gyp: 3.8.0 - ttf2woff2@4.0.5: + ttf2woff2@5.0.0: dependencies: bindings: 1.5.0 bufferstreams: 3.0.0 - nan: 2.23.0 + nan: 2.23.1 node-gyp: 9.4.1 transitivePeerDependencies: - supports-color @@ -49611,8 +53266,6 @@ snapshots: type-fest@2.19.0: {} - type-fest@3.13.1: {} - type-fest@4.41.0: {} type-is@1.6.18: @@ -49683,7 +53336,7 @@ snapshots: typescript@5.8.3: {} - ua-parser-js@1.0.40: {} + ua-parser-js@1.0.41: {} uc.micro@1.0.6: {} @@ -49703,7 +53356,7 @@ snapshots: commander: 2.19.0 source-map: 0.6.1 - uglifyjs-webpack-plugin@1.2.5(webpack@5.101.0): + uglifyjs-webpack-plugin@1.2.5(webpack@5.103.0): dependencies: cacache: 10.0.4 find-cache-dir: 1.0.0 @@ -49711,7 +53364,7 @@ snapshots: serialize-javascript: 1.9.1 source-map: 0.6.1 uglify-es: 3.3.9 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) webpack-sources: 1.4.3 worker-farm: 1.7.0 @@ -49728,7 +53381,7 @@ snapshots: undici-types@6.21.0: {} - undici@7.13.0: {} + undici@7.16.0: {} unfetch@4.2.0: {} @@ -49742,11 +53395,11 @@ snapshots: unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 + unicode-property-aliases-ecmascript: 2.2.0 - unicode-match-property-value-ecmascript@2.2.0: {} + unicode-match-property-value-ecmascript@2.2.1: {} - unicode-property-aliases-ecmascript@2.1.0: {} + unicode-property-aliases-ecmascript@2.2.0: {} unicorn-magic@0.1.0: {} @@ -49833,7 +53486,7 @@ snapshots: dependencies: '@types/unist': 2.0.11 - unist-util-is@6.0.0: + unist-util-is@6.0.1: dependencies: '@types/unist': 3.0.3 @@ -49877,10 +53530,10 @@ snapshots: '@types/unist': 2.0.11 unist-util-is: 5.2.1 - unist-util-visit-parents@6.0.1: + unist-util-visit-parents@6.0.2: dependencies: '@types/unist': 3.0.3 - unist-util-is: 6.0.0 + unist-util-is: 6.0.1 unist-util-visit@2.0.3: dependencies: @@ -49897,8 +53550,8 @@ snapshots: unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 unit-compare@1.0.1: dependencies: @@ -49919,6 +53572,30 @@ snapshots: unraw@3.0.0: {} + unrs-resolver@1.11.1: + dependencies: + napi-postinstall: 0.3.4 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.11.1 + '@unrs/resolver-binding-android-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-x64': 1.11.1 + '@unrs/resolver-binding-freebsd-x64': 1.11.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-musl': 1.11.1 + '@unrs/resolver-binding-wasm32-wasi': 1.11.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + untildify@2.1.0: dependencies: os-homedir: 1.0.2 @@ -49945,15 +53622,15 @@ snapshots: dependencies: bluebird: 3.7.2 duplexer2: 0.1.4 - fs-extra: 11.3.1 + fs-extra: 11.3.2 graceful-fs: 4.2.11 node-int64: 0.4.0 upath@2.0.1: {} - update-browserslist-db@1.1.3(browserslist@4.25.1): + update-browserslist-db@1.1.4(browserslist@4.28.0): dependencies: - browserslist: 4.25.1 + browserslist: 4.28.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -49970,16 +53647,8 @@ snapshots: semver-diff: 2.1.0 xdg-basedir: 3.0.0 - upper-case-first@2.0.2: - dependencies: - tslib: 2.8.1 - upper-case@1.1.3: {} - upper-case@2.0.2: - dependencies: - tslib: 2.8.1 - uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -49990,21 +53659,30 @@ snapshots: url-join@4.0.1: {} - url-loader@0.6.2(file-loader@1.1.5(webpack@5.101.0)): + url-loader@0.6.2(file-loader@1.1.5(webpack@5.103.0)): dependencies: - file-loader: 1.1.5(webpack@5.101.0) + file-loader: 1.1.5(webpack@5.103.0) loader-utils: 1.4.2 mime: 1.6.0 schema-utils: 0.3.0 - url-loader@4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))))(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): + dependencies: + loader-utils: 2.0.4 + mime-types: 2.1.35 + schema-utils: 3.3.0 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + optionalDependencies: + file-loader: 6.2.0(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + + url-loader@4.1.1(file-loader@6.2.0(webpack@5.103.0))(webpack@5.103.0): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) optionalDependencies: - file-loader: 6.2.0(webpack@5.101.0) + file-loader: 6.2.0(webpack@5.103.0) url-parse-lax@1.0.0: dependencies: @@ -50027,6 +53705,13 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + use-callback-ref@1.3.3(@types/react@18.2.0)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.2.0 + use-callback-ref@1.3.3(@types/react@18.2.0)(react@19.1.0): dependencies: react: 19.1.0 @@ -50073,6 +53758,14 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 + use-sidecar@1.1.3(@types/react@18.2.0)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.2.0 + use-sidecar@1.1.3(@types/react@18.2.0)(react@19.1.0): dependencies: detect-node-es: 1.1.0 @@ -50081,11 +53774,11 @@ snapshots: optionalDependencies: '@types/react': 18.2.0 - use-sync-external-store@1.5.0(react@18.2.0): + use-sync-external-store@1.6.0(react@18.2.0): dependencies: react: 18.2.0 - use-sync-external-store@1.5.0(react@19.1.0): + use-sync-external-store@1.6.0(react@19.1.0): dependencies: react: 19.1.0 @@ -50106,7 +53799,7 @@ snapshots: dependencies: inherits: 2.0.4 is-arguments: 1.2.0 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 is-typed-array: 1.1.15 which-typed-array: 1.1.19 @@ -50131,6 +53824,8 @@ snapshots: kleur: 4.1.5 sade: 1.8.1 + v8-compile-cache-lib@3.0.1: {} + v8-compile-cache@2.4.0: {} v8-to-istanbul@4.1.4: @@ -50141,7 +53836,7 @@ snapshots: v8-to-istanbul@9.3.0: dependencies: - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 @@ -50164,7 +53859,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - version-range@4.14.0: {} + version-range@4.15.0: {} vfile-location@3.2.0: {} @@ -50188,32 +53883,6 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vsce@2.15.0: - dependencies: - azure-devops-node-api: 11.2.0 - chalk: 2.4.2 - cheerio: 1.1.2 - commander: 6.2.1 - glob: 7.2.3 - hosted-git-info: 4.1.0 - keytar: 7.9.0 - leven: 3.1.0 - markdown-it: 12.3.2 - mime: 1.6.0 - minimatch: 3.1.2 - parse-semver: 1.1.1 - read: 1.0.7 - semver: 5.7.2 - tmp: 0.2.4 - typed-rest-client: 1.8.11 - url-join: 4.0.1 - xml2js: 0.4.23 - yauzl: 2.10.0 - yazl: 2.5.1 - transitivePeerDependencies: - - bare-buffer - - react-native-b4a - vscode-debugadapter-testsupport@1.51.0: dependencies: vscode-debugprotocol: 1.51.0 @@ -50229,59 +53898,61 @@ snapshots: dependencies: applicationinsights: 1.7.4 - vscode-extension-tester-locators@3.12.2(monaco-page-objects@3.14.1(selenium-webdriver@4.34.0)(typescript@5.8.3))(selenium-webdriver@4.34.0): + vscode-extension-tester-locators@3.12.2(monaco-page-objects@3.14.1(selenium-webdriver@4.38.0)(typescript@5.8.3))(selenium-webdriver@4.38.0): dependencies: - monaco-page-objects: 3.14.1(selenium-webdriver@4.34.0)(typescript@5.8.3) - selenium-webdriver: 4.34.0 + monaco-page-objects: 3.14.1(selenium-webdriver@4.38.0)(typescript@5.8.3) + selenium-webdriver: 4.38.0 vscode-extension-tester@5.10.0(mocha@10.8.2)(typescript@5.8.3): dependencies: - '@types/selenium-webdriver': 4.1.28 + '@types/selenium-webdriver': 4.35.4 '@vscode/vsce': 2.32.0 commander: 11.1.0 compare-versions: 6.1.1 - fs-extra: 11.3.1 - glob: 10.4.5 + fs-extra: 11.3.2 + glob: 10.5.0 got: 13.0.0 hpagent: 1.2.0 - js-yaml: 4.1.0 + js-yaml: 4.1.1 mocha: 10.8.2 - monaco-page-objects: 3.14.1(selenium-webdriver@4.34.0)(typescript@5.8.3) + monaco-page-objects: 3.14.1(selenium-webdriver@4.38.0)(typescript@5.8.3) sanitize-filename: 1.6.3 - selenium-webdriver: 4.34.0 + selenium-webdriver: 4.38.0 targz: 1.0.1 typescript: 5.8.3 unzipper: 0.10.14 - vscode-extension-tester-locators: 3.12.2(monaco-page-objects@3.14.1(selenium-webdriver@4.34.0)(typescript@5.8.3))(selenium-webdriver@4.34.0) + vscode-extension-tester-locators: 3.12.2(monaco-page-objects@3.14.1(selenium-webdriver@4.38.0)(typescript@5.8.3))(selenium-webdriver@4.38.0) transitivePeerDependencies: + - bare-abort-controller - bare-buffer - bufferutil - react-native-b4a - supports-color - utf-8-validate - vscode-extension-tester@8.14.1(mocha@11.7.1)(typescript@5.8.3): + vscode-extension-tester@8.14.1(mocha@11.7.5)(typescript@5.8.3): dependencies: - '@redhat-developer/locators': 1.15.0(@redhat-developer/page-objects@1.15.0(selenium-webdriver@4.34.0)(typescript@5.8.3))(selenium-webdriver@4.34.0) - '@redhat-developer/page-objects': 1.15.0(selenium-webdriver@4.34.0)(typescript@5.8.3) - '@types/selenium-webdriver': 4.1.28 - '@vscode/vsce': 3.4.2 + '@redhat-developer/locators': 1.17.0(@redhat-developer/page-objects@1.17.0(selenium-webdriver@4.38.0)(typescript@5.8.3))(selenium-webdriver@4.38.0) + '@redhat-developer/page-objects': 1.17.0(selenium-webdriver@4.38.0)(typescript@5.8.3) + '@types/selenium-webdriver': 4.35.4 + '@vscode/vsce': 3.7.0 c8: 10.1.3 commander: 13.1.0 compare-versions: 6.1.1 find-up: 7.0.0 - fs-extra: 11.3.1 - glob: 11.0.3 + fs-extra: 11.3.2 + glob: 11.1.0 got: 14.4.7 hpagent: 1.2.0 - js-yaml: 4.1.0 - mocha: 11.7.1 + js-yaml: 4.1.1 + mocha: 11.7.5 sanitize-filename: 1.6.3 - selenium-webdriver: 4.34.0 + selenium-webdriver: 4.38.0 targz: 1.0.1 typescript: 5.8.3 unzipper: 0.12.3 transitivePeerDependencies: + - bare-abort-controller - bare-buffer - bufferutil - monocart-coverage-reports @@ -50300,19 +53971,19 @@ snapshots: vscode-languageclient@7.0.0: dependencies: minimatch: 3.1.2 - semver: 7.7.2 + semver: 7.7.3 vscode-languageserver-protocol: 3.16.0 vscode-languageclient@8.1.0: dependencies: minimatch: 5.1.6 - semver: 7.7.2 + semver: 7.7.3 vscode-languageserver-protocol: 3.17.3 vscode-languageclient@9.0.1: dependencies: minimatch: 5.1.6 - semver: 7.7.2 + semver: 7.7.3 vscode-languageserver-protocol: 3.17.5 vscode-languageserver-protocol@3.16.0: @@ -50369,7 +54040,7 @@ snapshots: vscode-uri@3.1.0: {} - vscode-ws-jsonrpc@3.4.0: + vscode-ws-jsonrpc@3.5.0: dependencies: vscode-jsonrpc: 8.2.1 @@ -50440,10 +54111,10 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-cli@4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0): + webpack-cli@4.10.0(webpack-dev-server@5.2.2)(webpack@5.103.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.101.0) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.103.0) '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0)(webpack-dev-server@5.2.2) colorette: 2.0.20 @@ -50453,15 +54124,15 @@ snapshots: import-local: 3.2.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.101.0(webpack-cli@4.10.0) + webpack: 5.103.0(webpack-cli@4.10.0) webpack-merge: 5.10.0 optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.101.0) + webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.103.0) - webpack-cli@4.10.0(webpack@5.101.0): + webpack-cli@4.10.0(webpack@5.103.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.101.0) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.103.0) '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0) colorette: 2.0.20 @@ -50471,91 +54142,100 @@ snapshots: import-local: 3.2.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.101.0(webpack-cli@4.10.0) + webpack: 5.103.0(webpack-cli@4.10.0) webpack-merge: 5.10.0 - webpack-cli@5.1.4(webpack-dev-server@5.2.2)(webpack@5.101.0): + webpack-cli@5.1.4(webpack-dev-server@5.2.2)(webpack@5.103.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.101.0) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.101.0) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack@5.101.0) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.103.0) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.103.0) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack@5.103.0) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.6 - envinfo: 7.14.0 + envinfo: 7.20.0 fastest-levenshtein: 1.0.16 import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.101.0) + webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.103.0) - webpack-cli@5.1.4(webpack@5.101.0): + webpack-cli@5.1.4(webpack@5.103.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.101.0) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.101.0) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.101.0) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.103.0) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.103.0) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.103.0) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.6 - envinfo: 7.14.0 + envinfo: 7.20.0 fastest-levenshtein: 1.0.16 import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) webpack-merge: 5.10.0 - webpack-cli@6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0): + webpack-cli@6.0.1(webpack-dev-server@5.2.2)(webpack@5.103.0): dependencies: '@discoveryjs/json-ext': 0.6.3 - '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.101.0) - '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.101.0) - '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.101.0) + '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.103.0) + '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.103.0) + '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.103.0) colorette: 2.0.20 commander: 12.1.0 cross-spawn: 7.0.6 - envinfo: 7.14.0 + envinfo: 7.20.0 fastest-levenshtein: 1.0.16 import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) webpack-merge: 6.0.1 optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) + webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.103.0) - webpack-cli@6.0.1(webpack@5.101.0): + webpack-cli@6.0.1(webpack@5.103.0): dependencies: '@discoveryjs/json-ext': 0.6.3 - '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.101.0) - '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.101.0) - '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack@5.101.0) + '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.103.0) + '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.103.0) + '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack@5.103.0) colorette: 2.0.20 commander: 12.1.0 cross-spawn: 7.0.6 - envinfo: 7.14.0 + envinfo: 7.20.0 fastest-levenshtein: 1.0.16 import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(webpack-cli@6.0.1) webpack-merge: 6.0.1 - webpack-dev-middleware@3.7.3(webpack@5.101.0): + webpack-dev-middleware@3.7.3(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): + dependencies: + memory-fs: 0.4.1 + mime: 2.6.0 + mkdirp: 0.5.6 + range-parser: 1.2.1 + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + webpack-log: 2.0.0 + + webpack-dev-middleware@3.7.3(webpack@5.103.0): dependencies: memory-fs: 0.4.1 mime: 2.6.0 mkdirp: 0.5.6 range-parser: 1.2.1 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) webpack-log: 2.0.0 - webpack-dev-middleware@4.3.0(webpack@5.101.0): + webpack-dev-middleware@4.3.0(webpack@5.103.0): dependencies: colorette: 1.4.0 mem: 8.1.1 @@ -50563,47 +54243,69 @@ snapshots: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 3.3.0 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) - webpack-dev-middleware@6.1.3(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))): + webpack-dev-middleware@6.1.3(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 optionalDependencies: - webpack: 5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12) - webpack-dev-middleware@6.1.3(webpack@5.101.0): + webpack-dev-middleware@6.1.3(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 optionalDependencies: - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) - webpack-dev-middleware@7.4.2(webpack@5.101.0): + webpack-dev-middleware@6.1.3(webpack@5.103.0): dependencies: colorette: 2.0.20 - memfs: 4.36.0 + memfs: 3.5.3 mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.3.3 + optionalDependencies: + webpack: 5.103.0(webpack-cli@5.1.4) + + webpack-dev-middleware@7.4.5(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): + dependencies: + colorette: 2.0.20 + memfs: 4.51.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.3.3 + optionalDependencies: + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + optional: true + + webpack-dev-middleware@7.4.5(webpack@5.103.0): + dependencies: + colorette: 2.0.20 + memfs: 4.51.0 + mime-types: 3.0.1 on-finished: 2.4.1 range-parser: 1.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 optionalDependencies: - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) - webpack-dev-server@5.2.2(webpack-cli@4.10.0)(webpack@5.101.0): + webpack-dev-server@5.2.2(webpack-cli@4.10.0)(webpack@5.103.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.23 - '@types/express-serve-static-core': 4.19.6 + '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.7 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.10 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 @@ -50614,21 +54316,21 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.21.2 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.23) + http-proxy-middleware: 2.0.9(@types/express@4.17.25) ipaddr.js: 2.2.0 - launch-editor: 2.11.0 + launch-editor: 2.12.0 open: 10.2.0 p-retry: 6.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.101.0) + webpack-dev-middleware: 7.4.5(webpack@5.103.0) ws: 8.18.3 optionalDependencies: - webpack: 5.101.0(webpack-cli@4.10.0) - webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0) + webpack: 5.103.0(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.103.0) transitivePeerDependencies: - bufferutil - debug @@ -50636,14 +54338,53 @@ snapshots: - utf-8-validate optional: true - webpack-dev-server@5.2.2(webpack-cli@5.1.4)(webpack@5.101.0): + webpack-dev-server@5.2.2(webpack-cli@5.1.4)(webpack@5.103.0): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.7 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.10 + '@types/sockjs': 0.3.36 + '@types/ws': 8.18.1 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.1 + connect-history-api-fallback: 2.0.0 + express: 4.21.2 + graceful-fs: 4.2.11 + http-proxy-middleware: 2.0.9(@types/express@4.17.25) + ipaddr.js: 2.2.0 + launch-editor: 2.12.0 + open: 10.2.0 + p-retry: 6.2.1 + schema-utils: 4.3.3 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.4.5(webpack@5.103.0) + ws: 8.18.3 + optionalDependencies: + webpack: 5.103.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.103.0) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-dev-server@5.2.2(webpack-cli@6.0.1)(webpack@5.103.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.23 - '@types/express-serve-static-core': 4.19.6 + '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.7 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.10 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 @@ -50654,35 +54395,35 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.21.2 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.23) + http-proxy-middleware: 2.0.9(@types/express@4.17.25) ipaddr.js: 2.2.0 - launch-editor: 2.11.0 + launch-editor: 2.12.0 open: 10.2.0 p-retry: 6.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.101.0) + webpack-dev-middleware: 7.4.5(webpack@5.103.0) ws: 8.18.3 optionalDependencies: - webpack: 5.101.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.101.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.103.0) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate - webpack-dev-server@5.2.2(webpack-cli@6.0.1)(webpack@5.101.0): + webpack-dev-server@5.2.2(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.23 - '@types/express-serve-static-core': 4.19.6 + '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.7 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.10 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 @@ -50693,35 +54434,35 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.21.2 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.23) + http-proxy-middleware: 2.0.9(@types/express@4.17.25) ipaddr.js: 2.2.0 - launch-editor: 2.11.0 + launch-editor: 2.12.0 open: 10.2.0 p-retry: 6.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.101.0) + webpack-dev-middleware: 7.4.5(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) ws: 8.18.3 optionalDependencies: - webpack: 5.101.0(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate + optional: true - webpack-dev-server@5.2.2(webpack@5.101.0): + webpack-dev-server@5.2.2(webpack@5.103.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.23 - '@types/express-serve-static-core': 4.19.6 + '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.7 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.10 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 @@ -50732,29 +54473,33 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.21.2 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.23) + http-proxy-middleware: 2.0.9(@types/express@4.17.25) ipaddr.js: 2.2.0 - launch-editor: 2.11.0 + launch-editor: 2.12.0 open: 10.2.0 p-retry: 6.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.101.0) + webpack-dev-middleware: 7.4.5(webpack@5.103.0) ws: 8.18.3 optionalDependencies: - webpack: 5.101.0(webpack-cli@5.1.4) + webpack: 5.103.0(webpack-cli@5.1.4) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate - webpack-filter-warnings-plugin@1.2.1(webpack@5.101.0): + webpack-filter-warnings-plugin@1.2.1(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))): + dependencies: + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)) + + webpack-filter-warnings-plugin@1.2.1(webpack@5.103.0): dependencies: - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) webpack-hot-middleware@2.26.1: dependencies: @@ -50767,18 +54512,11 @@ snapshots: ansi-colors: 3.2.4 uuid: 3.4.0 - webpack-manifest-plugin@1.3.2(webpack@5.101.0): + webpack-manifest-plugin@1.3.2(webpack@5.103.0): dependencies: fs-extra: 0.30.0 lodash: 4.17.21 - webpack: 5.101.0(webpack-cli@6.0.1) - - webpack-merge-and-include-globally@2.3.4(webpack@5.101.0): - dependencies: - es6-promisify: 6.1.1 - glob: 7.2.3 - rev-hash: 3.0.0 - webpack: 5.101.0(webpack-cli@6.0.1) + webpack: 5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1) webpack-merge@5.10.0: dependencies: @@ -50813,7 +54551,39 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)): + webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17)): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + acorn-import-phases: 1.0.4(acorn@8.15.0) + browserslist: 4.28.0 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.3 + es-module-lexer: 1.7.0 + 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.1 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))) + watchpack: 2.4.4 + webpack-sources: 3.3.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -50823,7 +54593,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.25.1 + browserslist: 4.28.0 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -50832,12 +54602,12 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))) + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)(webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(esbuild@0.25.12)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -50845,7 +54615,7 @@ snapshots: - esbuild - uglify-js - webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack-cli@5.1.4): + webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -50855,7 +54625,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.25.1 + browserslist: 4.28.0 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -50864,22 +54634,22 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) watchpack: 2.4.4 webpack-sources: 3.3.3 optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.101.0) + webpack-cli: 5.1.4(webpack@5.103.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.101.0(webpack-cli@4.10.0): + webpack@5.103.0(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack-cli@6.0.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -50889,7 +54659,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.25.1 + browserslist: 4.28.0 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -50898,22 +54668,22 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) watchpack: 2.4.4 webpack-sources: 3.3.3 optionalDependencies: - webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0) + webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.103.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.101.0(webpack-cli@5.1.4): + webpack@5.103.0(webpack-cli@4.10.0): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -50923,7 +54693,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.25.1 + browserslist: 4.28.0 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -50932,22 +54702,22 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) watchpack: 2.4.4 webpack-sources: 3.3.3 optionalDependencies: - webpack-cli: 5.1.4(webpack@5.101.0) + webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.103.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.101.0(webpack-cli@6.0.1): + webpack@5.103.0(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -50957,7 +54727,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.25.1 + browserslist: 4.28.0 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -50966,16 +54736,50 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) watchpack: 2.4.4 webpack-sources: 3.3.3 optionalDependencies: - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) + webpack-cli: 5.1.4(webpack@5.103.0) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpack@5.103.0(webpack-cli@6.0.1): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + acorn-import-phases: 1.0.4(acorn@8.15.0) + browserslist: 4.28.0 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.3 + es-module-lexer: 1.7.0 + 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.1 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.14(@swc/core@1.15.2(@swc/helpers@0.5.17))(webpack@5.103.0) + watchpack: 2.4.4 + webpack-sources: 3.3.3 + optionalDependencies: + webpack-cli: 6.0.1(webpack@5.103.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -51054,7 +54858,7 @@ snapshots: is-async-function: 2.1.1 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 + is-generator-function: 1.1.2 is-regex: 1.2.1 is-weakref: 1.1.1 isarray: 2.0.5 @@ -51118,7 +54922,7 @@ snapshots: winston@3.11.0: dependencies: '@colors/colors': 1.6.0 - '@dabh/diagnostics': 2.0.3 + '@dabh/diagnostics': 2.0.8 async: 3.2.6 is-stream: 2.0.1 logform: 2.7.0 @@ -51143,7 +54947,7 @@ snapshots: workerpool@6.5.1: {} - workerpool@9.3.3: {} + workerpool@9.3.4: {} wrap-ansi@2.1.0: dependencies: @@ -51169,15 +54973,15 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 - wrap-ansi@9.0.0: + wrap-ansi@9.0.2: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} @@ -51236,7 +55040,7 @@ snapshots: xml-js@1.6.11: dependencies: - sax: 1.4.1 + sax: 1.4.3 xml-name-validator@2.0.1: {} @@ -51244,19 +55048,14 @@ snapshots: xml-name-validator@4.0.0: {} - xml2js@0.4.23: - dependencies: - sax: 1.4.1 - xmlbuilder: 11.0.1 - xml2js@0.5.0: dependencies: - sax: 1.4.1 + sax: 1.4.3 xmlbuilder: 11.0.1 xml2js@0.6.2: dependencies: - sax: 1.4.1 + sax: 1.4.3 xmlbuilder: 11.0.1 xml@1.0.1: {} @@ -51266,7 +55065,7 @@ snapshots: '@oozcitak/dom': 1.15.10 '@oozcitak/infra': 1.0.8 '@oozcitak/util': 8.3.8 - js-yaml: 3.14.1 + js-yaml: 4.1.1 xmlbuilder@11.0.1: {} @@ -51395,9 +55194,13 @@ snapshots: dependencies: buffer-crc32: 0.2.13 + yn@3.1.1: {} + yocto-queue@0.1.0: {} - yocto-queue@1.2.1: {} + yocto-queue@1.2.2: {} + + yoctocolors@2.1.2: {} yup@1.4.0: dependencies: @@ -51423,17 +55226,17 @@ snapshots: zod@4.1.11: {} - zustand@5.0.7(@types/react@18.2.0)(react@18.2.0)(use-sync-external-store@1.5.0(react@18.2.0)): + zustand@5.0.8(@types/react@18.2.0)(react@18.2.0)(use-sync-external-store@1.6.0(react@18.2.0)): optionalDependencies: '@types/react': 18.2.0 react: 18.2.0 - use-sync-external-store: 1.5.0(react@18.2.0) + use-sync-external-store: 1.6.0(react@18.2.0) - zustand@5.0.7(@types/react@18.2.0)(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0)): + zustand@5.0.8(@types/react@18.2.0)(react@19.1.0)(use-sync-external-store@1.6.0(react@19.1.0)): optionalDependencies: '@types/react': 18.2.0 react: 19.1.0 - use-sync-external-store: 1.5.0(react@19.1.0) + use-sync-external-store: 1.6.0(react@19.1.0) zwitch@1.0.5: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 192a8c6e325..da58d9b975c 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -6,3 +6,4 @@ packages: - "workspaces/bi/*" - 'workspaces/common-libs/*' - 'workspaces/mi/*' + - 'workspaces/mcp-inspector/*' diff --git a/rush.json b/rush.json index 10d142e9c99..33a7790dbd0 100644 --- a/rush.json +++ b/rush.json @@ -237,21 +237,20 @@ * The list of shell commands to run before the Rush build command starts */ "preRushBuild": [ - "npm run init-submodules", - "cd workspaces/mi/mi-extension && pnpm run download-ls", - "cd workspaces/ballerina/ballerina-extension && pnpm run download-ls" + "npm run init-submodules" ], /** * The list of shell commands to run after the Rush build command finishes */ "postRushBuild": [ - "cd workspaces/ballerina/ballerina-extension && pnpm run copyVSIXToRoot", - "cd workspaces/wso2-platform/wso2-platform-extension && pnpm run copyVSIXToRoot", - "cd workspaces/choreo/choreo-extension && pnpm run copyVSIXToRoot", + "cd workspaces/ballerina/ballerina-extension && pnpm run copyVSIXToRoot", + "cd workspaces/wso2-platform/wso2-platform-extension && pnpm run copyVSIXToRoot", + "cd workspaces/choreo/choreo-extension && pnpm run copyVSIXToRoot", "cd workspaces/mi/mi-extension && pnpm run copyVSIXToRoot", "cd workspaces/bi/bi-extension && pnpm run copyVSIXToRoot", "cd workspaces/apk/apk-extension && pnpm run copyVSIXToRoot", - "cd workspaces/api-designer/api-designer-extension && pnpm run copyVSIXToRoot" + "cd workspaces/api-designer/api-designer-extension && pnpm run copyVSIXToRoot", + "cd workspaces/mcp-inspector/mcp-inspector-extension && pnpm run copyVSIXToRoot" ] }, /** @@ -485,6 +484,11 @@ "projectFolder": "workspaces/ballerina/ballerina-visualizer", "versionPolicyName": "ballerina-extension" }, + { + "packageName": "@wso2/trace-visualizer", + "projectFolder": "workspaces/ballerina/trace-visualizer", + "versionPolicyName": "ballerina-extension" + }, { "packageName": "@wso2/overview-view", "projectFolder": "workspaces/ballerina/overview-view", @@ -607,6 +611,10 @@ "packageName": "api-designer", "projectFolder": "workspaces/api-designer/api-designer-extension", "versionPolicyName": "api-designer-extension" + }, + { + "packageName": "mcp-server-inspector", + "projectFolder": "workspaces/mcp-inspector/mcp-inspector-extension" } ] } diff --git a/workspaces/api-designer/api-designer-extension/package.json b/workspaces/api-designer/api-designer-extension/package.json index bd6f836deca..72a2b6ddeea 100644 --- a/workspaces/api-designer/api-designer-extension/package.json +++ b/workspaces/api-designer/api-designer-extension/package.json @@ -113,7 +113,7 @@ }, "dependencies": { "copyfiles": "^2.4.1", - "@vscode/vsce": "~2.21.0", + "@vscode/vsce": "^3.7.0", "vscode-messenger": "^0.4.5", "vscode-messenger-common": "^0.4.5", "@wso2/api-designer-core": "workspace:*", @@ -136,6 +136,6 @@ "cors-anywhere": "^0.4.4", "@apidevtools/json-schema-ref-parser": "11.6.1", "adm-zip": "~0.5.14", - "js-yaml": "~4.1.0" + "js-yaml": "~4.1.1" } } diff --git a/workspaces/api-designer/api-designer-visualizer/.gitignore b/workspaces/api-designer/api-designer-visualizer/.gitignore new file mode 100644 index 00000000000..dfd992064a3 --- /dev/null +++ b/workspaces/api-designer/api-designer-visualizer/.gitignore @@ -0,0 +1,3 @@ +lib/ +storybook-static/ +.storybook/fonts/ diff --git a/workspaces/api-designer/api-designer-visualizer/package.json b/workspaces/api-designer/api-designer-visualizer/package.json index e0a478a09f0..911a8da70de 100644 --- a/workspaces/api-designer/api-designer-visualizer/package.json +++ b/workspaces/api-designer/api-designer-visualizer/package.json @@ -26,7 +26,7 @@ "@wso2/font-wso2-vscode": "workspace:*", "react-dom": "18.2.0", "react-markdown": "~9.0.1", - "js-yaml": "~4.1.0", + "js-yaml": "~4.1.1", "process": "~0.11.10", "path": "~0.12.7", "@hookform/resolvers": "~3.3.4", diff --git a/workspaces/apk/apk-extension/package.json b/workspaces/apk/apk-extension/package.json index eabee0bcc55..cd3478bc546 100644 --- a/workspaces/apk/apk-extension/package.json +++ b/workspaces/apk/apk-extension/package.json @@ -65,11 +65,11 @@ "@typescript-eslint/parser": "~5.48.2", "@vscode/test-electron": "^2.3.2", "eslint": "^8.32.0", - "glob": "^8.1.0", + "glob": "^11.1.0", "mocha": "^10.2.0", "typescript": "5.8.3", - "vsce": "^2.15.0", - "copyfiles": "^2.4.1" + "copyfiles": "^2.4.1", + "@vscode/vsce": "^3.7.0" } } diff --git a/workspaces/apk/apk-extension/src/test/suite/index.ts b/workspaces/apk/apk-extension/src/test/suite/index.ts index c7fbb180b94..0532f893425 100644 --- a/workspaces/apk/apk-extension/src/test/suite/index.ts +++ b/workspaces/apk/apk-extension/src/test/suite/index.ts @@ -18,7 +18,7 @@ import * as path from 'path'; import * as Mocha from 'mocha'; -import * as glob from 'glob'; +import { glob } from 'glob'; export function run(): Promise { // Create the mocha test @@ -29,11 +29,9 @@ export function run(): Promise { const testsRoot = path.resolve(__dirname, '..'); - return new Promise((c, e) => { - glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { - if (err) { - return e(err); - } + return new Promise(async (c, e) => { + try { + const files = await glob('**/**.test.js', { cwd: testsRoot }); // Add files to the test suite files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); @@ -51,6 +49,8 @@ export function run(): Promise { console.error(err); e(err); } - }); + } catch (err) { + e(err); + } }); } diff --git a/workspaces/ballerina/ballerina-core/src/interfaces/bi.ts b/workspaces/ballerina/ballerina-core/src/interfaces/bi.ts index 2321edd939f..cda639857b3 100644 --- a/workspaces/ballerina/ballerina-core/src/interfaces/bi.ts +++ b/workspaces/ballerina/ballerina-core/src/interfaces/bi.ts @@ -256,21 +256,49 @@ export enum FUNCTION_TYPE { ALL = "all", } -export interface ProjectStructureResponse { +/** + * Represents the directory structure of artifacts in a project. + */ +export type ProjectDirectoryMap = { + [DIRECTORY_MAP.SERVICE]: ProjectStructureArtifactResponse[]; + [DIRECTORY_MAP.AUTOMATION]: ProjectStructureArtifactResponse[]; + [DIRECTORY_MAP.LISTENER]: ProjectStructureArtifactResponse[]; + [DIRECTORY_MAP.FUNCTION]: ProjectStructureArtifactResponse[]; + [DIRECTORY_MAP.CONNECTION]: ProjectStructureArtifactResponse[]; + [DIRECTORY_MAP.TYPE]: ProjectStructureArtifactResponse[]; + [DIRECTORY_MAP.CONFIGURABLE]: ProjectStructureArtifactResponse[]; + [DIRECTORY_MAP.DATA_MAPPER]: ProjectStructureArtifactResponse[]; + [DIRECTORY_MAP.NP_FUNCTION]: ProjectStructureArtifactResponse[]; + [DIRECTORY_MAP.AGENTS]: ProjectStructureArtifactResponse[]; + [DIRECTORY_MAP.LOCAL_CONNECTORS]: ProjectStructureArtifactResponse[]; +}; + +/** + * Represents a single project's structure with its artifacts organized by directory type. + */ +export interface ProjectStructure { projectName: string; - directoryMap: { - [DIRECTORY_MAP.SERVICE]: ProjectStructureArtifactResponse[]; - [DIRECTORY_MAP.AUTOMATION]: ProjectStructureArtifactResponse[]; - [DIRECTORY_MAP.LISTENER]: ProjectStructureArtifactResponse[]; - [DIRECTORY_MAP.FUNCTION]: ProjectStructureArtifactResponse[]; - [DIRECTORY_MAP.CONNECTION]: ProjectStructureArtifactResponse[]; - [DIRECTORY_MAP.TYPE]: ProjectStructureArtifactResponse[]; - [DIRECTORY_MAP.CONFIGURABLE]: ProjectStructureArtifactResponse[]; - [DIRECTORY_MAP.DATA_MAPPER]: ProjectStructureArtifactResponse[]; - [DIRECTORY_MAP.NP_FUNCTION]: ProjectStructureArtifactResponse[]; - [DIRECTORY_MAP.AGENTS]: ProjectStructureArtifactResponse[]; - [DIRECTORY_MAP.LOCAL_CONNECTORS]: ProjectStructureArtifactResponse[]; - }; + projectPath?: string; + projectTitle?: string; + directoryMap: ProjectDirectoryMap; +} + +/** + * Unified response structure for both single projects and multi-project workspaces. + * + * For single project: + * - workspaceName: undefined + * - projects: array with single project + * + * For workspace with multiple projects: + * - workspaceName: name of the workspace + * - projects: array with multiple projects + */ +export interface ProjectStructureResponse { + workspaceName?: string; + workspaceTitle?: string; + workspacePath?: string; + projects: ProjectStructure[]; } export interface ProjectStructureArtifactResponse { diff --git a/workspaces/ballerina/ballerina-core/src/interfaces/constants.ts b/workspaces/ballerina/ballerina-core/src/interfaces/constants.ts index b35efce4625..1610359e428 100644 --- a/workspaces/ballerina/ballerina-core/src/interfaces/constants.ts +++ b/workspaces/ballerina/ballerina-core/src/interfaces/constants.ts @@ -46,11 +46,11 @@ export const BI_COMMANDS = { VIEW_CONFIGURATION: 'BI.project-explorer.view-configuration', ADD_PROJECT: 'BI.project-explorer.add', SHOW_OVERVIEW: 'BI.project-explorer.overview', - SWITCH_PROJECT: 'BI.project-explorer.switch-project', ADD_DATA_MAPPER: 'BI.project-explorer.add-data-mapper', BI_EDIT_TEST_FUNCTION: 'BI.test.edit.function', BI_ADD_TEST_FUNCTION: 'BI.test.add.function', BI_EDIT_TEST_FUNCTION_DEF: 'BI.test.edit.function.def', ADD_NATURAL_FUNCTION: 'BI.project-explorer.add-natural-function', TOGGLE_TRACE_LOGS: 'BI.toggle.trace.logs', + ADD_INTEGRATION: 'BI.project-explorer.add-integration', }; diff --git a/workspaces/ballerina/ballerina-core/src/interfaces/data-mapper.ts b/workspaces/ballerina/ballerina-core/src/interfaces/data-mapper.ts index f8c7aca78c5..30f0c1a16c7 100644 --- a/workspaces/ballerina/ballerina-core/src/interfaces/data-mapper.ts +++ b/workspaces/ballerina/ballerina-core/src/interfaces/data-mapper.ts @@ -58,7 +58,8 @@ export enum IntermediateClauseType { WHERE = "where", FROM = "from", ORDER_BY = "order by", - LIMIT = "limit" + LIMIT = "limit", + JOIN = "join", } export enum ResultClauseType { @@ -93,7 +94,6 @@ export interface IOType { members?: IOType[]; defaultValue?: unknown; optional?: boolean; - focusedMemberId?: string; isFocused?: boolean; isRecursive?: boolean; isDeepNested?: boolean; @@ -125,6 +125,7 @@ export interface ExpandedDMModel { query?: Query; mapping_fields?: Record; triggerRefresh?: boolean; + focusInputRootMap?: Record; } export interface DMModel { @@ -138,6 +139,8 @@ export interface DMModel { focusInputs?: Record; mapping_fields?: Record; triggerRefresh?: boolean; + traversingRoot?: string; + focusInputRootMap?: Record; } export interface ModelState { @@ -205,6 +208,9 @@ export interface IntermediateClauseProps { type?: string; expression: string; order?: "ascending" | "descending"; + lhsExpression?: string; + rhsExpression?: string; + isOuter?: boolean; } export interface IntermediateClause { diff --git a/workspaces/ballerina/ballerina-core/src/interfaces/extended-lang-client.ts b/workspaces/ballerina/ballerina-core/src/interfaces/extended-lang-client.ts index 79eec4e0eeb..5293d4ab909 100644 --- a/workspaces/ballerina/ballerina-core/src/interfaces/extended-lang-client.ts +++ b/workspaces/ballerina/ballerina-core/src/interfaces/extended-lang-client.ts @@ -568,7 +568,7 @@ export interface ExecutorPositions { // Test Manager related interfaces export interface TestsDiscoveryRequest { - filePath: string; + projectPath: string; } export interface TestsDiscoveryResponse { @@ -1245,6 +1245,14 @@ export interface ImportIntegrationRequest { parameters?: Record; } +export interface ProjectMigrationResult { + projectName: string; + textEdits: { + [key: string]: string; + }; + report: string; +} + export interface ImportIntegrationResponse { error: string; textEdits: { @@ -1882,6 +1890,11 @@ export enum ARTIFACT_TYPE { Variables = "Variables" } +export enum PROJECT_KIND { + WORKSPACE_PROJECT = "WORKSPACE_PROJECT", + BUILD_PROJECT = "BUILD_PROJECT" +} + export interface Artifacts { [ARTIFACT_TYPE.Functions]: Record; [ARTIFACT_TYPE.Connections]: Record; @@ -1901,10 +1914,26 @@ export interface ArtifactsNotification { export interface ProjectArtifactsRequest { projectPath: string; } + export interface ProjectArtifacts { artifacts: Artifacts; } +export interface ProjectInfoRequest { + projectPath: string; +} + +export interface ProjectInfo { + projectKind: PROJECT_KIND; + name?: string; + title?: string; + orgName?: string; + org?: string; + version?: string; + projectPath?: string; + children?: ProjectInfo[]; +}; + // <------------ BI INTERFACES ---------> export interface BaseLangClientInterface { @@ -2002,5 +2031,6 @@ export interface ExtendedLangClientInterface extends BIInterface { updateStatusBar(): void; getDidOpenParams(): DidOpenParams; getProjectArtifacts(params: ProjectArtifactsRequest): Promise; + getProjectInfo(params: ProjectInfoRequest): Promise; openConfigToml(params: OpenConfigTomlRequest): Promise; } diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/agent-chat/index.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/agent-chat/index.ts index 1c1232467a0..4a2951937ec 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/agent-chat/index.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/agent-chat/index.ts @@ -16,9 +16,11 @@ * under the License. */ -import { ChatReqMessage, ChatRespMessage } from "./interfaces"; +import { ChatReqMessage, ChatRespMessage, TraceInput, TraceStatus } from "./interfaces"; export interface AgentChatAPI { getChatMessage: (params: ChatReqMessage) => Promise; abortChatRequest: () => void; + getTracingStatus: () => Promise; + showTraceView: (params: TraceInput) => Promise; } diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/agent-chat/interfaces.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/agent-chat/interfaces.ts index 24404bb6748..4e6c828156e 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/agent-chat/interfaces.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/agent-chat/interfaces.ts @@ -23,3 +23,11 @@ export interface ChatReqMessage { export interface ChatRespMessage { message: string; } + +export interface TraceStatus { + enabled: boolean; +} + +export interface TraceInput { + message: string; +} diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/agent-chat/rpc-type.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/agent-chat/rpc-type.ts index 4758f7610be..13cd72be4a5 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/agent-chat/rpc-type.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/agent-chat/rpc-type.ts @@ -14,11 +14,14 @@ * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. + * + * THIS FILE INCLUDES AUTO GENERATED CODE */ - -import { ChatReqMessage, ChatRespMessage } from "./interfaces"; +import { ChatReqMessage, ChatRespMessage, TraceInput, TraceStatus } from "./interfaces"; import { RequestType, NotificationType } from "vscode-messenger-common"; const _preFix = "agent-chat"; export const getChatMessage: RequestType = { method: `${_preFix}/getChatMessage` }; export const abortChatRequest: NotificationType = { method: `${_preFix}/abortChatRequest` }; +export const getTracingStatus: RequestType = { method: `${_preFix}/getTracingStatus` }; +export const showTraceView: NotificationType = { method: `${_preFix}/showTraceView` }; diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/ai-panel/interfaces.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/ai-panel/interfaces.ts index 8742990e418..5e354ab38f1 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/ai-panel/interfaces.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/ai-panel/interfaces.ts @@ -54,7 +54,9 @@ export interface ProjectSource { projectModules?: ProjectModule[]; projectTests?: SourceFile[]; sourceFiles: SourceFile[]; - projectName: string; + projectName: string; // Actual package name from package's Ballerina.toml (e.g., "mypackage") + packagePath: string; // Relative path from workspace root (e.g., "package1", "packages/foo"), empty string for non-workspace + isActive: boolean; // True if this is the currently active package in the workspace } export interface ProjectModule { @@ -168,7 +170,7 @@ export interface DataMappingRecord { } export interface GenerateTypesFromRecordRequest { - attachment?: Attachment[] + attachment: Attachment[] } export interface GenerateTypesFromRecordResponse { @@ -272,11 +274,12 @@ export interface DocumentationGeneratorIntermediaryState { } export interface PostProcessRequest { - assistant_response: string; + sourceFiles: SourceFile[]; + updatedFileNames: string[]; } export interface PostProcessResponse { - assistant_response: string; + sourceFiles: SourceFile[]; diagnostics: ProjectDiagnostics; } @@ -383,19 +386,17 @@ export interface GenerateCodeRequest { fileAttachmentContents: FileAttatchment[]; } -export interface SourceFiles { - filePath: string; - content: string; -} - export interface RepairParams { previousMessages: any[]; - assistantResponse: string; + assistantResponse?: string; // XML format with code blocks + sourceFiles?: SourceFile[]; // Optional: parsed from assistantResponse if not provided + updatedFileNames: string[]; diagnostics: DiagnosticEntry[]; } export interface RepairResponse { - repairResponse: string; + sourceFiles: SourceFile[]; + updatedFileNames: string[]; diagnostics: DiagnosticEntry[]; } diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/bi-diagram/index.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/bi-diagram/index.ts index 38a70d19043..5419755de17 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/bi-diagram/index.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/bi-diagram/index.ts @@ -118,7 +118,10 @@ import { RecordsInWorkspaceMentions, BuildMode, DevantMetadata, - GeneratedClientSaveResponse + GeneratedClientSaveResponse, + AddProjectToWorkspaceRequest, + DeleteProjectRequest, + OpenReadmeRequest } from "./interfaces"; export interface BIDiagramAPI { @@ -137,6 +140,8 @@ export interface BIDiagramAPI { getNodeTemplate: (params: BINodeTemplateRequest) => Promise; getAiSuggestions: (params: BIAiSuggestionsRequest) => Promise; createProject: (params: ProjectRequest) => void; + deleteProject: (params: DeleteProjectRequest) => void; + addProjectToWorkspace: (params: AddProjectToWorkspaceRequest) => void; getWorkspaces: () => Promise; getProjectStructure: () => Promise; getProjectComponents: () => Promise; @@ -151,8 +156,8 @@ export interface BIDiagramAPI { deleteConfigVariableV2: (params: DeleteConfigVariableRequestV2) => Promise; getConfigVariableNodeTemplate: (params: GetConfigVariableNodeTemplateRequest) => Promise; getModuleNodes: () => Promise; - getReadmeContent: () => Promise; - openReadme: () => void; + getReadmeContent: (params: ReadmeContentRequest) => Promise; + openReadme: (params: OpenReadmeRequest) => void; renameIdentifier: (params: RenameIdentifierRequest) => Promise; deployProject: (params: DeploymentRequest) => Promise; openAIChat: (params: AIChatRequest) => void; diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/bi-diagram/interfaces.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/bi-diagram/interfaces.ts index 9a50b133d63..c3952f0920e 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/bi-diagram/interfaces.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/bi-diagram/interfaces.ts @@ -27,6 +27,18 @@ export interface ProjectRequest { packageName: string; projectPath: string; createDirectory: boolean; + createAsWorkspace?: boolean; + workspaceName?: string; + orgName?: string; + version?: string; +} + +export interface AddProjectToWorkspaceRequest { + projectName: string; + packageName: string; + path: string; + convertToWorkspace?: boolean; + workspaceName?: string; orgName?: string; version?: string; } @@ -88,10 +100,16 @@ export interface RecordsInWorkspaceMentions { } export interface ReadmeContentRequest { - read: boolean + projectPath: string; + read?: boolean content?: string; } +export interface OpenReadmeRequest { + projectPath: string; + isWorkspaceReadme?: boolean; +} + export interface ReadmeContentResponse { content: string; } @@ -175,3 +193,7 @@ export interface DevantMetadata { export interface GeneratedClientSaveResponse { errorMessage?: string; } + +export interface DeleteProjectRequest { + projectPath: string; +} diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/bi-diagram/rpc-type.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/bi-diagram/rpc-type.ts index 0b3632859f0..2215ab4d577 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/bi-diagram/rpc-type.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/bi-diagram/rpc-type.ts @@ -120,7 +120,10 @@ import { RecordsInWorkspaceMentions, BuildMode, DevantMetadata, - GeneratedClientSaveResponse + GeneratedClientSaveResponse, + AddProjectToWorkspaceRequest, + DeleteProjectRequest, + OpenReadmeRequest } from "./interfaces"; import { RequestType, NotificationType } from "vscode-messenger-common"; @@ -140,6 +143,8 @@ export const getEnclosedFunction: RequestType = { method: `${_preFix}/getNodeTemplate` }; export const getAiSuggestions: RequestType = { method: `${_preFix}/getAiSuggestions` }; export const createProject: NotificationType = { method: `${_preFix}/createProject` }; +export const deleteProject: NotificationType = { method: `${_preFix}/deleteProject` }; +export const addProjectToWorkspace: NotificationType = { method: `${_preFix}/addProjectToWorkspace` }; export const getWorkspaces: RequestType = { method: `${_preFix}/getWorkspaces` }; export const getProjectStructure: RequestType = { method: `${_preFix}/getProjectStructure` }; export const getProjectComponents: RequestType = { method: `${_preFix}/getProjectComponents` }; @@ -154,8 +159,8 @@ export const updateConfigVariablesV2: RequestType = { method: `${_preFix}/deleteConfigVariableV2` }; export const getConfigVariableNodeTemplate: RequestType = { method: `${_preFix}/getConfigVariableNodeTemplate` }; export const getModuleNodes: RequestType = { method: `${_preFix}/getModuleNodes` }; -export const getReadmeContent: RequestType = { method: `${_preFix}/getReadmeContent` }; -export const openReadme: NotificationType = { method: `${_preFix}/openReadme` }; +export const getReadmeContent: RequestType = { method: `${_preFix}/getReadmeContent` }; +export const openReadme: NotificationType = { method: `${_preFix}/openReadme` }; export const renameIdentifier: NotificationType = { method: `${_preFix}/renameIdentifier` }; export const deployProject: RequestType = { method: `${_preFix}/deployProject` }; export const openAIChat: NotificationType = { method: `${_preFix}/openAIChat` }; diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/common/index.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/common/index.ts index 964b6cea6d6..00a73090246 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/common/index.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/common/index.ts @@ -31,7 +31,8 @@ import { WorkspacesFileResponse, FileOrDirRequest, WorkspaceRootResponse, - ShowErrorMessageRequest + ShowErrorMessageRequest, + WorkspaceTypeResponse } from "./interfaces"; export interface CommonRPCAPI { @@ -49,5 +50,5 @@ export interface CommonRPCAPI { getWorkspaceRoot: () => Promise; showErrorMessage: (params: ShowErrorMessageRequest) => void; getCurrentProjectTomlValues: () => Promise>; - + getWorkspaceType: () => Promise; } diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/common/interfaces.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/common/interfaces.ts index 6ccd232ffcc..1679814a771 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/common/interfaces.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/common/interfaces.ts @@ -91,6 +91,10 @@ export interface ShowErrorMessageRequest { message: string; } +export interface TomlWorkspace { + packages: string[]; +} + export interface TomlPackage { org: string; name: string; @@ -98,6 +102,14 @@ export interface TomlPackage { title: string; } -export interface TomlValues { +export interface WorkspaceTomlValues { + workspace: TomlWorkspace; +} + +export interface PackageTomlValues { package: TomlPackage; } + +export interface WorkspaceTypeResponse { + type: "SINGLE_PROJECT" | "MULTIPLE_PROJECTS" | "BALLERINA_WORKSPACE" | "VSCODE_WORKSPACE" | "UNKNOWN" +} diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/common/rpc-type.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/common/rpc-type.ts index c1816ec958b..581db37332b 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/common/rpc-type.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/common/rpc-type.ts @@ -32,7 +32,8 @@ import { WorkspacesFileResponse, FileOrDirRequest, WorkspaceRootResponse, - ShowErrorMessageRequest + ShowErrorMessageRequest, + WorkspaceTypeResponse } from "./interfaces"; import { RequestType, NotificationType } from "vscode-messenger-common"; @@ -51,3 +52,4 @@ export const isNPSupported: RequestType = { method: `${_preFix}/i export const getWorkspaceRoot: RequestType = { method: `${_preFix}/getWorkspaceRoot` }; export const showErrorMessage: NotificationType = { method: `${_preFix}/showErrorMessage` }; export const getCurrentProjectTomlValues: RequestType = { method: `${_preFix}/getCurrentProjectTomlValues` }; +export const getWorkspaceType: RequestType = { method: `${_preFix}/getWorkspaceType` }; diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/lang-client/index.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/lang-client/index.ts index 9bc819ee589..da659413ea5 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/lang-client/index.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/lang-client/index.ts @@ -17,7 +17,7 @@ */ import { BallerinaPackagesParams, BallerinaProjectComponents, BallerinaSTParams, ComponentModels, ComponentModelsParams, ExecutorPositions, PartialST, PartialSTParams, ProjectDiagnosticsRequest, ProjectDiagnosticsResponse, STModifyParams, SymbolInfo, SymbolInfoParams, SyntaxTree, SyntaxTreeParams, TypeFromExpressionParams, TypeFromSymbolParams, TypesFromFnDefinitionParams } from "../../interfaces/extended-lang-client"; -import { BallerinaVersionResponse, CompletionRequest, CompletionResponse, DiagnosticsResponse, CodeActionRequest, CodeActionResponse, RenameRequest, RenameResponse, DefinitionPositionRequest, UpdateFileContentRequest, UpdateFileContentResponse, DefinitionResponse, ExecutorPositionsRequest, DidCloseRequest, TypesFromExpressionResponse, TypesFromSymbolResponse, DidOpenRequest, DidChangeRequest } from "./interfaces"; +import { BallerinaVersionResponse, CompletionRequest, CompletionResponse, DiagnosticsResponse, CodeActionRequest, CodeActionResponse, RenameRequest, RenameResponse, DefinitionPositionRequest, UpdateFileContentRequest, UpdateFileContentResponse, DefinitionResponse, ExecutorPositionsRequest, DidCloseRequest, TypesFromExpressionResponse, TypesFromSymbolResponse, DidOpenRequest, DidChangeRequest, SemanticVersion } from "./interfaces"; export interface LangClientAPI { getSyntaxTree: () => Promise; @@ -25,6 +25,7 @@ export interface LangClientAPI { getSTByRange: (params: BallerinaSTParams) => Promise; getBallerinaProjectComponents: (params: BallerinaPackagesParams) => Promise; getBallerinaVersion: () => Promise; + isSupportedSLVersion: (params: SemanticVersion) => Promise; getCompletion: (params: CompletionRequest) => Promise; getDiagnostics: (params: SyntaxTreeParams) => Promise; getProjectDiagnostics: (params: ProjectDiagnosticsRequest) => Promise; diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/lang-client/interfaces.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/lang-client/interfaces.ts index f9724336ad6..7ba401686ce 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/lang-client/interfaces.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/lang-client/interfaces.ts @@ -163,4 +163,10 @@ export interface TypesFromSymbolResponse { export interface ExecutorPositionsResponse { executorPositions?: ExecutorPosition[]; -} \ No newline at end of file +} + +export interface SemanticVersion { + major: number; + minor: number; + patch: number; +} diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/lang-client/rpc-type.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/lang-client/rpc-type.ts index bfb481eef1b..9aa69f5dea8 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/lang-client/rpc-type.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/lang-client/rpc-type.ts @@ -18,7 +18,7 @@ * THIS FILE INCLUDES AUTO GENERATED CODE */ import { BallerinaPackagesParams, BallerinaProjectComponents, BallerinaSTParams, ComponentModels, ComponentModelsParams, ExecutorPositions, PartialST, PartialSTParams, ProjectDiagnosticsRequest, ProjectDiagnosticsResponse, STModifyParams, SymbolInfo, SymbolInfoParams, SyntaxTree, SyntaxTreeParams, TypeFromExpressionParams, TypeFromSymbolParams, TypesFromFnDefinitionParams } from "../../interfaces/extended-lang-client"; -import { BallerinaVersionResponse, CompletionRequest, CompletionResponse, DiagnosticsResponse, CodeActionRequest, CodeActionResponse, RenameRequest, RenameResponse, DefinitionPositionRequest, UpdateFileContentRequest, UpdateFileContentResponse, DefinitionResponse, ExecutorPositionsRequest, DidCloseRequest, TypesFromExpressionResponse, TypesFromSymbolResponse, DidOpenRequest, DidChangeRequest } from "./interfaces"; +import { BallerinaVersionResponse, CompletionRequest, CompletionResponse, DiagnosticsResponse, CodeActionRequest, CodeActionResponse, RenameRequest, RenameResponse, DefinitionPositionRequest, UpdateFileContentRequest, UpdateFileContentResponse, DefinitionResponse, ExecutorPositionsRequest, DidCloseRequest, TypesFromExpressionResponse, TypesFromSymbolResponse, DidOpenRequest, DidChangeRequest, SemanticVersion } from "./interfaces"; import { RequestType, NotificationType } from "vscode-messenger-common"; const _preFix = "lang-client"; @@ -27,6 +27,7 @@ export const getST: RequestType = { method: `${_pr export const getSTByRange: RequestType = { method: `${_preFix}/getSTByRange` }; export const getBallerinaProjectComponents: RequestType = { method: `${_preFix}/getBallerinaProjectComponents` }; export const getBallerinaVersion: RequestType = { method: `${_preFix}/getBallerinaVersion` }; +export const isSupportedSLVersion: RequestType = { method: `${_preFix}/isSupportedSLVersion` }; export const getCompletion: RequestType = { method: `${_preFix}/getCompletion` }; export const getDiagnostics: RequestType = { method: `${_preFix}/getDiagnostics` }; export const getProjectDiagnostics: RequestType = { method: `${_preFix}/getProjectDiagnostics` }; diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/migrate-integration/index.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/migrate-integration/index.ts index 520a5cc3301..2d3e1ef6f84 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/migrate-integration/index.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/migrate-integration/index.ts @@ -17,13 +17,15 @@ */ import { ImportIntegrationResponse } from "../../interfaces/extended-lang-client"; -import { GetMigrationToolsResponse, ImportIntegrationRPCRequest, MigrateRequest, MigrationToolPullRequest, OpenMigrationReportRequest, SaveMigrationReportRequest } from "./interfaces"; +import { GetMigrationToolsResponse, ImportIntegrationRPCRequest, MigrateRequest, MigrationToolPullRequest, OpenMigrationReportRequest, OpenSubProjectReportRequest, SaveMigrationReportRequest, StoreSubProjectReportsRequest } from "./interfaces"; export interface MigrateIntegrationAPI { getMigrationTools: () => Promise; pullMigrationTool: (params: MigrationToolPullRequest) => void; importIntegration: (params: ImportIntegrationRPCRequest) => Promise; openMigrationReport: (params: OpenMigrationReportRequest) => void; + openSubProjectReport: (params: OpenSubProjectReportRequest) => void; + storeSubProjectReports: (params: StoreSubProjectReportsRequest) => void; saveMigrationReport: (params: SaveMigrationReportRequest) => void; migrateProject: (params: MigrateRequest) => void; } diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/migrate-integration/interfaces.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/migrate-integration/interfaces.ts index 01af97bd31b..5656071c9bd 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/migrate-integration/interfaces.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/migrate-integration/interfaces.ts @@ -16,6 +16,7 @@ * under the License. */ +import { ProjectMigrationResult } from "../../interfaces/extended-lang-client"; import { ProjectRequest } from "../bi-diagram/interfaces"; export interface MigrationTool { @@ -59,6 +60,9 @@ export interface OpenMigrationReportRequest { export interface SaveMigrationReportRequest { reportContent: string; defaultFileName: string; + projectReports?: { + [projectName: string]: string; + }; } export interface MigrateRequest { @@ -66,4 +70,13 @@ export interface MigrateRequest { textEdits: { [key: string]: string; }; + projects?: ProjectMigrationResult[]; +} + +export interface OpenSubProjectReportRequest { + projectName: string; +} + +export interface StoreSubProjectReportsRequest { + reports: { [projectName: string]: string }; } diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/migrate-integration/rpc-type.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/migrate-integration/rpc-type.ts index a328ab47652..ebead0af2b6 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/migrate-integration/rpc-type.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/migrate-integration/rpc-type.ts @@ -18,7 +18,7 @@ * THIS FILE INCLUDES AUTO GENERATED CODE */ import { ImportIntegrationResponse } from "../../interfaces/extended-lang-client"; -import { GetMigrationToolsResponse, ImportIntegrationRPCRequest, MigrateRequest, MigrationToolPullRequest, OpenMigrationReportRequest, SaveMigrationReportRequest } from "./interfaces"; +import { GetMigrationToolsResponse, ImportIntegrationRPCRequest, MigrateRequest, MigrationToolPullRequest, OpenMigrationReportRequest, OpenSubProjectReportRequest, SaveMigrationReportRequest, StoreSubProjectReportsRequest } from "./interfaces"; import { RequestType, NotificationType } from "vscode-messenger-common"; const _preFix = "migrate-integration"; @@ -26,5 +26,7 @@ export const getMigrationTools: RequestType = { export const pullMigrationTool: NotificationType = { method: `${_preFix}/pullMigrationTool` }; export const importIntegration: RequestType = { method: `${_preFix}/importIntegration` }; export const openMigrationReport: NotificationType = { method: `${_preFix}/openMigrationReport` }; +export const openSubProjectReport: NotificationType = { method: `${_preFix}/openSubProjectReport` }; +export const storeSubProjectReports: NotificationType = { method: `${_preFix}/storeSubProjectReports` }; export const saveMigrationReport: NotificationType = { method: `${_preFix}/saveMigrationReport` }; export const migrateProject: NotificationType = { method: `${_preFix}/migrateProject` }; diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/visualizer/index.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/visualizer/index.ts index 8bd924bbbc6..6b3d27ba160 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/visualizer/index.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/visualizer/index.ts @@ -19,7 +19,7 @@ import { HistoryEntry } from "../../history"; import { ProjectStructureArtifactResponse, UpdatedArtifactsResponse } from "../../interfaces/bi"; import { ColorThemeKind } from "../../state-machine-types"; -import { AddToUndoStackRequest, OpenViewRequest, UndoRedoStateResponse } from "./interfaces"; +import { AddToUndoStackRequest, JoinProjectPathRequest, JoinProjectPathResponse, OpenViewRequest, UndoRedoStateResponse } from "./interfaces"; export interface VisualizerAPI { openView: (params: OpenViewRequest) => void; @@ -32,7 +32,7 @@ export interface VisualizerAPI { redo: (count: number) => Promise; addToUndoStack: (params: AddToUndoStackRequest) => void; undoRedoState: () => Promise; - joinProjectPath: (segments: string | string[]) => Promise; + joinProjectPath: (params: JoinProjectPathRequest) => Promise; getThemeKind: () => Promise; updateCurrentArtifactLocation: (params: UpdatedArtifactsResponse) => Promise; } diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/visualizer/interfaces.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/visualizer/interfaces.ts index 9081a3a1509..dd0301a1fec 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/visualizer/interfaces.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/visualizer/interfaces.ts @@ -16,6 +16,7 @@ * under the License. */ +import { CodeData } from "../../interfaces/bi"; import { EVENT_TYPE, PopupVisualizerLocation, VisualizerLocation } from "../../state-machine-types"; export interface UpdateUndoRedoMangerRequest { @@ -48,3 +49,13 @@ export interface AddToUndoStackRequest { source: string; description?: string; } + +export interface JoinProjectPathRequest { + segments: string | string[]; + codeData?: CodeData; +} + +export interface JoinProjectPathResponse { + filePath: string; + projectPath: string; +} diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/visualizer/rpc-type.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/visualizer/rpc-type.ts index 3347c1363d6..69a0eb6a1b5 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/visualizer/rpc-type.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/visualizer/rpc-type.ts @@ -20,7 +20,7 @@ import { HistoryEntry } from "../../history"; import { ProjectStructureArtifactResponse, UpdatedArtifactsResponse } from "../../interfaces/bi"; import { ColorThemeKind } from "../../state-machine-types"; -import { AddToUndoStackRequest, OpenViewRequest, UndoRedoStateResponse } from "./interfaces"; +import { AddToUndoStackRequest, JoinProjectPathRequest, JoinProjectPathResponse, OpenViewRequest, UndoRedoStateResponse } from "./interfaces"; import { NotificationType, RequestType } from "vscode-messenger-common"; const _preFix = "visualizer"; @@ -34,6 +34,6 @@ export const undo: RequestType = { method: `${_preFix}/undo` }; export const redo: RequestType = { method: `${_preFix}/redo` }; export const addToUndoStack: NotificationType = { method: `${_preFix}/addToUndoStack` }; export const undoRedoState: RequestType = { method: `${_preFix}/undoRedoState` }; -export const joinProjectPath: RequestType = { method: `${_preFix}/joinProjectPath` }; +export const joinProjectPath: RequestType = { method: `${_preFix}/joinProjectPath` }; export const getThemeKind: RequestType = { method: `${_preFix}/getThemeKind` }; export const updateCurrentArtifactLocation: RequestType = { method: `${_preFix}/updateCurrentArtifactLocation` }; diff --git a/workspaces/ballerina/ballerina-core/src/state-machine-types.ts b/workspaces/ballerina/ballerina-core/src/state-machine-types.ts index b1545666b76..89912db8444 100644 --- a/workspaces/ballerina/ballerina-core/src/state-machine-types.ts +++ b/workspaces/ballerina/ballerina-core/src/state-machine-types.ts @@ -20,7 +20,7 @@ import { NotificationType, RequestType } from "vscode-messenger-common"; import { NodePosition, STNode } from "@wso2/syntax-tree"; import { Command } from "./interfaces/ai-panel"; import { LinePosition } from "./interfaces/common"; -import { Type } from "./interfaces/extended-lang-client"; +import { ProjectInfo, ProjectMigrationResult, Type } from "./interfaces/extended-lang-client"; import { CodeData, DIRECTORY_MAP, ProjectStructureArtifactResponse, ProjectStructureResponse } from "./interfaces/bi"; import { DiagnosticEntry, TestGeneratorIntermediaryState, DocumentationGeneratorIntermediaryState, SourceFile } from "./rpc-types/ai-panel/interfaces"; @@ -63,7 +63,8 @@ export enum SCOPE { export type VoidCommands = "OPEN_LOW_CODE" | "OPEN_PROJECT" | "CREATE_PROJECT"; export enum MACHINE_VIEW { - Overview = "Overview", + PackageOverview = "Overview", + WorkspaceOverview = "Workspace Overview", BallerinaUpdateView = "Ballerina Update View", SequenceDiagram = "Sequence Diagram", ServiceDesigner = "Service Designer", @@ -77,6 +78,7 @@ export enum MACHINE_VIEW { BIWelcome = "BI Welcome", BIProjectForm = "BI Project SKIP", BIImportIntegration = "BI Import Integration SKIP", + BIAddProjectForm = "BI Add Project SKIP", BIComponentView = "BI Component View", AddConnectionWizard = "Add Connection Wizard", AddCustomConnector = "Add Custom Connector", @@ -120,7 +122,9 @@ export type FocusFlowDiagramView = typeof FOCUS_FLOW_DIAGRAM_VIEW[keyof typeof F export interface VisualizerLocation { view?: MACHINE_VIEW | null; documentUri?: string; - projectUri?: string; + projectPath?: string; + workspacePath?: string; + projectInfo?: ProjectInfo; identifier?: string; parentIdentifier?: string; artifactType?: DIRECTORY_MAP; @@ -277,9 +281,11 @@ export const onDownloadProgress: NotificationType = { method: export const onChatNotify: NotificationType = { method: 'onChatNotify' }; export const onMigrationToolLogs: NotificationType = { method: 'onMigrationToolLogs' }; export const onMigrationToolStateChanged: NotificationType = { method: 'onMigrationToolStateChanged' }; +export const onMigratedProject: NotificationType = { method: 'onMigratedProject' }; export const projectContentUpdated: NotificationType = { method: 'projectContentUpdated' }; export const getVisualizerLocation: RequestType = { method: 'getVisualizerLocation' }; export const webviewReady: NotificationType = { method: `webviewReady` }; +export const dependencyPullProgress: NotificationType = { method: 'dependencyPullProgress' }; // Artifact updated request and notification export const onArtifactUpdatedNotification: NotificationType = { method: 'onArtifactUpdatedNotification' }; diff --git a/workspaces/ballerina/ballerina-extension/.vscode/launch.json b/workspaces/ballerina/ballerina-extension/.vscode/launch.json index db7f0a92fa6..5c675330d61 100644 --- a/workspaces/ballerina/ballerina-extension/.vscode/launch.json +++ b/workspaces/ballerina/ballerina-extension/.vscode/launch.json @@ -17,7 +17,8 @@ "LSDEBUG": "false", "WEB_VIEW_WATCH_MODE": "true", "WEB_VIEW_DEV_HOST": "http://localhost:9000", - "BALLERINA_STAGE_CENTRAL": "false" + "BALLERINA_STAGE_CENTRAL": "false", + "TRACE_WEB_VIEW_DEV_HOST": "http://localhost:9001" }, "outFiles": [ "${workspaceFolder}/dist/**/*.js" diff --git a/workspaces/ballerina/ballerina-extension/CHANGELOG.md b/workspaces/ballerina/ballerina-extension/CHANGELOG.md index da676fc7531..d12251ea60c 100644 --- a/workspaces/ballerina/ballerina-extension/CHANGELOG.md +++ b/workspaces/ballerina/ballerina-extension/CHANGELOG.md @@ -5,8 +5,71 @@ All notable changes to the **Ballerina** extension will be documented in this fi The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres to [Semantic Versioning](https://semver.org/). -## [Unreleased] +## [5.6.2](https://github.com/wso2/vscode-extensions/compare/ballerina-integrator-1.5.1...ballerina-integrator-1.5.2) - 2025-11-18 +### Changed + +- **Workspace & Project Management** — Improved workspace management with a new Workspace Overview, expanded tree view support, and multi-project migration capabilities. Integration management is enhanced, allowing additions and deletions directly from the overview. The build command and language server integration have also been updated for better multi-project support. +- **Editor & Configuration** — Updated the expression editor with an expanded view for a better editing experience. The service and record configuration views have been improved with better styling, diagnostics, and form support. Configuration editing is enhanced with a new configuration object editor, and the dependency pull flow now provides improved visual feedback. +- **AI Features** — Enhanced the AI Data Mapper to support multiple file uploads and updated the AI code generator for compatibility with Ballerina workspaces. +- **Editor & UX** — Improved the user experience for the expanded expression editor and component diagram. Refactored floating button styles in the expression editor for better theming, and improved chip styling for light themes. +- **Project & Configuration** — Enhanced feature compatibility validation across different Ballerina versions. Updated the package configurable view for better configuration management. + +### Fixed + +- **Expression Editor & Configuration Views** — Resolved multiple issues in the expression editor, including problems with completions, styles, and value synchronization in the record config view. Fixed popup stacking order and button alignment in configuration popups. +- **General UI & Editor** — Addressed UI glitches, including a helper pane overflow issue, incorrect tree item highlighting with diagnostics, and an infinite re-render bug in the print form. Fixed a language server project loading issue in workspace setups. +- **Security** — Updated dependencies to address security vulnerabilities (`CVE-2025-64718`, `CVE-2025-64756`). + +## [5.6.1](https://github.com/wso2/vscode-extensions/compare/ballerina-integrator-1.5.0...ballerina-integrator-1.5.1) - 2025-11-12 + +### Fixed + +- **Ballerina Version Compatibility** — The "New Project" and "Natural Programming functions" features are now only shown for Ballerina versions 2201.13.0 and above. + + +## [5.6.0](https://github.com/wso2/vscode-extensions/compare/ballerina-integrator-1.4.0...ballerina-integrator-1.5.0) - 2025-11-11 + +### Added + +- **Editor** — Added support for [Ballerina workspaces](https://ballerina.io/learn/workspaces/). This allows you to seamlessly manage, navigate, and build multiple related Ballerina projects within a single VS Code window, greatly improving the development workflow for complex systems. + +## [5.5.0](https://github.com/wso2/vscode-extensions/compare/ballerina-integrator-1.3.2...ballerina-integrator-1.4.0) - 2025-11-05 + +### Added + +- **Service & Data Handling** — Introduced MCP AI and Solace Event integrations, redesigned Service and Event Integration flows with AI-powered payload generation, and introduced an LLM-based Data Mapper. +- **GraphQL Designer** — Added schema-based service generation, GraphQL-based type suggestions, `graphql:ID` annotation support, and documentation on GraphQL fields. +- **Expression Editor** — Enhanced the expression editor with improved syntax highlighting. The expression helper now offers distinct modes for both text and expression inputs. + +### Changed + +- **AI & Copilot** — Improved AI code generation formatting, step handling, and system prompts for better response structure. +- **Service Designer** — Revamped the view with more organized listener and service properties, enhanced with readable listener names, and refactored metadata display. +- **Data Mapper** — Improved breadcrumb labels and refactored preview behavior for output-side arrays. +- **UI & UX** — Enhanced the Helper Pane UI and navigation, and refactored the Resource form styles. Improved the Type Editor with type import capability and automatic generation of sample JSON for payload types. + +### Fixed + +- **Data Mapper** — Corrected issues with mappings generated for output header ports. +- **Service Designer** — Resolved an infinite re-render issue and fixed bugs in the API designer and MCP tool editing. +- **Expression Editor** — Fixed issues with constrained language in Windows PowerShell, delete key behavior, and text selection. +- **UI & UX** — Addressed UI glitches, including a popup movement issue when dragging the terminal, and fixed `undo/redo` stack reset conditions. +- **GraphQL** — Removed Union Types from GraphQL Input Types. +- **AI & Copilot** — Fixed invalid markdown characters in the chat window, file creation issues, and state management in the chat window. Resolved a bug where the reusable model provider form was not displaying correctly. + +## [5.4.2](https://github.com/wso2/vscode-extensions/compare/ballerina-integrator-1.3.1...ballerina-integrator-1.3.2) - 2025-10-26 + +### Changed + +- **Data Mapper** — Enabled reset and refresh options. + +### Fixed + +- **Editor** — Allowed artifact creation even when corresponding source files are missing. +- **Data Mapper** — Added support for mappings with built-in Ballerina sub-types (e.g., `int:Signed32`), fixed creation using types from sub-modules, enabled expression-bar completions for reusable mappers, and corrected link rendering for optional field access. +- **Type Browser** — Improved type filtering based on user queries. +- **Service Class Designer** — Enabled connection generation for clients created from WSDL files. ## [5.4.1](https://github.com/wso2/vscode-extensions/compare/ballerina-integrator-1.3.0...ballerina-integrator-1.3.1) - 2025-10-15 diff --git a/workspaces/ballerina/ballerina-extension/package.json b/workspaces/ballerina/ballerina-extension/package.json index 7c9882cc01a..14d293ba716 100644 --- a/workspaces/ballerina/ballerina-extension/package.json +++ b/workspaces/ballerina/ballerina-extension/package.json @@ -2,7 +2,7 @@ "name": "ballerina", "displayName": "Ballerina", "description": "Ballerina Language support, debugging, graphical visualization, AI-based data-mapping and many more.", - "version": "5.4.2", + "version": "5.6.1", "publisher": "wso2", "icon": "resources/images/ballerina.png", "homepage": "https://wso2.com/ballerina/vscode/docs", @@ -680,19 +680,13 @@ "group": "navigation", "category": "BI" }, - { - "command": "BI.project-explorer.switch-project", - "title": "Switch Project", - "icon": "$(distro-switch-project)", - "group": "navigation", - "category": "BI" - }, { "command": "BI.project-explorer.add", - "title": "Add Construct", + "title": "Add Project", "icon": "$(add)", "group": "navigation", - "category": "BI" + "category": "BI", + "when": "ballerina.bi.workspaceSupported" }, { "command": "BI.project-explorer.overview", @@ -719,9 +713,42 @@ "command": "BI.toggle.trace.logs", "title": "Toggle Trace Logs", "category": "BI" + }, + { + "command": "ballerina.showTraceWindow", + "title": "Show Traces", + "icon": "$(list-tree)", + "category": "Ballerina" + }, + { + "command": "ballerina.enableTracing", + "title": "Enable Tracing (Experimental)", + "category": "Ballerina" + }, + { + "command": "ballerina.disableTracing", + "title": "Disable Tracing (Experimental)", + "category": "Ballerina", + "icon": "$(circle-slash)" + }, + { + "command": "ballerina.clearTraces", + "title": "Clear Traces (Experimental)", + "category": "Ballerina", + "icon": "$(clear-all)", + "hidden": true } ], "views": { + "ballerina-traceView": [ + { + "id": "ballerina-traceView", + "title": "Tracing", + "name": "Tracing", + "icon": "$(list-tree)", + "when": "ballerina.tracingEnabled" + } + ], "notebook-variables": [ { "type": "webview", @@ -732,6 +759,16 @@ ] }, "viewsWelcome": [ + { + "view": "ballerina-traceView", + "contents": "Tracing is disabled. Enable tracing to view traces from your Ballerina program.\n[Enable Tracing](command:ballerina.enableTracing)", + "when": "!ballerina.tracingEnabled" + }, + { + "view": "ballerina-traceView", + "contents": "No traces collected yet. Run your Ballerina program to see traces here.", + "when": "ballerina.tracingEnabled && ballerina.tracesEmpty" + }, { "view": "testing", "contents": "[Add Unit Test](command:BI.test.add.function)" @@ -739,6 +776,12 @@ ], "viewsContainers": { "panel": [ + { + "id": "ballerina-traceView", + "title": "Traces", + "icon": "$(list-tree)", + "when": "ballerina.tracingEnabled" + }, { "id": "notebook-variables", "title": "Ballerina Notebook", @@ -774,6 +817,18 @@ "command": "BI.test.add.function", "when": "view == workbench.view.testing", "group": "navigation" + }, + { + "command": "ballerina.disableTracing", + "when": "view == ballerina-traceView && ballerina.tracingEnabled", + "group": "navigation", + "title": "Disable Tracing" + }, + { + "command": "ballerina.clearTraces", + "when": "view == ballerina-traceView && ballerina.tracingEnabled && !ballerina.tracesEmpty", + "group": "navigation", + "title": "Clear Traces" } ], "editor/title": [ @@ -966,21 +1021,21 @@ "description": "design-view", "default": { "fontPath": "./resources/font-wso2-vscode/dist/wso2-vscode.woff", - "fontCharacter": "\\f199" + "fontCharacter": "\\f16e" } }, "distro-start": { "description": "start", "default": { "fontPath": "./resources/font-wso2-vscode/dist/wso2-vscode.woff", - "fontCharacter": "\\f20f" + "fontCharacter": "\\f11a" } }, "distro-debug": { "description": "debug", "default": { "fontPath": "./resources/font-wso2-vscode/dist/wso2-vscode.woff", - "fontCharacter": "\\f194" + "fontCharacter": "\\f171" } }, "distro-source-view": { @@ -994,7 +1049,7 @@ "description": "persist-diagram", "default": { "fontPath": "./resources/font-wso2-vscode/dist/wso2-vscode.woff", - "fontCharacter": "\\f1ea" + "fontCharacter": "\\f133" } }, "distro-cached-rounded": { @@ -1134,16 +1189,17 @@ "build": "pnpm run compile && pnpm run lint && pnpm run postbuild", "rebuild": "pnpm run clean && pnpm run compile && pnpm run postbuild", "postbuild": "if [ \"$isPreRelease\" = \"true\" ]; then pnpm run download-ls --prerelease; else pnpm run download-ls; fi && pnpm run copyFonts && pnpm run copyJSLibs && pnpm run package && pnpm run copyVSIX", - "copyJSLibs": "copyfiles -f ../ballerina-visualizer/build/*.js resources/jslibs" + "copyJSLibs": "copyfiles -f ../ballerina-visualizer/build/*.js resources/jslibs && copyfiles -f ../trace-visualizer/build/*.js resources/jslibs" }, "dependencies": { "@ai-sdk/amazon-bedrock": "^3.0.25", "@ai-sdk/anthropic": "^2.0.20", "@types/lodash": "^4.14.200", "@vscode/test-electron": "^2.5.2", - "@vscode/vsce": "^2.22.0", + "@vscode/vsce": "^3.7.0", "@wso2/ballerina-core": "workspace:*", "@wso2/ballerina-visualizer": "workspace:*", + "@wso2/trace-visualizer": "workspace:*", "@wso2/font-wso2-vscode": "workspace:*", "@wso2/syntax-tree": "workspace:*", "@wso2/wso2-platform-core": "workspace:*", @@ -1152,7 +1208,7 @@ "del-cli": "^5.1.0", "dotenv": "~16.5.0", "file-uri-to-path": "^2.0.0", - "glob": "^7.2.3", + "glob": "^11.1.0", "handlebars": "~4.7.8", "jwt-decode": "^4.0.0", "lodash": "^4.17.21", @@ -1175,7 +1231,8 @@ "vscode-uri": "^3.0.8", "xml-js": "^1.6.11", "xstate": "^4.38.3", - "zod": "^4.1.8" + "zod": "^4.1.8", + "protobufjs": "^7.2.5" }, "devDependencies": { "@sentry/webpack-plugin": "^1.20.1", @@ -1193,7 +1250,7 @@ "decache": "^4.6.2", "express": "^4.18.2", "istanbul": "^0.4.5", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "jwt-decode": "^3.1.2", "keytar": "^7.9.0", "kill-port": "2.0.1", @@ -1211,7 +1268,6 @@ "vscode-messenger": "^0.4.4", "webpack": "^5.89.0", "webpack-cli": "^6.0.1", - "webpack-merge-and-include-globally": "^2.3.4", "yarn": "^1.22.19" }, "extensionPack": [ diff --git a/workspaces/ballerina/ballerina-extension/scripts/download-ls.js b/workspaces/ballerina/ballerina-extension/scripts/download-ls.js index d4c2a9d4f59..aff1cd55daa 100644 --- a/workspaces/ballerina/ballerina-extension/scripts/download-ls.js +++ b/workspaces/ballerina/ballerina-extension/scripts/download-ls.js @@ -100,7 +100,6 @@ function downloadFile(url, outputPath, maxRedirects = 5) { return; } - console.log(`Following redirect to: ${res.headers.location}`); makeRequest(res.headers.location, redirectCount + 1); return; } diff --git a/workspaces/ballerina/ballerina-extension/src/RPCLayer.ts b/workspaces/ballerina/ballerina-extension/src/RPCLayer.ts index 9b3407c6091..2550a32a896 100644 --- a/workspaces/ballerina/ballerina-extension/src/RPCLayer.ts +++ b/workspaces/ballerina/ballerina-extension/src/RPCLayer.ts @@ -130,7 +130,7 @@ async function getContext(): Promise { position: context.position, syntaxTree: context.syntaxTree, isBI: context.isBI, - projectUri: context.projectUri, + projectPath: context.projectPath, serviceType: context.serviceType, type: context.type, isGraphql: context.isGraphql, @@ -140,7 +140,7 @@ async function getContext(): Promise { metadata: { isBISupported: context.isBISupported, haveLS: StateMachine.langClient() && true, - recordFilePath: path.join(context.projectUri, "types.bal"), + recordFilePath: context.projectPath ? path.join(context.projectPath, "types.bal") : undefined, enableSequenceDiagram: extension.ballerinaExtInstance.enableSequenceDiagramView(), target: context.metadata?.target }, diff --git a/workspaces/ballerina/ballerina-extension/src/core/extended-language-client.ts b/workspaces/ballerina/ballerina-extension/src/core/extended-language-client.ts index 69bfad802fa..935ccdded7f 100644 --- a/workspaces/ballerina/ballerina-extension/src/core/extended-language-client.ts +++ b/workspaces/ballerina/ballerina-extension/src/core/extended-language-client.ts @@ -268,7 +268,11 @@ import { BISearchNodesRequest, BISearchNodesResponse, ExpressionTokensRequest, - ExpressionTokensResponse + ExpressionTokensResponse, + ProjectInfoRequest, + ProjectInfo, + onMigratedProject, + ProjectMigrationResult } from "@wso2/ballerina-core"; import { BallerinaExtension } from "./index"; import { debug, handlePullModuleProgress } from "../utils"; @@ -449,6 +453,7 @@ enum EXTENDED_APIS { OPEN_API_GENERATE_CLIENT = 'openAPIService/genClient', OPEN_API_GENERATED_MODULES = 'openAPIService/getModules', OPEN_API_CLIENT_DELETE = 'openAPIService/deleteModule', + GET_PROJECT_INFO = 'designModelService/projectInfo', GET_ARTIFACTS = 'designModelService/artifacts', PUBLISH_ARTIFACTS = 'designModelService/publishArtifacts', COPILOT_ALL_LIBRARIES = 'copilotLibraryManager/getLibrariesList', @@ -458,6 +463,7 @@ enum EXTENDED_APIS { MULE_TO_BI = 'projectService/importMule', MIGRATION_TOOL_STATE = 'projectService/stateCallback', MIGRATION_TOOL_LOG = 'projectService/logCallback', + PUSH_MIGRATED_PROJECT = 'projectService/pushMigratedProject' } enum EXTENDED_APIS_ORG { @@ -580,12 +586,28 @@ export class ExtendedLangClient extends LanguageClient implements ExtendedLangCl console.error("Error in MIGRATION_TOOL_LOG handler:", error); } }); + + this.onNotification(EXTENDED_APIS.PUSH_MIGRATED_PROJECT, async (res: ProjectMigrationResult) => { + try { + RPCLayer._messenger.sendNotification( + onMigratedProject, + { type: "webview", webviewType: VisualizerWebview.viewType }, + res + ); + } catch (error) { + console.error("Error in PUSH_MIGRATED_PROJECT handler:", error); + } + }); } async getProjectArtifacts(params: ProjectArtifactsRequest): Promise { return this.sendRequest(EXTENDED_APIS.GET_ARTIFACTS, params); } + async getProjectInfo(params: ProjectInfoRequest): Promise { + return this.sendRequest(EXTENDED_APIS.GET_PROJECT_INFO, params); + } + async definition(params: DefinitionParams): Promise { return this.sendRequest(VSCODE_APIS.DEFINITION, params); } diff --git a/workspaces/ballerina/ballerina-extension/src/core/extension.ts b/workspaces/ballerina/ballerina-extension/src/core/extension.ts index e8de14a22a0..e63257c23b4 100644 --- a/workspaces/ballerina/ballerina-extension/src/core/extension.ts +++ b/workspaces/ballerina/ballerina-extension/src/core/extension.ts @@ -33,7 +33,19 @@ import { exec, spawnSync, execSync } from 'child_process'; import { LanguageClientOptions, State as LS_STATE, RevealOutputChannelOn, ServerOptions } from "vscode-languageclient/node"; import { getServerOptions } from '../utils/server/server'; import { ExtendedLangClient } from './extended-language-client'; -import { debug, log, getOutputChannel, outputChannel, isWindows, isWSL, isSupportedVersion, VERSION, isSupportedSLVersion } from '../utils'; +import { + debug, + log, + getOutputChannel, + outputChannel, + isWindows, + isWSL, + isSupportedVersion, + VERSION, + isSupportedSLVersion, + createVersionNumber, + checkIsBallerinaWorkspace +} from '../utils'; import { AssertionError } from "assert"; import { BALLERINA_HOME, ENABLE_ALL_CODELENS, ENABLE_TELEMETRY, ENABLE_SEMANTIC_HIGHLIGHTING, OVERRIDE_BALLERINA_HOME, @@ -142,6 +154,7 @@ export class BallerinaExtension { public ballerinaVersion: string; public biSupported: boolean; public isNPSupported: boolean; + public isWorkspaceSupported: boolean; public extension: Extension; private clientOptions: LanguageClientOptions; public langClient?: ExtendedLangClient; @@ -172,6 +185,7 @@ export class BallerinaExtension { this.ballerinaVersion = ''; this.biSupported = false; this.isNPSupported = false; + this.isWorkspaceSupported = false; this.isPersist = false; this.ballerinaUserHomeName = '.ballerina'; @@ -442,9 +456,26 @@ export class BallerinaExtension { } try { - this.biSupported = isSupportedSLVersion(this, 2201123); // Minimum supported version for BI - this.isNPSupported = isSupportedSLVersion(this, 2201130) && this.enabledExperimentalFeatures(); // Minimum supported requirements for NP - debug(`[INIT] Feature support calculated - BI: ${this.biSupported}, NP: ${this.isNPSupported}`); + this.biSupported = isSupportedSLVersion(this, createVersionNumber(2201, 12, 3)); // Minimum supported version for BI: 2201.12.3 + this.isNPSupported = isSupportedSLVersion(this, createVersionNumber(2201, 13, 0)) && this.enabledExperimentalFeatures(); // Minimum supported requirements for NP: 2201.13.0 + + this.isWorkspaceSupported = isSupportedSLVersion(this, createVersionNumber(2201, 13, 0)); // Minimum supported requirements for Workspace: 2201.13.0 + const workspaceFolders = workspace.workspaceFolders; + + if (workspaceFolders && workspaceFolders.length === 1) { + const isBalWorkspace = await checkIsBallerinaWorkspace(workspaceFolders[0].uri); + if (isBalWorkspace && !this.isWorkspaceSupported) { + window.showInformationMessage( + 'Your current ballerina distribution is not supported for workspaces. Please update to version 2201.13.0 or above to use workspaces. You will need to reload VS Code after updating.', + 'Update' + ).then(selection => { + if (selection === 'Update') { + commands.executeCommand('ballerina.update-ballerina-visually'); + } + }); + } + } + debug(`[INIT] Feature support calculated - BI: ${this.biSupported}, NP: ${this.isNPSupported}, Workspace: ${this.isWorkspaceSupported}`); } catch (error) { debug(`[INIT] Error calculating feature support: ${error}`); // Don't throw here, we can continue without these features @@ -464,7 +495,7 @@ export class BallerinaExtension { debug(`[INIT] Final Ballerina Home: ${this.ballerinaHome}`); debug(`[INIT] Plugin Dev Mode: ${this.overrideBallerinaHome()}`); debug(`[INIT] Debug Mode: ${this.enableLSDebug()}`); - debug(`[INIT] Feature flags - Experimental: ${this.enabledExperimentalFeatures()}, BI: ${this.biSupported}, NP: ${this.isNPSupported}`); + debug(`[INIT] Feature flags - Experimental: ${this.enabledExperimentalFeatures()}, BI: ${this.biSupported}, NP: ${this.isNPSupported}, Workspace: ${this.isWorkspaceSupported}`); // Check version compatibility try { @@ -2283,7 +2314,7 @@ export class BallerinaExtension { } public enabledLiveReload(): boolean { - return isSupportedSLVersion(this, 2201100) && workspace.getConfiguration().get(ENABLE_LIVE_RELOAD); + return isSupportedSLVersion(this, createVersionNumber(2201, 10, 0)) && workspace.getConfiguration().get(ENABLE_LIVE_RELOAD); } public enabledPerformanceForecasting(): boolean { @@ -2346,13 +2377,11 @@ export class BallerinaExtension { public setPersistStatusContext(textEditor: TextEditor) { if (textEditor?.document) { const fileUri: Uri = textEditor.document.uri; - if (checkIsPersistModelFile(fileUri)) { - this.isPersist = true; - commands.executeCommand('setContext', 'isPersistModelActive', true); - return; - } else { - this.isPersist = false; - } + checkIsPersistModelFile(fileUri).then(isPersistModelFile => { + this.isPersist = isPersistModelFile; + commands.executeCommand('setContext', 'isPersistModelActive', isPersistModelFile); + }); + return; } commands.executeCommand('setContext', 'isPersistModelActive', false); } diff --git a/workspaces/ballerina/ballerina-extension/src/extension.ts b/workspaces/ballerina/ballerina-extension/src/extension.ts index 07b88da3ce0..491b256b5e8 100644 --- a/workspaces/ballerina/ballerina-extension/src/extension.ts +++ b/workspaces/ballerina/ballerina-extension/src/extension.ts @@ -46,6 +46,7 @@ import { activateAIFeatures } from './features/ai/activator'; import { activateTryItCommand } from './features/tryit/activator'; import { activate as activateNPFeatures } from './features/natural-programming/activator'; import { activateAgentChatPanel } from './views/agent-chat/activate'; +import { activateTracing } from './features/tracing'; let langClient: ExtendedLangClient; export let isPluginStartup = true; @@ -114,7 +115,7 @@ export async function activate(context: ExtensionContext) { await StateMachine.initialize(); // Then return the ballerina extension context - return { ballerinaExtInstance: extension.ballerinaExtInstance, projectPath: StateMachine.context().projectUri }; + return { ballerinaExtInstance: extension.ballerinaExtInstance, projectPath: StateMachine.context().projectPath }; } export async function activateBallerina(): Promise { @@ -191,6 +192,9 @@ export async function activateBallerina(): Promise { // Activate Agent Chat Panel activateAgentChatPanel(ballerinaExtInstance); + // Activate Tracing Feature + activateTracing(ballerinaExtInstance); + langClient = ballerinaExtInstance.langClient; // Register showTextDocument listener langClient.onNotification('window/showTextDocument', (location: Location) => { diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/activator.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/activator.ts index 4a52e74099f..50269512877 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/activator.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/activator.ts @@ -86,7 +86,7 @@ export function activateAIFeatures(ballerinaExternalInstance: BallerinaExtension }); } - const projectPath = StateMachine.context().projectUri; + const projectPath = StateMachine.context().projectPath; commands.registerCommand(CONFIGURE_DEFAULT_MODEL_COMMAND, async (...args: any[]) => { const configPath = await getConfigFilePath(ballerinaExternalInstance, projectPath); diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/dataMapping.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/dataMapping.ts index 6dc13e5a292..e7ff27cd30b 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/dataMapping.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/dataMapping.ts @@ -25,7 +25,6 @@ import { Uri } from "vscode"; import { extractRecordTypeDefinitionsFromFile, generateMappingExpressionsFromModel, repairSourceFilesWithAI } from "../../rpc-managers/ai-panel/utils"; import { writeBallerinaFileDidOpenTemp } from "../../utils/modification"; import { ExtendedLangClient, NOT_SUPPORTED } from "../../core"; -import { getBallerinaProjectRoot } from "../../../src/rpc-managers/ai-panel/rpc-manager"; import { DefaultableParam, FunctionDefinition, IncludedRecordParam, ModulePart, RequiredParam, RestParam, STKindChecker, STNode } from "@wso2/syntax-tree"; import { addMissingRequiredFields, attemptRepairProject, checkProjectDiagnostics } from "../../../src/rpc-managers/ai-panel/repair-utils"; import { NullablePrimitiveType, PrimitiveArrayType, PrimitiveType } from "./constants"; @@ -33,6 +32,7 @@ import { INVALID_RECORD_REFERENCE } from "../../../src/views/ai-panel/errorCodes import { PackageInfo, TypesGenerationResult } from "./service/datamapper/types"; import { URI } from "vscode-uri"; import { getAllDataMapperSource } from "./service/datamapper/datamapper"; +import { StateMachine } from "../../stateMachine"; // Set to false to include mappings with default values const OMIT_DEFAULT_MAPPINGS_ENABLED = true; @@ -210,7 +210,7 @@ async function createTempBallerinaFile( } export async function createTempBallerinaDir(): Promise { - const projectRoot = await getBallerinaProjectRoot(); + const projectRoot = StateMachine.context().projectPath; const randomNum = Math.floor(Math.random() * 90000) + 10000; const tempDir = fs.mkdtempSync( path.join(os.tmpdir(), `ballerina-data-mapping-${randomNum}-`) @@ -241,7 +241,7 @@ export async function repairCodeWithLLM(codeRepairRequest: repairCodeRequest): P } } - const projectSourceResponse = { sourceFiles: repairedSourceFiles, projectName: "" }; + const projectSourceResponse = { sourceFiles: repairedSourceFiles, projectName: "", packagePath: "", isActive: true }; return projectSourceResponse; } @@ -477,11 +477,10 @@ export async function generateMappings( ): Promise { const targetFilePath = metadataWithAttachments.metadata.codeData.lineRange.fileName || context.documentUri; - const optionalMappingInstructionFile = metadataWithAttachments.attachments && metadataWithAttachments.attachments.length > 0 - ? metadataWithAttachments.attachments[0] - : undefined; - - const generatedMappings = await generateMappingExpressionsFromModel(metadataWithAttachments.metadata.mappingsModel as DMModel, optionalMappingInstructionFile); + const generatedMappings = await generateMappingExpressionsFromModel( + metadataWithAttachments.metadata.mappingsModel as DMModel, + metadataWithAttachments.attachments || [] + ); const customFunctionMappings = generatedMappings.filter(mapping => mapping.isFunctionCall); let customFunctionsFilePath: string | undefined; @@ -1123,20 +1122,47 @@ export async function generateInlineMappingsSource( // processContextTypeCreation - Functions for processing context type creation // ================================================================================================ -// Extract record types from Ballerina code -export function extractRecordTypes(typesCode: string): { name: string; code: string }[] { - const recordPattern = /\b(?:public|private)?\s*type\s+(\w+)\s+record\s+(?:{[|]?|[|]?{)[\s\S]*?;?\s*[}|]?;/g; - const matches = [...typesCode.matchAll(recordPattern)]; - return matches.map((match) => ({ - name: match[1], - code: match[0].trim(), - })); +// Extract record and enum types from syntax tree +export async function extractRecordTypesFromSyntaxTree( + langClient: ExtendedLangClient, + filePath: string +): Promise<{ records: string[]; enums: string[] }> { + const st = (await langClient.getSyntaxTree({ + documentIdentifier: { + uri: Uri.file(filePath).toString(), + }, + })) as SyntaxTree; + + if (!st.syntaxTree) { + throw new Error("Failed to retrieve syntax tree for file: " + filePath); + } + + const modulePart = st.syntaxTree as ModulePart; + const records: string[] = []; + const enums: string[] = []; + + for (const member of modulePart.members) { + if (STKindChecker.isTypeDefinition(member)) { + const typeName = member.typeName?.value; + if (typeName) { + records.push(typeName); + } + } else if (STKindChecker.isEnumDeclaration(member)) { + const enumName = member.identifier?.value; + if (enumName) { + enums.push(enumName); + } + } + } + + return { records, enums }; } // Generate Ballerina record types from context attachments and validate against existing records export async function generateTypesFromContext( sourceAttachments: Attachment[], - projectComponents: ProjectComponentsResponse + projectComponents: ProjectComponentsResponse, + langClient: ExtendedLangClient ): Promise { if (!sourceAttachments || sourceAttachments.length === 0) { throw new Error("Source attachments are required for type generation"); @@ -1163,10 +1189,14 @@ export async function generateTypesFromContext( const typeFilePath = baseFilePath + typeComponent.filePath; existingRecordTypesMap.set(typeComponent.name, { type: typeComponent.name, isArray: false, filePath: typeFilePath }); }); + moduleSummary.enums.forEach((enumComponent: ComponentInfo) => { + const enumFilePath = baseFilePath + enumComponent.filePath; + existingRecordTypesMap.set(enumComponent.name, { type: enumComponent.name, isArray: false, filePath: enumFilePath }); + }); }); }); - // Generate type definitions from attachments + // Generate type definitions from all attachments together const typeGenerationRequest: GenerateTypesFromRecordRequest = { attachment: sourceAttachments }; @@ -1174,6 +1204,29 @@ export async function generateTypesFromContext( const typeGenerationResponse = await generateTypeCreation(typeGenerationRequest); const generatedTypesCode = typeGenerationResponse.typesCode; + // Create temp directory and file to validate generated types + const tempDirectory = await createTempBallerinaDir(); + const tempTypesFilePath = path.join(tempDirectory, outputFileName); + + writeBallerinaFileDidOpenTemp(tempTypesFilePath, generatedTypesCode); + + // Extract record and enum names from syntax tree + const { records: generatedRecords, enums: generatedEnums } = await extractRecordTypesFromSyntaxTree(langClient, tempTypesFilePath); + + // Check for duplicate record names + for (const recordName of generatedRecords) { + if (existingRecordTypesMap.has(recordName)) { + throw new Error(`Record "${recordName}" already exists in the workspace`); + } + } + + // Check for duplicate enum names + for (const enumName of generatedEnums) { + if (existingRecordTypesMap.has(enumName)) { + throw new Error(`Enum "${enumName}" already exists in the workspace`); + } + } + return { typesCode: generatedTypesCode, filePath: outputFileName, @@ -1181,13 +1234,16 @@ export async function generateTypesFromContext( }; } -// Generate Ballerina record type definitions from an attachment file +// Generate Ballerina record type definitions from attachment files export async function generateTypeCreation( typeGenerationRequest: GenerateTypesFromRecordRequest ): Promise { - const sourceFile = typeGenerationRequest.attachment?.[0]; + if (typeGenerationRequest.attachment.length === 0) { + throw new Error('No attachments provided for type generation'); + } - const generatedTypeDefinitions = await extractRecordTypeDefinitionsFromFile(sourceFile); + // Process all attachments together to understand correlations + const generatedTypeDefinitions = await extractRecordTypeDefinitionsFromFile(typeGenerationRequest.attachment); if (typeof generatedTypeDefinitions !== 'string') { throw new Error(`Failed to generate types: ${JSON.stringify(generatedTypeDefinitions)}`); } diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/code/code.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/code/code.ts index d9adeb7bb7d..c066a93d407 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/service/code/code.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/code/code.ts @@ -21,9 +21,13 @@ import { getLibraryProviderTool } from "../libs/libraryProviderTool"; import { getRewrittenPrompt, populateHistory, - transformProjectSource, + flattenProjectToFiles, getErrorMessage, extractResourceDocumentContent, + parseSourceFilesFromXML, + buildFilePaths, + buildPackageContext, + formatFileUploadContents, } from "../utils"; import { LANGLIBS } from "./../libs/langlibs"; import { Library } from "./../libs/libs_types"; @@ -36,10 +40,10 @@ import { ProjectSource, RepairParams, RepairResponse, - SourceFiles, + SourceFile, Command, } from "@wso2/ballerina-core"; -import { getProjectFromResponse, getProjectSource, postProcess } from "../../../../rpc-managers/ai-panel/rpc-manager"; +import { getProjectSource, postProcess } from "../../../../rpc-managers/ai-panel/rpc-manager"; import { CopilotEventHandler, createWebviewEventHandler } from "../event"; import { AIPanelAbortController } from "../../../../../src/rpc-managers/ai-panel/utils"; import { getRequirementAnalysisCodeGenPrefix, getRequirementAnalysisTestGenPrefix } from "./np_prompts"; @@ -65,12 +69,13 @@ function appendFinalMessages( // Core code generation function that emits events export async function generateCodeCore(params: GenerateCodeRequest, eventHandler: CopilotEventHandler): Promise { - const project: ProjectSource = await getProjectSource(params.operationType); - const packageName = project.projectName; - const sourceFiles: SourceFiles[] = transformProjectSource(project); - let updatedSourceFiles: SourceFiles[] = [...sourceFiles]; + const projects: ProjectSource[] = await getProjectSource(params.operationType); + const activeProject = projects.find(p => p.isActive) || projects[0]; + const packageName = activeProject.projectName; + const sourceFiles: SourceFile[] = flattenProjectToFiles(projects); + let updatedSourceFiles: SourceFile[] = [...sourceFiles]; let updatedFileNames: string[] = []; - const prompt = getRewrittenPrompt(params, sourceFiles); + const prompt = getRewrittenPrompt(params, projects); const historyMessages = populateHistory(params.chatHistory); const cacheOptions = await getProviderCacheControl(); @@ -84,7 +89,7 @@ export async function generateCodeCore(params: GenerateCodeRequest, eventHandler const allMessages: ModelMessage[] = [ { role: "system", - content: getSystemPromptPrefix(sourceFiles, params.operationType), + content: getSystemPromptPrefix(projects, params.operationType), }, { role: "system", @@ -96,7 +101,7 @@ export async function generateCodeCore(params: GenerateCodeRequest, eventHandler role: "user", content: getUserPrompt( prompt, - sourceFiles, + projects, params.fileAttachmentContents, packageName, params.operationType @@ -126,7 +131,6 @@ export async function generateCodeCore(params: GenerateCodeRequest, eventHandler eventHandler({ type: "start" }); let assistantResponse: string = ""; - let finalResponse: string = ""; let selectedLibraries: string[] = []; let codeGenStart = false; const tempCodeSegment = '\n```ballerina\n// Code Generation\n```\n'; @@ -222,19 +226,17 @@ export async function generateCodeCore(params: GenerateCodeRequest, eventHandler const { messages: finalMessages } = await response; appendFinalMessages(allMessages, finalMessages, cacheOptions); - let codeSegment = getCodeBlocks(updatedSourceFiles, updatedFileNames); const postProcessedResp: PostProcessResponse = await postProcess({ - assistant_response: codeSegment, + sourceFiles: updatedSourceFiles, + updatedFileNames: updatedFileNames, }); - codeSegment = postProcessedResp.assistant_response; + updatedSourceFiles = postProcessedResp.sourceFiles; let diagnostics: DiagnosticEntry[] = postProcessedResp.diagnostics.diagnostics; const MAX_REPAIR_ATTEMPTS = 3; let repair_attempt = 0; - let diagnosticFixResp = codeSegment; //TODO: Check if we need this variable while ( - hasCodeBlocks(diagnosticFixResp) && diagnostics.length > 0 && repair_attempt < MAX_REPAIR_ATTEMPTS ) { @@ -244,20 +246,24 @@ export async function generateCodeCore(params: GenerateCodeRequest, eventHandler const repairedResponse: RepairResponse = await repairCode( { previousMessages: allMessages, - assistantResponse: diagnosticFixResp, + sourceFiles: updatedSourceFiles, + updatedFileNames: updatedFileNames, diagnostics: diagnostics, }, libraryDescriptions, - updatedSourceFiles, eventHandler ); - diagnosticFixResp = repairedResponse.repairResponse; + updatedSourceFiles = repairedResponse.sourceFiles; + updatedFileNames = repairedResponse.updatedFileNames; diagnostics = repairedResponse.diagnostics; repair_attempt++; } + // Generate final code blocks from repaired source files + const finalCodeSegment = getCodeBlocks(updatedSourceFiles, updatedFileNames); + // Update the final assistant response with the final code blocks - assistantResponse = assistantResponse.replace(tempCodeSegment, diagnosticFixResp); + assistantResponse = assistantResponse.replace(tempCodeSegment, finalCodeSegment); console.log("Final Diagnostics ", diagnostics); codeGenStart = false; @@ -271,7 +277,7 @@ export async function generateCodeCore(params: GenerateCodeRequest, eventHandler } } -function getCodeBlocks(updatedSourceFiles: SourceFiles[], updatedFileNames: string[]) { +function getCodeBlocks(updatedSourceFiles: SourceFile[], updatedFileNames: string[]) { const codeBlocks: string[] = []; for (const fileName of updatedFileNames) { @@ -301,12 +307,14 @@ export async function generateCode(params: GenerateCodeRequest): Promise { } } -function getSystemPromptPrefix(sourceFiles: SourceFiles[], op: OperationType): string { +function getSystemPromptPrefix(projects: ProjectSource[], op: OperationType): string { const basePrompt = `You are an expert assistant specializing in Ballerina code generation. Your should ONLY answer Ballerina related queries.`; if (op === "CODE_FOR_USER_REQUIREMENT") { + const sourceFiles = flattenProjectToFiles(projects); return getRequirementAnalysisCodeGenPrefix(extractResourceDocumentContent(sourceFiles)); } else if (op === "TESTS_FOR_USER_REQUIREMENT") { + const sourceFiles = flattenProjectToFiles(projects); return getRequirementAnalysisTestGenPrefix(extractResourceDocumentContent(sourceFiles)); } return basePrompt; @@ -381,22 +389,13 @@ Once the explanation is finished, make the necessary File modifications. Avoid a function getUserPrompt( usecase: string, - existingCode: SourceFiles[], + projects: ProjectSource[], fileUploadContents: FileAttatchment[], packageName: string, op: OperationType ): string { - let fileInstructions = ""; - if (fileUploadContents.length > 0) { - fileInstructions = `4. File Upload Contents. : Contents of the file which the user uploaded as additional information for the query. - -${fileUploadContents - .map( - (file) => `File Name: ${file.fileName} -Content: ${file.content}` - ) - .join("\n")}`; - } + const fileInstructions = formatFileUploadContents(fileUploadContents); + const packageContext = buildPackageContext(projects, packageName); return `QUERY: The query you need to answer. @@ -405,10 +404,10 @@ ${usecase} Existing Code: Users existing code. -${stringifyExistingCode(existingCode, op)} +${stringifyExistingCode(projects, op)} -Current Package name: ${packageName} +${packageContext} ${fileInstructions} @@ -419,6 +418,12 @@ export async function triggerGeneratedCodeRepair(params: RepairParams): Promise< // add null as the command since this is a repair operation is not a command const eventHandler = createWebviewEventHandler(undefined); try { + // Parse sourceFiles from assistantResponse XML if provided + if (params.assistantResponse && !params.sourceFiles) { + params.sourceFiles = parseSourceFilesFromXML(params.assistantResponse); + params.updatedFileNames = params.sourceFiles.map(file => file.filePath); + } + // Fetch all libraries for tool description const allLibraries = await getAllLibraries(GenerationType.CODE_GENERATION); const libraryDescriptions = @@ -440,8 +445,10 @@ export async function repairCodeCore( eventHandler: CopilotEventHandler ): Promise { eventHandler({ type: "start" }); - const resp = await repairCode(params, libraryDescriptions, [], eventHandler); - eventHandler({ type: "content_replace", content: resp.repairResponse }); + const resp = await repairCode(params, libraryDescriptions, eventHandler); + // Convert repaired sourceFiles to XML format for display + const repairedCodeBlocks = getCodeBlocks(resp.sourceFiles, resp.updatedFileNames); + eventHandler({ type: "content_replace", content: repairedCodeBlocks }); console.log("Manual Repair Diagnostics left: ", resp.diagnostics); eventHandler({ type: "diagnostics", diagnostics: resp.diagnostics }); eventHandler({ type: "stop", command: undefined }); @@ -451,14 +458,16 @@ export async function repairCodeCore( export async function repairCode( params: RepairParams, libraryDescriptions: string, - sourceFiles: SourceFiles[] = [], eventHandler?: CopilotEventHandler ): Promise { + // Convert current sourceFiles to XML format for assistant message + const assistantResponse = getCodeBlocks(params.sourceFiles, params.updatedFileNames); + const allMessages: ModelMessage[] = [ ...params.previousMessages, { role: "assistant", - content: params.assistantResponse, + content: assistantResponse, }, { role: "user", @@ -469,9 +478,8 @@ export async function repairCode( }, ]; - let updatedSourceFiles: SourceFiles[] = - sourceFiles.length == 0 ? getProjectFromResponse(params.assistantResponse).sourceFiles : sourceFiles; - let updatedFileNames: string[] = []; + let updatedSourceFiles: SourceFile[] = [...params.sourceFiles]; + let updatedFileNames: string[] = [...params.updatedFileNames]; const tools = { LibraryProviderTool: getLibraryProviderTool(libraryDescriptions, GenerationType.CODE_GENERATION), @@ -505,31 +513,45 @@ export async function repairCode( }, }); } - const updatedCodeBlocks = getCodeBlocks(updatedSourceFiles, updatedFileNames); - // replace original response with new code blocks - let diagnosticFixResp = replaceCodeBlocks(params.assistantResponse, updatedCodeBlocks); + const postProcessResp: PostProcessResponse = await postProcess({ - assistant_response: diagnosticFixResp, + sourceFiles: updatedSourceFiles, + updatedFileNames: updatedFileNames, }); - diagnosticFixResp = postProcessResp.assistant_response; console.log("After auto repair, Diagnostics : ", postProcessResp.diagnostics.diagnostics); - return { repairResponse: diagnosticFixResp, diagnostics: postProcessResp.diagnostics.diagnostics }; + return { + sourceFiles: postProcessResp.sourceFiles, + updatedFileNames: updatedFileNames, + diagnostics: postProcessResp.diagnostics.diagnostics + }; } -export function stringifyExistingCode(existingCode: SourceFiles[], op: OperationType): string { - let existingCodeStr = ""; - for (const file of existingCode) { - const filePath = file.filePath; - if (op !== "CODE_GENERATION" && !filePath.endsWith(".bal")) { - continue; - } +/** + * Formats a file as XML with filename and optional external package attribute. + */ +function formatFileAsXml(filePath: string, content: string, externalAttr: string): string { + return ` + +${content} + +`; +} - existingCodeStr += `\n`; - existingCodeStr += `\n${file.content}\n\n`; - existingCodeStr += `\n`; - } - return existingCodeStr; +export function stringifyExistingCode(projects: ProjectSource[], op: OperationType): string { + const usePackagePrefix = projects.length > 1; + const fileFilter = (filePath: string) => + op === "CODE_GENERATION" || filePath.endsWith(".bal"); + + const files = buildFilePaths(projects, fileFilter); + + return files.map(({ filePath, content, packageName, isActive }) => { + const externalAttr = (usePackagePrefix && packageName && !isActive) + ? ` externalPackageName="${packageName}"` + : ""; + + return formatFileAsXml(filePath, content, externalAttr); + }).join("\n"); } export function hasCodeBlocks(text: string) { diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/context_api.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/context_api.ts index 0f8a331f16a..14cf1183c78 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/context_api.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/context_api.ts @@ -17,111 +17,32 @@ import { generateText, ModelMessage } from "ai"; import { getAnthropicClient, ANTHROPIC_SONNET_4 } from "../connection"; import { AIPanelAbortController } from "../../../../../src/rpc-managers/ai-panel/utils"; +import { ContentPart, DataMapperRequest, DataMapperResponse, FileData, FileTypeHandler, ProcessType } from "./types"; -// Types -export type FileData = { - fileName: string; - content: string; -}; - -export type ProcessType = "mapping_instruction" | "records" | "requirements"; - -export type DataMapperRequest = { - file?: FileData; - text?: string; - processType: ProcessType; - isRequirementAnalysis?: boolean; //TODO: Why is this -}; - -export type DataMapperResponse = { - fileContent: string; -}; - -export type SupportedFileExtension = "pdf" | "jpg" | "jpeg" | "png" | "txt"; // Maybe have better names and types? export async function processDataMapperInput(request: DataMapperRequest): Promise { - if (request.file) { - return await processFile(request.file, request.processType, request.isRequirementAnalysis); + if (request.files.length > 0) { + return await processFiles(request.files, request.processType, request.isRequirementAnalysis); } else if (request.text) { - const message = await processText(request.text, request.processType); - const fileContent = request.isRequirementAnalysis - ? message - : extractBallerinaCode(message, request.processType); - return { fileContent }; + return await processFiles([{ fileName: 'text', content: btoa(request.text) }], request.processType, request.isRequirementAnalysis); } else { - throw new Error("No file or text provided. Please provide file data or text input."); + throw new Error("No files or text provided. Please provide file data or text input."); } } -// Process file data -async function processFile(file: FileData, processType: ProcessType, isRequirementAnalysis: boolean = false): Promise { - let message: string; - - const extension = getFileExtension(file.fileName); - +// Process files (single or multiple) +async function processFiles(files: FileData[], processType: ProcessType, isRequirementAnalysis: boolean = false): Promise { try { - //TODO: I think we should handle supported files from one place. - if (extension === "pdf") { - message = await processPdf(file.content, processType); - } else if (extension === "jpeg" || extension === "jpg" || extension === "png") { - message = await processImage(file.content, processType, extension); - } else if (extension === "txt" || extension === "csv" || !extension) { - const txtContent = atob(file.content); - message = await processText(txtContent, processType); - } else { - throw new Error(`Unsupported file type: ${extension}`); - } + const message = await processFilesWithClaude(files, processType); - const fileContent = isRequirementAnalysis + const fileContent = isRequirementAnalysis ? getRequirementsContent(message) : extractBallerinaCode(message, processType); return { fileContent }; } catch (error) { - throw new Error(`Error processing file: ${error instanceof Error ? error.message : String(error)}`); - } -} - -// Process PDF content -async function processPdf(base64Content: string, processType: ProcessType): Promise { - try { - return await extractionUsingClaude({ - pdfData: base64Content, - processType - }); - } catch (error) { - throw new Error(`PDF processing error: ${error instanceof Error ? error.message : String(error)}`); - } -} - -// Process image content -async function processImage(base64Content: string, processType: ProcessType, extension: string): Promise { - // Only process actual image extensions - if (extension !== "jpeg" && extension !== "jpg" && extension !== "png") { - throw new Error(`Unsupported image extension: ${extension}`); - } - - try { - return await imageExtractionUsingClaude({ - imgData: base64Content, - processType, - extension - }); - } catch (error) { - throw new Error(`Image processing error: ${error instanceof Error ? error.message : String(error)}`); - } -} - -// Process text content -async function processText(text: string, processType: ProcessType): Promise { - try { - return await textExtractionUsingClaude({ - textContent: text, - processType - }); - } catch (error) { - throw new Error(`Error processing text: ${error instanceof Error ? error.message : String(error)}`); + throw new Error(`Error processing ${files.length === 1 ? 'file' : 'files'}: ${error instanceof Error ? error.message : String(error)}`); } } @@ -158,12 +79,73 @@ function getRequirementsContent(message: any): string { return String(message); } +// Supported file types configuration +const SUPPORTED_FILE_TYPES: Record = { + pdf: (file: FileData) => ({ + type: "file", + data: file.content, + mediaType: "application/pdf" + }), + jpeg: (file: FileData) => ({ + type: "image", + image: file.content, + mediaType: "image/jpeg" + }), + jpg: (file: FileData) => ({ + type: "image", + image: file.content, + mediaType: "image/jpeg" + }), + png: (file: FileData) => ({ + type: "image", + image: file.content, + mediaType: "image/png" + }), + txt: (file: FileData, includeFileName: boolean) => { + const txtContent = atob(file.content); + return { + type: "text", + text: includeFileName ? `File: ${file.fileName}\n\n${txtContent}` : txtContent + }; + }, + csv: (file: FileData, includeFileName: boolean) => { + const txtContent = atob(file.content); + return { + type: "text", + text: includeFileName ? `File: ${file.fileName}\n\n${txtContent}` : txtContent + }; + } +}; + // Get file extension from filename function getFileExtension(fileName: string): string { const extension = fileName.toLowerCase().split('.').pop(); return extension || ""; } +// Convert file to content part for Claude API +function convertFileToContentPart(file: FileData, includeFileName: boolean = false): ContentPart { + const extension = getFileExtension(file.fileName); + + const handler = SUPPORTED_FILE_TYPES[extension]; + + if (handler) { + return handler(file, includeFileName); + } + + // Fallback for files without extension + if (!extension) { + const txtContent = atob(file.content); + return { + type: "text", + text: includeFileName ? `File: ${file.fileName}\n\n${txtContent}` : txtContent + }; + } + + const supportedTypes = Object.keys(SUPPORTED_FILE_TYPES).join(', '); + throw new Error(`Unsupported file type: ${extension}. Supported types are: ${supportedTypes}`); +} + // Prompt generation functions function getMappingInstructionPrompt(): string { return `You are an AI assistant specialized in generating data field mappings for data integration and transformation tasks. @@ -256,96 +238,48 @@ Generate only Ballerina code with in tags based on the provided } function getRecordsPrompt(): string { - return `You are an AI assistant specializing in the Ballerina programming language. -Your task is to analyze given content and create Ballerina code for type records based on the content provided. - -IMPORTANT: - - Do not take any assumptions based on data types or records. - - Do not include any comments in the code - - Final output has only Ballerina code within tags. - - Extract as much as all possible records and fields - -Please follow these steps to create the Ballerina code: - - 1. Analyze the content: - a) If it is an image, Input records appear on the left side of the image, and output records appear on the right side. - b) All subfields of nested fields or subfields should be structured hierarchically, expanding downwards recursively within their respective parent fields. This hierarchy should reflect nested relationships. - c) Must extract all records and their all fields and their data types in the content. - d) Using and refer to all links or hyperlinks that provide additional information about records and data types in the content. - e) Quote and number specific parts of the content that mention record types and data types. - f) List all record types mentioned in the content, numbering them (e.g., 1. RecordType1, 2. RecordType2, ...). - g) For each record type, list it's all fields and their exact data types as mentioned in the content, also numbering them (e.g., 1.1 field1: SI, 1.2 field2: int, ... ). - h) Identify any nested structures and explain how they relate to the main records. - i) Summarize and use relevant comments or conditions or additional information about the records or data types in the content. - - 2. Define the record types: - Based on your analysis: - - Create a type record for each identified record with its sub-fields - - Consider all records and fields with optional and nullable feature - - Use only the exact data types you identified in step 1 for each field and record - - Apply these naming conventions: PascalCase for record names, camelCase for field names - - For nested fields, create recursive record types, stopping at simple data types - -After your analysis, provide the Ballerina code within tags. The code should include: - - Type record definitions for all identified records with its all fields - -Example output structure (generic, without specific content): - - -type RecordName1 record { - FieldDataType1 fieldName1; - FieldDataType2 fieldName2; - }; - -type RecordName2 record { - FieldDataType3 fieldName3; - RecordName1 nestedField; -}; + return `You are an AI assistant specializing in the Ballerina programming language. Your task is to analyze provided content and generate comprehensive Ballerina type record definitions based on all the information present in that content. -type RecordName3 record { - FieldDataType4 fieldName4; - RecordName4 nestedField; -}; - +Your goal is to extract every possible record type and field from this content and convert them into proper Ballerina type record definitions. You must capture all the information mentioned - leave nothing out. -Sample example for the required format: +## Code Generation Requirements -type Person record { - int? id?; - string firstName; - string? lastName; - int? age; - string country?; - College? college?; -}; +Generate Ballerina code that includes: -type College record { - Course[] courses; -}; +- Type record definitions for ALL identified records with ALL their fields +- Proper handling of optional (\`?\`) and nullable features - but ONLY when explicitly mentioned as optional or nullable in the content +- Correct Ballerina naming conventions +- No comments in the generated code +- No assumptions beyond what's explicitly stated in the content -type Course record { - string? id?; - decimal credits?; - Address? address; -}; +## Enum Declaration Format -type Student record { - string id; - string firstName; - float? age; - record { - int id; - float credits?; - Address address; - }[] courses; -}; +When you encounter enumerated types, use this specific syntax: -type A record { - Person[] person; +\`\`\`ballerina +enum EnumName { + VALUE1, + VALUE2, + VALUE3 }; +\`\`\` + +## Output Format + +Present your final code within \`\` tags. Structure your code as follows: + +- Place all enum definitions first +- Follow with type record definitions +- Use proper Ballerina syntax throughout -type B record { - Student[] student?; +Example structure (generic structure only): + +type Person record { + int? id?; + string firstName; + string? lastName; + int? age; + Address? address?; }; type Address record { @@ -354,7 +288,14 @@ type Address record { string? zipcode; }; -Generate only Ballerina code with in tags based on the provided content.`; +enum Gender { + MALE, + FEMALE, + OTHER +}; + +Generate only Ballerina code with in tags based on the provided content. +`; } function getRequirementsPrompt(): string { @@ -403,93 +344,28 @@ function getPromptForProcessType(processType: ProcessType): string { } } -// Claude API integration functions -async function extractionUsingClaude({ pdfData, processType }: { pdfData: string; processType: ProcessType }): Promise { +// Process files with Claude (handles both single and multiple files) +async function processFilesWithClaude(files: FileData[], processType: ProcessType): Promise { const promptText = getPromptForProcessType(processType); - - const messages: ModelMessage[] = [ - { - role: "user", - content: [ - { - type: "file", - data: pdfData, - mediaType: "application/pdf" - }, - { - type: "text", - text: promptText - } - ] - } - ]; - const { text } = await generateText({ - model: await getAnthropicClient(ANTHROPIC_SONNET_4), - maxOutputTokens: 8192, - temperature: 0, - messages: messages, - abortSignal: AIPanelAbortController.getInstance().signal - }); - - return text; -} + // Build content array with all files + const contentParts: Array = []; + const includeFileName = files.length > 1; -async function imageExtractionUsingClaude({ - imgData, - processType, - extension -}: { - imgData: string; - processType: ProcessType; - extension: string; -}): Promise { - const promptText = getPromptForProcessType(processType); - - // Convert extension to proper media type - const mimeType = extension === "png" ? "image/png" : "image/jpeg"; - - const messages: ModelMessage[] = [ - { - role: "user", - content: [ - { - type: "image", - image: imgData, - mediaType: mimeType - }, - { - type: "text", - text: promptText - } - ] - } - ]; + for (const file of files) { + contentParts.push(convertFileToContentPart(file, includeFileName)); + } - const { text } = await generateText({ - model: await getAnthropicClient(ANTHROPIC_SONNET_4), - maxOutputTokens: 8192, - temperature: 0, - messages: messages, - abortSignal: AIPanelAbortController.getInstance().signal + // Add the prompt at the end + contentParts.push({ + type: "text", + text: promptText }); - return text; -} - -async function textExtractionUsingClaude({ - textContent, - processType -}: { - textContent: string; - processType: ProcessType; -}): Promise { - const promptText = getPromptForProcessType(processType); - const messages: ModelMessage[] = [ { role: "user", - content: promptText + "\n\n" + textContent + content: contentParts } ]; @@ -505,21 +381,21 @@ async function textExtractionUsingClaude({ } // Utility functions for specific use cases -export async function generateMappingInstruction(input: { file?: FileData; text?: string }): Promise { +export async function generateMappingInstruction(input: { files: FileData[]; text?: string }): Promise { return await processDataMapperInput({ ...input, processType: "mapping_instruction" }); } -export async function generateRecord(input: { file?: FileData; text?: string }): Promise { +export async function generateRecord(input: { files: FileData[]; text?: string }): Promise { return await processDataMapperInput({ ...input, processType: "records" }); } -export async function extractRequirements(input: { file?: FileData; text?: string }): Promise { +export async function extractRequirements(input: { files: FileData[]; text?: string }): Promise { return await processDataMapperInput({ ...input, processType: "requirements", diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/dataMappingPrompt.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/dataMappingPrompt.ts index 295ff57b038..cd472c44060 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/dataMappingPrompt.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/dataMappingPrompt.ts @@ -17,7 +17,7 @@ /** * Generates the main data mapping prompt for AI */ -export function getDataMappingPrompt(DM_MODEL: string, userMappings: string, mappingTips: string): string { +export function getDataMappingPrompt(DM_MODEL: string, userMappings: string, mappingTips: string, subMappings: string): string { return `You are a specialized code generation assistant for the Ballerina programming language. Your task is to generate syntactically correct Ballerina expressions that transform input data fields into output data fields based on provided specifications. Here is the data model schema that defines the structure and types: @@ -26,6 +26,9 @@ ${DM_MODEL} **User-Defined Mappings:** ${userMappings} +**Sub-Mappings (nested mappings or additional mapping context):** +${subMappings} + **Mapping Context (These are mapping tips with HIGHEST PRIORITY):** ${mappingTips} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/datamapper.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/datamapper.ts index 0cd3c25c370..a0a27074cd9 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/datamapper.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/datamapper.ts @@ -29,11 +29,10 @@ import { getDataMappingPrompt } from "./dataMappingPrompt"; import { getBallerinaCodeRepairPrompt } from "./codeRepairPrompt"; import { CopilotEventHandler, createWebviewEventHandler } from "../event"; import { getErrorMessage } from "../utils"; -import { buildMappingFileArray, buildRecordMap, collectExistingFunctions, collectModuleInfo, createTempBallerinaDir, createTempFileAndGenerateMetadata, getFunctionDefinitionFromSyntaxTree, getUniqueFunctionFilePaths, prepareMappingContext, generateInlineMappingsSource, generateTypesFromContext, extractRecordTypes, repairCodeAndGetUpdatedContent, extractImports, generateDataMapperModel, determineCustomFunctionsPath, generateMappings, getCustomFunctionsContent } from "../../dataMapping"; +import { buildMappingFileArray, buildRecordMap, collectExistingFunctions, collectModuleInfo, createTempBallerinaDir, createTempFileAndGenerateMetadata, getFunctionDefinitionFromSyntaxTree, getUniqueFunctionFilePaths, prepareMappingContext, generateInlineMappingsSource, generateTypesFromContext, repairCodeAndGetUpdatedContent, extractImports, generateDataMapperModel, determineCustomFunctionsPath, generateMappings, getCustomFunctionsContent } from "../../dataMapping"; import { BiDiagramRpcManager, getBallerinaFiles } from "../../../../../src/rpc-managers/bi-diagram/rpc-manager"; import { updateSourceCode } from "../../../../../src/utils/source-utils"; -import { getBallerinaProjectRoot } from "../../../../../src/rpc-managers/ai-panel/rpc-manager"; -import { StateMachine } from "../../../../../src/stateMachine"; +import { StateMachine } from "../../../../stateMachine"; import { extractVariableDefinitionSource, getHasStopped, setHasStopped } from "../../../../../src/rpc-managers/data-mapper/utils"; import { commands, Uri, window } from "vscode"; import { CLOSE_AI_PANEL_COMMAND, OPEN_AI_PANEL_COMMAND } from "../../constants"; @@ -62,6 +61,7 @@ async function generateAIPoweredDataMappings(dataMapperModelResponse: DataMapper const mappingsModel = dataMapperModelResponse.mappingsModel as DMModel; const existingMappings = mappingsModel.mappings; const userProvidedMappingHints = mappingsModel.mapping_fields || {}; + const existingSubMappings = mappingsModel.subMappings as Mapping[] || []; if (!mappingsModel.inputs || !mappingsModel.output) { throw new Error("Mappings model must contain both inputs and output fields"); @@ -77,7 +77,8 @@ async function generateAIPoweredDataMappings(dataMapperModelResponse: DataMapper const aiGeneratedMappings = await generateAIMappings( dataModelStructure, existingMappings, - userProvidedMappingHints + userProvidedMappingHints, + existingSubMappings ); if (Object.keys(aiGeneratedMappings).length === 0) { @@ -99,7 +100,8 @@ async function generateAIPoweredDataMappings(dataMapperModelResponse: DataMapper async function generateAIMappings( dataModelStructure: DataModelStructure, existingUserMappings: Mapping[], - userProvidedMappingHints: { [key: string]: MappingFields } + userProvidedMappingHints: { [key: string]: MappingFields }, + existingSubMappings: Mapping[] ): Promise { if (!dataModelStructure.inputs || !dataModelStructure.output) { throw new Error("Data model structure must contain inputs and output"); @@ -109,7 +111,8 @@ async function generateAIMappings( const aiPrompt = getDataMappingPrompt( JSON.stringify(dataModelStructure), JSON.stringify(existingUserMappings || []), - JSON.stringify(userProvidedMappingHints || {}) + JSON.stringify(userProvidedMappingHints || {}), + JSON.stringify(existingSubMappings || []) ); const chatMessages: ModelMessage[] = [ @@ -257,7 +260,7 @@ export async function generateMappingCodeCore(mappingRequest: ProcessMappingPara const biDiagramRpcManager = new BiDiagramRpcManager(); const langClient = StateMachine.langClient(); const context = StateMachine.context(); - const projectRoot = await getBallerinaProjectRoot(); + const projectRoot = context.projectPath; const targetFunctionName = mappingRequest.parameters.functionName; @@ -338,15 +341,24 @@ export async function generateMappingCodeCore(mappingRequest: ProcessMappingPara const sourceCodeResponse = await getAllDataMapperSource(allMappingsRequest); - await updateSourceCode({ textEdits: sourceCodeResponse.textEdits }); - await new Promise((resolve) => setTimeout(resolve, 500)); + await updateSourceCode({ textEdits: sourceCodeResponse.textEdits, skipPayloadCheck: true }); + await new Promise((resolve) => setTimeout(resolve, 100)); let customFunctionsTargetPath: string; let customFunctionsFileName: string; - + if (allMappingsRequest.customFunctionsFilePath) { - customFunctionsTargetPath = determineCustomFunctionsPath(projectRoot, currentActiveFile); - customFunctionsFileName = path.basename(customFunctionsTargetPath); + const absoluteCustomFunctionsPath = determineCustomFunctionsPath(projectRoot, currentActiveFile); + customFunctionsFileName = path.basename(absoluteCustomFunctionsPath); + + // For workspace projects, make path relative to workspace root + const workspacePath = context.workspacePath; + if (workspacePath) { + customFunctionsTargetPath = path.relative(workspacePath, absoluteCustomFunctionsPath); + } else { + // Normal project: use relative path from project root + customFunctionsTargetPath = path.relative(projectRoot, absoluteCustomFunctionsPath); + } } // Check if mappings file and custom functions file are the same @@ -392,7 +404,15 @@ export async function generateMappingCodeCore(mappingRequest: ProcessMappingPara ); await new Promise((resolve) => setTimeout(resolve, 200)); - let targetFilePath = path.join(projectRoot, mappingContext.filePath); + // For workspace projects, compute relative file path from workspace root + const workspacePath = context.workspacePath; + let targetFilePath = mappingContext.filePath; + + if (workspacePath) { + // Workspace project: need to include package path prefix (e.g., "foo/mappings.bal") + const absoluteFilePath = path.join(projectRoot, mappingContext.filePath); + targetFilePath = path.relative(workspacePath, absoluteFilePath); + } const generatedSourceFiles = buildMappingFileArray( targetFilePath, @@ -413,12 +433,12 @@ export async function generateMappingCodeCore(mappingRequest: ProcessMappingPara if (isSameFile) { const mergedContent = `${generatedFunctionDefinition.source}\n${customContent}`; - assistantResponse += `\n\`\`\`ballerina\n${mergedContent}\n\`\`\`\n`; + assistantResponse += `\n\`\`\`ballerina\n${mergedContent}\n\`\`\`\n`; } else { - assistantResponse += `\n\`\`\`ballerina\n${generatedFunctionDefinition.source}\n\`\`\`\n`; + assistantResponse += `\n\`\`\`ballerina\n${generatedFunctionDefinition.source}\n\`\`\`\n`; if (codeRepairResult.customFunctionsContent) { - assistantResponse += `\n\`\`\`ballerina\n${codeRepairResult.customFunctionsContent}\n\`\`\`\n`; + assistantResponse += `\n\`\`\`ballerina\n${codeRepairResult.customFunctionsContent}\n\`\`\`\n`; } } @@ -440,9 +460,9 @@ export async function generateMappingCode(mappingRequest: ProcessMappingParamete } async function collectAllImportsFromProject(): Promise { - const projectUri = StateMachine.context().projectUri; + const projectPath = StateMachine.context().projectPath; - const ballerinaSourceFiles = await getBallerinaFiles(Uri.file(projectUri).fsPath); + const ballerinaSourceFiles = await getBallerinaFiles(Uri.file(projectPath).fsPath); const importStatements: ImportStatements[] = []; @@ -454,7 +474,7 @@ async function collectAllImportsFromProject(): Promise { } return { - projectPath: projectUri, + projectPath: projectPath, imports: importStatements, }; } @@ -637,20 +657,29 @@ export async function generateInlineMappingCodeCore(inlineMappingRequest: Metada const langClient = StateMachine.langClient(); const context = StateMachine.context(); - const projectRoot = await getBallerinaProjectRoot(); + const projectRoot = context.projectPath; const inlineMappingsResult: InlineMappingsSourceResult = await generateInlineMappingsSource(inlineMappingRequest, langClient, context); - await updateSourceCode({ textEdits: inlineMappingsResult.sourceResponse.textEdits }); + await updateSourceCode({ textEdits: inlineMappingsResult.sourceResponse.textEdits, skipPayloadCheck: true }); await new Promise((resolve) => setTimeout(resolve, 100)); let customFunctionsTargetPath: string | undefined; let customFunctionsFileName: string | undefined; - + if (inlineMappingsResult.allMappingsRequest.customFunctionsFilePath) { - customFunctionsTargetPath = determineCustomFunctionsPath(projectRoot, targetFileName); - customFunctionsFileName = path.basename(customFunctionsTargetPath); + const absoluteCustomFunctionsPath = determineCustomFunctionsPath(projectRoot, targetFileName); + customFunctionsFileName = path.basename(absoluteCustomFunctionsPath); + + // For workspace projects, make path relative to workspace root + const workspacePath = context.workspacePath; + if (workspacePath) { + customFunctionsTargetPath = path.relative(workspacePath, absoluteCustomFunctionsPath); + } else { + // Normal project: use relative path from project root + customFunctionsTargetPath = path.relative(projectRoot, absoluteCustomFunctionsPath); + } } // Check if mappings file and custom functions file are the same @@ -688,8 +717,17 @@ export async function generateInlineMappingCodeCore(inlineMappingRequest: Metada }, langClient, projectRoot); } + // For workspace projects, compute relative file path from workspace root + let targetFilePath = path.relative(projectRoot, context.documentUri); + const workspacePath = context.workspacePath; + + if (workspacePath) { + // Workspace project: make path relative to workspace root (e.g., "foo/mappings.bal") + targetFilePath = path.relative(workspacePath, context.documentUri); + } + const generatedSourceFiles = buildMappingFileArray( - context.documentUri, + targetFilePath, codeRepairResult.finalContent, customFunctionsTargetPath, codeRepairResult.customFunctionsContent, @@ -715,12 +753,12 @@ export async function generateInlineMappingCodeCore(inlineMappingRequest: Metada if (isSameFile) { const mergedCodeDisplay = customContent ? `${codeToDisplay}\n${customContent}` : codeToDisplay; - assistantResponse += `\n\`\`\`ballerina\n${mergedCodeDisplay}\n\`\`\`\n`; + assistantResponse += `\n\`\`\`ballerina\n${mergedCodeDisplay}\n\`\`\`\n`; } else { - assistantResponse += `\n\`\`\`ballerina\n${codeToDisplay}\n\`\`\`\n`; + assistantResponse += `\n\`\`\`ballerina\n${codeToDisplay}\n\`\`\`\n`; if (codeRepairResult.customFunctionsContent) { - assistantResponse += `\n\`\`\`ballerina\n${codeRepairResult.customFunctionsContent}\n\`\`\`\n`; + assistantResponse += `\n\`\`\`ballerina\n${codeRepairResult.customFunctionsContent}\n\`\`\`\n`; } } @@ -761,24 +799,20 @@ export async function generateContextTypesCore(typeCreationRequest: ProcessConte try { const biDiagramRpcManager = new BiDiagramRpcManager(); + const langClient = StateMachine.langClient(); const projectComponents = await biDiagramRpcManager.getProjectComponents(); - // Generate types from context - const { typesCode, filePath, recordMap } = await generateTypesFromContext( + // Generate types from context with validation + const { typesCode, filePath } = await generateTypesFromContext( typeCreationRequest.attachments, - projectComponents + projectComponents, + langClient ); - const extractedNewRecords = extractRecordTypes(typesCode); - for (const newRecord of extractedNewRecords) { - if (recordMap.has(newRecord.name)) { - throw new Error(`Record "${newRecord.name}" already exists in the workspace.`); - } - } - // Build assistant response - const sourceAttachmentName = typeCreationRequest.attachments?.[0]?.name || "attachment"; - assistantResponse = `Record types generated from the ${sourceAttachmentName} file shown below.\n`; + const sourceAttachmentNames = typeCreationRequest.attachments?.map(a => a.name).join(", ") || "attachment"; + const fileText = typeCreationRequest.attachments?.length === 1 ? "file" : "files"; + assistantResponse = `Record types generated from the ${sourceAttachmentNames} ${fileText} shown below.\n`; assistantResponse += `\n\`\`\`ballerina\n${typesCode}\n\`\`\`\n`; // Send assistant response through event handler diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/types.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/types.ts index 34c28c33ed3..830839612a8 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/types.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/types.ts @@ -87,3 +87,35 @@ export interface ChatResponse { total_tokens: number; }; } + +// ============================================================================= +// CONTEXT API CONTENT TYPES +// ============================================================================= + +export type FileData = { + fileName: string; + content: string; +}; + +export type ContentPart = { + type: "file" | "image" | "text"; + data?: string; + image?: string; + text?: string; + mediaType?: string; +}; + +export type FileTypeHandler = (file: FileData, includeFileName: boolean) => ContentPart; + +export type ProcessType = "mapping_instruction" | "records" | "requirements"; + +export type DataMapperRequest = { + files: FileData[]; + text?: string; + processType: ProcessType; + isRequirementAnalysis?: boolean; //TODO: Why is this +}; + +export type DataMapperResponse = { + fileContent: string; +}; diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/documentation/doc_generator.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/documentation/doc_generator.ts index 3cd3b3dd1a3..6e4c132b016 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/service/documentation/doc_generator.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/documentation/doc_generator.ts @@ -18,24 +18,24 @@ import { DocGenerationRequest } from '@wso2/ballerina-core'; import { getServiceDeclaration } from '../../testGenerator'; -import { getBallerinaProjectRoot } from '../../../../rpc-managers/ai-panel/rpc-manager'; import { generateDocumentation, DocumentationGenerationRequest } from './documentation'; import { getProjectSource, getOpenAPISpecification } from '../../utils'; +import { getCurrentProjectRoot } from '../../../../utils/project-utils'; // Main documentation generator function that handles all the logic export async function generateDocumentationForService(params: DocGenerationRequest): Promise { try { // Get the project root - const projectRoot = await getBallerinaProjectRoot(); + const projectPath = await getCurrentProjectRoot(); // Get the project source files - const projectSource = await getProjectSource(projectRoot); + const projectSource = await getProjectSource(projectPath); if (!projectSource) { throw new Error("The current project is not recognized as a valid Ballerina project. Please ensure you have opened a Ballerina project."); } // Find the service declaration and get OpenAPI spec - const { serviceDocFilePath } = await getServiceDeclaration(projectRoot, params.serviceName); + const { serviceDocFilePath } = await getServiceDeclaration(projectPath, params.serviceName); const openApiSpec = await getOpenAPISpecification(serviceDocFilePath); // Create the documentation generation request diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/healthcare/healthcare.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/healthcare/healthcare.ts index 5201e543d7f..94a4e6b0afa 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/service/healthcare/healthcare.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/healthcare/healthcare.ts @@ -17,7 +17,7 @@ import { ModelMessage, generateObject, streamText } from "ai"; import { getAnthropicClient, ANTHROPIC_HAIKU, ANTHROPIC_SONNET_4, getProviderCacheControl } from "../connection"; import { GenerationType, getRelevantLibrariesAndFunctions } from "../libs/libs"; -import { getRewrittenPrompt, populateHistory, transformProjectSource, getErrorMessage } from "../utils"; +import { getRewrittenPrompt, populateHistory, flattenProjectToFiles, getErrorMessage, buildPackageContext, formatFileUploadContents } from "../utils"; import { libraryContains } from "../libs/funcs"; import { LANGLIBS } from "../libs/langlibs"; import { @@ -33,7 +33,7 @@ import { FileAttatchment, GenerateCodeRequest, ProjectSource, - SourceFiles, + SourceFile, OperationType, Command } from "@wso2/ballerina-core"; @@ -48,10 +48,10 @@ export async function generateHealthcareCodeCore( params: GenerateCodeRequest, eventHandler: CopilotEventHandler ): Promise { - const project: ProjectSource = await getProjectSource(params.operationType); - const packageName = project.projectName; - const sourceFiles: SourceFiles[] = transformProjectSource(project); - const prompt = getRewrittenPrompt(params, sourceFiles); + const projects: ProjectSource[] = await getProjectSource(params.operationType); + const activeProject = projects.find(p => p.isActive) || projects[0]; + const packageName = activeProject.projectName; + const prompt = getRewrittenPrompt(params, projects); const relevantTrimmedFuncs: Library[] = ( await getRelevantLibrariesAndFunctions({ query: prompt }, GenerationType.HEALTHCARE_GENERATION) ).libraries; @@ -62,7 +62,7 @@ export async function generateHealthcareCodeCore( const allMessages: ModelMessage[] = [ { role: "system", - content: getSystemPromptPrefix(relevantTrimmedFuncs, sourceFiles), + content: getSystemPromptPrefix(relevantTrimmedFuncs), }, { role: "system", @@ -72,7 +72,7 @@ export async function generateHealthcareCodeCore( ...historyMessages, { role: "user", - content: getUserPrompt(prompt, sourceFiles, params.fileAttachmentContents, packageName, params.operationType), + content: getUserPrompt(prompt, projects, params.fileAttachmentContents, packageName, params.operationType), providerOptions: cacheOptions, }, ]; @@ -126,7 +126,7 @@ export async function generateHealthcareCode(params: GenerateCodeRequest): Promi } } -export function getSystemPromptPrefix(apidocs: Library[], sourceFiles: SourceFiles[]): string { +export function getSystemPromptPrefix(apidocs: Library[]): string { return `You are an expert assistant who specializes in writing Ballerina code for healthcare integrations. Your goal is to ONLY answer Ballerina related queries. You should always answer with accurate and functional Ballerina code that addresses the specified query while adhering to the constraints of the given API documentation. You will be provided with following inputs: @@ -256,22 +256,13 @@ Example Codeblock segments: function getUserPrompt( usecase: string, - existingCode: SourceFiles[], + projects: ProjectSource[], fileUploadContents: FileAttatchment[], packageName: string, op: OperationType ): string { - let fileInstructions = ""; - if (fileUploadContents.length > 0) { - fileInstructions = `4. File Upload Contents. : Contents of the file which the user uploaded as addtional information for the query. - -${fileUploadContents - .map( - (file) => `File Name: ${file.fileName} -Content: ${file.content}` - ) - .join("\n")}`; - } + const fileInstructions = formatFileUploadContents(fileUploadContents); + const packageContext = buildPackageContext(projects, packageName); return `QUERY: The query you need to answer using the provided api documentation. @@ -280,10 +271,10 @@ ${usecase} Existing Code: Users existing code. -${stringifyExistingCode(existingCode, op)} +${stringifyExistingCode(projects, op)} -Current Package name: ${packageName} +${packageContext} ${fileInstructions} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/text_editor_tool.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/text_editor_tool.ts index 18e7085f29c..6c03012b853 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/text_editor_tool.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/text_editor_tool.ts @@ -14,7 +14,7 @@ // specific language governing permissions and limitations // under the License. -import { SourceFile, SourceFiles } from "@wso2/ballerina-core"; +import { SourceFile } from "@wso2/ballerina-core"; import { tool } from 'ai'; import { z } from 'zod'; @@ -305,10 +305,14 @@ export function createEditExecute(files: SourceFile[], updatedFileNames: string[ // Perform replacement let newContent: string; - if (replace_all) { - newContent = content.replaceAll(old_string, new_string); + if (content.trim() === "" && old_string.trim() === "") { + newContent = new_string; } else { - newContent = content.replace(old_string, new_string); + if (replace_all) { + newContent = content.replaceAll(old_string, new_string); + } else { + newContent = content.replace(old_string, new_string); + } } updateOrCreateFile(files, file_path, newContent); @@ -400,10 +404,14 @@ export function createMultiEditExecute(files: SourceFile[], updatedFileNames: st } // Apply the edit to simulate the sequence - if (edit.replace_all) { - content = content.replaceAll(edit.old_string, edit.new_string); + if (content.trim() === "" && edit.old_string.trim() === "") { + content = edit.new_string; } else { - content = content.replace(edit.old_string, edit.new_string); + if (edit.replace_all) { + content = content.replaceAll(edit.old_string, edit.new_string); + } else { + content = content.replace(edit.old_string, edit.new_string); + } } } diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/function_tests.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/function_tests.ts index f163a14c390..eb9989c14e7 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/function_tests.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/function_tests.ts @@ -17,17 +17,18 @@ import { TestGenerationTarget, TestGeneratorIntermediaryState, Command } from "@wso2/ballerina-core"; import { getErrorMessage } from "../utils"; import { generateTest, getDiagnostics } from "../../testGenerator"; -import { getBallerinaProjectRoot } from "../../../../rpc-managers/ai-panel/rpc-manager"; import { URI } from "vscode-uri"; import * as fs from "fs"; +import * as path from "path"; import { CopilotEventHandler, createWebviewEventHandler } from "../event"; +import { getCurrentProjectRoot } from "../../../../utils/project-utils"; +import { StateMachine } from "../../../../stateMachine"; // Core function test generation that emits events export async function generateFunctionTestsCore( params: TestGeneratorIntermediaryState, eventHandler: CopilotEventHandler ): Promise { - const testPath = "tests/test.bal"; const functionIdentifier = params.resourceFunction; eventHandler({ @@ -39,8 +40,32 @@ export async function generateFunctionTestsCore( content: `\n\nGenerating tests for the function ${functionIdentifier}. This may take a moment.`, }); - const projectRoot = await getBallerinaProjectRoot(); - const response = await generateTest(projectRoot, { + let projectPath: string; + try { + projectPath = await getCurrentProjectRoot(); + } catch (error) { + console.error("Error getting current project root:", error); + eventHandler({ type: "error", content: getErrorMessage(error) }); + return; + } + + // Compute workspace-relative paths for test files (for display in UI) + const context = StateMachine.context(); + const workspacePath = context.workspacePath; + let testPathForDisplay = "tests/test.bal"; + let configPathForDisplay = "tests/Config.toml"; + + if (workspacePath) { + // Workspace project: include package path prefix (e.g., "foo/tests/test.bal") + const relativeProjectPath = path.relative(workspacePath, projectPath); + testPathForDisplay = path.join(relativeProjectPath, "tests/test.bal"); + configPathForDisplay = path.join(relativeProjectPath, "tests/Config.toml"); + } + + // Use project-relative path for file operations + const testPath = "tests/test.bal"; + + const response = await generateTest(projectPath, { targetType: TestGenerationTarget.Function, targetIdentifier: functionIdentifier, testPlan: params.testPlan, @@ -63,7 +88,7 @@ export async function generateFunctionTestsCore( ? existingSource + "\n\n// >>>>>>>>>>>>>>TEST CASES NEED TO BE FIXED <<<<<<<<<<<<<<<\n\n" + response.testSource : response.testSource; - const diagnostics = await getDiagnostics(projectRoot, { + const diagnostics = await getDiagnostics(projectPath, { testSource: generatedFullSource, }); @@ -78,7 +103,7 @@ export async function generateFunctionTestsCore( content: `\nRefining tests based on feedback to ensure accuracy and reliability.`, }); - const fixedCode = await generateTest(projectRoot, { + const fixedCode = await generateTest(projectPath, { targetType: TestGenerationTarget.Function, targetIdentifier: functionIdentifier, testPlan: params.testPlan, @@ -94,12 +119,12 @@ export async function generateFunctionTestsCore( }); eventHandler({ type: "content_block", - content: `\n\n\n\`\`\`ballerina\n${testCode}\n\`\`\`\n`, + content: `\n\n\n\`\`\`ballerina\n${testCode}\n\`\`\`\n`, }); if (testConfig) { eventHandler({ type: "content_block", - content: `\n\n\n\`\`\`ballerina\n${testConfig}\n\`\`\`\n`, + content: `\n\n\n\`\`\`ballerina\n${testConfig}\n\`\`\`\n`, }); } diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/test_plan.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/test_plan.ts index fa03e5ccebb..a4d9ffb612c 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/test_plan.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/test_plan.ts @@ -19,9 +19,11 @@ import { getAnthropicClient, ANTHROPIC_SONNET_4 } from "../connection"; import { getErrorMessage } from "../utils"; import { TestGenerationTarget, TestPlanGenerationRequest, Command } from "@wso2/ballerina-core"; import { generateTest, getDiagnostics } from "../../testGenerator"; -import { getBallerinaProjectRoot } from "../../../../rpc-managers/ai-panel/rpc-manager"; import { CopilotEventHandler, createWebviewEventHandler } from "../event"; import { AIPanelAbortController } from "../../../../../src/rpc-managers/ai-panel/utils"; +import { getCurrentProjectRoot } from "../../../../utils/project-utils"; +import { StateMachine } from "../../../../stateMachine"; +import * as path from "path"; export interface TestPlanResponse { testPlan: string; @@ -168,8 +170,29 @@ export async function generateTestPlanCore( type: "content_block", content: `\n\nGenerating tests for the ${target} service. This may take a moment.`, }); - const projectRoot = await getBallerinaProjectRoot(); - const testResp = await generateTest(projectRoot, { + let projectPath: string; + try { + projectPath = await getCurrentProjectRoot(); + } catch (error) { + console.error("Error getting current project root:", error); + eventHandler({ type: "error", content: getErrorMessage(error) }); + return; + } + + // Compute workspace-relative paths for test files + const context = StateMachine.context(); + const workspacePath = context.workspacePath; + let testPath = "tests/test.bal"; + let configPath = "tests/Config.toml"; + + if (workspacePath) { + // Workspace project: include package path prefix (e.g., "foo/tests/test.bal") + const relativeProjectPath = path.relative(workspacePath, projectPath); + testPath = path.join(relativeProjectPath, "tests/test.bal"); + configPath = path.join(relativeProjectPath, "tests/Config.toml"); + } + + const testResp = await generateTest(projectPath, { targetType: TestGenerationTarget.Service, targetIdentifier: target, testPlan: assistantResponse, @@ -178,7 +201,7 @@ export async function generateTestPlanCore( type: "content_block", content: `\nAnalyzing generated tests for potential issues.`, }); - const diagnostics = await getDiagnostics(projectRoot, testResp); + const diagnostics = await getDiagnostics(projectPath, testResp); let testCode = testResp.testSource; const testConfig = testResp.testConfig; if (diagnostics.diagnostics.length > 0) { @@ -186,7 +209,7 @@ export async function generateTestPlanCore( type: "content_block", content: `\nRefining tests based on feedback to ensure accuracy and reliability.`, }); - const fixedCode = await generateTest(projectRoot, { + const fixedCode = await generateTest(projectPath, { targetType: TestGenerationTarget.Service, targetIdentifier: target, testPlan: assistantResponse, @@ -202,12 +225,12 @@ export async function generateTestPlanCore( }); eventHandler({ type: "content_block", - content: `\n\n\n\`\`\`ballerina\n${testCode}\n\`\`\`\n`, + content: `\n\n\n\`\`\`ballerina\n${testCode}\n\`\`\`\n`, }); if (testConfig) { eventHandler({ type: "content_block", - content: `\n\n\n\`\`\`ballerina\n${testConfig}\n\`\`\`\n`, + content: `\n\n\n\`\`\`ballerina\n${testConfig}\n\`\`\`\n`, }); } eventHandler({ type: "stop", command: Command.Tests }); diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/utils.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/utils.ts index f0c451730cb..29431e50dcc 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/service/utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/utils.ts @@ -26,7 +26,6 @@ import { IntermidaryState, onChatNotify, ProjectSource, - SourceFiles, SourceFile, TestGeneratorIntermediaryState, ToolCall, @@ -35,7 +34,9 @@ import { DocumentationGeneratorIntermediaryState, PayloadContext, HttpPayloadContext, - MessageQueuePayloadContext + MessageQueuePayloadContext, + FileAttatchment, + OperationType } from "@wso2/ballerina-core"; import { ModelMessage } from "ai"; import { MessageRole } from "./types"; @@ -62,35 +63,105 @@ export function populateHistory(chatHistory: ChatEntry[]): ModelMessage[] { return messages; } -export function transformProjectSource(project: ProjectSource): SourceFiles[] { - const sourceFiles: SourceFiles[] = []; - project.sourceFiles.forEach((file) => { - sourceFiles.push({ - filePath: file.filePath, - content: file.content, - }); - }); - project.projectModules?.forEach((module) => { - let basePath = ""; - if (!module.isGenerated) { - basePath += "modules/"; - } else { - basePath += "generated/"; +/** + * Builds file paths for project files with workspace-aware prefixing. + * Returns structured data including file path, content, package name, and active status. + * + * @param projects - Array of project sources to process + * @param fileFilter - Optional filter function to include/exclude files + * @returns Array of file objects with path, content, and metadata + */ +export function buildFilePaths( + projects: ProjectSource[], + fileFilter?: (filePath: string) => boolean +): Array<{ filePath: string; content: string; packageName?: string; isActive: boolean }> { + const usePackagePrefix = projects.length > 1; + const result: Array<{ filePath: string; content: string; packageName?: string; isActive: boolean }> = []; + + for (const project of projects) { + const packagePrefix = usePackagePrefix && project.packagePath ? `${project.packagePath}/` : ""; + const packageName = project.projectName; + const isActive = project.isActive; + + // Process root files + for (const file of project.sourceFiles) { + const filePath = packagePrefix + file.filePath; + if (!fileFilter || fileFilter(filePath)) { + result.push({ filePath, content: file.content, packageName, isActive }); + } } - basePath += module.moduleName + "/"; - // const path = - module.sourceFiles.forEach((file) => { - sourceFiles.push({ - filePath: basePath + file.filePath, - content: file.content, - }); + // Process module files + project.projectModules?.forEach((module) => { + let basePath = packagePrefix; + basePath += module.isGenerated ? "generated/" : "modules/"; + basePath += module.moduleName + "/"; + + for (const file of module.sourceFiles) { + const filePath = basePath + file.filePath; + if (!fileFilter || fileFilter(filePath)) { + result.push({ filePath, content: file.content, packageName, isActive }); + } + } }); - }); - return sourceFiles; + } + + return result; +} + +export function flattenProjectToFiles(projects: ProjectSource[]): SourceFile[] { + return buildFilePaths(projects).map(({ filePath, content }) => ({ + filePath, + content + })); } -export function extractResourceDocumentContent(sourceFiles: readonly SourceFiles[]): string { +/** + * Creates workspace context message for AI prompts. + * Handles single vs multi-package scenarios and provides instructions for working with workspaces. + * + * @param projects - Array of project sources + * @param packageName - Name of the current active package + * @returns Formatted context string for AI prompts + */ +export function buildPackageContext(projects: ProjectSource[], packageName: string): string { + const hasMultiplePackages = projects.length > 1; + + if (!hasMultiplePackages) { + return `Current Package name: ${packageName}`; + } + + return `Current Active Package: ${packageName} + +Note: This is a Ballerina workspace with multiple packages. File paths are prefixed with their package paths (e.g., "mainpackage/main.bal"). +Files from external packages (not the active package) are marked with the externalPackageName attribute (e.g., ). +You can import these packages by just using the package name (e.g., import otherpackage;). +When creating or modifying files, you should always prefer making edits for the current active package. Make sure to include the package path as prefix for the file edits.`; +} + +/** + * Formats file upload contents for AI prompts. + * Returns empty string if no files are uploaded. + * + * @param fileUploadContents - Array of file attachments + * @returns Formatted string with file names and contents + */ +export function formatFileUploadContents(fileUploadContents: FileAttatchment[]): string { + if (fileUploadContents.length === 0) { + return ""; + } + + const formattedFiles = fileUploadContents + .map(file => `File Name: ${file.fileName} +Content: ${file.content}`) + .join("\n"); + + return `4. File Upload Contents. : Contents of the file which the user uploaded as additional information for the query. + +${formattedFiles}`; +} + +export function extractResourceDocumentContent(sourceFiles: readonly SourceFile[]): string { const requirementFiles = sourceFiles .filter(sourceFile => sourceFile.filePath.toLowerCase().endsWith(REQUIREMENTS_DOCUMENT_KEY)) .slice(0, 1) @@ -103,14 +174,16 @@ export function extractResourceDocumentContent(sourceFiles: readonly SourceFiles } //TODO: This should be a query rewriter ideally. -export function getRewrittenPrompt(params: GenerateCodeRequest, sourceFiles: SourceFiles[]) { +export function getRewrittenPrompt(params: GenerateCodeRequest, projects: ProjectSource[]) { const prompt = params.usecase; if (prompt.trim() === GENERATE_CODE_AGAINST_THE_REQUIREMENT) { + const sourceFiles = flattenProjectToFiles(projects); const resourceContent = extractResourceDocumentContent(sourceFiles); return `${GENERATE_CODE_AGAINST_THE_REQUIREMENT}: ${resourceContent}`; } if (prompt.trim() === GENERATE_TEST_AGAINST_THE_REQUIREMENT) { + const sourceFiles = flattenProjectToFiles(projects); const resourceContent = extractResourceDocumentContent(sourceFiles); return `${GENERATE_TEST_AGAINST_THE_REQUIREMENT}: ${resourceContent}`; @@ -120,6 +193,7 @@ ${resourceContent}`; return prompt; } + const sourceFiles = flattenProjectToFiles(projects); const readmeFiles = sourceFiles .filter((sourceFile) => sourceFile.filePath.toLowerCase().endsWith("readme.md")) .map((sourceFile) => sourceFile.content); @@ -277,3 +351,27 @@ export function isHttpPayloadContext(context: PayloadContext): context is HttpPa export function isMessageQueuePayloadContext(context: PayloadContext): context is MessageQueuePayloadContext { return context.protocol === "MESSAGE_BROKER"; } + +/** + * Parses XML-formatted assistant response to extract source files. + * Extracts code blocks with format: ```ballerina...``` + * + * @param xmlString - The assistant response containing XML code blocks + * @returns Array of SourceFile objects parsed from the XML + */ +export function parseSourceFilesFromXML(xmlString: string): SourceFile[] { + const sourceFiles: SourceFile[] = []; + const regex = /\s*```ballerina([\s\S]*?)```\s*<\/code>/g; + let match; + + while ((match = regex.exec(xmlString)) !== null) { + const filePath = match[1]; + const fileContent = match[2].trim(); + sourceFiles.push({ + filePath, + content: fileContent + }); + } + + return sourceFiles; +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/testGenerator.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/testGenerator.ts index 059ee5c5a12..71e75d07134 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/testGenerator.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/testGenerator.ts @@ -19,7 +19,7 @@ import { DiagnosticEntry, Diagnostics, OpenAPISpec, ProjectDiagnostics, ProjectModule, ProjectSource, SyntaxTree, TestGenerationRequest, TestGenerationResponse, TestGenerationTarget } from '@wso2/ballerina-core'; import { ErrorCode } from "@wso2/ballerina-core"; import { DotToken, IdentifierToken, ModulePart, ResourceAccessorDefinition, ResourcePathRestParam, ResourcePathSegmentParam, ServiceDeclaration, SlashToken, STKindChecker } from "@wso2/syntax-tree"; -import { Uri, workspace } from "vscode"; +import { Uri } from "vscode"; import { PARSING_ERROR, UNKNOWN_ERROR, ENDPOINT_REMOVED } from '../../views/ai-panel/errorCodes'; import { langClient } from './activator'; import * as fs from 'fs'; @@ -95,7 +95,9 @@ export async function generateTest( content: serviceDeclaration.source } ], - projectName: "" + projectName: "", + packagePath: "", + isActive: true }; const unitTestResp: TestGenerationResponse | ErrorCode = await getUnitTests(updatedTestGenRequest, serviceProjectSource, abortController, openApiSpec); @@ -219,10 +221,9 @@ export async function getResourceAccessorDef(projectRoot: string, resourceMethod } export async function getDiagnostics( - projectRoot: string, + ballerinaProjectRoot: string, generatedTestSource: TestGenerationResponse ): Promise { - const ballerinaProjectRoot = await findBallerinaProjectRoot(projectRoot); const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'temp-bal-test-gen-')); fs.cpSync(ballerinaProjectRoot, tempDir, { recursive: true }); const tempTestFolderPath = path.join(tempDir, 'tests'); @@ -244,18 +245,15 @@ export async function getDiagnostics( }; } -async function getProjectSource(dirPath: string): Promise { - const projectRoot = await findBallerinaProjectRoot(dirPath); - - if (!projectRoot) { - return null; - } +async function getProjectSource(projectRoot: string): Promise { const projectSource: ProjectSource = { sourceFiles: [], projectTests: [], projectModules: [], - projectName: "" + projectName: "", + packagePath: projectRoot, + isActive: true }; // Read root-level .bal files @@ -297,14 +295,9 @@ async function getProjectSource(dirPath: string): Promise return projectSource; } -async function getProjectSourceWithTests(dirPath: string): Promise { - const projectRoot = await findBallerinaProjectRoot(dirPath); - - if (!projectRoot) { - return null; - } +async function getProjectSourceWithTests(projectRoot: string): Promise { - const projectSourceWithTests: ProjectSource = await getProjectSource(dirPath); + const projectSourceWithTests: ProjectSource = await getProjectSource(projectRoot); // Read tests const testsDir = path.join(projectRoot, 'tests'); @@ -445,36 +438,6 @@ async function filterTestGenResponse(resp: Response): Promise { - if (dirPath === null) { - return null; - } - - const workspaceFolders = workspace.workspaceFolders; - if (!workspaceFolders) { - return null; - } - - // Check if the directory is within any of the workspace folders - const workspaceFolder = workspaceFolders.find(folder => dirPath.startsWith(folder.uri.fsPath)); - if (!workspaceFolder) { - return null; - } - - let currentDir = dirPath; - - while (currentDir.startsWith(workspaceFolder.uri.fsPath)) { - const ballerinaTomlPath = path.join(currentDir, 'Ballerina.toml'); - if (fs.existsSync(ballerinaTomlPath)) { - return currentDir; - } - currentDir = path.dirname(currentDir); - } - - return null; -} - function isErrorCode(error: any): boolean { return error.hasOwnProperty("code") && error.hasOwnProperty("message"); } diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/utils.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/utils.ts index 60ba64e058c..d53bb386a00 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/utils.ts @@ -279,53 +279,18 @@ async function showNoBallerinaSourceWarningMessage() { import { ProjectSource, ProjectModule, OpenAPISpec } from '@wso2/ballerina-core'; import { langClient } from './activator'; -/** - * Finds the root directory of a Ballerina project by searching for Ballerina.toml - */ -export async function findBallerinaProjectRoot(dirPath: string): Promise { - if (dirPath === null) { - return null; - } - - const workspaceFolders = workspace.workspaceFolders; - if (!workspaceFolders) { - return null; - } - - // Check if the directory is within any of the workspace folders - const workspaceFolder = workspaceFolders.find(folder => dirPath.startsWith(folder.uri.fsPath)); - if (!workspaceFolder) { - return null; - } - - let currentDir = dirPath; - - while (currentDir.startsWith(workspaceFolder.uri.fsPath)) { - const ballerinaTomlPath = path.join(currentDir, 'Ballerina.toml'); - if (fs.existsSync(ballerinaTomlPath)) { - return currentDir; - } - currentDir = path.dirname(currentDir); - } - - return null; -} - /** * Gets the project source including all .bal files and modules */ -export async function getProjectSource(dirPath: string): Promise { - const projectRoot = await findBallerinaProjectRoot(dirPath); - - if (!projectRoot) { - return null; - } +export async function getProjectSource(projectRoot: string): Promise { const projectSource: ProjectSource = { sourceFiles: [], projectTests: [], projectModules: [], - projectName: "" + projectName: "", + packagePath: projectRoot, + isActive: true }; // Read root-level .bal files @@ -370,14 +335,9 @@ export async function getProjectSource(dirPath: string): Promise { - const projectRoot = await findBallerinaProjectRoot(dirPath); - - if (!projectRoot) { - return null; - } +export async function getProjectSourceWithTests(projectRoot: string): Promise { - const projectSourceWithTests: ProjectSource = await getProjectSource(dirPath); + const projectSourceWithTests: ProjectSource = await getProjectSource(projectRoot); // Read tests const testsDir = path.join(projectRoot, 'tests'); diff --git a/workspaces/ballerina/ballerina-extension/src/features/bi/activator.ts b/workspaces/ballerina/ballerina-extension/src/features/bi/activator.ts index cc2561641cf..9e953006eaa 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/bi/activator.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/bi/activator.ts @@ -15,7 +15,7 @@ * specific language governing permissions and limitations * under the License. */ -import { commands, Uri, workspace, window, ConfigurationTarget } from "vscode"; +import { commands, Uri, workspace, window, ConfigurationTarget, TreeItem } from "vscode"; import { BI_COMMANDS, BIDeleteByComponentInfoRequest, @@ -23,7 +23,6 @@ import { DIRECTORY_MAP, EVENT_TYPE, FlowNode, - FOCUS_FLOW_DIAGRAM_VIEW, MACHINE_VIEW } from "@wso2/ballerina-core"; import { BallerinaExtension } from "../../core"; @@ -36,86 +35,159 @@ import { readFileSync, readdirSync, statSync } from "fs"; import path from "path"; import { isPositionEqual, isPositionWithinDeletedComponent } from "../../utils/history/util"; import { startDebugging } from "../editor-support/activator"; +import { createVersionNumber, isSupportedSLVersion } from ".././../utils"; +import { extension } from "../../BalExtensionContext"; const FOCUS_DEBUG_CONSOLE_COMMAND = 'workbench.debug.action.focusRepl'; const TRACE_SERVER_OFF = "off"; const TRACE_SERVER_VERBOSE = "verbose"; +/** + * Helper function to handle command invocation with proper context resolution. + * Supports both tree view clicks and command palette invocation. + * + * @param item - The tree item (undefined when invoked from command palette) + * @param view - The view to open + * @param additionalViewParams - Additional parameters to pass to the view + */ +function handleCommandWithContext( + item: TreeItem | undefined, + view: MACHINE_VIEW, + additionalViewParams: Record = {} +): void { + const isBalWorkspace = StateMachine.context().workspacePath; + + // Scenario 1: Multi-package workspace invoked from command palette + if (isBalWorkspace && !item) { + const packageList = StateMachine.context().projectInfo?.children.map((child) => child.projectPath); + + if (!packageList || packageList.length === 0) { + openView(EVENT_TYPE.OPEN_VIEW, { view, ...additionalViewParams }); + return; + } + + window.showQuickPick(packageList, { + placeHolder: "Select a package" + }).then((selectedPackage) => { + if (selectedPackage) { + openView(EVENT_TYPE.OPEN_VIEW, { + view, + projectPath: selectedPackage, + ...additionalViewParams + }); + } + }); + } + // Scenario 2: Invoked from tree view with item context + else if (item?.resourceUri) { + const projectPath = item.resourceUri.fsPath; + openView(EVENT_TYPE.OPEN_VIEW, { + view, + projectPath, + ...additionalViewParams + }); + } + // Scenario 3: Default - no specific context + else { + openView(EVENT_TYPE.OPEN_VIEW, { view, ...additionalViewParams }); + } +} + export function activate(context: BallerinaExtension) { + const isWorkspaceSupported = isSupportedSLVersion(extension.ballerinaExtInstance, createVersionNumber(2201, 13, 0)); + + // Set context for command visibility + commands.executeCommand('setContext', 'ballerina.bi.workspaceSupported', isWorkspaceSupported); + commands.registerCommand(BI_COMMANDS.BI_RUN_PROJECT, () => { - prepareAndGenerateConfig(context, StateMachine.context().projectUri, false, true); + prepareAndGenerateConfig(context, StateMachine.context().projectPath, false, true); }); commands.registerCommand(BI_COMMANDS.BI_DEBUG_PROJECT, () => { commands.executeCommand(FOCUS_DEBUG_CONSOLE_COMMAND); - startDebugging(Uri.file(StateMachine.context().projectUri), false, true); + startDebugging(Uri.file(StateMachine.context().projectPath), false, true); }); - commands.registerCommand(BI_COMMANDS.ADD_CONNECTIONS, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.AddConnectionWizard }); + commands.registerCommand(BI_COMMANDS.ADD_CONNECTIONS, (item?: TreeItem) => { + handleCommandWithContext(item, MACHINE_VIEW.AddConnectionWizard); }); - commands.registerCommand(BI_COMMANDS.ADD_CUSTOM_CONNECTOR, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.AddCustomConnector }); + commands.registerCommand(BI_COMMANDS.ADD_CUSTOM_CONNECTOR, (item?: TreeItem) => { + handleCommandWithContext(item, MACHINE_VIEW.AddCustomConnector); }); - commands.registerCommand(BI_COMMANDS.ADD_ENTRY_POINT, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BIComponentView }); + commands.registerCommand(BI_COMMANDS.ADD_ENTRY_POINT, (item?: TreeItem) => { + handleCommandWithContext(item, MACHINE_VIEW.BIComponentView); }); - commands.registerCommand(BI_COMMANDS.ADD_TYPE, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.TypeDiagram, addType: true }); + commands.registerCommand(BI_COMMANDS.ADD_TYPE, (item?: TreeItem) => { + handleCommandWithContext(item, MACHINE_VIEW.TypeDiagram, { addType: true }); }); - commands.registerCommand(BI_COMMANDS.VIEW_TYPE_DIAGRAM, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.TypeDiagram, rootDiagramId: `type-diagram-${Date.now()}` }); + commands.registerCommand(BI_COMMANDS.VIEW_TYPE_DIAGRAM, (item?: TreeItem) => { + handleCommandWithContext(item, MACHINE_VIEW.TypeDiagram, { rootDiagramId: `type-diagram-${Date.now()}` }); }); - commands.registerCommand(BI_COMMANDS.ADD_FUNCTION, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BIFunctionForm }); + commands.registerCommand(BI_COMMANDS.ADD_FUNCTION, (item?: TreeItem) => { + handleCommandWithContext(item, MACHINE_VIEW.BIFunctionForm); }); - commands.registerCommand(BI_COMMANDS.ADD_CONFIGURATION, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.AddConfigVariables }); + commands.registerCommand(BI_COMMANDS.ADD_CONFIGURATION, (item?: TreeItem) => { + handleCommandWithContext(item, MACHINE_VIEW.AddConfigVariables); }); - commands.registerCommand(BI_COMMANDS.VIEW_CONFIGURATION, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.ViewConfigVariables }); + commands.registerCommand(BI_COMMANDS.VIEW_CONFIGURATION, (item?: TreeItem) => { + handleCommandWithContext(item, MACHINE_VIEW.ViewConfigVariables); }); commands.registerCommand(BI_COMMANDS.SHOW_OVERVIEW, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.Overview }); - }); - - commands.registerCommand(BI_COMMANDS.ADD_PROJECT, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BIComponentView }); + const isBallerinaWorkspace = !!StateMachine.context().workspacePath; + if (isBallerinaWorkspace) { + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.WorkspaceOverview }); + } else { + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.PackageOverview }); + } }); - commands.registerCommand(BI_COMMANDS.ADD_DATA_MAPPER, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BIDataMapperForm }); + commands.registerCommand(BI_COMMANDS.ADD_PROJECT, async () => { + if (!isWorkspaceSupported) { + window.showErrorMessage('This command requires Ballerina version 2201.13.0 or higher. '); + return; + } + + const projectPath = StateMachine.context().projectPath || StateMachine.context().workspacePath; + if (projectPath) { + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BIAddProjectForm }); + } else { + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BIProjectForm }); + } }); - commands.registerCommand(BI_COMMANDS.ADD_NATURAL_FUNCTION, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BINPFunctionForm }); + commands.registerCommand(BI_COMMANDS.ADD_DATA_MAPPER, (item?: TreeItem) => { + handleCommandWithContext(item, MACHINE_VIEW.BIDataMapperForm); }); - commands.registerCommand(BI_COMMANDS.SWITCH_PROJECT, async () => { - // Hack to switch the project. This will reload the window and prompt the user to select the project. - // This is a temporary solution until we provide the support for multi root workspaces. - StateMachine.sendEvent("SWITCH_PROJECT" as any); + commands.registerCommand(BI_COMMANDS.ADD_NATURAL_FUNCTION, (item?: TreeItem) => { + handleCommandWithContext(item, MACHINE_VIEW.BINPFunctionForm); }); commands.registerCommand(BI_COMMANDS.TOGGLE_TRACE_LOGS, toggleTraceLogs); - commands.registerCommand(BI_COMMANDS.DELETE_COMPONENT, async (item: any) => { + commands.registerCommand(BI_COMMANDS.DELETE_COMPONENT, async (item?: TreeItem & { info?: string }) => { + // Guard: DELETE requires a tree item context + if (!item) { + window.showErrorMessage('This command must be invoked from the project explorer.'); + return; + } + console.log(">>> delete component", item); if (item.contextValue === DIRECTORY_MAP.CONNECTION) { - await handleConnectionDeletion(item.label, item.info); + await handleConnectionDeletion(item.label as string, item.info); } else if (item.contextValue === DIRECTORY_MAP.LOCAL_CONNECTORS) { - await handleLocalModuleDeletion(item.label, item.info); + await handleLocalModuleDeletion(item.label as string, item.info); } else { - await handleComponentDeletion(item.contextValue, item.label, item.info); + await handleComponentDeletion(item.contextValue as string, item.label as string, item.info); } }); @@ -125,8 +197,8 @@ export function activate(context: BallerinaExtension) { function openBallerinaTomlFile(context: BallerinaExtension) { - const projectRoot = StateMachine.context().projectUri; - const ballerinaTomlFile = path.join(projectRoot, "Ballerina.toml"); + const projectPath = StateMachine.context().projectPath || StateMachine.context().workspacePath; + const ballerinaTomlFile = path.join(projectPath, "Ballerina.toml"); try { const content = readFileSync(ballerinaTomlFile, "utf8"); if (content) { @@ -148,12 +220,12 @@ function openBallerinaTomlFile(context: BallerinaExtension) { } function openAllBallerinaFiles(context: BallerinaExtension) { - const projectRoot = StateMachine.context().projectUri; + const projectPath = StateMachine.context().projectPath; - if (context.langClient && projectRoot) { + if (context.langClient && projectPath) { try { // Find all Ballerina files in the project - const ballerinaFiles = findBallerinaFiles(projectRoot); + const ballerinaFiles = findBallerinaFiles(projectPath); console.log(`>>> Found ${ballerinaFiles.length} Ballerina files in the project`); // Open each Ballerina file @@ -205,7 +277,10 @@ const findBallerinaFiles = (dir: string, fileList: string[] = []): string[] => { const handleComponentDeletion = async (componentType: string, itemLabel: string, filePath: string) => { const rpcClient = new BiDiagramRpcManager(); - const componentCategory = StateMachine.context().projectStructure.directoryMap[componentType]; + const projectPath = StateMachine.context().projectPath; + const projectStructure = await rpcClient.getProjectStructure(); + const project = projectStructure.projects.find(project => project.projectPath === projectPath); + const componentCategory = project?.directoryMap[componentType]; if (!componentCategory) { console.error(`Component type ${componentType} not found in project structure`); @@ -254,7 +329,7 @@ const handleConnectionDeletion = async (itemLabel: string, filePath: string) => console.log(">>> Updated source code after delete", response); if (response.artifacts) { if (hasNoComponentsOpenInDiagram() || isFlowNodeOpenInDiagram(connector)) { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.Overview }); + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.PackageOverview }); } } else { console.error(">>> Error updating source code", response); @@ -277,7 +352,7 @@ async function deleteComponent(component: ComponentInfo, rpcClient: BiDiagramRpc await rpcClient.deleteByComponentInfo(req); if (hasNoComponentsOpenInDiagram() || isComponentOpenInDiagram(component)) { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.Overview }); + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.PackageOverview }); } } @@ -315,7 +390,7 @@ function isFlowNodeOpenInDiagram(connector: FlowNode) { endLine: connector.codedata.lineRange.endLine.line, endColumn: connector.codedata.lineRange.endLine.offset }; - const flowNodeFilePath = path.join(StateMachine.context().projectUri, connector.codedata.lineRange.fileName); + const flowNodeFilePath = path.join(StateMachine.context().projectPath, connector.codedata.lineRange.fileName); return isFilePathsEqual(openedComponentFilePath, flowNodeFilePath) && isPositionEqual(openedCompoentPosition, flowNodePosition); diff --git a/workspaces/ballerina/ballerina-extension/src/features/config-generator/configGenerator.ts b/workspaces/ballerina/ballerina-extension/src/features/config-generator/configGenerator.ts index 5c437fd2363..c6c52bc6d69 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/config-generator/configGenerator.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/config-generator/configGenerator.ts @@ -29,25 +29,33 @@ import { TextDocumentEdit } from "vscode-languageserver-types"; import { modifyFileContent } from "../../utils/modification"; import { fileURLToPath } from "url"; import { startDebugging } from "../editor-support/activator"; -import { openView } from "../../stateMachine"; +import { openView, StateMachine } from "../../stateMachine"; import * as path from "path"; +import { TracerMachine } from "../tracing"; const UNUSED_IMPORT_ERR_CODE = "BCE2002"; -export async function prepareAndGenerateConfig(ballerinaExtInstance: BallerinaExtension, filePath: string, isCommand?: boolean, isBi?: boolean, executeRun: boolean = true, includeOptional: boolean = false): Promise { - const currentProject: BallerinaProject | undefined = await getCurrentBIProject(filePath); +export async function prepareAndGenerateConfig( + ballerinaExtInstance: BallerinaExtension, + projectPath: string, + isCommand?: boolean, + isBi?: boolean, + executeRun: boolean = true, + includeOptional: boolean = false +): Promise { + const currentProject: BallerinaProject | undefined = await getCurrentBIProject(projectPath); const ignoreFile = path.join(currentProject.path, ".gitignore"); const configFile = path.join(currentProject.path, BAL_CONFIG_FILE); const hasWarnings = ( await checkConfigUpdateRequired( ballerinaExtInstance, - filePath + projectPath )).hasWarnings; if (!hasWarnings) { if (!isCommand && executeRun) { - executeRunCommand(ballerinaExtInstance, filePath, isBi); + executeRunCommand(ballerinaExtInstance, projectPath, isBi); } return; } @@ -55,12 +63,15 @@ export async function prepareAndGenerateConfig(ballerinaExtInstance: BallerinaEx await handleOnUnSetValues(currentProject.packageName, configFile, ignoreFile, ballerinaExtInstance, isCommand, isBi); } -export async function checkConfigUpdateRequired(ballerinaExtInstance: BallerinaExtension, filePath: string): Promise<{ hasWarnings: boolean }> { +export async function checkConfigUpdateRequired( + ballerinaExtInstance: BallerinaExtension, + projectPath: string +): Promise<{ hasWarnings: boolean }> { try { const showLibraryConfigVariables = ballerinaExtInstance.showLibraryConfigVariables(); const response = await ballerinaExtInstance.langClient?.getConfigVariablesV2({ - projectPath: filePath, + projectPath, includeLibraries: showLibraryConfigVariables !== false }) as ConfigVariableResponse; @@ -140,9 +151,11 @@ export async function getCurrentBallerinaProjectFromContext(ballerinaExtInstance } export async function getCurrentBIProject(projectPath: string): Promise { - let currentProject: BallerinaProject = {}; - currentProject = await getCurrentBallerinaProject(projectPath); - return currentProject; + if (StateMachine.context().projectPath) { + projectPath = StateMachine.context().projectPath; + } + + return await getCurrentBallerinaProject(projectPath); } export async function handleOnUnSetValues(packageName: string, configFile: string, ignoreFile: string, ballerinaExtInstance: BallerinaExtension, isCommand: boolean, isBi: boolean): Promise { @@ -212,6 +225,7 @@ export async function handleOnUnSetValues(packageName: string, configFile: strin async function executeRunCommand(ballerinaExtInstance: BallerinaExtension, filePath: string, isBi?: boolean) { + TracerMachine.startServer(); if (ballerinaExtInstance.enabledRunFast() || isBi) { filePath = (await getCurrentBallerinaProject(filePath)).path; const projectHasErrors = await cleanAndValidateProject(ballerinaExtInstance.langClient, filePath); diff --git a/workspaces/ballerina/ballerina-extension/src/features/debugger/config-provider.ts b/workspaces/ballerina/ballerina-extension/src/features/debugger/config-provider.ts index ef09f897df4..18b6c9890b4 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/debugger/config-provider.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/debugger/config-provider.ts @@ -27,7 +27,7 @@ import { DebugAdapterTrackerFactory, DebugAdapterTracker, ViewColumn, - TabInputText + TaskScope } from 'vscode'; import * as child_process from "child_process"; import { getPortPromise } from 'portfinder'; @@ -36,24 +36,29 @@ import { BallerinaExtension, LANGUAGE, OLD_BALLERINA_VERSION_DEBUGGER_RUNINTERMINAL, UNSUPPORTED_DEBUGGER_RUNINTERMINAL_KIND, INVALID_DEBUGGER_RUNINTERMINAL_KIND } from '../../core'; -import { ExtendedLangClient } from '../../core/extended-language-client'; import { TM_EVENT_START_DEBUG_SESSION, CMP_DEBUGGER, sendTelemetryEvent, sendTelemetryException, CMP_NOTEBOOK, TM_EVENT_START_NOTEBOOK_DEBUG } from '../telemetry'; -import { log, debug as debugLog, isSupportedSLVersion, isWindows } from "../../utils"; +import { + log, + debug as debugLog, + isSupportedSLVersion, + isWindows, + createVersionNumber +} from "../../utils"; +import { getProjectWorkingDirectory } from "../../utils/file-utils"; import { decimal, ExecutableOptions } from 'vscode-languageclient/node'; import { BAL_NOTEBOOK, getTempFile, NOTEBOOK_CELL_SCHEME } from '../../views/notebook'; import fileUriToPath from 'file-uri-to-path'; -import { existsSync, readFileSync } from 'fs'; -import { dirname, join, sep } from 'path'; -import { parseTomlToConfig } from '../config-generator/utils'; +import { existsSync } from 'fs'; +import { join } from 'path'; import { LoggingDebugSession, OutputEvent, TerminatedEvent } from 'vscode-debugadapter'; import { DebugProtocol } from 'vscode-debugprotocol'; -import { PALETTE_COMMANDS, PROJECT_TYPE } from '../project/cmds/cmd-runner'; +import { PALETTE_COMMANDS } from '../project/cmds/cmd-runner'; import { Disposable } from 'monaco-languageclient'; -import { getCurrentBallerinaFile, getCurrentBallerinaProject } from '../../utils/project-utils'; -import { BallerinaProject, BallerinaProjectComponents, BIGetEnclosedFunctionRequest, EVENT_TYPE, MainFunctionParamsResponse } from '@wso2/ballerina-core'; +import { getCurrentProjectRoot, selectBallerinaProjectForDebugging } from '../../utils/project-utils'; +import { BallerinaProjectComponents, BIGetEnclosedFunctionRequest, EVENT_TYPE, MainFunctionParamsResponse } from '@wso2/ballerina-core'; import { openView, StateMachine } from '../../stateMachine'; import { waitForBallerinaService } from '../tryit/utils'; import { BreakpointManager } from './breakpoint-manager'; @@ -67,9 +72,6 @@ import { findHighestVersionJdk } from '../../utils/server/server'; const BALLERINA_COMMAND = "ballerina.command"; const EXTENDED_CLIENT_CAPABILITIES = "capabilities"; -const BALLERINA_TOML_REGEX = `**${sep}Ballerina.toml`; -const BALLERINA_FILE_REGEX = `**${sep}*.bal`; -const BALLERINA_TOML = `Ballerina.toml`; export enum DEBUG_REQUEST { LAUNCH = 'launch' @@ -80,17 +82,6 @@ export enum DEBUG_CONFIG { TEST_DEBUG_NAME = 'Ballerina Test' } -export interface BALLERINA_TOML { - package: PACKAGE; - "build-options": any; -} - -export interface PACKAGE { - org: string; - name: string; - version: string; - distribution: string; -} class DebugConfigProvider implements DebugConfigurationProvider { async resolveDebugConfiguration(_folder: WorkspaceFolder, config: DebugConfiguration) @@ -114,7 +105,7 @@ function getValueFromProgramArgs(programArgs: string[], idx: number) { async function handleMainFunctionParams(config: DebugConfiguration) { const res = await extension.ballerinaExtInstance.langClient?.getMainFunctionParams({ projectRootIdentifier: { - uri: "file://" + StateMachine.context().projectUri + uri: Uri.file(StateMachine.context().projectPath).toString() } }) as MainFunctionParamsResponse; if (res.hasMain) { @@ -253,6 +244,12 @@ async function getModifiedConfigs(workspaceFolder: WorkspaceFolder, config: Debu config.noDebug = Boolean(config.noDebug); + // Notify debug server that the debug session is started in low-code mode + const isWebviewPresent = isVisualizerWebviewActive(); + if (isWebviewPresent && StateMachine.context().isBI) { + config.lowCodeMode = true; + } + const activeTextEditor = window.activeTextEditor; if (activeTextEditor && activeTextEditor.document.fileName.endsWith(BAL_NOTEBOOK)) { @@ -267,52 +264,11 @@ async function getModifiedConfigs(workspaceFolder: WorkspaceFolder, config: Debu } if (!config.script) { - const tomls = await workspace.findFiles(workspaceFolder ? new RelativePattern(workspaceFolder, BALLERINA_TOML_REGEX) : BALLERINA_TOML_REGEX); - const projects: { project: BallerinaProject; balFile: Uri; relativePath: string }[] = []; - for (const toml of tomls) { - const projectRoot = dirname(toml.fsPath); - const balFiles = await workspace.findFiles(new RelativePattern(projectRoot, BALLERINA_FILE_REGEX), undefined, 1); - if (balFiles.length > 0) { - - const tomlContent: string = readFileSync(toml.fsPath, 'utf8'); - const tomlObj: BALLERINA_TOML = parseTomlToConfig(tomlContent) as BALLERINA_TOML; - const relativePath = workspace.asRelativePath(projectRoot); - projects.push({ project: { packageName: tomlObj.package.name }, balFile: balFiles[0], relativePath }); - } - } - - if (projects.length > 0) { - if (projects.length === 1) { - config.script = projects[0].balFile.fsPath; - } else { - const selectedProject = await window.showQuickPick(projects.map((project) => { - return { - label: project.project.packageName, - description: project.relativePath - }; - }), { placeHolder: "Select a Ballerina project to debug", canPickMany: false }); - if (selectedProject) { - config.script = projects[projects.indexOf(projects.find((project) => { - return project.project.packageName === selectedProject.label; - }))].balFile.fsPath; - } else { - return Promise.reject(); - } - } + // If webview is present and in BI mode, use the project path from the state machine (focused project in BI) + if (StateMachine.context().isBI && isWebviewPresent && StateMachine.context().projectPath) { + config.script = StateMachine.context().projectPath; } else { - extension.ballerinaExtInstance.showMessageInvalidProject(); - return Promise.reject(); - } - - let langClient = extension.ballerinaExtInstance.langClient; - if (langClient.initializeResult) { - const { experimental } = langClient.initializeResult!.capabilities; - if (experimental && experimental.introspection && experimental.introspection.port > 0) { - config.networkLogsPort = experimental.introspection.port; - if (config.networkLogs === undefined) { - config.networkLogs = false; - } - } + config.script = await selectBallerinaProjectForDebugging(workspaceFolder); } } @@ -338,14 +294,13 @@ async function getModifiedConfigs(workspaceFolder: WorkspaceFolder, config: Debu config.debugServer = debugServerPort.toString(); } - // Notify debug server that the debug session is started in low-code mode - const isWebviewPresent = VisualizerWebview.currentPanel !== undefined; - if (isWebviewPresent && StateMachine.context().isBI) { - config.lowCodeMode = true; - } return config; } +function isVisualizerWebviewActive() { + return VisualizerWebview.currentPanel !== undefined; +} + export async function constructDebugConfig(uri: Uri, testDebug: boolean, args?: any): Promise { const launchConfig: WorkspaceConfiguration = workspace.getConfiguration('launch').length > 0 ? workspace.getConfiguration('launch') : @@ -467,7 +422,7 @@ class BallerinaDebugAdapterTrackerFactory implements DebugAdapterTrackerFactory BreakpointManager.getInstance().setActiveBreakpoint(clientBreakpoint); if (isWebviewPresent) { - await handleBreakpointVisualization(uri, clientBreakpoint); + await handleDebugHitVisualization(uri, clientBreakpoint); } } else if (msg.command === "continue" || msg.command === "next" || msg.command === "stepIn" || msg.command === "stepOut") { // clear the active breakpoint @@ -484,7 +439,7 @@ class BallerinaDebugAdapterTrackerFactory implements DebugAdapterTrackerFactory notifyBreakpointChange(); // restart the fast-run - getCurrentRoot().then(async (root) => { + getCurrentProjectRoot().then(async (root) => { const didStop = await stopRunFast(root); if (didStop) { runFast(root, msg.body); @@ -516,13 +471,13 @@ class BallerinaDebugAdapterTrackerFactory implements DebugAdapterTrackerFactory } } -async function handleBreakpointVisualization(uri: Uri, clientBreakpoint: DebugProtocol.StackFrame) { +async function handleDebugHitVisualization(uri: Uri, clientBreakpoint: DebugProtocol.StackFrame) { const newContext = StateMachine.context(); - // Check if breakpoint is in a different project - if (!uri.fsPath.startsWith(newContext.projectUri)) { - console.log("Breakpoint is in a different project"); - window.showInformationMessage("Cannot visualize breakpoint since it belongs to a different project"); + // Check if breakpoint is in a different package + if (!uri.fsPath.startsWith(newContext.projectPath)) { + console.log("Debug hit in a different package"); + window.showInformationMessage("Cannot visualize debug hit since it belongs to a different integration"); openView(EVENT_TYPE.OPEN_VIEW, newContext); notifyBreakpointChange(); return; @@ -540,7 +495,7 @@ async function handleBreakpointVisualization(uri: Uri, clientBreakpoint: DebugPr const res = await StateMachine.langClient().getEnclosedFunctionDef(req); if (!res?.startLine || !res?.endLine) { - window.showInformationMessage("Failed to open the respective view for the breakpoint. Please manually navigate to the respective view."); + window.showInformationMessage("Failed to open the respective view for the debug hit. Please manually navigate to the respective view."); notifyBreakpointChange(); return; } @@ -570,7 +525,7 @@ class BallerinaDebugAdapterDescriptorFactory implements DebugAdapterDescriptorFa async createDebugAdapterDescriptor(session: DebugSession, executable: DebugAdapterExecutable | undefined): Promise { // Check if the project contains errors(and fix the possible ones) before starting the debug session const langClient = extension.ballerinaExtInstance.langClient; - const projectRoot = await getCurrentRoot(); + const projectRoot = await getCurrentProjectRoot(); await cleanAndValidateProject(langClient, projectRoot); // Check if config generation is required before starting the debug session @@ -582,7 +537,7 @@ class BallerinaDebugAdapterDescriptorFactory implements DebugAdapterDescriptorFa }); } - if (session.configuration.noDebug && StateMachine.context().isBI) { + if (session.configuration.noDebug) { return new Promise((resolve) => { resolve(new DebugAdapterInlineImplementation(new BIRunAdapter())); }); @@ -665,7 +620,7 @@ class FastRunDebugAdapter extends LoggingDebugSession { }); this.notificationHandler = notificationHandler; this.programArgs = (args as any).programArgs; - getCurrentRoot().then((root) => { + getCurrentProjectRoot().then((root) => { this.root = root; runFast(root, { programArgs: this.programArgs }).then((didRan) => { response.success = didRan; @@ -692,51 +647,73 @@ class BIRunAdapter extends LoggingDebugSession { taskTerminationListener: Disposable | null = null; protected launchRequest(response: DebugProtocol.LaunchResponse, args: DebugProtocol.LaunchRequestArguments, request?: DebugProtocol.Request): void { - const taskDefinition: TaskDefinition = { - type: 'shell', - task: 'run' - }; + getCurrentProjectRoot().then((projectRoot) => { + const taskDefinition: TaskDefinition = { + type: 'shell', + task: 'run' + }; - let runCommand: string = `${extension.ballerinaExtInstance.getBallerinaCmd()} run`; + let runCommand: string = `${extension.ballerinaExtInstance.getBallerinaCmd()} run`; - const programArgs = (args as any).programArgs; - if (programArgs && programArgs.length > 0) { - runCommand = `${runCommand} -- ${programArgs.join(' ')}`; - } + const programArgs = (args as any).programArgs; + if (programArgs && programArgs.length > 0) { + runCommand = `${runCommand} -- ${programArgs.join(' ')}`; + } - if (isSupportedSLVersion(extension.ballerinaExtInstance, 2201130) && extension.ballerinaExtInstance.enabledExperimentalFeatures()) { - runCommand = `${runCommand} --experimental`; - } + if (isSupportedSLVersion(extension.ballerinaExtInstance, createVersionNumber(2201, 13, 0)) && extension.ballerinaExtInstance.enabledExperimentalFeatures()) { + runCommand = `${runCommand} --experimental`; + } - // Use the current process environment which should have the updated PATH - const env = process.env; - debugLog(`[BIRunAdapter] Creating shell execution with env. PATH length: ${env.PATH?.length || 0}`); - const execution = new ShellExecution(runCommand, { env: env as { [key: string]: string } }); - const task = new Task( - taskDefinition, - workspace.workspaceFolders![0], // Assumes at least one workspace folder is open - 'Ballerina Run', - 'ballerina', - execution - ); + // Use the current process environment which should have the updated PATH + const env = process.env; + debugLog(`[BIRunAdapter] Creating shell execution with env. PATH length: ${env.PATH?.length || 0}`); + + // Determine the correct working directory for the task + let cwd: string; + try { + cwd = getProjectWorkingDirectory(projectRoot); + debugLog(`[BIRunAdapter] Setting cwd to project root: ${cwd}`); + } catch (error) { + window.showErrorMessage(`Failed to determine working directory`); + response.success = false; + this.sendResponse(response); + throw error; + } - try { - tasks.executeTask(task).then((taskExecution) => { - this.task = taskExecution; + const execution = new ShellExecution(runCommand, { + env: env as { [key: string]: string }, + cwd: cwd + }); + const task = new Task( + taskDefinition, + TaskScope.Workspace, + 'Ballerina Run', + 'ballerina', + execution + ); + + try { + tasks.executeTask(task).then((taskExecution) => { + this.task = taskExecution; + + // Add task termination listener + this.taskTerminationListener = tasks.onDidEndTaskProcess(e => { + if (e.execution === this.task) { + this.sendEvent(new TerminatedEvent()); + } + }); - // Add task termination listener - this.taskTerminationListener = tasks.onDidEndTaskProcess(e => { - if (e.execution === this.task) { - this.sendEvent(new TerminatedEvent()); - } + response.success = true; + this.sendResponse(response); }); - - response.success = true; - this.sendResponse(response); - }); - } catch (error) { - window.showErrorMessage(`Failed to run Ballerina package: ${error}`); - } + } catch (error) { + window.showErrorMessage(`Failed to run Ballerina package: ${error}`); + } + }).catch((error) => { + window.showErrorMessage(`Failed to determine project root: ${error}`); + response.success = false; + this.sendResponse(response); + }); } protected disconnectRequest(response: DebugProtocol.DisconnectResponse, args: DebugProtocol.DisconnectArguments, request?: DebugProtocol.Request): void { @@ -793,29 +770,6 @@ async function stopRunFast(root: string): Promise { }); } -async function getCurrentRoot(): Promise { - let file: string | undefined; - try { - file = getCurrentBallerinaFile(); - } catch (error) { - // ignore - } - - // If no Ballerina files are open, safe to assume that the workspace root is same as the package root in BI mode. - if (!file) { - const workspaceRoot = getWorkspaceRoot(); - if (!workspaceRoot && StateMachine.context().isBI) { - throw new Error("Unable to determine the current workspace root."); - } - if (isBallerinaProject(workspaceRoot)) { - return workspaceRoot; - } - } - - const currentProject = await getCurrentBallerinaProject(file); - return (currentProject.kind !== PROJECT_TYPE.SINGLE_FILE) ? currentProject.path! : file; -} - function getJavaCommand(): string { const ballerinaHome = isWindows() ? fs.realpathSync.native(extension.ballerinaExtInstance.getBallerinaHome()) : extension.ballerinaExtInstance.getBallerinaHome(); // Get the base ballerina home by removing the distribution part @@ -842,10 +796,6 @@ function getJavaCommand(): string { return cmd; } -function getWorkspaceRoot(): string | undefined { - return workspace.workspaceFolders?.[0]?.uri.fsPath; -} - function findFreePort(): Promise { return getPortPromise({ port: 5010, stopPort: 20000 }); } @@ -854,8 +804,3 @@ function isFastRunEnabled(): boolean { const config = workspace.getConfiguration('ballerina'); return config.get('enableRunFast'); } - -function isBallerinaProject(projectPath: string): boolean { - const ballerinaToml = path.join(projectPath, BALLERINA_TOML); - return existsSync(ballerinaToml); -} \ No newline at end of file diff --git a/workspaces/ballerina/ballerina-extension/src/features/natural-programming/activator.ts b/workspaces/ballerina/ballerina-extension/src/features/natural-programming/activator.ts index a1aecbde09f..2c8397cc9ef 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/natural-programming/activator.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/natural-programming/activator.ts @@ -28,11 +28,11 @@ import { MONITERED_EXTENSIONS, COMMAND_SHOW_TEXT } from './constants'; -import { isSupportedSLVersion } from "../../utils"; +import { isSupportedSLVersion, createVersionNumber } from "../../utils"; import { CustomDiagnostic } from './custom-diagnostics'; let diagnosticCollection: vscode.DiagnosticCollection; -const BALLERINA_UPDATE_13 = 2201130; +const BALLERINA_UPDATE_13 = createVersionNumber(2201, 13, 0); // Version 2201.13.0 export function activate(ballerinaExtInstance: BallerinaExtension) { const backgroundDriftCheckConfig = vscode.workspace.getConfiguration().get(ENABLE_BACKGROUND_DRIFT_CHECK); @@ -41,7 +41,7 @@ export function activate(ballerinaExtInstance: BallerinaExtension) { diagnosticCollection = vscode.languages.createDiagnosticCollection('ballerina'); ballerinaExtInstance.context.subscriptions.push(diagnosticCollection); - const projectPath = StateMachine.context().projectUri; + const projectPath = StateMachine.context().projectPath; if (backgroundDriftCheckConfig) { if (!ballerinaExtInstance.context || projectPath == null || projectPath == "") { return; diff --git a/workspaces/ballerina/ballerina-extension/src/features/natural-programming/utils.ts b/workspaces/ballerina/ballerina-extension/src/features/natural-programming/utils.ts index 6739245acfb..f5e731c6063 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/natural-programming/utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/natural-programming/utils.ts @@ -39,7 +39,7 @@ import { } from "./constants"; import { isError, isNumber } from 'lodash'; import { HttpStatusCode } from 'axios'; -import { OLD_BACKEND_URL } from '../ai/utils'; +import { isBallerinaProjectAsync, OLD_BACKEND_URL } from '../ai/utils'; import { AIMachineEventType, BallerinaProject, LoginMethod } from '@wso2/ballerina-core'; import { getCurrentBallerinaProjectFromContext } from '../config-generator/configGenerator'; import { BallerinaExtension } from 'src/core'; @@ -49,11 +49,11 @@ import { fetchWithAuth } from '../ai/service/connection'; let controller = new AbortController(); -export async function getLLMDiagnostics(projectUri: string, diagnosticCollection +export async function getLLMDiagnostics(projectPath: string, diagnosticCollection : vscode.DiagnosticCollection): Promise { - const ballerinaProjectSource: BallerinaSource = await getBallerinaProjectSourceFiles(projectUri); + const ballerinaProjectSource: BallerinaSource = await getBallerinaProjectSourceFiles(projectPath); const sourcesOfNonDefaultModulesWithReadme: BallerinaSource[] - = getSourcesOfNonDefaultModulesWithReadme(path.join(projectUri, "modules")); + = getSourcesOfNonDefaultModulesWithReadme(path.join(projectPath, "modules")); const sources: BallerinaSource[] = [ballerinaProjectSource, ...sourcesOfNonDefaultModulesWithReadme]; const backendurl = await getBackendURL(); @@ -69,7 +69,7 @@ export async function getLLMDiagnostics(projectUri: string, diagnosticCollection return responses; } - await createDiagnosticCollection(responses, projectUri, diagnosticCollection); + await createDiagnosticCollection(responses, projectPath, diagnosticCollection); } async function getLLMResponses(sources: BallerinaSource[], token: string, backendurl: string) @@ -143,12 +143,15 @@ async function getLLMResponses(sources: BallerinaSource[], token: string, backen return extractedResponses; } -async function createDiagnosticCollection(responses: any[], projectUri: string, - diagnosticCollection: vscode.DiagnosticCollection) { +async function createDiagnosticCollection( + responses: any[], + projectPath: string, + diagnosticCollection: vscode.DiagnosticCollection +) { let diagnosticsMap = new Map(); for (const response of responses) { - diagnosticsMap = await createDiagnosticsResponse(response, projectUri, diagnosticsMap); + diagnosticsMap = await createDiagnosticsResponse(response, projectPath, diagnosticsMap); } // Set diagnostics in VS Code @@ -261,10 +264,10 @@ async function createDiagnostic(result: ResultItem, uri: Uri): Promise { - const ballerinaProjectSource: BallerinaSource = await getBallerinaProjectSourceFiles(projectUri); +export async function getLLMDiagnosticArrayAsString(projectPath: string): Promise { + const ballerinaProjectSource: BallerinaSource = await getBallerinaProjectSourceFiles(projectPath); const sourcesOfNonDefaultModulesWithReadme: BallerinaSource[] - = getSourcesOfNonDefaultModulesWithReadme(path.join(projectUri, "modules")); + = getSourcesOfNonDefaultModulesWithReadme(path.join(projectPath, "modules")); const sources: BallerinaSource[] = [ballerinaProjectSource, ...sourcesOfNonDefaultModulesWithReadme]; const backendurl = await getBackendURL(); @@ -280,7 +283,7 @@ export async function getLLMDiagnosticArrayAsString(projectUri: string): Promise return responses; } - let diagnosticArray = (await createDiagnosticArray(responses, projectUri)).map(diagnostic => { + let diagnosticArray = (await createDiagnosticArray(responses, projectPath)).map(diagnostic => { return `${diagnostic.message}`; }) .join("\n\n"); @@ -288,11 +291,11 @@ export async function getLLMDiagnosticArrayAsString(projectUri: string): Promise return diagnosticArray; } -async function createDiagnosticArray(responses: any[], projectUri: string): Promise { +async function createDiagnosticArray(responses: any[], projectPath: string): Promise { const diagnostics = []; for (const response of responses) { - await createDiagnosticList(response, projectUri, diagnostics); + await createDiagnosticList(response, projectPath, diagnostics); } function filterUniqueDiagnostics(diagnostics: vscode.Diagnostic[]): vscode.Diagnostic[] { @@ -720,20 +723,3 @@ export async function addConfigFile(configPath: string, isNaturalFunctionsAvaila } ); } - -async function isBallerinaProjectAsync(rootPath: string): Promise { - try { - if (!fs.existsSync(rootPath)) { - return false; - } - - const files = fs.readdirSync(rootPath); - return files.some(file => - file.toLowerCase() === 'ballerina.toml' || - file.toLowerCase().endsWith('.bal') - ); - } catch (error) { - console.error(`Error checking Ballerina project: ${error}`); - return false; - } -} diff --git a/workspaces/ballerina/ballerina-extension/src/features/project/cmds/build.ts b/workspaces/ballerina/ballerina-extension/src/features/project/cmds/build.ts index 50eb77e5998..cd53e73e5eb 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/project/cmds/build.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/project/cmds/build.ts @@ -16,17 +16,31 @@ * under the License. */ +import { MACHINE_VIEW } from "@wso2/ballerina-core"; import { LANGUAGE } from "../../../core"; import { extension } from "../../../BalExtensionContext"; import { commands, window } from "vscode"; import { - TM_EVENT_PROJECT_BUILD, CMP_PROJECT_BUILD, sendTelemetryEvent, sendTelemetryException + TM_EVENT_PROJECT_BUILD, + CMP_PROJECT_BUILD, + sendTelemetryEvent, + sendTelemetryException } from "../../telemetry"; -import { runCommand, BALLERINA_COMMANDS, PROJECT_TYPE, PALETTE_COMMANDS, MESSAGES } - from "./cmd-runner"; -import { getCurrentBallerinaProject, getCurrenDirectoryPath, getCurrentBallerinaFile } - from "../../../utils/project-utils"; -import { isSupportedSLVersion } from "../../../utils"; +import { + runCommand, + BALLERINA_COMMANDS, + PROJECT_TYPE, + PALETTE_COMMANDS, + MESSAGES +} from "./cmd-runner"; +import { + getCurrentBallerinaProject, + getCurrenDirectoryPath, + getCurrentBallerinaFile, + getCurrentProjectRoot +} from "../../../utils/project-utils"; +import { isSupportedSLVersion, createVersionNumber } from "../../../utils"; +import { StateMachine } from "../../../stateMachine"; export function activateBuildCommand() { // register run project build handler @@ -39,13 +53,32 @@ export function activateBuildCommand() { return; } - const currentProject = extension.ballerinaExtInstance.getDocumentContext().isActiveDiagram() ? await - getCurrentBallerinaProject(extension.ballerinaExtInstance.getDocumentContext().getLatestDocument()?.toString()) - : await getCurrentBallerinaProject(); + const context = StateMachine.context(); + const { workspacePath, view: webviewType, projectPath } = context; + + let targetPath = projectPath ?? ""; + if (workspacePath && webviewType === MACHINE_VIEW.WorkspaceOverview) { + targetPath = workspacePath; + } else if (workspacePath && !projectPath) { + try { + targetPath = await getCurrentProjectRoot(); + } catch (error) { + targetPath = workspacePath; + } + } else { + targetPath = await getCurrentProjectRoot(); + } + + if (!targetPath) { + window.showErrorMessage(MESSAGES.NO_PROJECT_FOUND); + return; + } + + const currentProject = await getCurrentBallerinaProject(targetPath); let balCommand = BALLERINA_COMMANDS.BUILD; - if (isSupportedSLVersion(extension.ballerinaExtInstance, 2201130) && extension.ballerinaExtInstance.enabledExperimentalFeatures()) { + if (isSupportedSLVersion(extension.ballerinaExtInstance, createVersionNumber(2201, 13, 0)) && extension.ballerinaExtInstance.enabledExperimentalFeatures()) { balCommand = BALLERINA_COMMANDS.BUILD_WITH_EXPERIMENTAL; } diff --git a/workspaces/ballerina/ballerina-extension/src/features/project/cmds/cmd-runner.ts b/workspaces/ballerina/ballerina-extension/src/features/project/cmds/cmd-runner.ts index 8dcdc8a3c69..bb23ba35c5e 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/project/cmds/cmd-runner.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/project/cmds/cmd-runner.ts @@ -18,8 +18,9 @@ import { BallerinaProject } from "@wso2/ballerina-core"; import { Terminal, window, workspace } from "vscode"; -import { isSupportedSLVersion, isWindows } from "../../../utils"; +import { isSupportedSLVersion, isWindows, createVersionNumber } from "../../../utils"; import { extension } from "../../../BalExtensionContext"; +import { TracerMachine } from "../../../features/tracing"; export const PALETTE_COMMANDS = { @@ -81,16 +82,16 @@ export enum MESSAGES { NOT_SUPPORT = "Ballerina version is not supported by the VSCode plugin.", MODULE_NAME = "Enter module name.", SELECT_OPTION = "Select a build option.", - NOT_IN_PROJECT = "Current file does not belong to a ballerina project.", + NOT_IN_PROJECT = "Current file does not belong to a Ballerina project.", INVALID_PACK = "Only a Ballerina package can be packed.", INVALID_JSON = "Invalid JSON String", INVALID_JSON_RESPONSE = "JSON response is invalid.", INVALID_XML = "Invalid XML String", - INVALID_XML_RESPONSE = "XML response is invalid." + INVALID_XML_RESPONSE = "XML response is invalid.", + NO_PROJECT_FOUND = "No Ballerina project found." } export const BAL_CONFIG_FILE = 'Config.toml'; -export const BAL_TOML = "Ballerina.toml"; const TERMINAL_NAME = 'Terminal'; const BAL_CONFIG_FILES = 'BAL_CONFIG_FILES'; @@ -98,11 +99,13 @@ let terminal: Terminal; export function runCommand(file: BallerinaProject | string, executor: string, cmd: BALLERINA_COMMANDS, ...args: string[]) { + TracerMachine.startServer(); runCommandWithConf(file, executor, cmd, '', ...args); } export function runCommandWithConf(file: BallerinaProject | string, executor: string, cmd: BALLERINA_COMMANDS, confPath: string, ...args: string[]) { + TracerMachine.startServer(); if (terminal) { terminal.dispose(); } @@ -195,7 +198,7 @@ export function createTerminal(path: string, env?: { [key: string]: string }): v } export function getRunCommand(): BALLERINA_COMMANDS { - if (isSupportedSLVersion(extension.ballerinaExtInstance, 2201130) && extension.ballerinaExtInstance.enabledExperimentalFeatures()) { + if (isSupportedSLVersion(extension.ballerinaExtInstance, createVersionNumber(2201, 13, 0)) && extension.ballerinaExtInstance.enabledExperimentalFeatures()) { return BALLERINA_COMMANDS.RUN_WITH_EXPERIMENTAL; } else if (extension.ballerinaExtInstance.enabledLiveReload()) { return BALLERINA_COMMANDS.RUN_WITH_WATCH; diff --git a/workspaces/ballerina/ballerina-extension/src/features/project/cmds/run.ts b/workspaces/ballerina/ballerina-extension/src/features/project/cmds/run.ts index 0a569981c9a..469442d5eb8 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/project/cmds/run.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/project/cmds/run.ts @@ -25,6 +25,7 @@ import { runCommand, BALLERINA_COMMANDS, PROJECT_TYPE, PALETTE_COMMANDS, runComm import { getCurrentBallerinaProject, getCurrentBallerinaFile, getCurrenDirectoryPath } from "../../../utils/project-utils"; import { prepareAndGenerateConfig } from '../../config-generator/configGenerator'; import { LANGUAGE } from "../../../core"; +import { TracerMachine } from "../../../features/tracing"; function activateRunCmdCommand() { @@ -45,6 +46,7 @@ function activateRunCmdCommand() { async function run(args: any[]) { try { + sendTelemetryEvent(extension.ballerinaExtInstance, TM_EVENT_PROJECT_RUN, CMP_PROJECT_RUN); if (window.activeTextEditor && window.activeTextEditor.document.isDirty) { await commands.executeCommand(PALETTE_COMMANDS.SAVE_ALL); diff --git a/workspaces/ballerina/ballerina-extension/src/features/project/cmds/xml-to-record.ts b/workspaces/ballerina/ballerina-extension/src/features/project/cmds/xml-to-record.ts index 294569cef24..4b3801cf125 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/project/cmds/xml-to-record.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/project/cmds/xml-to-record.ts @@ -22,7 +22,7 @@ import { import { commands, window, env } from "vscode"; import { extension } from "../../../BalExtensionContext"; import { PALETTE_COMMANDS, MESSAGES } from "./cmd-runner"; -import { isSupportedSLVersion } from "../../../utils"; +import { isSupportedSLVersion, createVersionNumber } from "../../../utils"; import { DIAGNOSTIC_SEVERITY, XMLToRecord } from "@wso2/ballerina-core"; const MSG_NOT_SUPPORT = "Paste XML as a Ballerina record feature is not supported"; @@ -34,8 +34,8 @@ export function activatePasteXMLAsRecord() { } commands.registerCommand(PALETTE_COMMANDS.PASTE_XML_AS_RECORD, () => { - // This command is only available since Swan Lake Update 7 patch 2 - if (!isSupportedSLVersion(extension.ballerinaExtInstance, 220172)) { + // This command is only available since Swan Lake Update 7 patch 2 (2201.7.2) + if (!isSupportedSLVersion(extension.ballerinaExtInstance, createVersionNumber(2201, 7, 2))) { window.showErrorMessage(`${MSG_NOT_SUPPORT} in ${extension.ballerinaExtInstance.ballerinaVersion}`); return; } diff --git a/workspaces/ballerina/ballerina-extension/src/features/test-explorer/commands.ts b/workspaces/ballerina/ballerina-extension/src/features/test-explorer/commands.ts index 756d1d23afe..81a1cf1eefa 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/test-explorer/commands.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/test-explorer/commands.ts @@ -32,7 +32,7 @@ export function activateEditBiTest() { } const fileName = entry.id.split(":")[1]; - const fileUri = path.resolve(StateMachine.context().projectUri, `tests`, fileName); + const fileUri = path.resolve(StateMachine.context().projectPath, `tests`, fileName); if (fileUri) { const range = entry.range; openView(EVENT_TYPE.OPEN_VIEW, { documentUri: fileUri, @@ -43,7 +43,7 @@ export function activateEditBiTest() { }); commands.registerCommand(BI_COMMANDS.BI_ADD_TEST_FUNCTION, () => { - const fileUri = path.resolve(StateMachine.context().projectUri, `tests`, `tests.bal`); + const fileUri = path.resolve(StateMachine.context().projectPath, `tests`, `tests.bal`); ensureFileExists(fileUri); openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BITestFunctionForm, documentUri: fileUri, identifier: '', serviceType: 'ADD_NEW_TEST' }); @@ -55,7 +55,7 @@ export function activateEditBiTest() { } const fileName = entry.id.split(":")[1]; - const fileUri = path.resolve(StateMachine.context().projectUri, `tests`, fileName); + const fileUri = path.resolve(StateMachine.context().projectPath, `tests`, fileName); if (fileUri) { openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BITestFunctionForm, documentUri: fileUri, identifier: entry.label, serviceType: 'UPDATE_TEST' }); diff --git a/workspaces/ballerina/ballerina-extension/src/features/test-explorer/discover.ts b/workspaces/ballerina/ballerina-extension/src/features/test-explorer/discover.ts index cc31b0a2d61..e618da6e936 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/test-explorer/discover.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/test-explorer/discover.ts @@ -22,78 +22,155 @@ import { StateMachine } from "../../stateMachine"; import { TestsDiscoveryRequest, TestsDiscoveryResponse, FunctionTreeNode } from "@wso2/ballerina-core"; import { BallerinaExtension } from "../../core"; import { Position, Range, TestController, Uri, TestItem, commands } from "vscode"; +import { getWorkspaceRoot, getCurrentProjectRoot } from "../../utils/project-utils"; let groups: string[] = []; export async function discoverTestFunctionsInProject(ballerinaExtInstance: BallerinaExtension, testController: TestController) { groups.push(testController.id); - const filePath: string = path.join(StateMachine.context().projectUri); - const request: TestsDiscoveryRequest = { - filePath - }; + + const workspaceRoot = getWorkspaceRoot(); + const projectInfo = await ballerinaExtInstance.langClient?.getProjectInfo({ projectPath: workspaceRoot }); + + // Handle workspace with multiple child projects + if (projectInfo?.children?.length > 0) { + await discoverTestsInWorkspace(projectInfo.children, ballerinaExtInstance, testController); + return; + } + + // Handle single project + await discoverTestsInSingleProject(ballerinaExtInstance, testController); +} + +async function discoverTestsInWorkspace( + children: any[], + ballerinaExtInstance: BallerinaExtension, + testController: TestController +) { + // Iterate over project children sequentially to allow awaiting each request + for (const child of children) { + if (!child?.projectPath) { + continue; + } + + const response: TestsDiscoveryResponse = await ballerinaExtInstance.langClient?.getProjectTestFunctions({ + projectPath: child.projectPath + }); + + if (response) { + createTests(response, testController, child.projectPath); + setGroupsContext(); + } + } +} + +async function discoverTestsInSingleProject( + ballerinaExtInstance: BallerinaExtension, + testController: TestController, +) { + const projectPath = await getCurrentProjectRoot(); + + if (!projectPath) { + console.warn('No project root found for test discovery'); + return; + } + + const request: TestsDiscoveryRequest = { projectPath }; const response: TestsDiscoveryResponse = await ballerinaExtInstance.langClient?.getProjectTestFunctions(request); + if (response) { createTests(response, testController); setGroupsContext(); } } -function createTests(response: TestsDiscoveryResponse, testController: TestController) { - if (response.result) { - const projectDir = path.join(StateMachine.context().projectUri); +function createTests(response: TestsDiscoveryResponse, testController: TestController, projectPath?: string) { + if (!response.result) { + return; + } - // Check if the result is a Map or a plain object - const isMap = response.result instanceof Map; + // Check if the result is a Map or a plain object + const isMap = response.result instanceof Map; - // Convert the result to an iterable format - const entries = isMap - ? Array.from(response.result.entries()) // If it's a Map, convert to an array of entries - : Object.entries(response.result); // If it's a plain object, use Object.entries + // Convert the result to an iterable format + const entries = isMap + ? Array.from(response.result.entries()) // If it's a Map, convert to an array of entries + : Object.entries(response.result); // If it's a plain object, use Object.entries - // Iterate over the result map - for (const [group, testFunctions] of entries) { - // Create a test item for the group - const groupId = `group:${group}`; - let groupItem: TestItem = testController.items.get(groupId); + // Determine if we're in a workspace context (multiple projects) + const isWorkspaceContext = projectPath !== undefined; + + // Get or create the project-level group for workspace scenarios + let projectGroupItem: TestItem | undefined; + if (isWorkspaceContext) { + const projectName = path.basename(projectPath); + const projectGroupId = `project:${projectName}`; + + projectGroupItem = testController.items.get(projectGroupId); + if (!projectGroupItem) { + projectGroupItem = testController.createTestItem(projectGroupId, projectName); + testController.items.add(projectGroupItem); + groups.push(projectGroupId); + } + } + + // Iterate over the result map (test groups) + for (const [group, testFunctions] of entries) { + let groupItem: TestItem | undefined; + // For workspace context with DEFAULT_GROUP, skip the group level and add tests directly to project + if (isWorkspaceContext && group === 'DEFAULT_GROUP' && projectGroupItem) { + groupItem = projectGroupItem; + } else if (isWorkspaceContext && projectGroupItem) { + // For workspace context with named groups, create test group under project + const groupId = `group:${path.basename(projectPath)}:${group}`; + groupItem = projectGroupItem.children.get(groupId); + if (!groupItem) { + groupItem = testController.createTestItem(groupId, group); + projectGroupItem.children.add(groupItem); + groups.push(groupId); + } + } else { + // Single project - create group at root level (including DEFAULT_GROUP) + const groupId = `group:${group}`; + groupItem = testController.items.get(groupId); if (!groupItem) { - // If the group doesn't exist, create it groupItem = testController.createTestItem(groupId, group); testController.items.add(groupItem); groups.push(groupId); } + } - // Ensure testFunctions is iterable (convert to an array if necessary) - const testFunctionsArray = Array.isArray(testFunctions) - ? testFunctions // If it's already an array, use it directly - : Object.values(testFunctions); // If it's an object, convert to an array - - // Iterate over the test functions in the group - for (const tf of testFunctionsArray) { - const testFunc: FunctionTreeNode = tf as FunctionTreeNode; - // Generate a unique ID for the test item using the function name - const fileName: string = testFunc.lineRange.fileName; - const fileUri = Uri.file(path.join(projectDir, fileName)); - const testId = `test:${path.basename(fileUri.path)}:${testFunc.functionName}`; - - // Create a test item for the test function - const testItem = testController.createTestItem(testId, testFunc.functionName); - - // Set the range for the test (optional, for navigation) - const startPosition = new Position( - testFunc.lineRange.startLine.line, // Convert to 0-based line number - testFunc.lineRange.startLine.offset - ); - const endPosition = new Position( - testFunc.lineRange.endLine.line, // Convert to 0-based line number - testFunc.lineRange.endLine.offset - ); - testItem.range = new Range(startPosition, endPosition); - - // Add the test item to the group - groupItem.children.add(testItem); - } + // Ensure testFunctions is iterable (convert to an array if necessary) + const testFunctionsArray = Array.isArray(testFunctions) + ? testFunctions // If it's already an array, use it directly + : Object.values(testFunctions); // If it's an object, convert to an array + + // Iterate over the test functions in the group + for (const tf of testFunctionsArray) { + const testFunc: FunctionTreeNode = tf as FunctionTreeNode; + // Generate a unique ID for the test item using the function name + const fileName: string = testFunc.lineRange.fileName; + const resolvedProjectPath = projectPath || StateMachine.context().projectPath; + const fileUri = Uri.file(path.join(resolvedProjectPath, fileName)); + const testId = `test:${resolvedProjectPath}:${path.basename(fileUri.path)}:${testFunc.functionName}`; + + // Create a test item for the test function + const testItem = testController.createTestItem(testId, testFunc.functionName, fileUri); + + // Set the range for the test (optional, for navigation) + const startPosition = new Position( + testFunc.lineRange.startLine.line, // Convert to 0-based line number + testFunc.lineRange.startLine.offset + ); + const endPosition = new Position( + testFunc.lineRange.endLine.line, // Convert to 0-based line number + testFunc.lineRange.endLine.offset + ); + testItem.range = new Range(startPosition, endPosition); + + groupItem.children.add(testItem); } } } @@ -101,48 +178,148 @@ function createTests(response: TestsDiscoveryResponse, testController: TestContr export async function handleFileChange(ballerinaExtInstance: BallerinaExtension, uri: Uri, testController: TestController) { + // Determine which project this file belongs to + const projectInfo = StateMachine.context().projectInfo; + let targetProjectPath: string | undefined; + const isWorkspace = projectInfo?.children?.length > 0; + + // Check if this file belongs to a child project in a workspace + if (isWorkspace) { + for (const child of projectInfo.children) { + if (uri.path.startsWith(child.projectPath)) { + targetProjectPath = child.projectPath; + break; + } + } + } + + // If not found in children, use the main project path + if (!targetProjectPath) { + targetProjectPath = await getCurrentProjectRoot(); + } + + if (!targetProjectPath) { + console.warn('Could not determine project path for file change:', uri.path); + return; + } + const request: TestsDiscoveryRequest = { - filePath: uri.path + projectPath: uri.path }; const response: TestsDiscoveryResponse = await ballerinaExtInstance.langClient?.getFileTestFunctions(request); if (!response || !response.result) { return; } - handleFileDelete(uri, testController); - createTests(response, testController); + await handleFileDelete(uri, testController); + createTests(response, testController, isWorkspace ? targetProjectPath : undefined); setGroupsContext(); } export async function handleFileDelete(uri: Uri, testController: TestController) { - const filePath = path.basename(uri.path); + // Determine which project this file belongs to + const projectInfo = StateMachine.context().projectInfo; + let targetProjectPath: string | undefined; + + // Check if this file belongs to a child project in a workspace + if (projectInfo?.children?.length > 0) { + for (const child of projectInfo.children) { + if (uri.path.startsWith(child.projectPath)) { + targetProjectPath = child.projectPath; + break; + } + } + } + + // If not found in children, use the main project path + if (!targetProjectPath) { + targetProjectPath = await getCurrentProjectRoot(); + } + + if (!targetProjectPath) { + console.warn('Could not determine project path for file deletion:', uri.path); + return; + } + + const fileName = path.basename(uri.path); + + // Helper function to check if a test belongs to the specific file in the specific project + const belongsToFile = (testItem: TestItem): boolean => { + // Test ID format: test:${projectPath}:${fileName}:${functionName} + // We need to match both the project path and the filename + return testItem.id.startsWith(`test:${targetProjectPath}:${fileName}:`); + }; + + // Helper function to delete tests from a test group item + const deleteTestsFromGroup = (groupItem: TestItem) => { + const childrenToDelete: TestItem[] = []; + groupItem.children.forEach((child) => { + if (belongsToFile(child)) { + childrenToDelete.push(child); + } + }); + + // Remove the matching test function items + childrenToDelete.forEach((child) => { + groupItem.children.delete(child.id); + }); + + return groupItem.children.size === 0; + }; // Iterate over all root-level items in the Test Explorer testController.items.forEach((item) => { - if (isTestFunctionItem(item)) { - // If the item is a test function, check if it belongs to the deleted file - if (item.id.startsWith(`test:${filePath}:`)) { - testController.items.delete(item.id); + if (isProjectGroupItem(item)) { + // Only process this project group if it matches our target project + const projectName = path.basename(targetProjectPath); + if (item.id !== `project:${projectName}`) { + return; // Skip this project, it's not the one we're looking for } - } else if (isTestGroupItem(item)) { - // If the item is a test group, iterate over its children - const childrenToDelete: TestItem[] = []; + + // Project group can contain either test groups or tests directly (when DEFAULT_GROUP is skipped) + const groupsToDelete: TestItem[] = []; + const testsToDelete: TestItem[] = []; + item.children.forEach((child) => { - if (child.id.startsWith(`test:${filePath}:`)) { - childrenToDelete.push(child); + if (isTestFunctionItem(child)) { + // Test added directly to project (DEFAULT_GROUP was skipped) + if (belongsToFile(child)) { + testsToDelete.push(child); + } + } else if (isTestGroupItem(child)) { + // Test group - check if it becomes empty after deletion + const isEmpty = deleteTestsFromGroup(child); + if (isEmpty) { + groupsToDelete.push(child); + } } }); - // Remove the matching test function items - childrenToDelete.forEach((child) => { - item.children.delete(child.id); + // Remove tests that belong to the file + testsToDelete.forEach((test) => { + item.children.delete(test.id); }); - // If the group is empty after deletion, remove it + // Remove empty test groups + groupsToDelete.forEach((groupItem) => { + item.children.delete(groupItem.id); + groups = groups.filter((group) => group !== groupItem.id); + }); + + // If the project group is empty after deletion, remove it if (item.children.size === 0) { testController.items.delete(item.id); groups = groups.filter((group) => group !== item.id); } + } else if (isTestGroupItem(item)) { + // Single project scenario - test group at root level + const isEmpty = deleteTestsFromGroup(item); + + // If the group is empty after deletion, remove it + if (isEmpty) { + testController.items.delete(item.id); + groups = groups.filter((group) => group !== item.id); + } } }); } @@ -157,6 +334,11 @@ export function isTestGroupItem(item: TestItem): boolean { return item.id.startsWith('group:'); } +export function isProjectGroupItem(item: TestItem): boolean { + // Project group items have IDs starting with "project:" + return item.id.startsWith('project:'); +} + function setGroupsContext() { commands.executeCommand('setContext', 'testGroups', groups); } diff --git a/workspaces/ballerina/ballerina-extension/src/features/test-explorer/runner.ts b/workspaces/ballerina/ballerina-extension/src/features/test-explorer/runner.ts index e6c03cd9b4e..c1d6aafd496 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/test-explorer/runner.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/test-explorer/runner.ts @@ -21,12 +21,69 @@ import { exec } from 'child_process'; import { CancellationToken, TestRunRequest, TestMessage, TestRun, TestItem, debug, Uri, WorkspaceFolder, DebugConfiguration, workspace, TestRunProfileKind } from 'vscode'; import { testController } from './activator'; import { StateMachine } from "../../stateMachine"; -import { isTestFunctionItem, isTestGroupItem } from './discover'; +import { isTestFunctionItem, isTestGroupItem, isProjectGroupItem } from './discover'; import { extension } from '../../BalExtensionContext'; import { constructDebugConfig } from "../debugger"; const fs = require('fs'); import path from 'path'; +/** + * Extract project path from a test item + * Test IDs have the format: test:${projectPath}:${fileName}:${functionName} + */ +function getProjectPathFromTestItem(test: TestItem): string | undefined { + if (isTestFunctionItem(test)) { + // Extract from test ID: test:${projectPath}:${fileName}:${functionName} + const parts = test.id.split(':'); + if (parts.length >= 2 && parts[0] === 'test') { + return parts[1]; + } + } else if (isProjectGroupItem(test)) { + // For project groups, we need to get a child test to extract the path + let projectPath: string | undefined; + test.children.forEach((child) => { + if (!projectPath) { + projectPath = getProjectPathFromTestItem(child); + } + }); + return projectPath; + } else if (isTestGroupItem(test)) { + // For test groups, check if they have a parent project or extract from children + if (test.parent && isProjectGroupItem(test.parent)) { + return getProjectPathFromTestItem(test.parent); + } + // Otherwise extract from children + let projectPath: string | undefined; + test.children.forEach((child) => { + if (!projectPath) { + projectPath = getProjectPathFromTestItem(child); + } + }); + return projectPath; + } + return StateMachine.context().projectPath; +} + +/** + * Check if we're in a workspace context (multiple projects) + * Returns the project name if in workspace, undefined otherwise + */ +function getProjectNameIfWorkspace(projectPath: string): string | undefined { + const projectInfo = StateMachine.context().projectInfo; + + // Check if this is a workspace with multiple child projects + if (projectInfo?.children?.length > 0) { + // Find the matching child project + for (const child of projectInfo.children) { + if (child.projectPath === projectPath) { + return path.basename(projectPath); + } + } + } + + return undefined; +} + export async function runHandler(request: TestRunRequest, token: CancellationToken) { if (!request.include) { return; @@ -57,11 +114,82 @@ export async function runHandler(request: TestRunRequest, token: CancellationTok run.started(test); + // Get the project path for this test + const projectPath = getProjectPathFromTestItem(test); + if (!projectPath) { + run.failed(test, new TestMessage('Could not determine project path for test')); + run.end(); + return; + } + + // Check if we're in a workspace with multiple projects + const projectName = getProjectNameIfWorkspace(projectPath); + let command: string; const executor = extension.ballerinaExtInstance.getBallerinaCmd(); - if (isTestGroupItem(test)) { + + // Handle running all tests in a project group + if (isProjectGroupItem(test)) { + let testCaseNames: string[] = []; + let testItems: TestItem[] = []; + + // Collect all test functions from the project + // Children can be either test groups or test functions directly (when DEFAULT_GROUP is skipped) + test.children.forEach((child) => { + if (isTestFunctionItem(child)) { + // Test added directly to project (DEFAULT_GROUP was skipped) + testCaseNames.push(child.label); + testItems.push(child); + run.started(child); + } else if (isTestGroupItem(child)) { + // Test group - iterate through its children + child.children.forEach((testFunc) => { + if (isTestFunctionItem(testFunc)) { + testCaseNames.push(testFunc.label); + testItems.push(testFunc); + run.started(testFunc); + } + }); + } + }); + + if (projectName) { + // Workspace context - include project name in command + command = testCaseNames.length > 0 + ? `${executor} test --code-coverage --tests ${testCaseNames.join(',')} ${projectName}` + : `${executor} test --code-coverage ${projectName}`; + } else { + // Single project context + command = testCaseNames.length > 0 + ? `${executor} test --code-coverage --tests ${testCaseNames.join(',')}` + : `${executor} test --code-coverage`; + } + + const startTime = Date.now(); + // For workspace, run from workspace root; for single project, run from project path + const workingDirectory = projectName ? StateMachine.context().workspacePath || projectPath : projectPath; + runCommand(command, workingDirectory).then(() => { + const endTime = Date.now(); + const timeElapsed = calculateTimeElapsed(startTime, endTime, testItems); + + reportTestResults(run, testItems, timeElapsed, projectPath).then(() => { + endGroup(test, true, run); + }).catch(() => { + endGroup(test, false, run); + }); + }).catch(() => { + const endTime = Date.now(); + const timeElapsed = calculateTimeElapsed(startTime, endTime, testItems); + + reportTestResults(run, testItems, timeElapsed, projectPath).then(() => { + endGroup(test, true, run); + }).catch(() => { + endGroup(test, false, run); + }); + }); + } else if (isTestGroupItem(test)) { let testCaseNames: string[] = []; - let testItems : TestItem[] = []; + let testItems: TestItem[] = []; test.children.forEach((child) => { const functionName = child.label; testCaseNames.push(functionName); @@ -69,30 +197,44 @@ export async function runHandler(request: TestRunRequest, token: CancellationTok run.started(child); }); - command = `bal test --tests ${testCaseNames.join(',')} --code-coverage`; + if (projectName) { + // Workspace context - include project name in command + command = `${executor} test --code-coverage --tests ${testCaseNames.join(',')} ${projectName}`; + } else { + // Single project context + command = `${executor} test --code-coverage --tests ${testCaseNames.join(',')}`; + } const startTime = Date.now(); - runCommand(command).then(() => { - const EndTime = Date.now(); - const timeElapsed = (EndTime - startTime) / testItems.length; + // For workspace, run from workspace root; for single project, run from project path + const workingDirectory = projectName ? StateMachine.context().workspacePath || projectPath : projectPath; + runCommand(command, workingDirectory).then(() => { + const endTime = Date.now(); + const timeElapsed = calculateTimeElapsed(startTime, endTime, testItems); - reportTestResults(run, testItems, timeElapsed).then(() => { + reportTestResults(run, testItems, timeElapsed, projectPath).then(() => { endGroup(test, true, run); }).catch(() => { endGroup(test, false, run); }); }).catch(() => { - const EndTime = Date.now(); - const timeElapsed = (EndTime - startTime) / testItems.length; + const endTime = Date.now(); + const timeElapsed = calculateTimeElapsed(startTime, endTime, testItems); - reportTestResults(run, testItems, timeElapsed).then(() => { + reportTestResults(run, testItems, timeElapsed, projectPath).then(() => { endGroup(test, true, run); }).catch(() => { endGroup(test, false, run); }); }); } else if (isTestFunctionItem(test)) { - command = `${executor} test --tests ${test.label} --code-coverage`; + if (projectName) { + // Workspace context - include project name in command + command = `${executor} test --code-coverage --tests ${test.label} ${projectName}`; + } else { + // Single project context + command = `${executor} test --code-coverage --tests ${test.label}`; + } const parentGroup = test.parent; let testItems: TestItem[] = []; @@ -105,30 +247,43 @@ export async function runHandler(request: TestRunRequest, token: CancellationTok } const startTime = Date.now(); - runCommand(command).then(() => { - const EndTime = Date.now(); - const timeElapsed = (EndTime - startTime) / testItems.length; + // For workspace, run from workspace root; for single project, run from project path + const workingDirectory = projectName ? StateMachine.context().workspacePath || projectPath : projectPath; + runCommand(command, workingDirectory).then(() => { + const endTime = Date.now(); + const timeElapsed = calculateTimeElapsed(startTime, endTime, testItems); - reportTestResults(run, testItems, timeElapsed, true).then(() => { + reportTestResults(run, testItems, timeElapsed, projectPath, true).then(() => { endGroup(test, true, run); }).catch(() => { endGroup(test, false, run); }); }).catch(() => { - const EndTime = Date.now(); - const timeElapsed = (EndTime - startTime) / testItems.length; + const endTime = Date.now(); + const timeElapsed = calculateTimeElapsed(startTime, endTime, testItems); - reportTestResults(run, testItems, timeElapsed, true).then(() => { + reportTestResults(run, testItems, timeElapsed, projectPath, true).then(() => { endGroup(test, true, run); }).catch(() => { endGroup(test, false, run); }); - }).finally(() => { + }).finally(() => { run.end(); }); } }); } +/** + * Calculate time elapsed per test item + * @param startTime - Start time in milliseconds + * @param endTime - End time in milliseconds + * @param testItems - Array of test items + * @returns Time elapsed per test item in milliseconds + */ +function calculateTimeElapsed(startTime: number, endTime: number, testItems: TestItem[]): number { + return testItems.length > 0 ? (endTime - startTime) / testItems.length : (endTime - startTime); +} + const TEST_RESULTS_PATH = path.join("target", "report", "test_results.json").toString(); enum TEST_STATUS { @@ -137,12 +292,23 @@ enum TEST_STATUS { SKIPPED = 'SKIPPED', } -async function reportTestResults(run: TestRun, testItems: TestItem[], timeElapsed: number, individualTest: boolean = false) { - const projectRoot = StateMachine.context().projectUri; - +async function reportTestResults(run: TestRun, testItems: TestItem[], timeElapsed: number, projectPath: string, individualTest: boolean = false) { // reading test results + // For workspace projects, results are in workspace/target, not project/target + const projectInfo = StateMachine.context().projectInfo; + const workspacePath = StateMachine.context().workspacePath; + + let testResultsPath: string; + if (projectInfo?.children?.length > 0 && workspacePath) { + // Workspace with multiple projects - results are at workspace root + testResultsPath = path.join(workspacePath, TEST_RESULTS_PATH); + } else { + // Single project - results are in project directory + testResultsPath = path.join(projectPath, TEST_RESULTS_PATH); + } + let testsJson: JSON | undefined = undefined; - testsJson = await readTestJson(path.join(projectRoot!, TEST_RESULTS_PATH).toString()); + testsJson = await readTestJson(testResultsPath); if (!testsJson) { for (const test of testItems) { const testMessage: TestMessage = new TestMessage("Command failed"); @@ -151,7 +317,33 @@ async function reportTestResults(run: TestRun, testItems: TestItem[], timeElapse return; } - const moduleStatus = testsJson["moduleStatus"]; + // For workspace projects, test results are nested under packages[].moduleStatus + // For single projects, they're directly at moduleStatus + let moduleStatus; + if (testsJson["packages"]) { + // Workspace structure - find the matching package + const projectName = path.basename(projectPath); + const packages = testsJson["packages"]; + const matchingPackage = packages.find(pkg => pkg["projectName"] === projectName); + + if (matchingPackage) { + moduleStatus = matchingPackage["moduleStatus"]; + } else { + // If we can't find the specific package, try the first one + moduleStatus = packages[0]?.["moduleStatus"]; + } + } else { + // Single project structure + moduleStatus = testsJson["moduleStatus"]; + } + + if (!moduleStatus) { + for (const test of testItems) { + const testMessage: TestMessage = new TestMessage("No test results found"); + run.failed(test, testMessage, timeElapsed); + } + return; + } for (const test of testItems) { let found = false; @@ -211,9 +403,9 @@ function endGroup(test: TestItem, allPassed: boolean, run: TestRun) { run.end(); } -async function runCommand(command: string): Promise { +async function runCommand(command: string, projectPath: string): Promise { return new Promise((resolve, reject) => { - exec(command, { cwd: StateMachine.context().projectUri }, (error, stdout, stderr) => { + exec(command, { cwd: projectPath }, (error, stdout, stderr) => { if (error) { // Report test failure reject(new Error(stderr || 'Test failed!')); @@ -229,7 +421,7 @@ async function runCommand(command: string): Promise { */ export async function startDebugging(testDebug: boolean, args: any[]) : Promise { - const uri: Uri = Uri.parse(StateMachine.context().projectUri); + const uri: Uri = Uri.parse(StateMachine.context().projectPath); const workspaceFolder: WorkspaceFolder | undefined = workspace.getWorkspaceFolder(uri); const debugConfig: DebugConfiguration = await constructDebugConfig(uri, testDebug, args); diff --git a/workspaces/ballerina/ballerina-extension/src/features/tracing/activate.ts b/workspaces/ballerina/ballerina-extension/src/features/tracing/activate.ts new file mode 100644 index 00000000000..32b21e20a77 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/tracing/activate.ts @@ -0,0 +1,169 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as vscode from 'vscode'; +import { BallerinaExtension } from '../../core'; +import { TracerMachine } from './tracer-machine'; +import { TraceTreeDataProvider } from './trace-tree-view'; +import { TraceServer, Trace } from './trace-server'; +import { TraceDetailsWebview } from './trace-details-webview'; + +export const TRACE_WINDOW_COMMAND = 'ballerina.showTraceWindow'; +export const ENABLE_TRACING_COMMAND = 'ballerina.enableTracing'; +export const DISABLE_TRACING_COMMAND = 'ballerina.disableTracing'; +export const CLEAR_TRACES_COMMAND = 'ballerina.clearTraces'; +export const SHOW_TRACE_DETAILS_COMMAND = 'ballerina.showTraceDetails'; +export const TRACE_VIEW_ID = 'ballerina-traceView'; + +let treeDataProvider: TraceTreeDataProvider | undefined; +let treeView: vscode.TreeView | undefined; + +export function activateTracing(ballerinaExtInstance: BallerinaExtension) { + const workspaceDirs: string[] = []; + try { + const folders = vscode.workspace.workspaceFolders; + if (folders && folders.length > 0) { + workspaceDirs.push(...folders.map(folder => folder.uri.fsPath)); + } + } catch (_) { + // ignore + } + + // Initialize TracerMachine + TracerMachine.initialize(workspaceDirs.length > 0 ? workspaceDirs : undefined); + + // Create TreeDataProvider + treeDataProvider = new TraceTreeDataProvider(); + + // Create and register TreeView in bottom panel (debug container) + treeView = vscode.window.createTreeView(TRACE_VIEW_ID, { + treeDataProvider: treeDataProvider, + showCollapseAll: true + }); + + // Subscribe to TracerMachine state changes to update VS Code context + TracerMachine.onUpdate(async (state: any) => { + await updateContextFromState(state); + }); + + // Set initial context based on current state + const initialState = TracerMachine.getState(); + updateContextFromState(initialState); + + // Register commands + const showTraceWindowCommand = vscode.commands.registerCommand(TRACE_WINDOW_COMMAND, async () => { + await showTraceWindow(); + }); + + const enableTracingCommand = vscode.commands.registerCommand(ENABLE_TRACING_COMMAND, () => { + TracerMachine.enable(); + // Focus the VS Code panel section + vscode.commands.executeCommand('workbench.action.focusPanel'); + // Reveal/focus the ballerina-traceView (shows trace panel in panel) + vscode.commands.executeCommand('workbench.view.extension.ballerina-traceView'); + }); + + const disableTracingCommand = vscode.commands.registerCommand(DISABLE_TRACING_COMMAND, () => { + TracerMachine.disable(); + }); + + const clearTracesCommand = vscode.commands.registerCommand(CLEAR_TRACES_COMMAND, () => { + // Clear traces from the server + TraceServer.clearTraces(); + + // The TraceServer.onTracesCleared callback will update the context and refresh the tree + }); + + const showTraceDetailsCommand = vscode.commands.registerCommand( + SHOW_TRACE_DETAILS_COMMAND, + (trace: Trace) => { + showTraceDetails(trace); + } + ); + + // Add all subscriptions + ballerinaExtInstance.context.subscriptions.push( + treeView, + showTraceWindowCommand, + enableTracingCommand, + disableTracingCommand, + clearTracesCommand, + showTraceDetailsCommand, + treeDataProvider + ); +} + +/** + * Update VS Code context based on TracerMachine state + */ +async function updateContextFromState(state: any): Promise { + const isEnabled = typeof state === 'string' + ? state === 'enabled' + : (typeof state === 'object' && state !== null && 'enabled' in state); + + await vscode.commands.executeCommand('setContext', 'ballerina.tracingEnabled', isEnabled); + + if (isEnabled) { + // Check if traces exist + const traces = TraceServer.getTraces(); + await vscode.commands.executeCommand('setContext', 'ballerina.tracesEmpty', traces.length === 0); + } +} + +/** + * Show/reveal the trace window + */ +async function showTraceWindow(): Promise { + if (!treeView) { + return; + } + + try { + // Show the view by executing the show command for the debug container + // The trace view is in the debug container (bottom panel) + await vscode.commands.executeCommand('workbench.view.debug'); + + // Small delay to ensure the view is ready + await new Promise(resolve => setTimeout(resolve, 100)); + + // If there are traces, try to reveal the first one + const traces = TraceServer.getTraces(); + if (traces.length > 0 && treeDataProvider) { + const children = await treeDataProvider.getChildren(); + if (children && children.length > 0 && children[0]) { + // Reveal the first trace node + await treeView.reveal(children[0], { focus: true, select: false }); + } + } + } catch (error) { + // If reveal fails, at least ensure the view is visible + // The error might be due to getParent, but the view should still be shown + console.error('Error revealing trace window:', error); + } +} + +/** + * Show trace details in a webview + */ +function showTraceDetails(trace: Trace): void { + try { + TraceDetailsWebview.show(trace); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + vscode.window.showErrorMessage(`Failed to show trace details: ${message}`); + } +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/tracing/constants.ts b/workspaces/ballerina/ballerina-extension/src/features/tracing/constants.ts new file mode 100644 index 00000000000..e5709325eb3 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/tracing/constants.ts @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const OTLP_PORT = 59500; // Custom OTLP/HTTP port \ No newline at end of file diff --git a/workspaces/ballerina/ballerina-extension/src/features/tracing/index.ts b/workspaces/ballerina/ballerina-extension/src/features/tracing/index.ts new file mode 100644 index 00000000000..4ca3b150623 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/tracing/index.ts @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { activateTracing, TRACE_WINDOW_COMMAND, ENABLE_TRACING_COMMAND, TRACE_VIEW_ID } from './activate'; +export { TracerMachine } from './tracer-machine'; +export { TraceServer } from './trace-server'; diff --git a/workspaces/ballerina/ballerina-extension/src/features/tracing/trace-details-webview.ts b/workspaces/ballerina/ballerina-extension/src/features/tracing/trace-details-webview.ts new file mode 100644 index 00000000000..4d80bdb88fd --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/tracing/trace-details-webview.ts @@ -0,0 +1,265 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as vscode from 'vscode'; +import * as path from 'path'; +import { Uri, ViewColumn, Webview } from 'vscode'; +import { extension } from '../../BalExtensionContext'; +import { Trace } from './trace-server'; +import { getLibraryWebViewContent, getComposerWebViewOptions, WebViewOptions } from '../../utils/webview-utils'; + +// TraceData interface matching the trace-visualizer component +interface TraceData { + traceId: string; + spans: SpanData[]; + resource: ResourceData; + scope: ScopeData; + firstSeen: string; + lastSeen: string; +} + +interface SpanData { + spanId: string; + traceId: string; + parentSpanId: string; + name: string; + kind: string | number; + startTime?: string; + endTime?: string; + attributes?: AttributeData[]; +} + +interface ResourceData { + name: string; + attributes: AttributeData[]; +} + +interface ScopeData { + name: string; + version?: string; + attributes?: AttributeData[]; +} + +interface AttributeData { + key: string; + value: string; +} + +export class TraceDetailsWebview { + private static instance: TraceDetailsWebview | undefined; + private _panel: vscode.WebviewPanel | undefined; + private _disposables: vscode.Disposable[] = []; + private _trace: Trace | undefined; + private _isAgentChat: boolean = false; + + private constructor() { + this._panel = TraceDetailsWebview.createWebview(); + this._panel.onDidDispose(() => this.dispose(), null, this._disposables); + this.setupMessageHandler(); + } + + private setupMessageHandler(): void { + if (!this._panel) { + return; + } + + this._panel.webview.onDidReceiveMessage( + (message) => { + switch (message.command) { + case 'requestTraceData': + if (this._trace) { + const traceData = this.convertTraceToTraceData(this._trace); + this._panel!.webview.postMessage({ + command: 'traceData', + data: traceData, + isAgentChat: this._isAgentChat, + }); + } + break; + } + }, + null, + this._disposables + ); + } + + private static createWebview(): vscode.WebviewPanel { + const panel = vscode.window.createWebviewPanel( + 'ballerina.trace-details', + 'Trace Details', + ViewColumn.Active, + { + enableScripts: true, + localResourceRoots: [ + Uri.file(path.join(extension.context.extensionPath, 'resources', 'jslibs')), + Uri.file(path.join(extension.context.extensionPath, 'resources')), + ], + retainContextWhenHidden: true, + } + ); + panel.iconPath = { + light: Uri.file(path.join(extension.context.extensionPath, 'resources', 'images', 'icons', 'ballerina.svg')), + dark: Uri.file(path.join(extension.context.extensionPath, 'resources', 'images', 'icons', 'ballerina-inverse.svg')) + }; + return panel; + } + + public static show(trace: Trace, isAgentChat: boolean = false): void { + if (!TraceDetailsWebview.instance || !TraceDetailsWebview.instance._panel) { + // Create new instance if it doesn't exist or was disposed + TraceDetailsWebview.instance = new TraceDetailsWebview(); + } + + // Update the trace and reveal the panel + const instance = TraceDetailsWebview.instance; + instance._trace = trace; + instance._isAgentChat = isAgentChat; + + // Update title based on isAgentChat flag + if (instance._panel) { + instance._panel.title = isAgentChat ? 'Agent Chat Logs' : 'Trace Details'; + } + + instance._panel!.reveal(); + instance.updateWebview(); + } + + private updateWebview(): void { + if (!this._panel || !this._trace) { + return; + } + + this._panel.webview.html = this.getWebviewContent(this._trace, this._panel.webview); + + // Send trace data immediately after updating HTML (in case webview is already loaded) + // The webview will also request it if needed + const traceData = this.convertTraceToTraceData(this._trace); + this._panel.webview.postMessage({ + command: 'traceData', + data: traceData, + isAgentChat: this._isAgentChat, + }); + } + + private convertTraceToTraceData(trace: Trace): TraceData { + return { + traceId: trace.traceId, + spans: trace.spans.map(span => ({ + spanId: span.spanId, + traceId: span.traceId, + parentSpanId: span.parentSpanId, + name: span.name, + kind: span.kind, + startTime: span.startTime, + endTime: span.endTime, + attributes: span.attributes || [], + })), + resource: { + name: trace.resource.name, + attributes: trace.resource.attributes || [], + }, + scope: { + name: trace.scope.name, + version: trace.scope.version, + attributes: trace.scope.attributes || [], + }, + firstSeen: trace.firstSeen.toISOString(), + lastSeen: trace.lastSeen.toISOString(), + }; + } + + private getWebviewContent(trace: Trace, webView: Webview): string { + const body = `
`; + const bodyCss = ``; + const styles = ` + .container { + background-color: var(--vscode-editor-background); + height: 100vh; + width: 100%; + } + `; + const scripts = ` + const vscode = acquireVsCodeApi(); + let traceData = null; + let isAgentChat = false; + + function renderTraceDetails() { + if (window.traceVisualizer && window.traceVisualizer.renderWebview && traceData) { + const container = document.getElementById("webview-container"); + if (container) { + window.traceVisualizer.renderWebview(traceData, isAgentChat, container); + } + } else if (!traceData) { + // Request trace data from extension + vscode.postMessage({ command: 'requestTraceData' }); + } else { + console.error("TraceVisualizer not loaded"); + setTimeout(renderTraceDetails, 100); + } + } + + // Listen for messages from the extension + window.addEventListener('message', event => { + const message = event.data; + switch (message.command) { + case 'traceData': + traceData = message.data; + isAgentChat = message.isAgentChat || false; + renderTraceDetails(); + break; + } + }); + + function loadedScript() { + // Request trace data when script is loaded + vscode.postMessage({ command: 'requestTraceData' }); + } + `; + const options = process.env.TRACE_WEB_VIEW_DEV_HOST ? { devHost: process.env.TRACE_WEB_VIEW_DEV_HOST } : {}; + const webViewOptions: WebViewOptions = { + ...getComposerWebViewOptions("TraceVisualizer", webView, options), + body, + scripts, + styles, + bodyCss, + }; + + return getLibraryWebViewContent(webViewOptions, webView); + } + + + public dispose(): void { + this._panel?.dispose(); + + while (this._disposables.length) { + const disposable = this._disposables.pop(); + if (disposable) { + disposable.dispose(); + } + } + + this._panel = undefined; + this._trace = undefined; + + // Clear the static instance when disposed + if (TraceDetailsWebview.instance === this) { + TraceDetailsWebview.instance = undefined; + } + } +} + diff --git a/workspaces/ballerina/ballerina-extension/src/features/tracing/trace-server-task.ts b/workspaces/ballerina/ballerina-extension/src/features/tracing/trace-server-task.ts new file mode 100644 index 00000000000..1e1bcf33e4f --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/tracing/trace-server-task.ts @@ -0,0 +1,158 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as vscode from 'vscode'; +import { TraceServer } from './trace-server'; +import { OTLP_PORT } from './constants'; + + +/** + * Creates a VS Code task that starts the trace server Express application + * Uses CustomExecution to run the server inside the extension host + * @returns A VS Code Task that starts the trace server + */ +export function createTraceServerTask(): vscode.Task { + const taskDefinition: vscode.TaskDefinition = { + type: 'custom', + task: 'start-trace-server' + }; + + // Create CustomExecution that runs the server in the extension host + const execution = new vscode.CustomExecution(async (): Promise => { + return new TraceServerPseudoterminal(); + }); + + const task = new vscode.Task( + taskDefinition, + vscode.TaskScope.Workspace, + 'Start Trace Server', + 'ballerina-tracing', + execution + ); + + // Configure task presentation + task.presentationOptions = { + reveal: vscode.TaskRevealKind.Always, + panel: vscode.TaskPanelKind.New, + showReuseMessage: false, + clear: false, + echo: true, + focus: false + }; + + // Set task as a background task (keeps running) + task.isBackground = true; + task.problemMatchers = []; + + return task; +} + +/** + * Pseudoterminal implementation for the trace server task + * This runs the Express server inside the extension host + */ +class TraceServerPseudoterminal implements vscode.Pseudoterminal { + private writeEmitter = new vscode.EventEmitter(); + private closeEmitter = new vscode.EventEmitter(); + private serverStarted = false; + + readonly onDidWrite: vscode.Event = this.writeEmitter.event; + readonly onDidClose: vscode.Event = this.closeEmitter.event; + + open(initialDimensions: vscode.TerminalDimensions | undefined): void { + this.writeLine('🚀 Starting Trace Server...'); + this.writeLine(''); + + // Start the trace server + TraceServer.start(OTLP_PORT) + .then(() => { + this.serverStarted = true; + this.writeLine(`📡 OTLP Tracing server started successfully on port ${OTLP_PORT}`); + this.writeLine('Do not close this terminal window. It will be used to receive OTLP traces.'); + }) + .catch((error) => { + const message = error instanceof Error ? error.message : String(error); + this.writeLine(`❌ Failed to start trace server: ${message}`); + + // Check if port is already in use + if (message.includes('EADDRINUSE') || message.includes('address already in use')) { + this.writeLine(''); + this.writeLine(`⚠️ Port ${OTLP_PORT} is already in use.`); + this.writeLine(' The server may already be running.'); + if (TraceServer.isRunning()) { + this.writeLine(' Server is already running in this extension.'); + } + } + + this.writeLine(''); + // Close with error code + setTimeout(() => { + this.closeEmitter.fire(1); + }, 1000); + }); + } + + close(): void { + if (this.serverStarted) { + this.writeLine(''); + this.writeLine('👋 Shutting down trace server...'); + + TraceServer.stop() + .then(() => { + this.writeLine('✅ Trace server stopped'); + this.closeEmitter.fire(0); + }) + .catch((error) => { + const message = error instanceof Error ? error.message : String(error); + this.writeLine(`⚠️ Error stopping server: ${message}`); + this.closeEmitter.fire(1); + }); + } else { + this.closeEmitter.fire(0); + } + } + + handleInput(data: string): void { + // Handle Ctrl+C (EOF) to close the terminal + if (data === '\x03') { // Ctrl+C + this.close(); + } + } + + private writeLine(text: string): void { + this.writeEmitter.fire(text + '\r\n'); + } +} + +/** + * Executes the trace server task + * @param workspaceFolder Optional workspace folder + * @returns Promise that resolves when the task is executed + */ +export async function executeTraceServerTask(): Promise { + const task = createTraceServerTask(); + try { + const taskExecution = await vscode.tasks.executeTask(task); + console.log('Trace server task executed'); + return; + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + vscode.window.showErrorMessage(`Failed to execute trace server task: ${message}`); + throw error; + } +} + diff --git a/workspaces/ballerina/ballerina-extension/src/features/tracing/trace-server.ts b/workspaces/ballerina/ballerina-extension/src/features/tracing/trace-server.ts new file mode 100644 index 00000000000..d29a8fb1f8f --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/tracing/trace-server.ts @@ -0,0 +1,526 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import express from 'express'; +import { EventEmitter } from 'events'; + + +export interface Trace { + traceId: string; + spans: Span[]; + resource: Resource; + scope: Scope; + firstSeen: Date; + lastSeen: Date; +} + +export interface Span { + spanId: string; + traceId: string; + parentSpanId: string; + name: string; + kind: string; + startTime?: string; + endTime?: string; + attributes?: Attribute[]; +} + +export interface Resource { + name: string; + attributes: Attribute[]; +} + +export interface Scope { + name: string; + version?: string; + attributes?: Attribute[]; +} + +export interface Attribute { + key: string; + value: string; +} + +export interface TraceServer { + start(port: number): Promise; + stop(): Promise; + isRunning(): boolean; + getTraces(): Trace[]; + clearTraces(): void; + getTrace(traceId: string): Trace; + getTraceBySpanId(spanId: string): Trace; + getTraceByResource(resource: string): Trace; + getTraceByScope(scope: string): Trace; + getTraceByFirstSeen(firstSeen: Date): Trace; + getTraceByLastSeen(lastSeen: Date): Trace; + onTracesUpdated(callback: () => void): () => void; + onTracesCleared(callback: () => void): () => void; +} + + +const app = express(); +let server: ReturnType | undefined; + +// Parse both JSON and Protobuf +app.use(express.json()); +app.use(express.raw({ type: 'application/x-protobuf', limit: '10mb' })); + +// In-memory trace storage with LRU eviction +const MAX_TRACES = 100; +const traceStore = new Map(); // Map + +// Event emitter for trace updates +const traceEvents = new EventEmitter(); + +// Enforce trace limit with LRU eviction +function enforceTraceLimit(): void { + if (traceStore.size > MAX_TRACES) { + // Convert to array and sort by lastSeen (oldest first) + const traces = Array.from(traceStore.entries()).sort((a, b) => + a[1].lastSeen.getTime() - b[1].lastSeen.getTime() + ); + + // Remove oldest traces until we're at the limit + const numToRemove = traceStore.size - MAX_TRACES; + for (let i = 0; i < numToRemove; i++) { + traceStore.delete(traces[i][0]); + } + } +} + +// Color codes for better readability +const colors = { + reset: '\x1b[0m', + bright: '\x1b[1m', + cyan: '\x1b[36m', + green: '\x1b[32m', + yellow: '\x1b[33m', + red: '\x1b[31m', + magenta: '\x1b[35m', + blue: '\x1b[34m' +}; + +function bytesToHex(bytes) { + if (!bytes) { return 'N/A'; } + if (typeof bytes === 'string') { return bytes; } + return Buffer.from(bytes).toString('hex'); +} + +// REST API endpoint to get traces as JSON +app.get('/api/traces', (req, res) => { + const traces = Array.from(traceStore.values()).sort((a, b) => b.lastSeen - a.lastSeen); + + // Convert to JSON-friendly format with hex IDs + const tracesData = traces.map(trace => ({ + traceId: trace.traceId, + spans: trace.spans.map(span => ({ + ...span, + traceId: bytesToHex(span.traceId), + spanId: bytesToHex(span.spanId), + parentSpanId: bytesToHex(span.parentSpanId) + })), + resource: trace.resource, + scope: trace.scope, + firstSeen: trace.firstSeen, + lastSeen: trace.lastSeen + })); + + res.json({ traces: tracesData }); +}); + +// OTLP/HTTP endpoint for traces +app.post('/v1/traces', async (req, res) => { + const contentType = req.headers['content-type'] || ''; + + try { + let resourceSpans; + + // Handle Protobuf format (default from Java SDK) + if (contentType.includes('application/x-protobuf') || Buffer.isBuffer(req.body)) { + + // The @opentelemetry/otlp-transformer can decode protobuf + // But it's complex, so let's use a simpler approach with protobufjs + const { default: protobuf } = await import('protobufjs'); + + // Define the complete OTLP protobuf schema inline + const root = protobuf.Root.fromJSON({ + nested: { + opentelemetry: { + nested: { + proto: { + nested: { + trace: { + nested: { + v1: { + nested: { + TracesData: { + fields: { + resourceSpans: { + rule: 'repeated', + type: 'ResourceSpans', + id: 1 + } + } + }, + ResourceSpans: { + fields: { + resource: { type: 'Resource', id: 1 }, + scopeSpans: { rule: 'repeated', type: 'ScopeSpans', id: 2 }, + schemaUrl: { type: 'string', id: 3 } + } + }, + Resource: { + fields: { + attributes: { rule: 'repeated', type: 'KeyValue', id: 1 }, + droppedAttributesCount: { type: 'uint32', id: 2 } + } + }, + ScopeSpans: { + fields: { + scope: { type: 'InstrumentationScope', id: 1 }, + spans: { rule: 'repeated', type: 'Span', id: 2 }, + schemaUrl: { type: 'string', id: 3 } + } + }, + InstrumentationScope: { + fields: { + name: { type: 'string', id: 1 }, + version: { type: 'string', id: 2 }, + attributes: { rule: 'repeated', type: 'KeyValue', id: 3 }, + droppedAttributesCount: { type: 'uint32', id: 4 } + } + }, + Span: { + fields: { + traceId: { type: 'bytes', id: 1 }, + spanId: { type: 'bytes', id: 2 }, + traceState: { type: 'string', id: 3 }, + parentSpanId: { type: 'bytes', id: 4 }, + name: { type: 'string', id: 5 }, + kind: { type: 'SpanKind', id: 6 }, + startTimeUnixNano: { type: 'fixed64', id: 7 }, + endTimeUnixNano: { type: 'fixed64', id: 8 }, + attributes: { rule: 'repeated', type: 'KeyValue', id: 9 }, + droppedAttributesCount: { type: 'uint32', id: 10 }, + events: { rule: 'repeated', type: 'Event', id: 11 }, + droppedEventsCount: { type: 'uint32', id: 12 }, + links: { rule: 'repeated', type: 'Link', id: 13 }, + droppedLinksCount: { type: 'uint32', id: 14 }, + status: { type: 'Status', id: 15 }, + flags: { type: 'uint32', id: 16 } + } + }, + Event: { + fields: { + timeUnixNano: { type: 'fixed64', id: 1 }, + name: { type: 'string', id: 2 }, + attributes: { rule: 'repeated', type: 'KeyValue', id: 3 }, + droppedAttributesCount: { type: 'uint32', id: 4 } + } + }, + Link: { + fields: { + traceId: { type: 'bytes', id: 1 }, + spanId: { type: 'bytes', id: 2 }, + traceState: { type: 'string', id: 3 }, + attributes: { rule: 'repeated', type: 'KeyValue', id: 4 }, + droppedAttributesCount: { type: 'uint32', id: 5 }, + flags: { type: 'uint32', id: 6 } + } + }, + KeyValue: { + fields: { + key: { type: 'string', id: 1 }, + value: { type: 'AnyValue', id: 2 } + } + }, + AnyValue: { + fields: { + stringValue: { type: 'string', id: 1 }, + boolValue: { type: 'bool', id: 2 }, + intValue: { type: 'int64', id: 3 }, + doubleValue: { type: 'double', id: 4 }, + arrayValue: { type: 'ArrayValue', id: 5 }, + kvlistValue: { type: 'KeyValueList', id: 6 }, + bytesValue: { type: 'bytes', id: 7 } + } + }, + ArrayValue: { + fields: { + values: { rule: 'repeated', type: 'AnyValue', id: 1 } + } + }, + KeyValueList: { + fields: { + values: { rule: 'repeated', type: 'KeyValue', id: 1 } + } + }, + Status: { + fields: { + message: { type: 'string', id: 2 }, + code: { type: 'StatusCode', id: 3 } + } + }, + SpanKind: { + values: { + SPAN_KIND_UNSPECIFIED: 0, + SPAN_KIND_INTERNAL: 1, + SPAN_KIND_SERVER: 2, + SPAN_KIND_CLIENT: 3, + SPAN_KIND_PRODUCER: 4, + SPAN_KIND_CONSUMER: 5 + } + }, + StatusCode: { + values: { + STATUS_CODE_UNSET: 0, + STATUS_CODE_OK: 1, + STATUS_CODE_ERROR: 2 + } + } + } + } + } + } + } + } + } + } + } + }); + + const TracesData = root.lookupType('opentelemetry.proto.trace.v1.TracesData'); + const decoded = TracesData.decode(req.body); + const traceData = TracesData.toObject(decoded, { + longs: String, + bytes: Array + }); + + resourceSpans = traceData.resourceSpans; + } + // Handle JSON format + else { + resourceSpans = req.body.resourceSpans; + } + + if (resourceSpans && Array.isArray(resourceSpans)) { + // Group spans by traceId to show trace structure + const traceMap = new Map(); + let totalSpans = 0; + const now = new Date(); + + // Helper function to extract string value from OTLP AnyValue + const extractValue = (anyValue: any): string => { + if (!anyValue) { return ''; } + if (typeof anyValue === 'string') { return anyValue; } + if (anyValue.stringValue !== undefined) { return String(anyValue.stringValue); } + if (anyValue.intValue !== undefined) { return String(anyValue.intValue); } + if (anyValue.doubleValue !== undefined) { return String(anyValue.doubleValue); } + if (anyValue.boolValue !== undefined) { return String(anyValue.boolValue); } + return ''; + }; + + // Helper function to extract resource name from attributes + const extractResourceName = (resource: any): string => { + if (resource.name) { return resource.name; } + if (resource.attributes) { + const serviceNameAttr = resource.attributes.find((attr: any) => + attr.key === 'service.name' || attr.key === 'service_name' + ); + if (serviceNameAttr) { + return extractValue(serviceNameAttr.value); + } + } + return 'Unknown Resource'; + }; + + // Helper function to process resource attributes + const processAttributes = (attributes: any[]): Array<{key: string; value: string}> => { + if (!attributes || !Array.isArray(attributes)) { return []; } + return attributes.map((attr: any) => ({ + key: attr.key || '', + value: extractValue(attr.value) + })); + }; + + // Collect all spans and group by traceId + resourceSpans.forEach(resourceSpan => { + if (resourceSpan.scopeSpans) { + resourceSpan.scopeSpans.forEach(scopeSpan => { + if (scopeSpan.spans) { + scopeSpan.spans.forEach(span => { + const traceId = bytesToHex(span.traceId); + if (!traceMap.has(traceId)) { + // Process resource and scope + const resourceName = extractResourceName(resourceSpan.resource); + const scopeName = scopeSpan.scope?.name || 'Unknown Scope'; + + traceMap.set(traceId, { + spans: [], + resource: { + name: resourceName, + attributes: processAttributes(resourceSpan.resource?.attributes) + }, + scope: { + name: scopeName, + version: scopeSpan.scope?.version, + attributes: processAttributes(scopeSpan.scope?.attributes) + } + }); + } + // Convert span IDs to hex strings to match interface + // Convert timestamps from nanoseconds to ISO strings + const startTime = span.startTimeUnixNano + ? new Date(Number(span.startTimeUnixNano) / 1_000_000).toISOString() + : undefined; + const endTime = span.endTimeUnixNano + ? new Date(Number(span.endTimeUnixNano) / 1_000_000).toISOString() + : undefined; + + const processedSpan = { + ...span, + spanId: bytesToHex(span.spanId), + traceId: traceId, + parentSpanId: bytesToHex(span.parentSpanId || ''), + startTime, + endTime, + attributes: processAttributes(span.attributes) + }; + traceMap.get(traceId).spans.push(processedSpan); + totalSpans++; + }); + } + }); + } + }); + + // Store traces in memory + traceMap.forEach((traceData, traceId) => { + if (traceStore.has(traceId)) { + // Update existing trace + const existing = traceStore.get(traceId); + existing.spans.push(...traceData.spans); + existing.lastSeen = now; + } else { + // Add new trace + traceStore.set(traceId, { + traceId, + spans: traceData.spans, + resource: traceData.resource, + scope: traceData.scope, + firstSeen: now, + lastSeen: now + }); + } + }); + + // Enforce LRU eviction if we exceed the limit + enforceTraceLimit(); + + // Emit event for trace updates + traceEvents.emit('tracesUpdated'); + + // Simple logging - just show received data + console.log(`${colors.cyan}📨 Received ${totalSpans} span(s) across ${traceMap.size} trace(s) | Total stored: ${traceStore.size} trace(s)${colors.reset}`); + } else { + console.log(`${colors.red}⚠️ Invalid OTLP payload - no resourceSpans found${colors.reset}`); + } + + res.status(200).json({ partialSuccess: {} }); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + const stack = error instanceof Error ? error.stack : undefined; + console.error(`${colors.red}Error processing traces:${colors.reset}`, message); + if (stack) { console.error(stack); } + res.status(500).json({ error: message }); + } +}); + +app.get('/health', (req, res) => { + res.status(200).json({ status: 'healthy', service: 'devtrace-otlp-server' }); +}); + + + + +export const TraceServer: TraceServer = { + start: (port: number) => new Promise((resolve, reject) => { + if (server) { + // Server already running + resolve(); + return; + } + + server = app.listen(port, () => { + resolve(); + }); + server.on('error', (error) => { + reject(error); + }); + }), + stop: () => new Promise((resolve, reject) => { + if (!server) { + resolve(); + return; + } + server.close((error) => { + if (error) { + reject(error); + } else { + server = undefined; + resolve(); + } + }); + }), + isRunning: () => { + return server?.listening ?? false; + }, + getTraces: () => { + return Array.from(traceStore.values()); + }, + clearTraces: () => { + traceStore.clear(); + traceEvents.emit('tracesCleared'); + }, + getTrace: (traceId: string) => { + return traceStore.get(traceId); + }, + getTraceBySpanId: (spanId: string) => { + return Array.from(traceStore.values()).find(trace => trace.spans.some(span => span.spanId === spanId)); + }, + getTraceByResource: (resource: string) => { + return Array.from(traceStore.values()).find(trace => trace.resource.name === resource); + }, + getTraceByScope: (scope: string) => { + return Array.from(traceStore.values()).find(trace => trace.scope.name === scope); + }, + getTraceByFirstSeen: (firstSeen: Date) => { + return Array.from(traceStore.values()).find(trace => trace.firstSeen === firstSeen); + }, + getTraceByLastSeen: (lastSeen: Date) => { + return Array.from(traceStore.values()).find(trace => trace.lastSeen === lastSeen); + }, + onTracesUpdated: (callback: () => void) => { + traceEvents.on('tracesUpdated', callback); + return () => traceEvents.off('tracesUpdated', callback); + }, + onTracesCleared: (callback: () => void) => { + traceEvents.on('tracesCleared', callback); + return () => traceEvents.off('tracesCleared', callback); + } +}; \ No newline at end of file diff --git a/workspaces/ballerina/ballerina-extension/src/features/tracing/trace-tree-view.ts b/workspaces/ballerina/ballerina-extension/src/features/tracing/trace-tree-view.ts new file mode 100644 index 00000000000..aa2bee9098f --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/tracing/trace-tree-view.ts @@ -0,0 +1,455 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as vscode from 'vscode'; +import { Trace, Span } from './trace-server'; +import { TraceServer } from './trace-server'; +import { TracerMachine } from './tracer-machine'; + +/** + * Represents a trace node in the tree view + */ +class TraceNode { + constructor( + public readonly trace: Trace, + public readonly label: string + ) {} +} + +/** + * Represents a span node in the tree view + */ +class SpanNode { + constructor( + public readonly span: Span, + public readonly traceId: string, + public readonly label: string, + public readonly children: SpanNode[] + ) {} +} + +/** + * TreeDataProvider for displaying traces and spans + */ +export class TraceTreeDataProvider implements vscode.TreeDataProvider { + private _onDidChangeTreeData: vscode.EventEmitter = + new vscode.EventEmitter(); + readonly onDidChangeTreeData: vscode.Event = + this._onDidChangeTreeData.event; + + private traceServerUnsubscribeUpdated?: () => void; + private traceServerUnsubscribeCleared?: () => void; + + constructor() { + // Subscribe to TracerMachine state changes + // Note: TracerMachine.onUpdate doesn't return unsubscribe function + TracerMachine.onUpdate((state: any) => { + this.refresh(); + }); + + // Subscribe to TraceServer updates + this.traceServerUnsubscribeUpdated = TraceServer.onTracesUpdated(async () => { + const traces = TraceServer.getTraces(); + if (traces.length > 0) { + // Update context when first trace arrives + await vscode.commands.executeCommand('setContext', 'ballerina.tracesEmpty', false); + } + this.refresh(); + }); + + this.traceServerUnsubscribeCleared = TraceServer.onTracesCleared(async () => { + await vscode.commands.executeCommand('setContext', 'ballerina.tracesEmpty', true); + this.refresh(); + }); + } + + refresh(): void { + this._onDidChangeTreeData.fire(); + } + + getTreeItem(element: TraceNode | SpanNode): vscode.TreeItem { + if (element instanceof TraceNode) { + const item = new vscode.TreeItem( + element.label, + vscode.TreeItemCollapsibleState.Collapsed + ); + item.tooltip = `Trace ID: ${element.trace.traceId}\n` + + `Resource: ${element.trace.resource.name}\n` + + `Scope: ${element.trace.scope.name}\n` + + `First Seen: ${element.trace.firstSeen.toLocaleString()}\n` + + `Last Seen: ${element.trace.lastSeen.toLocaleString()}\n` + + `Spans: ${element.trace.spans.length}`; + item.iconPath = new vscode.ThemeIcon('search'); + item.contextValue = 'trace'; + // Add command to open trace details when clicked + item.command = { + command: 'ballerina.showTraceDetails', + title: 'Show Trace Details', + arguments: [element.trace] + }; + return item; + } else { + // SpanNode + const hasChildren = element.children.length > 0; + const item = new vscode.TreeItem( + element.label, + hasChildren ? vscode.TreeItemCollapsibleState.Collapsed : vscode.TreeItemCollapsibleState.None + ); + + // Build tooltip with span details + const spanKind = this.getSpanKindLabel(element.span.kind); + item.tooltip = `Span: ${element.span.name}\n` + + `Kind: ${spanKind}\n` + + `Trace ID: ${element.traceId}\n` + + `Span ID: ${element.span.spanId}\n` + + (element.span.parentSpanId && element.span.parentSpanId !== '0000000000000000' ? `Parent Span ID: ${element.span.parentSpanId}` : 'Root Span'); + + item.iconPath = new vscode.ThemeIcon('package'); + item.contextValue = 'span'; + return item; + } + } + + async getChildren(element?: TraceNode | SpanNode): Promise<(TraceNode | SpanNode)[]> { + // Check if tracing is enabled + const isEnabled = TracerMachine.isEnabled(); + + if (!isEnabled) { + // Return empty array - VS Code will show placeholder from viewsWelcome + return []; + } + + // Get traces from TraceServer + const traces = TraceServer.getTraces(); + + if (traces.length === 0) { + // Return empty array - VS Code will show empty state placeholder + // Make sure ballerina.tracesEmpty context is set to true + await vscode.commands.executeCommand('setContext', 'ballerina.tracesEmpty', true); + return []; + } + + // Update context - traces exist now + await vscode.commands.executeCommand('setContext', 'ballerina.tracesEmpty', false); + + // Return trace nodes or span nodes based on element + if (!element) { + // Root level - return all traces + return traces.map(trace => new TraceNode( + trace, + `Trace: ${this.truncateId(trace.traceId)}` + )); + } else if (element instanceof TraceNode) { + // Trace node - return child spans (organized hierarchically) + return this.getSpansForTrace(element.trace); + } else if (element instanceof SpanNode) { + // Span node - return child spans if any + return element.children; + } + + return []; + } + + getParent(element: TraceNode | SpanNode): vscode.ProviderResult { + // Root elements (TraceNodes) have no parent + if (element instanceof TraceNode) { + return undefined; + } + + // For SpanNodes, find the parent based on parentSpanId + if (element instanceof SpanNode) { + const parentSpanId = element.span.parentSpanId; + + // If no parent span ID or it's the root span marker, parent is the TraceNode + if (!parentSpanId || + parentSpanId === '0000000000000000' || + parentSpanId === '') { + // Return the parent TraceNode + const traces = TraceServer.getTraces(); + const trace = traces.find(t => t.traceId === element.traceId); + if (trace) { + return new TraceNode(trace, `Trace: ${this.truncateId(trace.traceId)}`); + } + return undefined; + } + + // Find the parent span in the same trace + const traces = TraceServer.getTraces(); + const trace = traces.find(t => t.traceId === element.traceId); + if (trace) { + // Find the parent span by parentSpanId + const parentSpan = trace.spans.find(s => s.spanId === parentSpanId); + if (parentSpan) { + // Build the hierarchy and find the parent SpanNode + const spanNodes = this.getSpansForTrace(trace); + const parentNode = this.findSpanNodeById(parentSpanId, spanNodes); + if (parentNode) { + return parentNode; + } + + // If not found in hierarchy (shouldn't happen), create one + // This is a fallback for edge cases + const label = this.formatSpanLabel(parentSpan); + return new SpanNode(parentSpan, element.traceId, label, []); + } + } + } + + return undefined; + } + + /** + * Recursively find a span node by span ID + */ + private findSpanNodeById(spanId: string, spanNodes: SpanNode[]): SpanNode | null { + for (const spanNode of spanNodes) { + if (spanNode.span.spanId === spanId) { + return spanNode; + } + + // Recursively search in children + const found = this.findSpanNodeById(spanId, spanNode.children); + if (found) { + return found; + } + } + + return null; + } + + /** + * Get spans for a trace, organized in a hierarchical structure + */ + private getSpansForTrace(trace: Trace): SpanNode[] { + const spanMap = new Map(); + const rootSpans: SpanNode[] = []; + + // First pass: create all span nodes + trace.spans.forEach(span => { + // spanId is already a hex string from trace-server + const spanIdHex = span.spanId || ''; + const label = this.formatSpanLabel(span); + + spanMap.set(spanIdHex, new SpanNode( + span, + trace.traceId, + label, + [] // Children will be set in second pass + )); + }); + + // Second pass: build parent-child relationships + trace.spans.forEach(span => { + const spanIdHex = span.spanId || ''; + const parentSpanIdHex = span.parentSpanId || ''; + const spanNode = spanMap.get(spanIdHex); + + if (!spanNode) { + return; + } + + // Root span: empty or all zeros parentSpanId, or parent not found + if (!parentSpanIdHex || + parentSpanIdHex === '0000000000000000' || + parentSpanIdHex === '' || + !spanMap.has(parentSpanIdHex)) { + rootSpans.push(spanNode); + } else { + // Child span - add to parent's children + const parentNode = spanMap.get(parentSpanIdHex); + if (parentNode) { + parentNode.children.push(spanNode); + } + } + }); + + // Sort root spans by span name for consistency + rootSpans.sort((a, b) => a.span.name.localeCompare(b.span.name)); + + return rootSpans; + } + + /** + * Format span label with name and kind + */ + private formatSpanLabel(span: Span): string { + const spanKind = this.getSpanKindLabel(span.kind); + return `${span.name} (${spanKind})`; + } + + /** + * Get human-readable span kind label + */ + private getSpanKindLabel(kind: string | number): string { + if (typeof kind === 'string') { + return kind; + } + const kindMap: { [key: number]: string } = { + 0: 'UNSPECIFIED', + 1: 'INTERNAL', + 2: 'SERVER', + 3: 'CLIENT', + 4: 'PRODUCER', + 5: 'CONSUMER' + }; + return kindMap[kind] || `UNKNOWN(${kind})`; + } + + /** + * Truncate trace ID for display + */ + private truncateId(id: string, length: number = 8): string { + if (id.length <= length) { + return id; + } + return `${id.substring(0, length)}...`; + } + + /** + * Format trace details as text for display in editor + */ + static formatTraceDetails(trace: Trace): string { + const lines: string[] = []; + + // Header + lines.push('='.repeat(80)); + lines.push('TRACE DETAILS'); + lines.push('='.repeat(80)); + lines.push(''); + + // Trace Information + lines.push('Trace ID:'); + lines.push(` ${trace.traceId}`); + lines.push(''); + + lines.push('Resource:'); + lines.push(` Name: ${trace.resource.name}`); + if (trace.resource.attributes && trace.resource.attributes.length > 0) { + lines.push(' Attributes:'); + trace.resource.attributes.forEach(attr => { + lines.push(` ${attr.key}: ${attr.value}`); + }); + } + lines.push(''); + + lines.push('Instrumentation Scope:'); + lines.push(` Name: ${trace.scope.name}`); + if (trace.scope.version) { + lines.push(` Version: ${trace.scope.version}`); + } + if (trace.scope.attributes && trace.scope.attributes.length > 0) { + lines.push(' Attributes:'); + trace.scope.attributes.forEach(attr => { + lines.push(` ${attr.key}: ${attr.value}`); + }); + } + lines.push(''); + + lines.push('Timestamps:'); + lines.push(` First Seen: ${trace.firstSeen.toLocaleString()}`); + lines.push(` Last Seen: ${trace.lastSeen.toLocaleString()}`); + const duration = trace.lastSeen.getTime() - trace.firstSeen.getTime(); + lines.push(` Duration: ${duration}ms`); + lines.push(''); + + // Spans + lines.push('='.repeat(80)); + lines.push(`SPANS (${trace.spans.length} total)`); + lines.push('='.repeat(80)); + lines.push(''); + + // Build span hierarchy + const spanMap = new Map(); + const rootSpans: Span[] = []; + + trace.spans.forEach(span => { + spanMap.set(span.spanId, span); + }); + + trace.spans.forEach(span => { + const parentSpanId = span.parentSpanId || ''; + if (!parentSpanId || + parentSpanId === '0000000000000000' || + parentSpanId === '' || + !spanMap.has(parentSpanId)) { + rootSpans.push(span); + } + }); + + // Format spans recursively + const formatSpan = (span: Span, indent: number = 0): void => { + const indentStr = ' '.repeat(indent); + const spanKind = this.getSpanKindLabelStatic(span.kind); + + lines.push(`${indentStr}${'─'.repeat(60 - indent * 2)}`); + lines.push(`${indentStr}Span: ${span.name}`); + lines.push(`${indentStr} ID: ${span.spanId}`); + lines.push(`${indentStr} Kind: ${spanKind}`); + if (span.parentSpanId && span.parentSpanId !== '0000000000000000') { + lines.push(`${indentStr} Parent Span ID: ${span.parentSpanId}`); + } else { + lines.push(`${indentStr} Parent: Root Span`); + } + lines.push(`${indentStr} Trace ID: ${span.traceId}`); + + // Find child spans + const childSpans = trace.spans.filter(s => s.parentSpanId === span.spanId); + if (childSpans.length > 0) { + lines.push(`${indentStr} Child Spans: ${childSpans.length}`); + childSpans.forEach(childSpan => { + formatSpan(childSpan, indent + 1); + }); + } + lines.push(''); + }; + + // Format all root spans + rootSpans.forEach(span => { + formatSpan(span, 0); + }); + + return lines.join('\n'); + } + + /** + * Get human-readable span kind label (static version) + */ + private static getSpanKindLabelStatic(kind: string | number): string { + if (typeof kind === 'string') { + return kind; + } + const kindMap: { [key: number]: string } = { + 0: 'UNSPECIFIED', + 1: 'INTERNAL', + 2: 'SERVER', + 3: 'CLIENT', + 4: 'PRODUCER', + 5: 'CONSUMER' + }; + return kindMap[kind] || `UNKNOWN(${kind})`; + } + + /** + * Dispose resources + */ + dispose(): void { + this.traceServerUnsubscribeUpdated?.(); + this.traceServerUnsubscribeCleared?.(); + this._onDidChangeTreeData.dispose(); + } +} + diff --git a/workspaces/ballerina/ballerina-extension/src/features/tracing/tracer-machine.ts b/workspaces/ballerina/ballerina-extension/src/features/tracing/tracer-machine.ts new file mode 100644 index 00000000000..db7143831e9 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/tracing/tracer-machine.ts @@ -0,0 +1,539 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { createMachine, assign, interpret } from 'xstate'; +import type { Interpreter } from 'xstate'; +import { TraceServer } from './trace-server'; +import * as path from 'path'; +import * as fs from 'fs'; +import { createTraceServerTask } from './trace-server-task'; +import * as vscode from 'vscode'; +import { setTracingConfig, removeTracingConfig } from './utils'; +import { OTLP_PORT } from './constants'; + + + +/** + * State machine flow + * + * If the tracing is enabled in the project, the state machine will transition to the enabled state. + * If the tracing is not enabled in the project, the state machine will transition to the disabled state. + * + * User can manually enable/disable tracing via UI + * Then trace machine will update all the projects with relevent imports + * + * When user runs the program when state machine is enabled + * it will start the tracing server and it will be on for rest of the program execution. + * + * If user disable tracing via UI + * it will stop the tracing server and it will be off for rest of the program execution. + * + * We will only capture trace logs if the window is opened + * + */ + +/** + * Context for the tracing server state machine + */ +export interface TracerMachineContext { + serverPort?: number; + serverPid?: number; + error?: string; + startFailureReason?: string; + workspaceDirs?: string[]; + isDisabling?: boolean; + traceServer?: TraceServer; + taskExecution?: vscode.TaskExecution; + taskTerminationListener?: vscode.Disposable; +} + +/** + * Check if tracing is enabled in the current project + */ +function isTraceEnabledInProject(context: TracerMachineContext): Promise<{ isTraceEnabledInProject: boolean }> { + return new Promise((resolve) => { + // Check if a file called trace_enabled.bal exists in any workspace dir + const traceEnabled = context.workspaceDirs?.some((workspaceDir) => { + return fs.existsSync(path.join(workspaceDir, 'trace_enabled.bal')); + }) ?? false; + + resolve({ isTraceEnabledInProject: traceEnabled }); + }); +} + +function enableTracingInProject(context: TracerMachineContext, event?: any): void { + console.log('enableTracingInProject called with context:', { + workspaceDirs: context.workspaceDirs, + hasWorkspaceDirs: !!context.workspaceDirs, + workspaceDirsLength: context.workspaceDirs?.length || 0 + }); + + if (!context.workspaceDirs || context.workspaceDirs.length === 0) { + console.error('enableTracingInProject: No workspace directories provided'); + return; + } + + context.workspaceDirs.forEach((workspaceDir) => { + try { + const traceFilePath = path.join(workspaceDir, 'trace_enabled.bal'); + fs.writeFileSync(traceFilePath, 'import ballerinax/idetraceprovider as _;'); + + setTracingConfig(workspaceDir); + } catch (error) { + console.error(`Failed to write trace_enabled.bal to ${workspaceDir}:`, error); + } + }); +} + +function disableTracingInProject(context: TracerMachineContext, event?: any): void { + console.log('disableTracingInProject called with context:', { + workspaceDirs: context.workspaceDirs, + hasWorkspaceDirs: !!context.workspaceDirs, + workspaceDirsLength: context.workspaceDirs?.length || 0 + }); + + if (!context.workspaceDirs || context.workspaceDirs.length === 0) { + console.error('disableTracingInProject: No workspace directories provided'); + return; + } + + context.workspaceDirs.forEach((workspaceDir) => { + try { + const traceFilePath = path.join(workspaceDir, 'trace_enabled.bal'); + if (fs.existsSync(traceFilePath)) { + fs.unlinkSync(traceFilePath); + } + removeTracingConfig(workspaceDir); + } catch (error) { + console.error(`Failed to disable tracing in ${workspaceDir}:`, error); + } + }); +} + +function startServer(context: TracerMachineContext, event?: any): Thenable { + const task = createTraceServerTask(); + return vscode.tasks.executeTask(task); +} + +function stopServer(context: TracerMachineContext, event?: any): Promise { + return TraceServer.stop(); +} + + +/** + * Creates a state machine for managing the tracing server lifecycle + */ +function createTracerMachine(workspaceDirs?: string[]) { + return createMachine( + { + /** @xstate-layout N4IgpgJg5mDOIC5QBcBOBDAxmVBZLAFgJYB2YAxAIIAi1A+gOoDyASgNIDKACpQMICiHANoAGALqJQABwD2sIsiIySkkAA9EARgBM2gMwA6TQBYRANgCsAdgAcFm2e0mANCACeWkVYMBOC3s1NHxsREWMLYzM9AF9o1zQsHHxMYjJyFn5cJgA1fkZWTh4BYXFVWXlFZVUNBB0vAz1g4z0RPWMrYzszVw9a7Vj4jGw8QlIwA1IFcghlcdIANxkAa3GE4eTUuZIFBAWZTHRKklExE7K5BSUVJHVEC00bIwe-MzNNKzM7HsROiwMOqx6SzaGwfXRAgYgNZJUZkCbbZDTWbwxYrAzQkYpMbwnZ7A5HE5CTQSG7lS5VG41d7GAxOczWETaaz+XTfBBmYw+AzWHyaBkWMJ8qyQjEbbGTRE4VAyVAGKQAG0OADMZQBbdFDGFYuES3YkRb4q6E0qki5HapaHyGUG6bQ+XT+EQCvRskIiXyRNpeKyhEQ+MwizWYzYGMAkdAAI3lkHI1AAkhxKAAhAAy-DOpoqVwtCCsugMZh9Zh8rXMVl5xjZmg5ZiMIk0jT8rRemkDiWD2LDkejEHS-AAYhkOAAJDPSM3ZymIWzeHxWyyhPS2dqV9yIRruvkmJdBV5LtvrWHjLtRyAGWA4eY4DjIGRSKQxjgAFUoLCfdA4-BYuRYY5AZPNKdcwsbQCyZUsHEZECbCrRlNAMYxdBsFc-TncIDy1EMTx7c9L2vZB0FQRQSCgJEdX1ZZViDMU4Wws8L1QK9UBvQjiKgPUDUOI1xD-ADJ1AKk-VAwFjFE6xAm0esXTXWpWm8d4QR9RDATMJ0MI7Wjw1PCBcMY-DWNIUipRlOVFWQFVUHVUUj1DLScIYpiWKIwyOP2LjlGNElxyzCkBM8e1-jaMSrAkqTXRCgt-QCRpNHrGd1Jo487PovDUH7dAiB7J8ZCcxEMifFgAE1eInXzblqKJDHLT5nV5VoHDZEt5LzBwrFsBslxsBKbLonSHJwdLMsgbLcr7AriuJc4fOuPyKr0Kr-TsZtYr0BqZK6AsWs5f1PidHxuu1JLuxSvTmIIojHyfJguA-L8fxK6ac0k7RawsecojeyxAhgmT7W8RCQTeCwgbUuIoWonrkr61KbzvKRDLIrZUSo9tEts47odO2H7xcvF3OOHiTW88kZvK57XvevRPvuB42UBf6kPaOSWneA6sKh3THNvHGSPIYzZQVZU1Q1VHIYxzn8Lh3GKMNDzCa8-9StJmpntnJdlOUgVbFdNoEOLDpC0ZODWzB6zDoMCAiFgDHyH4AA5ZM0wekmc2sKs2tAmw7X0HRAjeTo2exS3re0vtB0EUcicVx6gIbeCQrCN4Pdeawft6BsSwMGwSy9v1OmQ4xYjBkgZAgOBVDNzYppdoCAFpNDZFpQK+4xqxBCxgb+wPyIUavANm9o2Vb0CFJsea5zebQPm7o7tL7-jyv8bx-B0K1fSCPk2Q7917RBPwfDa4J+lNiHzd6iWzrhyB57Kmp7D+Fe7RaUIN4sRqve5cxdwCUwQv2k-RZnw5v1M6BkSI32Voge0jxCwbytNWSwwRGrBAQkhJ0QQC5WAsDPdG2kL6DSyjlc6yAIE5m3H8dqLQsHZycFPV0xZfBITHlTSSXscHnxAbla+mYa6zQeI4MCApORMlWiFNOiBQTwVHn4NoNhYp2nYcAmG3N4bgJ4f3MmQIuQcidP4FkIkdZ-G-sCcI5YAg4ODhjUhQFn4GFaHUVuC5VrIXdkELO2d5FWnuH4Iu0QgA */ + id: 'tracerMachine', + initial: 'init', + context: { + serverPort: OTLP_PORT, + serverPid: undefined, + error: undefined, + startFailureReason: undefined, + workspaceDirs: workspaceDirs || [], + isDisabling: false, + taskExecution: undefined, + taskTerminationListener: undefined + }, + on: { + ADD_WORKSPACES: { + actions: assign({ + workspaceDirs: (context, event) => [...context.workspaceDirs, (event as any).workspaceDir], + }), + }, + REMOVE_WORKSPACES: { + actions: assign({ + workspaceDirs: (context, event) => context.workspaceDirs.filter((dir) => dir !== (event as any).workspaceDir), + }), + }, + }, + states: { + /** + * Initial state when the tracer machine is first created + */ + init: { + entry: () => { + console.log('Tracer state: init'); + }, + + invoke: { + src: 'initializeTracer', + onDone: [ + { + target: 'enabled', + cond: (context, event) => { + const traceEnabled = (event as any).data?.isTraceEnabledInProject; + return traceEnabled === true; + } + }, + { + target: 'disabled' + } + ], + onError: { + target: 'disabled', + actions: assign({ + startFailureReason: (context, event) => (event as any).data?.error || context.error, + error: (context, event) => (event as any).data?.error || context.error, + }), + }, + } + }, + + /** + * Tracer is enabled and ready to start the server + * Contains nested states for server lifecycle management + */ + enabled: { + initial: 'serverStopped', + entry: [ + () => { + console.log('Tracer state: enabled'); + }, + assign({ + error: undefined, + }), + () => { + // TODO: Implement enable logic (register handlers, etc.) + }, + ], + on: { + DISABLE: [ + { + target: 'enabled.serverStopping', + cond: () => { + // If server is running, stop it first before disabling + return TraceServer.isRunning(); + }, + actions: [ + assign({ + isDisabling: true, + }), + ], + }, + { + target: 'disabled', + actions: [ + disableTracingInProject, + ], + }, + ], + + REFRESH: { + target: 'init', + actions: assign({ + error: undefined, + startFailureReason: undefined, + serverPort: undefined, + serverPid: undefined, + isDisabling: false, + }), + } + }, + states: { + /** + * Server is stopped (initial state when enabled) + */ + serverStopped: { + entry: () => { + console.log('Tracer state: enabled.serverStopped'); + }, + + on: { + START_SERVER: { + target: "serverStarting" + } + } + }, + + serverStarting: { + invoke: { + src: startServer, + onDone: { + target: "serverStarted", + actions: assign({ + error: undefined, + taskExecution: (context, event) => (event as any).data, + }), + }, + onError: { + target: "serverFailedToStart", + actions: assign({ + error: (context, event) => { + const err = (event as any).data; + return err instanceof Error ? err.message : String(err); + } + }) + } + } + }, + /** + * Server start failed + */ + serverFailedToStart: { + entry: () => { + console.log('Tracer state: enabled.serverFailedToStart'); + }, + + on: { + RETRY: [{ + target: "serverStarted", + cond: "New guard" + }, "serverStarted"] + } + }, + + /** + * Server is started and running + */ + serverStarted: { + entry: [ + () => { + console.log('Tracer state: enabled.serverStarted'); + }, + assign({ + error: undefined, + }), + ], + invoke: { + id: 'taskTerminationListener', + src: (context, event) => (callback, onReceive) => { + // Capture taskExecution reference at setup time + const taskExecution = context.taskExecution; + + // Set up task termination listener + const disposable = vscode.tasks.onDidEndTask((taskEvent) => { + // Check if the ended task matches our task execution + if (taskExecution && taskEvent.execution === taskExecution) { + console.log('Trace server task terminated'); + callback({ type: 'TASK_TERMINATED' }); + } + }); + + // Return cleanup function + return () => { + disposable.dispose(); + }; + }, + }, + on: { + STOP_SERVER: { + target: "serverStopping" + }, + TASK_TERMINATED: { + target: "serverStopped", + actions: [ + assign({ + taskExecution: undefined, + }), + ], + } + } + }, + + serverStopping: { + invoke: { + src: stopServer, + onDone: [ + { + target: "#tracerMachine.disabled", + cond: (context) => context.isDisabling === true, + actions: [ + disableTracingInProject, + assign({ + isDisabling: false, + }), + ], + }, + { + target: "serverStopped", + }, + ], + onError: { + target: "serverStarted", + actions: [ + assign({ + error: (context, event) => { + const err = (event as any).data; + return err instanceof Error ? err.message : String(err); + }, + isDisabling: false, + }), + ], + } + }, + on: { + DISABLE: { + actions: [ + assign({ + isDisabling: true, + }), + ], + }, + }, + } + }, + }, + + /** + * Tracer is disabled (server cannot be started) + */ + disabled: { + entry: [ + () => { + console.log('Tracer state: disabled'); + }, + assign({ + isDisabling: false, + }), + ], + on: { + ENABLE: { + target: 'enabled', + actions: enableTracingInProject, + }, + REFRESH: { + target: 'init', + actions: assign({ + error: undefined, + startFailureReason: undefined, + serverPort: undefined, + serverPid: undefined, + isDisabling: false, + }), + } + }, + } + }, + }, + { + services: { + // Initialize the tracer + initializeTracer: isTraceEnabledInProject + }, + }); +} + +// Service instance (created on initialization) +let tracerService: ReturnType | undefined; + +/** + * Ensures the tracer service is initialized and returns it + * @throws {Error} If the tracer service is not initialized + */ +function ensureInitialized(): ReturnType { + if (!tracerService) { + throw new Error('TracerMachine not initialized. Call initialize() first.'); + } + return tracerService; +} + +/** + * Singleton object providing access to the tracer state machine + */ +export const TracerMachine = { + /** + * Create and start the tracer machine with workspace directories + */ + initialize: (workspaceDirs?: string[]) => { + const machine = createTracerMachine(workspaceDirs); + tracerService = interpret(machine) as ReturnType; + tracerService.start(); + }, + + addWorkspace: (workspaceDir: string) => { + ensureInitialized().send({ type: 'ADD_WORKSPACES' }, { workspaceDir }); + }, + + removeWorkspace: (workspaceDir: string) => { + ensureInitialized().send({ type: 'REMOVE_WORKSPACES' }, { workspaceDir }); + }, + + + isEnabled: () => { + const value = ensureInitialized().getSnapshot().value; + if (typeof value === 'string') { + return value === 'enabled'; + } + if (typeof value === 'object' && value !== null) { + return value.hasOwnProperty('enabled'); + } + return false; + }, + + isServerStarted: () => { + const snapshot = ensureInitialized().getSnapshot(); + const value = snapshot.value; + if (typeof value === 'string') { + return value === 'enabled.serverStarted'; + } + if (typeof value === 'object' && value !== null) { + const obj = value as Record; + return obj.enabled === 'serverStarted'; + } + return false; + }, + + /** + * Get the current state value (for testing) + */ + getState: () => { + return ensureInitialized().getSnapshot().value; + }, + + startServer: () => { + ensureInitialized().send({ type: 'START_SERVER' }); + }, + + stopServer: () => { + ensureInitialized().send({ type: 'STOP_SERVER' }); + }, + + enable: () => { + ensureInitialized().send({ type: 'ENABLE' }); + }, + + disable: () => { + ensureInitialized().send({ type: 'DISABLE' }); + }, + + refresh: (workspaceDirs?: string[]) => { + const snapshot = ensureInitialized().getSnapshot(); + const context = snapshot.context as TracerMachineContext; + const currentWorkspaceDirs = context.workspaceDirs || []; + const updatedWorkspaceDirs = workspaceDirs || currentWorkspaceDirs; + const machine = createTracerMachine(updatedWorkspaceDirs); + tracerService = interpret(machine) as ReturnType; + tracerService.start(); + }, + + onUpdate: (callback: (state: any) => void) => { + ensureInitialized().subscribe((state) => { + callback(state.value); + }); + }, + + getTraceServer: () => { + return TraceServer; + }, +}; + diff --git a/workspaces/ballerina/ballerina-extension/src/features/tracing/utils.ts b/workspaces/ballerina/ballerina-extension/src/features/tracing/utils.ts new file mode 100644 index 00000000000..64915867015 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/tracing/utils.ts @@ -0,0 +1,425 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as fs from 'fs'; +import * as path from 'path'; +import { parse } from 'toml'; +import { OTLP_PORT } from './constants'; + +/** + * Sets tracing configuration in Config.toml and Ballerina.toml files + * + * This function will: + * - Read existing Config.toml if it exists + * - Update or add [ballerina.observe] section with tracingEnabled = true and tracingProvider = "idetraceprovider" + * - Update or add [ballerinax.idetraceprovider] section with endpoint = "http://localhost:/v1/traces" + * - Read existing Ballerina.toml if it exists + * - Update or add [build-options] section with observabilityIncluded = true + * - Preserve all other existing configuration + * + * @param workspaceDir The workspace directory where Config.toml and Ballerina.toml should be created/updated + * @returns Promise Resolves when configuration is successfully written + * @throws Error if file operations fail + */ +export async function setTracingConfig(workspaceDir: string): Promise { + // Update Config.toml + const configFilePath = path.join(workspaceDir, 'Config.toml'); + + // Read existing Config.toml content if it exists + let existingContent = ''; + let parsedConfig: any = {}; + + if (fs.existsSync(configFilePath)) { + try { + existingContent = fs.readFileSync(configFilePath, 'utf-8'); + parsedConfig = parse(existingContent); + } catch (error) { + console.error('Failed to parse existing Config.toml:', error); + // Continue with empty config if parsing fails + } + } + + // Update the parsed config object + if (!parsedConfig['ballerina']) { + parsedConfig['ballerina'] = {}; + } + if (!parsedConfig['ballerina']['observe']) { + parsedConfig['ballerina']['observe'] = {}; + } + + parsedConfig['ballerina']['observe']['tracingEnabled'] = true; + parsedConfig['ballerina']['observe']['tracingProvider'] = 'idetraceprovider'; + + // Convert the updated config object back to TOML string + const updatedContent = convertObjectToToml(parsedConfig, existingContent); + + // Write the updated content to Config.toml + fs.writeFileSync(configFilePath, updatedContent, 'utf-8'); + + // Update Ballerina.toml + const ballerinaTomlPath = path.join(workspaceDir, 'Ballerina.toml'); + + // Read existing Ballerina.toml content if it exists + let ballerinaTomlContent = ''; + if (fs.existsSync(ballerinaTomlPath)) { + try { + ballerinaTomlContent = fs.readFileSync(ballerinaTomlPath, 'utf-8'); + } catch (error) { + console.error('Failed to read existing Ballerina.toml:', error); + // Continue with empty content if reading fails + } + } + + // Update or add [build-options] section with observabilityIncluded = true + ballerinaTomlContent = updateOrAddSection( + ballerinaTomlContent, + 'build-options', + { + observabilityIncluded: true + } + ); + + // Ensure file ends with newline + if (!ballerinaTomlContent.endsWith('\n')) { + ballerinaTomlContent += '\n'; + } + + // Write the updated content to Ballerina.toml + fs.writeFileSync(ballerinaTomlPath, ballerinaTomlContent, 'utf-8'); +} + +/** + * Converts a JavaScript object to TOML format string + * Uses a simpler approach: updates existing sections or appends new ones + * + * @param config The parsed config object + * @param originalContent Original TOML content for reference + * @returns TOML formatted string + */ +function convertObjectToToml(config: any, originalContent: string): string { + let updatedContent = originalContent || ''; + + // Update or add [ballerina.observe] section + updatedContent = updateOrAddSection( + updatedContent, + 'ballerina.observe', + { + tracingEnabled: config.ballerina?.observe?.tracingEnabled ?? true, + tracingProvider: config.ballerina?.observe?.tracingProvider ?? 'idetraceprovider' + } + ); + + // Ensure file ends with newline + if (!updatedContent.endsWith('\n')) { + updatedContent += '\n'; + } + + return updatedContent; +} + +/** + * Updates an existing TOML section or adds it if it doesn't exist + * + * @param content Original TOML content + * @param sectionName Section name (e.g., 'ballerina.observe') + * @param values Object with key-value pairs to set in the section + * @returns Updated TOML content + */ +function updateOrAddSection(content: string, sectionName: string, values: Record): string { + const sectionHeader = `[${sectionName}]`; + + // Build the new section content + let sectionLines: string[] = [sectionHeader]; + for (const [key, value] of Object.entries(values)) { + const formattedValue = typeof value === 'string' ? `"${value}"` : String(value); + sectionLines.push(`${key} = ${formattedValue}`); + } + const sectionContent = sectionLines.join('\n'); + + // Check if section exists + const lines = content.split('\n'); + const sectionStartIndex = lines.findIndex(line => line.trim() === sectionHeader); + + if (sectionStartIndex !== -1) { + // Section exists - find where it ends + let sectionEndIndex = lines.length; + for (let i = sectionStartIndex + 1; i < lines.length; i++) { + const trimmedLine = lines[i].trim(); + // Check if this is the start of a new section + if (trimmedLine.startsWith('[') && trimmedLine.endsWith(']')) { + sectionEndIndex = i; + break; + } + } + + // Replace the section + const beforeSection = lines.slice(0, sectionStartIndex); + const afterSection = lines.slice(sectionEndIndex); + + // Combine: before + new section + after + const resultLines: string[] = []; + if (beforeSection.length > 0) { + resultLines.push(...beforeSection); + } + resultLines.push(...sectionLines); + if (afterSection.length > 0) { + resultLines.push(...afterSection); + } + + return resultLines.join('\n'); + } + + // Section doesn't exist - append it + const trimmedLines = lines.filter((line, index) => { + // Remove trailing empty lines + if (index >= lines.length - 1 && line.trim() === '') { + return false; + } + return true; + }); + + // Add the new section + if (trimmedLines.length > 0 && trimmedLines[trimmedLines.length - 1].trim() !== '') { + trimmedLines.push(''); + } + trimmedLines.push(...sectionLines); + + return trimmedLines.join('\n'); +} + +/** + * Removes tracing configuration from Config.toml and Ballerina.toml files + * + * This function will: + * - Read existing Config.toml if it exists + * - Remove tracingEnabled and tracingProvider from [ballerina.observe] section + * (removes the entire section if it becomes empty) + * - Remove the entire [ballerinax.idetraceprovider] section + * - Read existing Ballerina.toml if it exists + * - Remove observabilityIncluded from [build-options] section + * (removes the entire section if it becomes empty) + * - Preserve all other existing configuration + * + * @param workspaceDir The workspace directory where Config.toml and Ballerina.toml should be updated + * @returns Promise Resolves when configuration is successfully written + * @throws Error if file operations fail + */ +export async function removeTracingConfig(workspaceDir: string): Promise { + // Remove from Config.toml + const configFilePath = path.join(workspaceDir, 'Config.toml'); + + // If file doesn't exist, nothing to do + if (!fs.existsSync(configFilePath)) { + return; + } + + // Read existing Config.toml content + let existingContent = ''; + try { + existingContent = fs.readFileSync(configFilePath, 'utf-8'); + } catch (error) { + console.error('Failed to read Config.toml:', error); + throw error; + } + + // Remove the tracing configuration sections + let updatedContent = removeSection(existingContent, 'ballerinax.idetraceprovider'); + + // Remove tracing keys from [ballerina.observe] section + updatedContent = removeKeysFromSection( + updatedContent, + 'ballerina.observe', + ['tracingEnabled', 'tracingProvider'] + ); + + // Clean up trailing newlines but ensure file ends with one + updatedContent = updatedContent.trimEnd(); + if (updatedContent.length > 0 && !updatedContent.endsWith('\n')) { + updatedContent += '\n'; + } + + // Write the updated content to Config.toml + fs.writeFileSync(configFilePath, updatedContent, 'utf-8'); + + // Remove from Ballerina.toml + const ballerinaTomlPath = path.join(workspaceDir, 'Ballerina.toml'); + + // If file doesn't exist, nothing to do + if (!fs.existsSync(ballerinaTomlPath)) { + return; + } + + // Read existing Ballerina.toml content + let ballerinaTomlContent = ''; + try { + ballerinaTomlContent = fs.readFileSync(ballerinaTomlPath, 'utf-8'); + } catch (error) { + console.error('Failed to read Ballerina.toml:', error); + throw error; + } + + // Remove observabilityIncluded from [build-options] section + ballerinaTomlContent = removeKeysFromSection( + ballerinaTomlContent, + 'build-options', + ['observabilityIncluded'] + ); + + // Clean up trailing newlines but ensure file ends with one + ballerinaTomlContent = ballerinaTomlContent.trimEnd(); + if (ballerinaTomlContent.length > 0 && !ballerinaTomlContent.endsWith('\n')) { + ballerinaTomlContent += '\n'; + } + + // Write the updated content to Ballerina.toml + fs.writeFileSync(ballerinaTomlPath, ballerinaTomlContent, 'utf-8'); +} + +/** + * Removes an entire section from TOML content + * + * @param content Original TOML content + * @param sectionName Section name (e.g., 'ballerinax.idetraceprovider') + * @returns Updated TOML content with section removed + */ +function removeSection(content: string, sectionName: string): string { + const sectionHeader = `[${sectionName}]`; + const lines = content.split('\n'); + const sectionStartIndex = lines.findIndex(line => line.trim() === sectionHeader); + + if (sectionStartIndex === -1) { + // Section doesn't exist, return original content + return content; + } + + // Find where the section ends + let sectionEndIndex = lines.length; + for (let i = sectionStartIndex + 1; i < lines.length; i++) { + const trimmedLine = lines[i].trim(); + // Check if this is the start of a new section + if (trimmedLine.startsWith('[') && trimmedLine.endsWith(']')) { + sectionEndIndex = i; + break; + } + } + + // Remove the section + const beforeSection = lines.slice(0, sectionStartIndex); + const afterSection = lines.slice(sectionEndIndex); + + // Combine before and after, removing extra empty lines + const resultLines: string[] = []; + + if (beforeSection.length > 0) { + resultLines.push(...beforeSection); + } + + if (afterSection.length > 0) { + // Remove trailing empty line from before section if present + if (resultLines.length > 0 && resultLines[resultLines.length - 1].trim() === '') { + resultLines.pop(); + } + // Remove leading empty line from after section if present + let afterStart = 0; + if (afterSection[0]?.trim() === '') { + afterStart = 1; + } + resultLines.push(...afterSection.slice(afterStart)); + } + + return resultLines.join('\n'); +} + +/** + * Removes specific keys from a TOML section + * If the section becomes empty after removing keys, removes the entire section + * + * @param content Original TOML content + * @param sectionName Section name (e.g., 'ballerina.observe') + * @param keysToRemove Array of keys to remove from the section + * @returns Updated TOML content with keys removed + */ +function removeKeysFromSection(content: string, sectionName: string, keysToRemove: string[]): string { + const sectionHeader = `[${sectionName}]`; + const lines = content.split('\n'); + const sectionStartIndex = lines.findIndex(line => line.trim() === sectionHeader); + + if (sectionStartIndex === -1) { + // Section doesn't exist, return original content + return content; + } + + // Find where the section ends + let sectionEndIndex = lines.length; + for (let i = sectionStartIndex + 1; i < lines.length; i++) { + const trimmedLine = lines[i].trim(); + // Check if this is the start of a new section + if (trimmedLine.startsWith('[') && trimmedLine.endsWith(']')) { + sectionEndIndex = i; + break; + } + } + + // Extract section lines + const sectionLines = lines.slice(sectionStartIndex, sectionEndIndex); + + // Remove keys from section + const remainingLines = sectionLines.filter(line => { + const trimmedLine = line.trim(); + // Keep the section header + if (trimmedLine === sectionHeader) { + return true; + } + // Check if this line contains a key we want to remove + for (const key of keysToRemove) { + // Match key = value (with or without quotes, with or without spaces) + const keyPattern = new RegExp(`^\\s*${key.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\s*=`); + if (keyPattern.test(trimmedLine)) { + return false; // Remove this line + } + } + // Keep all other lines + return true; + }); + + // Check if section is empty (only header remains) + const hasContent = remainingLines.some((line, index) => { + // Skip the header line + return index > 0 && line.trim() !== ''; + }); + + // If section is empty, remove the entire section + if (!hasContent) { + return removeSection(content, sectionName); + } + + // Rebuild content with remaining section lines + const beforeSection = lines.slice(0, sectionStartIndex); + const afterSection = lines.slice(sectionEndIndex); + + const resultLines: string[] = []; + if (beforeSection.length > 0) { + resultLines.push(...beforeSection); + } + resultLines.push(...remainingLines); + if (afterSection.length > 0) { + resultLines.push(...afterSection); + } + + return resultLines.join('\n'); +} + diff --git a/workspaces/ballerina/ballerina-extension/src/features/tracing/webview.ts b/workspaces/ballerina/ballerina-extension/src/features/tracing/webview.ts new file mode 100644 index 00000000000..a20b1c91ea7 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/tracing/webview.ts @@ -0,0 +1,298 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as vscode from 'vscode'; +import * as path from 'path'; +import { Uri, ViewColumn } from 'vscode'; +import { extension } from '../../BalExtensionContext'; + +export class TraceWindowWebview { + public static currentPanel: TraceWindowWebview | undefined; + public static readonly viewType = 'ballerina.trace-window'; + private _panel: vscode.WebviewPanel | undefined; + private _disposables: vscode.Disposable[] = []; + private _logEntries: LogEntry[] = []; + + constructor() { + this._panel = TraceWindowWebview.createWebview(); + this._panel.onDidDispose(() => this.dispose(), null, this._disposables); + this._panel.webview.html = this.getWebviewContent(this._panel.webview); + + // Handle messages from webview + this._panel.webview.onDidReceiveMessage( + message => { + switch (message.command) { + case 'clear': + this._logEntries = []; + this.updateWebview(); + break; + case 'export': + this.exportLogs(); + break; + } + }, + null, + this._disposables + ); + } + + private static createWebview(): vscode.WebviewPanel { + const panel = vscode.window.createWebviewPanel( + TraceWindowWebview.viewType, + "Ballerina Trace Window", + ViewColumn.Beside, + { + enableScripts: true, + localResourceRoots: [Uri.file(path.join(extension.context.extensionPath, 'resources'))], + retainContextWhenHidden: true, + } + ); + panel.iconPath = { + light: Uri.file(path.join(extension.context.extensionPath, 'resources', 'images', 'icons', 'ballerina.svg')), + dark: Uri.file(path.join(extension.context.extensionPath, 'resources', 'images', 'icons', 'ballerina-inverse.svg')) + }; + return panel; + } + + public getWebview(): vscode.WebviewPanel | undefined { + return this._panel; + } + + public addLogEntry(message: string, category: 'stderr' | 'stdout' | 'stdlog') { + const entry: LogEntry = { + timestamp: new Date().toISOString(), + message: message, + category: category, + level: category === 'stderr' ? 'error' : 'info' + }; + this._logEntries.push(entry); + this.updateWebview(); + } + + private updateWebview() { + if (this._panel) { + this._panel.webview.postMessage({ + command: 'updateLogs', + logs: this._logEntries + }); + } + } + + private async exportLogs() { + try { + const logsContent = this._logEntries + .map(entry => `[${entry.timestamp}] [${entry.level}] ${entry.message}`) + .join('\n'); + + if (logsContent.trim()) { + const doc = await vscode.workspace.openTextDocument({ + content: logsContent, + language: 'plaintext' + }); + await vscode.window.showTextDocument(doc); + } + } catch (error) { + vscode.window.showErrorMessage('Failed to export logs: ' + error); + } + } + + private getWebviewContent(webView: vscode.Webview): string { + const logsHtml = this._logEntries.map((log, index) => + `
+ ${log.timestamp} + [${log.level}] + ${this.escapeHtml(log.message)} +
` + ).join(''); + + return ` + + + + + Ballerina Trace Window + + + +
+

Ballerina Trace Logs

+
+ + +
+
+
+ ${this._logEntries.length === 0 ? '
No trace logs yet. Start debugging or running your Ballerina program to see logs here.
' : logsHtml} +
+ + +`; + } + + private escapeHtml(text: string): string { + const map: { [key: string]: string } = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + return text.replace(/[&<>"']/g, m => map[m]); + } + + public dispose() { + TraceWindowWebview.currentPanel = undefined; + this._panel?.dispose(); + + while (this._disposables.length) { + const disposable = this._disposables.pop(); + if (disposable) { + disposable.dispose(); + } + } + + this._panel = undefined; + } +} + +interface LogEntry { + timestamp: string; + message: string; + category: 'stderr' | 'stdout' | 'stdlog'; + level: 'error' | 'info' | 'success'; +} + diff --git a/workspaces/ballerina/ballerina-extension/src/features/tryit/activator.ts b/workspaces/ballerina/ballerina-extension/src/features/tryit/activator.ts index 78f3bc072d4..0f740e5a862 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/tryit/activator.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/tryit/activator.ts @@ -25,9 +25,12 @@ import { BallerinaExtension } from "src/core"; import Handlebars from "handlebars"; import { clientManager, findRunningBallerinaProcesses, handleError, HTTPYAC_CONFIG_TEMPLATE, TRYIT_TEMPLATE, waitForBallerinaService } from "./utils"; import { BIDesignModelResponse, OpenAPISpec } from "@wso2/ballerina-core"; +import { getProjectWorkingDirectory } from "../../utils/file-utils"; import { startDebugging } from "../editor-support/activator"; import { v4 as uuidv4 } from "uuid"; import { createGraphqlView } from "../../views/graphql"; +import { StateMachine } from "../../stateMachine"; +import { getCurrentProjectRoot } from "../../utils/project-utils"; // File constants const FILE_NAMES = { @@ -65,16 +68,25 @@ async function openTryItView(withNotice: boolean = false, resourceMetadata?: Res throw new Error('Ballerina Language Server is not connected'); } - const workspaceRoot = vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders[0].uri.fsPath; - if (!workspaceRoot) { + const currentProjectRoot = await getCurrentProjectRoot(); + if (!currentProjectRoot) { throw new Error('Please open a workspace first'); } - let services: ServiceInfo[] | null = await getAvailableServices(workspaceRoot); + // If currentProjectRoot is a file (single file project), use its directory + // Otherwise, use the current project root + let projectPath: string; + try { + projectPath = getProjectWorkingDirectory(currentProjectRoot); + } catch (error) { + throw new Error(`Failed to determine working directory`); + } + + let services: ServiceInfo[] | null = await getAvailableServices(projectPath); // if the getDesignModel() LS API is unavailable, create a ServiceInfo from ServiceMetadata to support Try It functionality. (a fallback logic for Ballerina versions prior to 2201.12.x) if (services == null && serviceMetadata && filePath) { - const service = createServiceInfoFromMetadata(serviceMetadata, workspaceRoot, filePath); + const service = createServiceInfoFromMetadata(serviceMetadata, projectPath, filePath); services = [service]; } @@ -94,7 +106,7 @@ async function openTryItView(withNotice: boolean = false, resourceMetadata?: Res return; } } else { - const processesRunning = await checkBallerinaProcessRunning(workspaceRoot); + const processesRunning = await checkBallerinaProcessRunning(projectPath); if (!processesRunning) { return; } @@ -146,33 +158,33 @@ async function openTryItView(withNotice: boolean = false, resourceMetadata?: Res return; } - const targetDir = path.join(workspaceRoot, 'target'); + const targetDir = path.join(projectPath, 'target'); if (!fs.existsSync(targetDir)) { fs.mkdirSync(targetDir); } if (selectedService.type === ServiceType.HTTP) { const openapiSpec: OAISpec = await getOpenAPIDefinition(selectedService); - const selectedPort: number = await getServicePort(workspaceRoot, selectedService, openapiSpec); + const selectedPort: number = await getServicePort(projectPath, selectedService, openapiSpec); selectedService.port = selectedPort; const tryitFileUri = await generateTryItFileContent(targetDir, openapiSpec, selectedService, resourceMetadata); await openInSplitView(tryitFileUri, 'http'); } else if (selectedService.type === ServiceType.GRAPHQL) { - const selectedPort: number = await getServicePort(workspaceRoot, selectedService); + const selectedPort: number = await getServicePort(projectPath, selectedService); const port = selectedPort; const path = selectedService.basePath; const service = `http://localhost:${port}${path}`; await createGraphqlView(service); } else if (selectedService.type === ServiceType.MCP) { - const selectedPort: number = await getServicePort(workspaceRoot, selectedService); + const selectedPort: number = await getServicePort(projectPath, selectedService); selectedService.port = selectedPort; const path = selectedService.basePath; const serviceUrl = `http://localhost:${selectedPort}${path}`; await openMcpInspector(serviceUrl); } else { - const selectedPort: number = await getServicePort(workspaceRoot, selectedService); + const selectedPort: number = await getServicePort(projectPath, selectedService); selectedService.port = selectedPort; await openChatView(selectedService.basePath, selectedPort.toString()); @@ -226,7 +238,7 @@ async function openChatView(basePath: string, port: string) { } async function openMcpInspector(serverUrl: string) { - const extensionId = 'wso2.mcp-inspector'; + const extensionId = 'wso2.mcp-server-inspector'; const extension = vscode.extensions.getExtension(extensionId); @@ -291,7 +303,8 @@ async function findServiceForResource(services: ServiceInfo[], resourceMetadata: async function getAvailableServices(projectDir: string): Promise { try { - const langClient = clientManager.getClient(); + // const langClient = clientManager.getClient(); + const langClient = StateMachine.langClient(); const response: BIDesignModelResponse = await langClient.getDesignModel({ projectPath: projectDir @@ -459,9 +472,11 @@ async function getOpenAPIDefinition(service: ServiceInfo): Promise { if (openapiDefinitions === 'NOT_SUPPORTED_TYPE') { throw new Error(`OpenAPI spec generation failed for the service with base path: '${service.basePath}'`); + } else if (openapiDefinitions.error) { + throw new Error(openapiDefinitions.error); } - const matchingDefinition = (openapiDefinitions as OpenAPISpec).content.filter(content => + const matchingDefinition = (openapiDefinitions as OpenAPISpec).content?.filter(content => content.serviceName.toLowerCase() === service?.name.toLowerCase() || (service.basePath !== "" && service?.name === '' && content.spec?.servers[0]?.url?.endsWith(service.basePath)) || (service?.name === '' && content.spec?.servers[0]?.url == undefined) // TODO: Update the condition after fixing the issue in the OpenAPI tool diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/agent-chat/rpc-handler.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/agent-chat/rpc-handler.ts index a6b2b3bc837..b2fd21add3b 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/agent-chat/rpc-handler.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/agent-chat/rpc-handler.ts @@ -14,12 +14,16 @@ * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. + * + * THIS FILE INCLUDES AUTO GENERATED CODE */ - import { - ChatReqMessage, abortChatRequest, + ChatReqMessage, getChatMessage, + getTracingStatus, + showTraceView, + TraceInput } from "@wso2/ballerina-core"; import { Messenger } from "vscode-messenger"; import { AgentChatRpcManager } from "./rpc-manager"; @@ -28,4 +32,6 @@ export function registerAgentChatRpcHandlers(messenger: Messenger) { const rpcManger = new AgentChatRpcManager(); messenger.onRequest(getChatMessage, (args: ChatReqMessage) => rpcManger.getChatMessage(args)); messenger.onNotification(abortChatRequest, () => rpcManger.abortChatRequest()); + messenger.onRequest(getTracingStatus, () => rpcManger.getTracingStatus()); + messenger.onNotification(showTraceView, (args: TraceInput) => rpcManger.showTraceView(args)); } diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/agent-chat/rpc-manager.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/agent-chat/rpc-manager.ts index 24f8e27c565..635f82f4b3c 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/agent-chat/rpc-manager.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/agent-chat/rpc-manager.ts @@ -20,8 +20,14 @@ import { AgentChatAPI, ChatReqMessage, ChatRespMessage, + TraceInput, + TraceStatus } from "@wso2/ballerina-core"; +import * as vscode from 'vscode'; import { extension } from '../../BalExtensionContext'; +import { TracerMachine, TraceServer } from "../../features/tracing"; +import { TraceDetailsWebview } from "../../features/tracing/trace-details-webview"; +import { Trace } from "../../features/tracing/trace-server"; export class AgentChatRpcManager implements AgentChatAPI { private currentAbortController: AbortController | null = null; @@ -122,4 +128,108 @@ export class AgentChatRpcManager implements AgentChatAPI { throw new Error(errorMessage); } } + + async getTracingStatus(): Promise { + return new Promise(async (resolve) => { + const isEnabled = TracerMachine.isEnabled(); + resolve({ + enabled: isEnabled + }); + }); + } + + + /** + * Find the trace that corresponds to a chat message by matching span attributes + * @param userMessage The user's input message + * @returns The matching trace or undefined if not found + */ + findTraceForMessage(userMessage: string): Trace | undefined { + // Get all traces from the TraceServer + const traces = TraceServer.getTraces(); + + // Helper function to extract string value from attribute value + const extractValue = (value: any): string => { + if (typeof value === 'string') { + return value; + } + if (value && typeof value === 'object' && 'stringValue' in value) { + return String(value.stringValue); + } + return ''; + }; + + // Iterate through each trace to find matching spans + for (const trace of traces) { + // Check each span in the trace + for (const span of trace.spans || []) { + // Check if this span matches our criteria: + // 1. span.type === "ai" + // 2. gen_ai.operation.name === "invoke_agent" + // 3. gen_ai.input.messages matches the user message + + const attributes = span.attributes || []; + + // Find relevant attributes + let spanType: string | undefined; + let operationName: string | undefined; + let inputMessages: string | undefined; + + for (const attr of attributes) { + const attrValue = extractValue(attr.value); + + if (attr.key === 'span.type') { + spanType = attrValue; + } else if (attr.key === 'gen_ai.operation.name') { + operationName = attrValue; + } else if (attr.key === 'gen_ai.input.messages') { + inputMessages = attrValue; + } + } + + // Check if all criteria match + if (spanType === 'ai' && + operationName === 'invoke_agent' && + inputMessages) { + // Check if the input message matches + // inputMessages might be JSON or contain the message + if (inputMessages.includes(userMessage)) { + return trace; + } + } + } + } + + return undefined; + } + + /** + * Show trace details webview for a given chat message + * Finds the trace matching the message and opens it in the trace details webview + * @param userMessage The user's input message + * @throws Error if no trace is found for the message + */ + async showTraceDetailsForMessage(userMessage: string): Promise { + try { + // Find the trace that matches the user message + const trace = this.findTraceForMessage(userMessage); + + if (!trace) { + const errorMessage = 'No trace found for the given message. Make sure tracing is enabled and the agent has processed this message.'; + vscode.window.showErrorMessage(errorMessage); + throw new Error(errorMessage); + } + + // Open the trace details webview with isAgentChat=true + TraceDetailsWebview.show(trace, true); + } catch (error) { + const errorMessage = error instanceof Error ? error.message : 'Failed to show trace details'; + vscode.window.showErrorMessage(`Error: ${errorMessage}`); + throw error; + } + } + + async showTraceView(params: TraceInput): Promise { + await this.showTraceDetailsForMessage(params.message); + } } diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-agent/rpc-manager.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-agent/rpc-manager.ts index e64989ea722..0ca219219f4 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-agent/rpc-manager.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-agent/rpc-manager.ts @@ -150,8 +150,8 @@ export class AiAgentRpcManager implements AIAgentAPI { const context = StateMachine.context(); try { - const projectUri = context.projectUri; - const filePath = Utils.joinPath(URI.file(projectUri), "agents.bal").fsPath; + const projectPath = context.projectPath; + const filePath = Utils.joinPath(URI.file(projectPath), "agents.bal").fsPath; let selectedModel = ""; // Create the tools first if (params.newTools.length > 0) { @@ -161,7 +161,7 @@ export class AiAgentRpcManager implements AIAgentAPI { } // Create the model Second - const aiModuleOrg = await StateMachine.langClient().getAiModuleOrg({ projectPath: projectUri }); + const aiModuleOrg = await StateMachine.langClient().getAiModuleOrg({ projectPath: projectPath }); const allAgents = (await StateMachine.langClient().getAllAgents({ filePath, orgName: aiModuleOrg.orgName })); console.log("All Agents: ", allAgents); @@ -230,8 +230,8 @@ export class AiAgentRpcManager implements AIAgentAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectUri = context.projectUri; - const filePath = Utils.joinPath(URI.file(projectUri), "agents.bal").fsPath; + const projectPath = context.projectPath; + const filePath = Utils.joinPath(URI.file(projectPath), "agents.bal").fsPath; // Create the tools if there are any if (params.newTools.length > 0) { for (const tool of params.newTools) { @@ -269,14 +269,14 @@ export class AiAgentRpcManager implements AIAgentAPI { async createTool(tool: AgentTool): Promise { try { - const projectUri = StateMachine.context().projectUri; + const projectPath = StateMachine.context().projectPath; const toolName = tool.toolName; const connectionName = tool.connectionName; - const toolsPath = Utils.joinPath(URI.file(projectUri), "agents.bal").fsPath; + const toolsPath = Utils.joinPath(URI.file(projectPath), "agents.bal").fsPath; let flowNode: FlowNode; // REMOTE_ACTION_CALL| FUNCTION_DEFINITION if (tool.toolType === "Connector") { - const filePath = Utils.joinPath(URI.file(projectUri), "connections.bal").fsPath; + const filePath = Utils.joinPath(URI.file(projectPath), "connections.bal").fsPath; const connectorFlowNode = tool.connectorFlowNode; const connectorActionCodeData = tool.connectorActionCodeData; @@ -301,7 +301,7 @@ export class AiAgentRpcManager implements AIAgentAPI { this.updateFlowNodeProperties(flowNode); } if (tool.toolType === "Function") { - const filePath = Utils.joinPath(URI.file(projectUri), "functions.bal").fsPath; + const filePath = Utils.joinPath(URI.file(projectPath), "functions.bal").fsPath; if (tool.functionState === 1) { // 1 = Create the function first // Get new function flow node @@ -328,7 +328,7 @@ export class AiAgentRpcManager implements AIAgentAPI { .getFunctionNode({ functionName: tool.functionName, fileName: "functions.bal", - projectPath: projectUri + projectPath }); flowNode = existingFunctionFlowNode.functionDefinition as FlowNode; } @@ -351,14 +351,14 @@ export class AiAgentRpcManager implements AIAgentAPI { async createAgentTool(tool: AgentToolRequest): Promise { try { - const projectUri = StateMachine.context().projectUri; + const projectPath = StateMachine.context().projectPath; const toolName = tool.toolName; - const toolsPath = Utils.joinPath(URI.file(projectUri), "agents.bal").fsPath; + const toolsPath = Utils.joinPath(URI.file(projectPath), "agents.bal").fsPath; let flowNode: FlowNode; // REMOTE_ACTION_CALL| FUNCTION_DEFINITION const selectedCodeData = tool.selectedCodeData; if (selectedCodeData.node === "REMOTE_ACTION_CALL") { - const filePath = Utils.joinPath(URI.file(projectUri), "connections.bal").fsPath; + const filePath = Utils.joinPath(URI.file(projectPath), "connections.bal").fsPath; // Get the flowNode for connector action const connectorActionFlowNode = await StateMachine.langClient() .getNodeTemplate({ @@ -370,7 +370,7 @@ export class AiAgentRpcManager implements AIAgentAPI { this.updateFlowNodeProperties(flowNode); } if (selectedCodeData.node === "FUNCTION_CALL") { - const filePath = Utils.joinPath(URI.file(projectUri), "functions.bal").fsPath; + const filePath = Utils.joinPath(URI.file(projectPath), "functions.bal").fsPath; // Get the flowNode for existing function action const existingFunctionFlowNode = await StateMachine.langClient() .getNodeTemplate({ @@ -410,9 +410,9 @@ export class AiAgentRpcManager implements AIAgentAPI { } async updateMCPToolKit(params: McpToolUpdateRequest): Promise { - const projectUri = StateMachine.context().projectUri; - const agentsFilePath = Utils.joinPath(URI.file(projectUri), params.agentFlowNode.codedata.lineRange.fileName).fsPath; - const connectionsFilePath = Utils.joinPath(URI.file(projectUri), "connections.bal").fsPath; + const projectPath = StateMachine.context().projectPath; + const agentsFilePath = Utils.joinPath(URI.file(projectPath), params.agentFlowNode.codedata.lineRange.fileName).fsPath; + const connectionsFilePath = Utils.joinPath(URI.file(projectPath), "connections.bal").fsPath; const mcpToolKitVarName = params.updatedNode.properties["variable"].value; // 1. Use the updatedNode from params for the MCP ToolKit edits diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/rpc-manager.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/rpc-manager.ts index 92cdc4c9f23..b38822402e2 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/rpc-manager.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/rpc-manager.ts @@ -101,7 +101,7 @@ import { attemptRepairProject, checkProjectDiagnostics } from "./repair-utils"; import { AIPanelAbortController, addToIntegration, cleanDiagnosticMessages, isErrorCode, requirementsSpecification, searchDocumentation } from "./utils"; import { fetchData } from "./utils/fetch-data-utils"; import { checkToken } from "../../../src/views/ai-panel/utils"; - +import { getWorkspaceTomlValues } from "./../../../src/utils/config"; export class AiPanelRpcManager implements AIPanelAPI { // ================================== @@ -185,21 +185,15 @@ export class AiPanelRpcManager implements AIPanelAPI { } async addToProject(req: AddToProjectRequest): Promise { - - const workspaceFolders = workspace.workspaceFolders; - if (!workspaceFolders) { - throw new Error("No workspaces found."); - } - - const workspaceFolderPath = workspaceFolders[0].uri.fsPath; + const projectPath = StateMachine.context().projectPath; // Check if workspaceFolderPath is a Ballerina project // Assuming a Ballerina project must contain a 'Ballerina.toml' file - const ballerinaProjectFile = path.join(workspaceFolderPath, 'Ballerina.toml'); + const ballerinaProjectFile = path.join(projectPath, 'Ballerina.toml'); if (!fs.existsSync(ballerinaProjectFile)) { throw new Error("Not a Ballerina project."); } - let balFilePath = path.join(workspaceFolderPath, req.filePath); + let balFilePath = path.join(projectPath, req.filePath); const directory = path.dirname(balFilePath); if (!fs.existsSync(directory)) { @@ -214,37 +208,37 @@ export class AiPanelRpcManager implements AIPanelAPI { } async getFromFile(req: GetFromFileRequest): Promise { - return new Promise(async (resolve) => { - const workspaceFolders = workspace.workspaceFolders; - if (!workspaceFolders) { - throw new Error("No workspaces found."); - } - - const workspaceFolderPath = workspaceFolders[0].uri.fsPath; - const ballerinaProjectFile = path.join(workspaceFolderPath, 'Ballerina.toml'); - if (!fs.existsSync(ballerinaProjectFile)) { - throw new Error("Not a Ballerina project."); - } + let projectPath = StateMachine.context().projectPath; + const workspacePath = StateMachine.context().workspacePath; + if (workspacePath) { + projectPath = workspacePath; + } + const ballerinaProjectFile = path.join(projectPath, 'Ballerina.toml'); + if (!fs.existsSync(ballerinaProjectFile)) { + throw new Error("Not a Ballerina project."); + } - const balFilePath = path.join(workspaceFolderPath, req.filePath); - const content = fs.promises.readFile(balFilePath, 'utf-8'); - resolve(content); - }); + const balFilePath = path.join(projectPath, req.filePath); + try { + const content = await fs.promises.readFile(balFilePath, 'utf-8'); + return content; + } catch (error) { + throw error; + } } async deleteFromProject(req: DeleteFromProjectRequest): Promise { - const workspaceFolders = workspace.workspaceFolders; - if (!workspaceFolders) { - throw new Error("No workspaces found."); + let projectPath = StateMachine.context().projectPath; + const workspacePath = StateMachine.context().workspacePath; + if (workspacePath) { + projectPath = workspacePath; } - - const workspaceFolderPath = workspaceFolders[0].uri.fsPath; - const ballerinaProjectFile = path.join(workspaceFolderPath, 'Ballerina.toml'); + const ballerinaProjectFile = path.join(projectPath, 'Ballerina.toml'); if (!fs.existsSync(ballerinaProjectFile)) { throw new Error("Not a Ballerina project."); } - const balFilePath = path.join(workspaceFolderPath, req.filePath); + const balFilePath = path.join(projectPath, req.filePath); if (fs.existsSync(balFilePath)) { try { fs.unlinkSync(balFilePath); @@ -260,18 +254,13 @@ export class AiPanelRpcManager implements AIPanelAPI { } async getFileExists(req: GetFromFileRequest): Promise { - const workspaceFolders = workspace.workspaceFolders; - if (!workspaceFolders) { - throw new Error("No workspaces found."); - } - - const workspaceFolderPath = workspaceFolders[0].uri.fsPath; - const ballerinaProjectFile = path.join(workspaceFolderPath, 'Ballerina.toml'); + const projectPath = StateMachine.context().projectPath; + const ballerinaProjectFile = path.join(projectPath, 'Ballerina.toml'); if (!fs.existsSync(ballerinaProjectFile)) { throw new Error("Not a Ballerina project."); } - const balFilePath = path.join(workspaceFolderPath, req.filePath); + const balFilePath = path.join(projectPath, req.filePath); if (fs.existsSync(balFilePath)) { return true; } @@ -328,9 +317,9 @@ export class AiPanelRpcManager implements AIPanelAPI { async getGeneratedTests(params: TestGenerationRequest): Promise { return new Promise(async (resolve, reject) => { try { - const projectRoot = await getBallerinaProjectRoot(); + const projectPath = StateMachine.context().projectPath; - const generatedTests = await generateTest(projectRoot, params, AIPanelAbortController.getInstance()); + const generatedTests = await generateTest(projectPath, params, AIPanelAbortController.getInstance()); resolve(generatedTests); } catch (error) { reject(error); @@ -341,8 +330,8 @@ export class AiPanelRpcManager implements AIPanelAPI { async getTestDiagnostics(params: TestGenerationResponse): Promise { return new Promise(async (resolve, reject) => { try { - const projectRoot = await getBallerinaProjectRoot(); - const diagnostics = await getDiagnostics(projectRoot, params); + const projectPath = StateMachine.context().projectPath; + const diagnostics = await getDiagnostics(projectPath, params); resolve(diagnostics); } catch (error) { reject(error); @@ -353,8 +342,8 @@ export class AiPanelRpcManager implements AIPanelAPI { async getServiceSourceForName(params: string): Promise { return new Promise(async (resolve, reject) => { try { - const projectRoot = await getBallerinaProjectRoot(); - const { serviceDeclaration, serviceDocFilePath } = await getServiceDeclaration(projectRoot, params); + const projectPath = StateMachine.context().projectPath; + const { serviceDeclaration } = await getServiceDeclaration(projectPath, params); resolve(serviceDeclaration.source); } catch (error) { reject(error); @@ -365,8 +354,8 @@ export class AiPanelRpcManager implements AIPanelAPI { async getResourceSourceForMethodAndPath(params: string): Promise { return new Promise(async (resolve, reject) => { try { - const projectRoot = await getBallerinaProjectRoot(); - const { serviceDeclaration, resourceAccessorDef, serviceDocFilePath } = await getResourceAccessorDef(projectRoot, params); + const projectPath = StateMachine.context().projectPath; + const { resourceAccessorDef } = await getResourceAccessorDef(projectPath, params); resolve(resourceAccessorDef.source); } catch (error) { reject(error); @@ -377,8 +366,8 @@ export class AiPanelRpcManager implements AIPanelAPI { async getServiceNames(): Promise { return new Promise(async (resolve, reject) => { try { - const projectRoot = await getBallerinaProjectRoot(); - const serviceDeclNames = await getServiceDeclarationNames(projectRoot); + const projectPath = StateMachine.context().projectPath; + const serviceDeclNames = await getServiceDeclarationNames(projectPath); resolve({ mentions: serviceDeclNames }); @@ -391,8 +380,8 @@ export class AiPanelRpcManager implements AIPanelAPI { async getResourceMethodAndPaths(): Promise { return new Promise(async (resolve, reject) => { try { - const projectRoot = await getBallerinaProjectRoot(); - const resourceAccessorNames = await getResourceAccessorNames(projectRoot); + const projectPath = StateMachine.context().projectPath; + const resourceAccessorNames = await getResourceAccessorNames(projectPath); resolve({ mentions: resourceAccessorNames }); @@ -411,9 +400,9 @@ export class AiPanelRpcManager implements AIPanelAPI { } async applyDoOnFailBlocks(): Promise { - const projectRoot = await getBallerinaProjectRoot(); + const projectPath = StateMachine.context().projectPath; - if (!projectRoot) { + if (!projectPath) { return null; } @@ -432,7 +421,7 @@ export class AiPanelRpcManager implements AIPanelAPI { } }; - findBalFiles(projectRoot); + findBalFiles(projectPath); for (const balFile of balFiles) { const req: BIModuleNodesRequest = { @@ -673,18 +662,17 @@ export class AiPanelRpcManager implements AIPanelAPI { async addFilesToProject(params: AddFilesToProjectRequest): Promise { try { - const workspaceFolders = workspace.workspaceFolders; - if (!workspaceFolders) { - throw new Error("No workspaces found."); + let projectPath = StateMachine.context().projectPath; + const workspacePath = StateMachine.context().workspacePath; + if (workspacePath) { + projectPath = workspacePath; } - const workspaceFolderPath = workspaceFolders[0].uri.fsPath; - - const ballerinaProjectFile = path.join(workspaceFolderPath, "Ballerina.toml"); + const ballerinaProjectFile = path.join(projectPath, "Ballerina.toml"); if (!fs.existsSync(ballerinaProjectFile)) { throw new Error("Not a Ballerina project."); } - await addToIntegration(workspaceFolderPath, params.fileChanges); + await addToIntegration(projectPath, params.fileChanges); updateView(); return true; } catch (error) { @@ -719,39 +707,6 @@ export class AiPanelRpcManager implements AIPanelAPI { } } -function getModifiedAssistantResponse(originalAssistantResponse: string, tempDir: string, project: ProjectSource): string { - const newSourceFiles = []; - for (const sourceFile of project.sourceFiles) { - const newContentPath = path.join(tempDir, sourceFile.filePath); - if (!fs.existsSync(newContentPath) && !(sourceFile.filePath.endsWith('.bal'))) { - newSourceFiles.push({ filePath: sourceFile.filePath, content: sourceFile.content }); - continue; - } - newSourceFiles.push({ filePath: sourceFile.filePath, content: fs.readFileSync(newContentPath, 'utf-8') }); - } - - // Build a map from filenames to their new content - const fileContentMap = new Map(); - for (const sourceFile of newSourceFiles) { - fileContentMap.set(sourceFile.filePath, sourceFile.content); - } - - // Replace code blocks in originalAssistantResponse with new content - const modifiedResponse = originalAssistantResponse.replace( - /\s*```ballerina([\s\S]*?)```[\s\S]*?<\/code>/g, - (match, filename) => { - if (fileContentMap.has(filename)) { - const newContent = fileContentMap.get(filename); - return `\n\`\`\`ballerina\n${newContent}\n\`\`\`\n`; - } else { - // If no new content, keep the original - return match; - } - } - ); - - return modifiedResponse; -} interface SummaryResponse { summary: string; @@ -764,14 +719,18 @@ interface BalModification { async function setupProjectEnvironment(project: ProjectSource): Promise<{ langClient: ExtendedLangClient, tempDir: string } | null> { //TODO: Move this to LS - const projectRoot = await getBallerinaProjectRoot(); - if (!projectRoot) { + let projectPath = StateMachine.context().projectPath; + const workspacePath = StateMachine.context().workspacePath; + if (workspacePath) { + projectPath = workspacePath; + } + if (!projectPath) { return null; } const randomNum = Math.floor(Math.random() * 90000) + 10000; const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), `bal-proj-${randomNum}-`)); - fs.cpSync(projectRoot, tempDir, { recursive: true }); + fs.cpSync(projectPath, tempDir, { recursive: true }); //Copy project const langClient = StateMachine.langClient(); //Apply edits @@ -786,19 +745,6 @@ async function setupProjectEnvironment(project: ProjectSource): Promise<{ langCl return { langClient, tempDir }; } -export function getProjectFromResponse(req: string): ProjectSource { - const sourceFiles: SourceFile[] = []; - const regex = /\s*```ballerina([\s\S]*?)```\s*<\/code>/g; - let match; - - while ((match = regex.exec(req)) !== null) { - const filePath = match[1]; - const fileContent = match[2].trim(); - sourceFiles.push({ filePath, content: fileContent }); - } - - return { sourceFiles, projectName: "" }; -} function getErrorDiagnostics(diagnostics: Diagnostics[]): DiagnosticEntry[] { const errorDiagnostics: DiagnosticEntry[] = []; @@ -837,15 +783,14 @@ enum CodeGenerationType { CODE_GENERATION = "CODE_GENERATION" } -async function getCurrentProjectSource(requestType: OperationType): Promise { - const projectRoot = await getBallerinaProjectRoot(); - - if (!projectRoot) { +async function getCurrentProjectSource(requestType: OperationType, projectPath?: string): Promise { + const targetProjectPath = projectPath || StateMachine.context().projectPath; + if (!targetProjectPath) { return null; } // Read the Ballerina.toml file to get package name - const ballerinaTomlPath = path.join(projectRoot, 'Ballerina.toml'); + const ballerinaTomlPath = path.join(targetProjectPath, 'Ballerina.toml'); let packageName; if (fs.existsSync(ballerinaTomlPath)) { const tomlContent = await fs.promises.readFile(ballerinaTomlPath, 'utf-8'); @@ -865,20 +810,20 @@ async function getCurrentProjectSource(requestType: OperationType): Promise { +export async function postProcess(req: PostProcessRequest): Promise { + // Fix import statement format + const processedSourceFiles = req.sourceFiles.map(sf => ({ + ...sf, + content: sf.content.replace(/import ballerinax\/client\.config/g, "import ballerinax/'client.config") + })); + + const project: ProjectSource = { + sourceFiles: processedSourceFiles, + projectName: "", + packagePath: "", + isActive: true + }; - const workspaceFolders = workspace.workspaceFolders; - if (!workspaceFolders) { - throw new Error("No workspaces found."); + const environment = await setupProjectEnvironment(project); + if (!environment) { + return { sourceFiles: processedSourceFiles, diagnostics: { diagnostics: [] } }; } - const workspaceFolderPath = workspaceFolders[0].uri.fsPath; - // Check if workspaceFolderPath is a Ballerina project - // Assuming a Ballerina project must contain a 'Ballerina.toml' file - const ballerinaProjectFile = path.join(workspaceFolderPath, 'Ballerina.toml'); - if (fs.existsSync(ballerinaProjectFile)) { - return workspaceFolderPath; + let { langClient, tempDir } = environment; + let remainingDiags: Diagnostics[] = []; + if (StateMachine.context().workspacePath) { + // this is a workspace project + // assign active project path to tempDir + const projectTempDir = path.join(tempDir, path.basename(StateMachine.context().projectPath)); + remainingDiags = await attemptRepairProject(langClient, projectTempDir); + } else { + remainingDiags = await attemptRepairProject(langClient, tempDir); } - return null; -} + const filteredDiags: DiagnosticEntry[] = getErrorDiagnostics(remainingDiags); -export async function postProcess(req: PostProcessRequest): Promise { - let assist_resp = req.assistant_response; - assist_resp = assist_resp.replace(/import ballerinax\/client\.config/g, "import ballerinax/'client.config"); - const project: ProjectSource = getProjectFromResponse(assist_resp); - const environment = await setupProjectEnvironment(project); - if (!environment) { - return { assistant_response: assist_resp, diagnostics: { diagnostics: [] } }; + // Read repaired files from temp directory + const repairedSourceFiles = []; + for (const sourceFile of project.sourceFiles) { + const newContentPath = path.join(tempDir, sourceFile.filePath); + if (!fs.existsSync(newContentPath) && !(sourceFile.filePath.endsWith('.bal'))) { + repairedSourceFiles.push({ filePath: sourceFile.filePath, content: sourceFile.content }); + continue; + } + repairedSourceFiles.push({ filePath: sourceFile.filePath, content: fs.readFileSync(newContentPath, 'utf-8') }); } - const { langClient, tempDir } = environment; - // check project diagnostics - let remainingDiags: Diagnostics[] = await attemptRepairProject(langClient, tempDir); - - const filteredDiags: DiagnosticEntry[] = getErrorDiagnostics(remainingDiags); - const newAssistantResponse = getModifiedAssistantResponse(assist_resp, tempDir, project); await closeAllBallerinaFiles(tempDir); return { - assistant_response: newAssistantResponse, + sourceFiles: repairedSourceFiles, diagnostics: { diagnostics: filteredDiags } }; } -export async function getProjectSource(requestType: OperationType): Promise { - // Fetch the Ballerina project source - const project: BallerinaProject = await getCurrentProjectSource(requestType); - - // Initialize the ProjectSource object +function convertToProjectSource(project: BallerinaProject, pkgPath: string, isActive: boolean): ProjectSource { const projectSource: ProjectSource = { sourceFiles: [], projectModules: [], projectName: project.projectName, + packagePath: pkgPath, + isActive: isActive }; // Iterate through root-level sources @@ -994,8 +947,6 @@ export async function getProjectSource(requestType: OperationType): Promise { + const context = StateMachine.context(); + const currentProjectPath = context.projectPath; + const workspacePath = context.workspacePath; + + // Early return for non-workspace case: single project only + if (!workspacePath) { + const project = await getCurrentProjectSource(requestType); + // No workspace context, so packagePath is empty string + return [convertToProjectSource(project, "", true)]; + } + + // Workspace case: load all packages from the workspace + const workspaceTomlValues = await getWorkspaceTomlValues(workspacePath); + + // Fallback to single project if workspace.toml is invalid or has no packages + if (!workspaceTomlValues || !workspaceTomlValues.workspace || !workspaceTomlValues.workspace.packages) { + const project = await getCurrentProjectSource(requestType); + // Workspace exists but invalid, treat as non-workspace + return [convertToProjectSource(project, "", true)]; + } + + const packagePaths = StateMachine.context().projectInfo?.children.map(child => child.projectPath); + + // Load all packages in parallel + const projectSources: ProjectSource[] = await Promise.all( + packagePaths.map(async (pkgPath) => { + // Resolve the full path for reading files and checking if active + const fullPackagePath = path.isAbsolute(pkgPath) + ? pkgPath + : path.join(workspacePath, pkgPath); + + const project = await getCurrentProjectSource(requestType, fullPackagePath); + const isActive = fullPackagePath === currentProjectPath; + + // Use relative path from workspace for packagePath + const relativePackagePath = path.isAbsolute(pkgPath) + ? path.relative(workspacePath, pkgPath) + : pkgPath; + + return convertToProjectSource(project, relativePackagePath, isActive); + }) + ); + + return projectSources; +} diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/utils.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/utils.ts index 904c00faf7b..f2b6341e81e 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/utils.ts @@ -22,7 +22,8 @@ import { Position, Range, Uri, workspace, WorkspaceEdit } from 'vscode'; import path from "path"; import * as fs from 'fs'; import { AIChatError } from "./utils/errors"; -import { DataMapperRequest, DataMapperResponse, FileData, processDataMapperInput } from "../../../src/features/ai/service/datamapper/context_api"; +import { processDataMapperInput } from "../../../src/features/ai/service/datamapper/context_api"; +import { DataMapperRequest, DataMapperResponse, FileData } from "../../../src/features/ai/service/datamapper/types"; import { getAskResponse } from "../../../src/features/ai/service/ask/ask"; import { MappingFileRecord} from "./types"; import { generateAutoMappings, generateRepairCode } from "../../../src/features/ai/service/datamapper/datamapper"; @@ -150,16 +151,16 @@ async function convertAttachmentToFileData(attachment: Attachment): Promise { let dataMapperResponse: DataMapperModelResponse = { mappingsModel: dataMapperModel as DMModel }; - if (mappingInstructionFile) { - const enhancedResponse = await enrichModelWithMappingInstructions(mappingInstructionFile, dataMapperResponse); + if (mappingInstructionFiles.length > 0) { + const enhancedResponse = await enrichModelWithMappingInstructions(mappingInstructionFiles, dataMapperResponse); dataMapperResponse = enhancedResponse as DataMapperModelResponse; } @@ -172,12 +173,16 @@ export async function generateMappingExpressionsFromModel( })); } -// Processes a mapping instruction file and merges it with the existing data mapper model -export async function enrichModelWithMappingInstructions(mappingInstructionFile: Attachment, currentDataMapperResponse: DataMapperModelResponse): Promise { - if (!mappingInstructionFile) { return currentDataMapperResponse; } - const fileData = await convertAttachmentToFileData(mappingInstructionFile); +// Processes mapping instruction files and merges them with the existing data mapper model +export async function enrichModelWithMappingInstructions(mappingInstructionFiles: Attachment[], currentDataMapperResponse: DataMapperModelResponse): Promise { + if (!mappingInstructionFiles || mappingInstructionFiles.length === 0) { return currentDataMapperResponse; } + + const fileDataArray = await Promise.all( + mappingInstructionFiles.map(file => convertAttachmentToFileData(file)) + ); + const requestParams: DataMapperRequest = { - file: fileData, + files: fileDataArray, processType: "mapping_instruction" }; const response: DataMapperResponse = await processDataMapperInput(requestParams); @@ -206,12 +211,18 @@ export async function repairSourceFilesWithAI(codeRepairRequest: repairCodeReque // Type Creator related functions // Extracts type definitions from a file attachment and generates Ballerina record definitions -export async function extractRecordTypeDefinitionsFromFile(sourceFile: Attachment): Promise { - if (!sourceFile) { throw new Error("File is undefined"); } +export async function extractRecordTypeDefinitionsFromFile(sourceFiles: Attachment[]): Promise { + if (sourceFiles.length === 0) { + throw new Error("No files provided"); + } + + // Process all files together to understand correlations + const fileDataArray = await Promise.all( + sourceFiles.map(attachment => convertAttachmentToFileData(attachment)) + ); - const fileData = await convertAttachmentToFileData(sourceFile); const requestParams: DataMapperRequest = { - file: fileData, + files: fileDataArray, processType: "records" }; const response: DataMapperResponse = await processDataMapperInput(requestParams); @@ -230,7 +241,7 @@ export async function requirementsSpecification(filepath: string): Promise rpcManger.getNodeTemplate(args)); messenger.onRequest(getAiSuggestions, (args: BIAiSuggestionsRequest) => rpcManger.getAiSuggestions(args)); messenger.onNotification(createProject, (args: ProjectRequest) => rpcManger.createProject(args)); + messenger.onNotification(deleteProject, (args: DeleteProjectRequest) => rpcManger.deleteProject(args)); + messenger.onNotification(addProjectToWorkspace, (args: AddProjectToWorkspaceRequest) => rpcManger.addProjectToWorkspace(args)); messenger.onRequest(getWorkspaces, () => rpcManger.getWorkspaces()); messenger.onRequest(getProjectStructure, () => rpcManger.getProjectStructure()); messenger.onRequest(getProjectComponents, () => rpcManger.getProjectComponents()); @@ -183,8 +190,8 @@ export function registerBiDiagramRpcHandlers(messenger: Messenger) { messenger.onRequest(getConfigVariableNodeTemplate, (args: GetConfigVariableNodeTemplateRequest) => rpcManger.getConfigVariableNodeTemplate(args)); messenger.onRequest(openConfigToml, (args: OpenConfigTomlRequest) => rpcManger.openConfigToml(args)); messenger.onRequest(getModuleNodes, () => rpcManger.getModuleNodes()); - messenger.onRequest(getReadmeContent, () => rpcManger.getReadmeContent()); - messenger.onNotification(openReadme, () => rpcManger.openReadme()); + messenger.onRequest(getReadmeContent, (args: ReadmeContentRequest) => rpcManger.getReadmeContent(args)); + messenger.onNotification(openReadme, (args: OpenReadmeRequest) => rpcManger.openReadme(args)); messenger.onRequest(renameIdentifier, (args: RenameIdentifierRequest) => rpcManger.renameIdentifier(args)); messenger.onRequest(deployProject, (args: DeploymentRequest) => rpcManger.deployProject(args)); messenger.onNotification(openAIChat, (args: AIChatRequest) => rpcManger.openAIChat(args)); diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/bi-diagram/rpc-manager.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/bi-diagram/rpc-manager.ts index a7cbec9c0c4..b21914b468d 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/bi-diagram/rpc-manager.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/bi-diagram/rpc-manager.ts @@ -65,6 +65,7 @@ import { DIRECTORY_MAP, DeleteConfigVariableRequestV2, DeleteConfigVariableResponseV2, + DeleteProjectRequest, DeleteTypeRequest, DeleteTypeResponse, DeploymentRequest, @@ -144,6 +145,8 @@ import { FormDiagnosticsResponse, ExpressionTokensRequest, ExpressionTokensResponse, + AddProjectToWorkspaceRequest, + OpenReadmeRequest, } from "@wso2/ballerina-core"; import * as fs from "fs"; import * as path from 'path'; @@ -169,11 +172,12 @@ import { BreakpointManager } from "../../features/debugger/breakpoint-manager"; import { StateMachine, updateView } from "../../stateMachine"; import { getAccessToken, getLoginMethod } from "../../utils/ai/auth"; import { getCompleteSuggestions } from '../../utils/ai/completions'; -import { README_FILE, createBIAutomation, createBIFunction, createBIProjectPure } from "../../utils/bi"; +import { README_FILE, addProjectToExistingWorkspace, convertProjectToWorkspace, createBIAutomation, createBIFunction, createBIProjectPure, createBIWorkspace, deleteProjectFromWorkspace, openInVSCode } from "../../utils/bi"; import { writeBallerinaFileDidOpen } from "../../utils/modification"; import { updateSourceCode } from "../../utils/source-utils"; import { getView } from "../../utils/state-machine-utils"; import { checkProjectDiagnostics, removeUnusedImports } from "../ai-panel/repair-utils"; + export class BiDiagramRpcManager implements BIDiagramAPI { OpenConfigTomlRequest: (params: OpenConfigTomlRequest) => Promise; @@ -422,8 +426,16 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async getAvailableNodes(params: BIAvailableNodesRequest): Promise { console.log(">>> requesting bi available nodes from ls", params); return new Promise((resolve) => { + const fileNameOrPath = params.filePath; + let filePath = fileNameOrPath; + if (path.basename(fileNameOrPath) === fileNameOrPath) { + filePath = path.join(StateMachine.context().projectPath, fileNameOrPath); + } StateMachine.langClient() - .getAvailableNodes(params) + .getAvailableNodes({ + position: params.position, + filePath + }) .then((model) => { console.log(">>> bi available nodes from ls", model); const filteredModel = this.filterAdvancedAiNodes(model); @@ -577,7 +589,65 @@ export class BiDiagramRpcManager implements BIDiagramAPI { } async createProject(params: ProjectRequest): Promise { - createBIProjectPure(params); + if (params.createAsWorkspace) { + const workspaceRoot = createBIWorkspace(params); + openInVSCode(workspaceRoot); + } else { + const projectRoot = createBIProjectPure(params); + openInVSCode(projectRoot); + } + } + + async deleteProject(params: DeleteProjectRequest): Promise { + const projectInfo = StateMachine.context().projectInfo; + const targetProject = projectInfo?.children.find((child) => child.projectPath === params.projectPath); + const projectName = targetProject?.title || targetProject?.name; + if (!projectName) { + return; + } + // Confirm destructive action with user + const response = await window.showWarningMessage( + `Delete Integration '${projectName}'?`, + { + modal: true, + detail: "This action cannot be undone. The integration will be permanently removed from the workspace." + }, + { title: "Delete", isCloseAffordance: false }, + { title: "Cancel", isCloseAffordance: true } + ); + + if (response?.title !== "Delete") { + return; + } + + const projectPath = params.projectPath; + const workspacePath = projectInfo?.projectPath; + await deleteProjectFromWorkspace(workspacePath, projectPath); + + // Refresh project info to update UI with newly added project + StateMachine.refreshProjectInfo(); + } + + async addProjectToWorkspace(params: AddProjectToWorkspaceRequest): Promise { + if (params.convertToWorkspace) { + try { + await convertProjectToWorkspace(params); + // Refresh project info to update UI with newly added project + StateMachine.refreshProjectInfo(); + } catch (error) { + window.showErrorMessage("Error converting integration to workspace"); + console.error("Error converting integration to workspace:", error); + } + } else { + try { + await addProjectToExistingWorkspace(params); + // Refresh project info to update UI with newly added project + StateMachine.refreshProjectInfo(); + } catch (error) { + window.showErrorMessage("Error adding integration to existing workspace"); + console.error("Error adding integration to existing workspace:", error); + } + } } async getWorkspaces(): Promise { @@ -619,7 +689,7 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async getProjectComponents(): Promise { return new Promise(async (resolve) => { const components = await StateMachine.langClient().getBallerinaProjectComponents({ - documentIdentifiers: [{ uri: Uri.file(StateMachine.context().projectUri).toString() }], + documentIdentifiers: [{ uri: Uri.file(StateMachine.context().projectPath).toString() }], }); resolve({ components }); }); @@ -761,7 +831,7 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async deleteFlowNode(params: BISourceCodeRequest): Promise { console.log(">>> requesting bi delete node from ls", params); // Clean project diagnostics before deleting flow node - await cleanAndValidateProject(StateMachine.langClient(), StateMachine.context().projectUri); + await cleanAndValidateProject(StateMachine.langClient(), StateMachine.context().projectPath); return new Promise((resolve) => { StateMachine.langClient() @@ -781,10 +851,13 @@ export class BiDiagramRpcManager implements BIDiagramAPI { } async handleReadmeContent(params: ReadmeContentRequest): Promise { - // console.log(">>> Savineadme.md", params); return new Promise((resolve) => { - const projectUri = StateMachine.context().projectUri; - const readmePath = path.join(projectUri, README_FILE); + const projectPath = params.projectPath; + const readmePath = projectPath ? path.join(projectPath, README_FILE) : undefined; + if (!readmePath) { + resolve({ content: "" }); + return; + } if (params.read) { if (!fs.existsSync(readmePath)) { resolve({ content: "" }); @@ -823,7 +896,7 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async getConfigVariables(): Promise { return new Promise(async (resolve) => { - const projectPath = path.join(StateMachine.context().projectUri); + const projectPath = StateMachine.context().projectPath; const variables = await StateMachine.langClient().getConfigVariables({ projectPath: projectPath }) as ConfigVariableResponse; resolve(variables); }); @@ -847,7 +920,7 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async getConfigVariablesV2(params: ConfigVariableRequest): Promise { return new Promise(async (resolve) => { - const projectPath = path.join(StateMachine.context().projectUri); + const projectPath = StateMachine.context().projectPath; const showLibraryConfigVariables = extension.ballerinaExtInstance.showLibraryConfigVariables(); // if params includeLibraries is not set, then use settings @@ -912,8 +985,8 @@ export class BiDiagramRpcManager implements BIDiagramAPI { return new Promise(async (resolve) => { const currentProject: BallerinaProject | undefined = await getCurrentBIProject(params.filePath); - const configFilePath = path.join(StateMachine.context().projectUri, "Config.toml"); - const ignoreFile = path.join(StateMachine.context().projectUri, ".gitignore"); + const configFilePath = path.join(StateMachine.context().projectPath, "Config.toml"); + const ignoreFile = path.join(StateMachine.context().projectPath, ".gitignore"); const docLink = "https://ballerina.io/learn/provide-values-to-configurable-variables/#provide-via-toml-syntax"; const uri = Uri.file(configFilePath); @@ -961,16 +1034,10 @@ export class BiDiagramRpcManager implements BIDiagramAPI { } - async getReadmeContent(): Promise { + async getReadmeContent(params: ReadmeContentRequest): Promise { return new Promise((resolve) => { - const workspaceFolders = workspace.workspaceFolders; - if (!workspaceFolders || workspaceFolders.length === 0) { - resolve({ content: "" }); - return; - } - - const projectRoot = workspaceFolders[0].uri.fsPath; - const readmePath = path.join(projectRoot, "README.md"); + const projectPath = params.projectPath; + const readmePath = path.join(projectPath, "README.md"); if (!fs.existsSync(readmePath)) { resolve({ content: "" }); @@ -988,19 +1055,28 @@ export class BiDiagramRpcManager implements BIDiagramAPI { }); } - openReadme(): void { - const workspaceFolders = workspace.workspaceFolders; - if (!workspaceFolders || workspaceFolders.length === 0) { - window.showErrorMessage("No workspace folder is open."); - return; - } - - const projectRoot = workspaceFolders[0].uri.fsPath; + openReadme(params: OpenReadmeRequest): void { + const projectRoot = params.projectPath; const readmePath = path.join(projectRoot, "README.md"); if (!fs.existsSync(readmePath)) { // Create README.md if it doesn't exist - fs.writeFileSync(readmePath, "# Project Overview\n\nAdd your project description here."); + + const projectInfo = StateMachine.context().projectInfo; + let content = ""; + + if (params.isWorkspaceReadme) { + const workspaceName = projectInfo?.title || projectInfo?.name; + content = `# ${workspaceName} Workspace\n\nAdd your workspace description here.`; + } else { + const project = projectInfo?.children && projectInfo?.children.length > 0 + ? projectInfo?.children.find((child) => child.projectPath === params.projectPath) + : projectInfo; + const projectName = project?.title || project?.name; + content = `# ${projectName} Integration\n\nAdd your integration description here.`; + } + + fs.writeFileSync(readmePath, content); } // Open README.md in the editor @@ -1009,8 +1085,6 @@ export class BiDiagramRpcManager implements BIDiagramAPI { }); } - - async deployProject(params: DeploymentRequest): Promise { const scopes = params.integrationTypes; @@ -1021,7 +1095,7 @@ export class BiDiagramRpcManager implements BIDiagramAPI { } else { // Show a quick pick to select deployment option const selectedScope = await window.showQuickPick(scopes, { - placeHolder: 'You have different types of artifacts within this project. Select the artifact type to be deployed' + placeHolder: 'You have different types of artifacts within this integration. Select the artifact type to be deployed' }); integrationType = selectedScope as SCOPE; } @@ -1033,8 +1107,8 @@ export class BiDiagramRpcManager implements BIDiagramAPI { const deployementParams: ICreateComponentCmdParams = { integrationType: integrationType as any, buildPackLang: "ballerina", // Example language - name: path.basename(StateMachine.context().projectUri), - componentDir: StateMachine.context().projectUri, + name: path.basename(StateMachine.context().projectPath), + componentDir: StateMachine.context().projectPath, extName: "Devant" }; commands.executeCommand(PlatformExtCommandIds.CreateNewComponent, deployementParams); @@ -1058,15 +1132,15 @@ export class BiDiagramRpcManager implements BIDiagramAPI { console.log(">>> requesting bi module nodes from ls"); return new Promise((resolve) => { const context = StateMachine.context(); - if (!context.projectUri) { - console.log(">>> projectUri not found in the context"); + if (!context.projectPath) { + console.log(">>> projectPath not found in the context"); return new Promise((resolve) => { resolve(undefined); }); } const params: BIModuleNodesRequest = { - filePath: context.projectUri, + filePath: context.projectPath, }; StateMachine.langClient() @@ -1194,7 +1268,7 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async deleteByComponentInfo(params: BIDeleteByComponentInfoRequest): Promise { console.log(">>> requesting bi delete node from ls by componentInfo", params); - const projectDiags: Diagnostics[] = await checkProjectDiagnostics(StateMachine.langClient(), StateMachine.context().projectUri); + const projectDiags: Diagnostics[] = await checkProjectDiagnostics(StateMachine.langClient(), StateMachine.context().projectPath); const position: NodePosition = { startLine: params.component?.startLine, @@ -1204,10 +1278,10 @@ export class BiDiagramRpcManager implements BIDiagramAPI { }; // Check if the filepath is only the filename or the full path if not concatenate the project uri let filePath = params.component?.filePath; - if (!filePath.includes(StateMachine.context().projectUri)) { - filePath = path.join(StateMachine.context().projectUri, filePath); + if (!filePath.includes(StateMachine.context().projectPath)) { + filePath = path.join(StateMachine.context().projectPath, filePath); } - const componentView = await getView(filePath, position, StateMachine.context().projectUri); + const componentView = await getView(filePath, position, StateMachine.context().projectPath); // Helper function to perform the actual delete operation const performDelete = async (): Promise => { return new Promise((resolve, reject) => { @@ -1421,10 +1495,10 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async getDesignModel(): Promise { console.log(">>> requesting design model from ls"); return new Promise((resolve) => { - const projectUri = StateMachine.context().projectUri; + const projectPath = StateMachine.context().projectPath; StateMachine.langClient() - .getDesignModel({ projectPath: projectUri }) + .getDesignModel({ projectPath }) .then((model) => { console.log(">>> design model from ls", model); resolve(model); @@ -1441,8 +1515,8 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async getTypes(params: GetTypesRequest): Promise { - const projectUri = StateMachine.context().projectUri; - const ballerinaFiles = await getBallerinaFiles(Uri.file(projectUri).fsPath); + const projectPath = StateMachine.context().projectPath; + const ballerinaFiles = await getBallerinaFiles(Uri.file(projectPath).fsPath); return new Promise((resolve, reject) => { StateMachine.langClient() @@ -1457,8 +1531,8 @@ export class BiDiagramRpcManager implements BIDiagramAPI { } async updateType(params: UpdateTypeRequest): Promise { - const projectUri = StateMachine.context().projectUri; - const filePath = path.join(projectUri, params.filePath); + const projectPath = StateMachine.context().projectPath; + const filePath = path.join(projectPath, params.filePath); return new Promise((resolve, reject) => { console.log(">>> updating type request", params.type); StateMachine.langClient() @@ -1583,8 +1657,8 @@ export class BiDiagramRpcManager implements BIDiagramAPI { } async createGraphqlClassType(params: UpdateTypeRequest): Promise { - const projectUri = StateMachine.context().projectUri; - const filePath = path.join(projectUri, params.filePath); + const projectPath = StateMachine.context().projectPath; + const filePath = path.join(projectPath, params.filePath); return new Promise((resolve, reject) => { StateMachine.langClient() .createGraphqlClassType({ filePath, type: params.type, description: "" }) @@ -1647,8 +1721,8 @@ export class BiDiagramRpcManager implements BIDiagramAPI { } async renameIdentifier(params: RenameIdentifierRequest): Promise { - const projectUri = StateMachine.context().projectUri; - const filePath = path.join(projectUri, params.fileName); + const projectPath = StateMachine.context().projectPath; + const filePath = path.join(projectPath, params.fileName); const fileUri = Uri.file(filePath).toString(); const request: RenameRequest = { textDocument: { @@ -1660,7 +1734,7 @@ export class BiDiagramRpcManager implements BIDiagramAPI { try { const workspaceEdit = await StateMachine.langClient().rename(request); if (workspaceEdit && 'changes' in workspaceEdit && workspaceEdit.changes) { - await updateSourceCode({ textEdits: workspaceEdit.changes, description: 'Rename for ' + params.newName }); + await updateSourceCode({ textEdits: workspaceEdit.changes, description: 'Rename for ' + params.newName, isRenameOperation: true }); } } catch (error) { console.error('Error in renameIdentifier:', error); @@ -1722,8 +1796,8 @@ export class BiDiagramRpcManager implements BIDiagramAPI { let hasComponent = false; let hasLocalChanges = false; try { - const projectRoot = StateMachine.context().projectUri; - const repoRoot = getRepoRoot(projectRoot); + const projectPath = StateMachine.context().projectPath; + const repoRoot = getRepoRoot(projectPath); if (repoRoot) { const contextYamlPath = path.join(repoRoot, ".choreo", "context.yaml"); if (fs.existsSync(contextYamlPath)) { @@ -1736,10 +1810,10 @@ export class BiDiagramRpcManager implements BIDiagramAPI { return { hasComponent: hasContextYaml, isLoggedIn: false }; } const platformExtAPI: IWso2PlatformExtensionAPI = await platformExt.activate(); - hasLocalChanges = await platformExtAPI.localRepoHasChanges(projectRoot); + hasLocalChanges = await platformExtAPI.localRepoHasChanges(projectPath); isLoggedIn = platformExtAPI.isLoggedIn(); if (isLoggedIn) { - const components = platformExtAPI.getDirectoryComponents(projectRoot); + const components = platformExtAPI.getDirectoryComponents(projectPath); hasComponent = components.length > 0; return { isLoggedIn, hasComponent, hasLocalChanges }; } @@ -1797,8 +1871,8 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async updateTypes(params: UpdateTypesRequest): Promise { return new Promise((resolve, reject) => { - const projectUri = StateMachine.context().projectUri; - const completeFilePath = path.join(projectUri, params.filePath); + const projectPath = StateMachine.context().projectPath; + const completeFilePath = path.join(projectPath, params.filePath); StateMachine.langClient().updateTypes( { filePath: completeFilePath, types: params.types } @@ -1841,7 +1915,7 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async generateOpenApiClient(params: OpenAPIClientGenerationRequest): Promise { return new Promise((resolve, reject) => { - const projectPath = StateMachine.context().projectUri; + const projectPath = StateMachine.context().projectPath; const request: OpenAPIClientGenerationRequest = { openApiContractPath: params.openApiContractPath, projectPath: projectPath, @@ -1875,7 +1949,7 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async getOpenApiGeneratedModules(params: OpenAPIGeneratedModulesRequest): Promise { return new Promise((resolve, reject) => { - const projectPath = StateMachine.context().projectUri; + const projectPath = StateMachine.context().projectPath; const request: OpenAPIGeneratedModulesRequest = { projectPath: projectPath }; @@ -1890,7 +1964,7 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async deleteOpenApiGeneratedModules(params: OpenAPIClientDeleteRequest): Promise { return new Promise((resolve, reject) => { - const projectPath = StateMachine.context().projectUri; + const projectPath = StateMachine.context().projectPath; const request: OpenAPIClientDeleteRequest = { projectPath: projectPath, module: params.module @@ -1925,8 +1999,8 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async getTypeFromJson(params: JsonToTypeRequest): Promise { return new Promise((resolve, reject) => { - const projectUri = StateMachine.context().projectUri; - const filePath = path.join(projectUri, 'types.bal'); + const projectPath = StateMachine.context().projectPath; + const filePath = path.join(projectPath, 'types.bal'); StateMachine.langClient().getTypeFromJson({ ...params, filePath }) .then((response) => { console.log(">>> type from json response", response); @@ -1941,8 +2015,8 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async deleteType(params: DeleteTypeRequest): Promise { return new Promise((resolve, reject) => { - const projectUri = StateMachine.context().projectUri; - const filePath = path.join(projectUri, params.filePath); + const projectPath = StateMachine.context().projectPath; + const filePath = path.join(projectPath, params.filePath); StateMachine.langClient().deleteType({ filePath: filePath, lineRange: params.lineRange }) .then(async (deleteTypeResponse: DeleteTypeResponse) => { if (deleteTypeResponse.textEdits) { @@ -1958,8 +2032,8 @@ export class BiDiagramRpcManager implements BIDiagramAPI { } async verifyTypeDelete(params: VerifyTypeDeleteRequest): Promise { - const projectUri = StateMachine.context().projectUri; - const filePath = path.join(projectUri, params.filePath); + const projectPath = StateMachine.context().projectPath; + const filePath = path.join(projectPath, params.filePath); const request: VerifyTypeDeleteRequest = { filePath: filePath, diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/common/rpc-handler.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/common/rpc-handler.ts index 82ab5d908c4..c47b09628ba 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/common/rpc-handler.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/common/rpc-handler.ts @@ -33,6 +33,7 @@ import { getTypeCompletions, getWorkspaceFiles, getWorkspaceRoot, + getWorkspaceType, goToSource, isNPSupported, openExternalUrl, @@ -60,4 +61,5 @@ export function registerCommonRpcHandlers(messenger: Messenger) { messenger.onRequest(getWorkspaceRoot, () => rpcManger.getWorkspaceRoot()); messenger.onNotification(showErrorMessage, (args: ShowErrorMessageRequest) => rpcManger.showErrorMessage(args)); messenger.onRequest(getCurrentProjectTomlValues, () => rpcManger.getCurrentProjectTomlValues()); + messenger.onRequest(getWorkspaceType, () => rpcManger.getWorkspaceType()); } diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/common/rpc-manager.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/common/rpc-manager.ts index 193da678729..4c49e256156 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/common/rpc-manager.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/common/rpc-manager.ts @@ -35,21 +35,33 @@ import { RunExternalCommandResponse, ShowErrorMessageRequest, SyntaxTree, - TomlValues, + PackageTomlValues, TypeResponse, WorkspaceFileRequest, WorkspaceRootResponse, WorkspacesFileResponse, + WorkspaceTypeResponse, } from "@wso2/ballerina-core"; import child_process from 'child_process'; import { Uri, commands, env, window, workspace, MarkdownString } from "vscode"; import { URI } from "vscode-uri"; import { extension } from "../../BalExtensionContext"; import { StateMachine } from "../../stateMachine"; -import { getProjectTomlValues, goToSource } from "../../utils"; -import { askFileOrFolderPath, askFilePath, askProjectPath, BALLERINA_INTEGRATOR_ISSUES_URL, getUpdatedSource } from "./utils"; -import { parse } from 'toml'; -import * as fs from 'fs'; +import { + checkIsBallerinaPackage, + checkIsBallerinaWorkspace, + getBallerinaPackages, + getProjectTomlValues, + goToSource, + hasMultipleBallerinaPackages +} from "../../utils"; +import { + askFileOrFolderPath, + askFilePath, + askProjectPath, + BALLERINA_INTEGRATOR_ISSUES_URL, + getUpdatedSource +} from "./utils"; import path from "path"; export class CommonRpcManager implements CommonRPCAPI { @@ -78,8 +90,8 @@ export class CommonRpcManager implements CommonRPCAPI { async goToSource(params: GoToSourceRequest): Promise { const context = StateMachine.context(); let filePath = params?.filePath || context.documentUri!; - if (params?.fileName && context?.projectUri) { - filePath = path.join(context.projectUri, params.fileName); + if (params?.fileName && context?.projectPath) { + filePath = path.join(context.projectPath, params.fileName); } goToSource(params.position, filePath); } @@ -246,7 +258,50 @@ export class CommonRpcManager implements CommonRPCAPI { return extension.ballerinaExtInstance.isNPSupported; } - async getCurrentProjectTomlValues(): Promise { - return getProjectTomlValues(StateMachine.context().projectUri); + async getCurrentProjectTomlValues(): Promise { + return getProjectTomlValues(StateMachine.context().projectPath); + } + + async getWorkspaceType(): Promise { + const workspaceFolders = workspace.workspaceFolders; + if (!workspaceFolders) { + throw new Error("No workspaces found."); + } + + if (workspaceFolders.length > 1) { + let balPackagesCount = 0; + for (const folder of workspaceFolders) { + const packages = await getBallerinaPackages(folder.uri); + balPackagesCount += packages.length; + } + + const isWorkspaceFile = workspace.workspaceFile?.scheme === "file"; + if (balPackagesCount > 1) { + return isWorkspaceFile + ? { type: "VSCODE_WORKSPACE" } + : { type: "MULTIPLE_PROJECTS" }; + } + } else if (workspaceFolders.length === 1) { + const workspaceFolderPath = workspaceFolders[0].uri.fsPath; + + const isBallerinaWorkspace = await checkIsBallerinaWorkspace(Uri.file(workspaceFolderPath)); + if (isBallerinaWorkspace) { + return { type: "BALLERINA_WORKSPACE" }; + } + + const isBallerinaPackage = await checkIsBallerinaPackage(Uri.file(workspaceFolderPath)); + if (isBallerinaPackage) { + return { type: "SINGLE_PROJECT" }; + } + + const hasMultiplePackages = await hasMultipleBallerinaPackages(Uri.file(workspaceFolderPath)); + if (hasMultiplePackages) { + return { type: "MULTIPLE_PROJECTS" }; + } + + return { type: "UNKNOWN" }; + } + + return { type: "UNKNOWN" }; } } diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/common/utils.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/common/utils.ts index 3dc74928b47..872a3843427 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/common/utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/common/utils.ts @@ -16,9 +16,9 @@ * under the License. */ +import * as os from 'os'; import { NodePosition } from "@wso2/syntax-tree"; import { Position, Range, Uri, window, workspace, WorkspaceEdit } from "vscode"; -import * as os from 'os'; import { TextEdit } from "@wso2/ballerina-core"; export const BALLERINA_INTEGRATOR_ISSUES_URL = "https://github.com/wso2/product-ballerina-integrator/issues"; diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/data-mapper/utils.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/data-mapper/utils.ts index fcccc242cb2..36c87a3a3e1 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/data-mapper/utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/data-mapper/utils.ts @@ -33,7 +33,8 @@ import { IOTypeField, IORoot, ExpandModelOptions, - ExpandedDMModel + ExpandedDMModel, + MACHINE_VIEW } from "@wso2/ballerina-core"; import { updateSourceCode, UpdateSourceCodeRequest } from "../../utils"; import { StateMachine, updateDataMapperView } from "../../stateMachine"; @@ -80,6 +81,12 @@ export async function fetchDataMapperCodeData( const response = await StateMachine .langClient() .getDataMapperCodedata({ filePath, codedata: modifiedCodeData, name: varName }); + if (response.codedata && StateMachine.context().view === MACHINE_VIEW.DataMapper) { + // Following is a temporary hack to remove the node property from the code data + // TODO: Remove this once the LS API is updated (https://github.com/wso2/product-ballerina-integrator/issues/1732) + const { node, ...cleanCodeData } = response.codedata; + return cleanCodeData; + } return response.codedata; } @@ -460,7 +467,8 @@ export function expandDMModel( query: model.query, source: "", rootViewId, - triggerRefresh: model.triggerRefresh + triggerRefresh: model.triggerRefresh, + focusInputRootMap: model.focusInputRootMap }; } @@ -478,13 +486,18 @@ function processInputRoots(model: DMModel): IOType[] { inputs.push(input); } } + + model.focusInputRootMap = {}; const preProcessedModel: DMModel = { ...model, inputs, focusInputs }; - return inputs.map(input => processIORoot(input, preProcessedModel)); + return inputs.map(input => { + preProcessedModel.traversingRoot = input.name; + return processIORoot(input, preProcessedModel); + }); } /** @@ -592,6 +605,10 @@ function processArray( parentId = member.name; fieldId = member.name; isFocused = true; + + if (model.traversingRoot){ + model.focusInputRootMap[parentId] = model.traversingRoot; + } } } diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/icp-service/rpc-manager.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/icp-service/rpc-manager.ts index acdbb2f75c2..4f73cf6b2c8 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/icp-service/rpc-manager.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/icp-service/rpc-manager.ts @@ -36,7 +36,7 @@ export class ICPServiceRpcManager implements ICPServiceAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectPath: string = context.projectUri; + const projectPath: string = context.projectPath; const param = { projectPath }; const res: TestSourceEditResponse = await context.langClient.addICP(param); await updateSourceCode({ textEdits: res.textEdits, description: 'ICP Creation' }); @@ -52,7 +52,7 @@ export class ICPServiceRpcManager implements ICPServiceAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectPath: string = context.projectUri; + const projectPath: string = context.projectPath; const param = { projectPath }; const res: TestSourceEditResponse = await context.langClient.disableICP(param); await updateSourceCode({ textEdits: res.textEdits, description: 'ICP Disable' }); @@ -69,7 +69,7 @@ export class ICPServiceRpcManager implements ICPServiceAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectPath: string = context.projectUri; + const projectPath: string = context.projectPath; const param = { projectPath }; const res: ICPEnabledResponse = await context.langClient.isIcpEnabled(param); resolve(res); diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/lang-client/rpc-handler.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/lang-client/rpc-handler.ts index 120e15d7bac..26e1871d0dc 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/lang-client/rpc-handler.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/lang-client/rpc-handler.ts @@ -45,6 +45,7 @@ import { didOpen, getBallerinaProjectComponents, getBallerinaVersion, + isSupportedSLVersion, getCompletion, getDefinitionPosition, getDiagnostics, @@ -66,7 +67,8 @@ import { getTypesFromFnDefinition, rename, stModify, - updateFileContent + updateFileContent, + SemanticVersion } from "@wso2/ballerina-core"; import { Messenger } from "vscode-messenger"; import { LangClientRpcManager } from "./rpc-manager"; @@ -78,6 +80,7 @@ export function registerLangClientRpcHandlers(messenger: Messenger) { messenger.onRequest(getSTByRange, (args: BallerinaSTParams) => rpcManger.getSTByRange(args)); messenger.onRequest(getBallerinaProjectComponents, (args: BallerinaPackagesParams) => rpcManger.getBallerinaProjectComponents(args)); messenger.onRequest(getBallerinaVersion, () => rpcManger.getBallerinaVersion()); + messenger.onRequest(isSupportedSLVersion, (args: SemanticVersion) => rpcManger.isSupportedSLVersion(args)); messenger.onRequest(getCompletion, (args: CompletionRequest) => rpcManger.getCompletion(args)); messenger.onRequest(getDiagnostics, (args: SyntaxTreeParams) => rpcManger.getDiagnostics(args)); messenger.onRequest(getProjectDiagnostics, (args: ProjectDiagnosticsRequest) => rpcManger.getProjectDiagnostics(args)); diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/lang-client/rpc-manager.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/lang-client/rpc-manager.ts index c6d7f63b837..ce3f5d9ab22 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/lang-client/rpc-manager.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/lang-client/rpc-manager.ts @@ -22,6 +22,7 @@ import { BallerinaProjectComponents, BallerinaSTParams, BallerinaVersionResponse, + SemanticVersion, CodeActionRequest, CodeActionResponse, CompletionRequest, @@ -63,6 +64,7 @@ import { URI } from "vscode-uri"; import { extension } from "../../BalExtensionContext"; import { StateMachine } from "../../stateMachine"; import { modifyFileContent } from "../../utils/modification"; +import { isSupportedSLVersion as isSupportedSLVersionUtil } from "../../utils/config"; export class LangClientRpcManager implements LangClientAPI { @@ -283,6 +285,10 @@ export class LangClientRpcManager implements LangClientAPI { }); } + async isSupportedSLVersion(params: SemanticVersion): Promise { + return isSupportedSLVersionUtil(extension.ballerinaExtInstance, params); + } + async getPackageComponentModels(params: ComponentModelsParams): Promise { return new Promise(async (resolve) => { const components = await StateMachine.langClient().getPackageComponentModels(params) as ComponentModels; diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/migrate-integration/rpc-handler.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/migrate-integration/rpc-handler.ts index 157bd86354d..b36acc83ff5 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/migrate-integration/rpc-handler.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/migrate-integration/rpc-handler.ts @@ -26,19 +26,25 @@ import { MigrationToolPullRequest, openMigrationReport, OpenMigrationReportRequest, + openSubProjectReport, + OpenSubProjectReportRequest, pullMigrationTool, saveMigrationReport, - SaveMigrationReportRequest + SaveMigrationReportRequest, + storeSubProjectReports, + StoreSubProjectReportsRequest } from "@wso2/ballerina-core"; import { Messenger } from "vscode-messenger"; import { MigrateIntegrationRpcManager } from "./rpc-manager"; export function registerMigrateIntegrationRpcHandlers(messenger: Messenger) { - const rpcManger = new MigrateIntegrationRpcManager(); + const rpcManger = MigrateIntegrationRpcManager.getInstance(); messenger.onRequest(getMigrationTools, () => rpcManger.getMigrationTools()); messenger.onNotification(pullMigrationTool, (args: MigrationToolPullRequest) => rpcManger.pullMigrationTool(args)); messenger.onRequest(importIntegration, (args: ImportIntegrationRPCRequest) => rpcManger.importIntegration(args)); messenger.onNotification(openMigrationReport, (args: OpenMigrationReportRequest) => rpcManger.openMigrationReport(args)); + messenger.onNotification(openSubProjectReport, (args: OpenSubProjectReportRequest) => rpcManger.openSubProjectReport(args)); + messenger.onNotification(storeSubProjectReports, (args: StoreSubProjectReportsRequest) => rpcManger.storeSubProjectReports(args)); messenger.onNotification(saveMigrationReport, (args: SaveMigrationReportRequest) => rpcManger.saveMigrationReport(args)); messenger.onNotification(migrateProject, (args: MigrateRequest) => rpcManger.migrateProject(args)); } diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/migrate-integration/rpc-manager.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/migrate-integration/rpc-manager.ts index 65d64dc91f5..9aaeedbe363 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/migrate-integration/rpc-manager.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/migrate-integration/rpc-manager.ts @@ -25,14 +25,31 @@ import { MigrateIntegrationAPI, MigrateRequest, OpenMigrationReportRequest, - SaveMigrationReportRequest + OpenSubProjectReportRequest, + SaveMigrationReportRequest, + StoreSubProjectReportsRequest } from "@wso2/ballerina-core"; +import os from "os"; +import path from "path"; +import vscode from "vscode"; import { StateMachine } from "../../stateMachine"; import { createBIProjectFromMigration, getUsername, sanitizeName } from "../../utils/bi"; import { pullMigrationTool } from "../../utils/migrate-integration"; import { MigrationReportWebview } from "../../views/migration-report/webview"; export class MigrateIntegrationRpcManager implements MigrateIntegrationAPI { + private static instance: MigrateIntegrationRpcManager; + private subProjectReports: Map = new Map(); + + private constructor() { } + + public static getInstance(): MigrateIntegrationRpcManager { + if (!MigrateIntegrationRpcManager.instance) { + MigrateIntegrationRpcManager.instance = new MigrateIntegrationRpcManager(); + } + return MigrateIntegrationRpcManager.instance; + } + async pullMigrationTool(args: { toolName: string; version: string }): Promise { try { await pullMigrationTool(args.toolName, args.version); @@ -70,22 +87,115 @@ export class MigrateIntegrationRpcManager implements MigrateIntegrationAPI { MigrationReportWebview.createOrShow(params.fileName, params.reportContent); } - async saveMigrationReport(params: SaveMigrationReportRequest): Promise { - const vscode = await import('vscode'); - - // Show save dialog - const saveUri = await vscode.window.showSaveDialog({ - defaultUri: vscode.Uri.file(params.defaultFileName), - filters: { - 'HTML files': ['html'], - 'All files': ['*'] + async openSubProjectReport(params: OpenSubProjectReportRequest): Promise { + let reportContent = this.subProjectReports.get(params.projectName); + + // If not found, try with _ballerina suffix + if (!reportContent) { + reportContent = this.subProjectReports.get(`${params.projectName}_ballerina`); + } + + // If still not found, try to find a fuzzy match by checking all keys + if (!reportContent) { + const matchingKeys = Array.from(this.subProjectReports.keys()).filter(key => + key.startsWith(params.projectName) + ); + if (matchingKeys.length > 0) { + reportContent = this.subProjectReports.get(matchingKeys[0]); } + } + + if (!reportContent) { + const availableKeys = Array.from(this.subProjectReports.keys()); + throw new Error(`Report for project '${params.projectName}' not found. Available projects: ${availableKeys.join(', ')}`); + } + MigrationReportWebview.createOrShow(params.projectName, reportContent); + } + + async storeSubProjectReports(params: StoreSubProjectReportsRequest): Promise { + this.subProjectReports.clear(); + Object.entries(params.reports).forEach(([projectName, reportContent]) => { + this.subProjectReports.set(projectName, reportContent); }); + } - if (saveUri) { - // Write the report content to the selected file - await vscode.workspace.fs.writeFile(saveUri, Buffer.from(params.reportContent, 'utf8')); - vscode.window.showInformationMessage(`Migration report saved to ${saveUri.fsPath}`); + async saveMigrationReport(params: SaveMigrationReportRequest): Promise { + + // Check if this is a multi-project save (has projectReports) + const hasMultipleProjects = params.projectReports && Object.keys(params.projectReports).length > 0; + + if (hasMultipleProjects) { + // For multi-project scenarios, show folder dialog + // Default to workspace root, or home directory as fallback (works on all OSes) + let defaultUri: any; + if (vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) { + defaultUri = vscode.workspace.workspaceFolders[0].uri; + } else { + // Fall back to user's home directory (cross-platform) + defaultUri = vscode.Uri.file(os.homedir()); + } + + const folderUri = await vscode.window.showOpenDialog({ + canSelectFolders: true, + canSelectFiles: false, + canSelectMany: false, + defaultUri: defaultUri, + title: 'Select folder to save migration reports' + }); + + if (!folderUri || folderUri.length === 0) { + return; + } + + const baseDir = folderUri[0]; + + try { + // Write the aggregate report at the root + const aggregateReportPath = path.join(baseDir.fsPath, params.defaultFileName); + await vscode.workspace.fs.writeFile( + vscode.Uri.file(aggregateReportPath), + Buffer.from(params.reportContent, 'utf8') + ); + console.log(`Aggregate migration report saved to ${aggregateReportPath}`); + + // Write per-project reports in subdirectories + for (const [projectName, reportContent] of Object.entries(params.projectReports)) { + const projectDir = path.join(baseDir.fsPath, projectName); + const projectReportPath = path.join(projectDir, 'migration_report.html'); + + // Create project subdirectory if it doesn't exist + await vscode.workspace.fs.createDirectory(vscode.Uri.file(projectDir)); + + // Write project report + await vscode.workspace.fs.writeFile( + vscode.Uri.file(projectReportPath), + Buffer.from(reportContent, 'utf8') + ); + console.log(`Project migration report saved to ${projectReportPath}`); + } + + vscode.window.showInformationMessage( + `Migration reports saved successfully to ${baseDir.fsPath}` + ); + } catch (error) { + console.error('Failed to save multi-project migration reports:', error); + vscode.window.showErrorMessage(`Failed to save migration reports: ${error instanceof Error ? error.message : String(error)}`); + } + } else { + // Single project - use simple save dialog + const saveUri = await vscode.window.showSaveDialog({ + defaultUri: vscode.Uri.file(params.defaultFileName), + filters: { + 'HTML files': ['html'], + 'All files': ['*'] + } + }); + + if (saveUri) { + // Write the report content to the selected file + await vscode.workspace.fs.writeFile(saveUri, Buffer.from(params.reportContent, 'utf8')); + vscode.window.showInformationMessage(`Migration report saved to ${saveUri.fsPath}`); + } } } diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/record-creator/rpc-manager.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/record-creator/rpc-manager.ts index bfdc3950e64..16561f73fc1 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/record-creator/rpc-manager.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/record-creator/rpc-manager.ts @@ -44,8 +44,8 @@ export class RecordCreatorRpcManager implements RecordCreatorAPI { } async convertJsonToRecordType(params: JsonToRecordParams): Promise { - const projectUri = StateMachine.context().projectUri; - const filePathUri = path.join(projectUri, 'types.bal'); + const projectPath = StateMachine.context().projectPath; + const filePathUri = path.join(projectPath, 'types.bal'); return new Promise(async (resolve) => { const response = await StateMachine.langClient().convertJsonToRecordType({ ...params, @@ -56,8 +56,8 @@ export class RecordCreatorRpcManager implements RecordCreatorAPI { } async convertXmlToRecordType(params: XMLToRecordParams): Promise { - const projectUri = StateMachine.context().projectUri; - const filePath = path.join(projectUri, 'types.bal'); + const projectPath = StateMachine.context().projectPath; + const filePath = path.join(projectPath, 'types.bal'); return new Promise(async (resolve) => { const response = await StateMachine.langClient().convertXmlToRecordType({ ...params, diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/service-designer/rpc-manager.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/service-designer/rpc-manager.ts index aa6192916e8..040e97d28cb 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/service-designer/rpc-manager.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/service-designer/rpc-manager.ts @@ -101,8 +101,8 @@ export class ServiceDesignerRpcManager implements ServiceDesignerAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectDir = path.join(StateMachine.context().projectUri); - const targetFile = path.join(projectDir, `main.bal`); + const projectPath = path.join(StateMachine.context().projectPath); + const targetFile = path.join(projectPath, `main.bal`); this.ensureFileExists(targetFile); params.filePath = targetFile; const res: ListenersResponse = await context.langClient.getListeners(params); @@ -129,8 +129,8 @@ export class ServiceDesignerRpcManager implements ServiceDesignerAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectDir = path.join(StateMachine.context().projectUri); - const targetFile = path.join(projectDir, `main.bal`); + const projectPath = path.join(StateMachine.context().projectPath); + const targetFile = path.join(projectPath, `main.bal`); this.ensureFileExists(targetFile); params.filePath = targetFile; const res: ListenerSourceCodeResponse = await context.langClient.addListenerSourceCode(params); @@ -166,8 +166,8 @@ export class ServiceDesignerRpcManager implements ServiceDesignerAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectDir = path.join(StateMachine.context().projectUri); - const targetFile = path.join(projectDir, `main.bal`); + const projectPath = path.join(StateMachine.context().projectPath); + const targetFile = path.join(projectPath, `main.bal`); this.ensureFileExists(targetFile); params.filePath = targetFile; const res: ListenerSourceCodeResponse = await context.langClient.updateListenerSourceCode(params); @@ -186,8 +186,8 @@ export class ServiceDesignerRpcManager implements ServiceDesignerAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectDir = path.join(StateMachine.context().projectUri); - const targetFile = path.join(projectDir, `main.bal`); + const projectPath = path.join(StateMachine.context().projectPath); + const targetFile = path.join(projectPath, `main.bal`); this.ensureFileExists(targetFile); params.filePath = targetFile; const res: ServiceModelResponse = await context.langClient.getServiceModel(params); @@ -202,8 +202,8 @@ export class ServiceDesignerRpcManager implements ServiceDesignerAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectDir = path.join(StateMachine.context().projectUri); - const targetFile = path.join(projectDir, `main.bal`); + const projectPath = path.join(StateMachine.context().projectPath); + const targetFile = path.join(projectPath, `main.bal`); this.ensureFileExists(targetFile); params.filePath = targetFile; const identifiers = []; @@ -241,8 +241,8 @@ export class ServiceDesignerRpcManager implements ServiceDesignerAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectDir = path.join(StateMachine.context().projectUri); - const targetFile = path.join(projectDir, `main.bal`); + const projectPath = path.join(StateMachine.context().projectPath); + const targetFile = path.join(projectPath, `main.bal`); this.ensureFileExists(targetFile); params.filePath = targetFile; const identifiers = []; @@ -298,9 +298,9 @@ export class ServiceDesignerRpcManager implements ServiceDesignerAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectDir = path.join(StateMachine.context().projectUri); + const projectPath = path.join(StateMachine.context().projectPath); if (!params.filePath) { - const targetFile = path.join(projectDir, `main.bal`); + const targetFile = path.join(projectPath, `main.bal`); this.ensureFileExists(targetFile); params.filePath = targetFile; } @@ -396,7 +396,7 @@ export class ServiceDesignerRpcManager implements ServiceDesignerAPI { async getResourceReturnTypes(params: ResourceReturnTypesRequest): Promise { return new Promise(async (resolve) => { const context = StateMachine.context(); - params.filePath = params.filePath || context.projectUri; + params.filePath = params.filePath || context.projectPath; try { const res: VisibleTypesResponse = await context.langClient.getResourceReturnTypes(params); resolve(res); @@ -422,7 +422,7 @@ export class ServiceDesignerRpcManager implements ServiceDesignerAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectDir = path.join(StateMachine.context().projectUri); + const projectDir = path.join(StateMachine.context().projectPath); const targetFile = path.join(projectDir, `main.bal`); this.ensureFileExists(targetFile); params.filePath = targetFile; @@ -438,7 +438,7 @@ export class ServiceDesignerRpcManager implements ServiceDesignerAPI { return new Promise(async (resolve) => { const context = StateMachine.context(); try { - const projectDir = path.join(StateMachine.context().projectUri); + const projectDir = path.join(StateMachine.context().projectPath); const targetFile = path.join(projectDir, `main.bal`); this.ensureFileExists(targetFile); params.filePath = targetFile; diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/visualizer/rpc-handler.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/visualizer/rpc-handler.ts index 20a990373b8..61f9d04cce9 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/visualizer/rpc-handler.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/visualizer/rpc-handler.ts @@ -28,6 +28,7 @@ import { goSelected, HistoryEntry, joinProjectPath, + JoinProjectPathRequest, openView, OpenViewRequest, redo, @@ -51,7 +52,7 @@ export function registerVisualizerRpcHandlers(messenger: Messenger) { messenger.onRequest(redo, (count: number) => rpcManger.redo(count)); messenger.onNotification(addToUndoStack, (args: AddToUndoStackRequest) => rpcManger.addToUndoStack(args)); messenger.onRequest(undoRedoState, () => rpcManger.undoRedoState()); - messenger.onRequest(joinProjectPath, (args: string | string[]) => rpcManger.joinProjectPath(args)); + messenger.onRequest(joinProjectPath, (args: JoinProjectPathRequest) => rpcManger.joinProjectPath(args)); messenger.onRequest(getThemeKind, () => rpcManger.getThemeKind()); messenger.onRequest(updateCurrentArtifactLocation, (args: UpdatedArtifactsResponse) => rpcManger.updateCurrentArtifactLocation(args)); } diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/visualizer/rpc-manager.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/visualizer/rpc-manager.ts index f4da55ae255..aa800f16d1a 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/visualizer/rpc-manager.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/visualizer/rpc-manager.ts @@ -20,6 +20,8 @@ import { ColorThemeKind, EVENT_TYPE, HistoryEntry, + JoinProjectPathRequest, + JoinProjectPathResponse, MACHINE_VIEW, OpenViewRequest, PopupVisualizerLocation, @@ -45,7 +47,7 @@ export class VisualizerRpcManager implements VisualizerAPI { return new Promise(async (resolve) => { if (params.isPopup) { const view = params.location.view; - if (view && view === MACHINE_VIEW.Overview) { + if (view && view === MACHINE_VIEW.PackageOverview) { openPopupView(EVENT_TYPE.CLOSE_VIEW, params.location as PopupVisualizerLocation); } else { openPopupView(params.type, params.location as PopupVisualizerLocation); @@ -67,8 +69,17 @@ export class VisualizerRpcManager implements VisualizerAPI { goHome(): void { history.clear(); + const isWithinBallerinaWorkspace = !!StateMachine.context().workspacePath; commands.executeCommand(SHARED_COMMANDS.FORCE_UPDATE_PROJECT_ARTIFACTS).then(() => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.Overview }, true); + openView( + EVENT_TYPE.OPEN_VIEW, + { + view: isWithinBallerinaWorkspace + ? MACHINE_VIEW.WorkspaceOverview + : MACHINE_VIEW.PackageOverview + }, + true + ); }); } @@ -112,7 +123,7 @@ export class VisualizerRpcManager implements VisualizerAPI { clearTimeout(timeoutId); StateMachine.setReadyMode(); if (!currentArtifact) { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.Overview }); + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.PackageOverview }); resolve("Undo successful"); // resolve the undo string } notifyCurrentWebview(); @@ -126,7 +137,7 @@ export class VisualizerRpcManager implements VisualizerAPI { console.log("No artifact update notification received within 10 seconds"); unsubscribe(); StateMachine.setReadyMode(); - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.Overview }); + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.PackageOverview }); reject(new Error("Operation timed out. Please try again.")); }, 10000); @@ -171,7 +182,7 @@ export class VisualizerRpcManager implements VisualizerAPI { console.log("No artifact update notification received within 10 seconds"); unsubscribe(); StateMachine.setReadyMode(); - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.Overview }); + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.PackageOverview }); reject(new Error("Operation timed out. Please try again.")); }, 10000); @@ -198,11 +209,25 @@ export class VisualizerRpcManager implements VisualizerAPI { }); } - async joinProjectPath(segments: string | string[]): Promise { + async joinProjectPath(params: JoinProjectPathRequest): Promise { return new Promise((resolve) => { - const projectPath = StateMachine.context().projectUri; - const filePath = Array.isArray(segments) ? Utils.joinPath(URI.file(projectPath), ...segments) : Utils.joinPath(URI.file(projectPath), segments); - resolve(filePath.fsPath); + let projectPath = StateMachine.context().projectPath; + // If code data is provided, try to find the project path from the project structure + if (params.codeData && params.codeData.packageName) { + const packageInfo = StateMachine.context().projectStructure.projects.find(project => { + console.log(">>> project", project); + return project.projectName === params.codeData.packageName; + }); + if (packageInfo) { + projectPath = packageInfo.projectPath; + } + } + if (!projectPath) { + resolve({ filePath: "", projectPath: "" }); + return; + } + const filePath = Array.isArray(params.segments) ? Utils.joinPath(URI.file(projectPath), ...params.segments) : Utils.joinPath(URI.file(projectPath), params.segments); + resolve({ filePath: filePath.fsPath, projectPath: projectPath }); }); } async undoRedoState(): Promise { diff --git a/workspaces/ballerina/ballerina-extension/src/stateMachine.ts b/workspaces/ballerina/ballerina-extension/src/stateMachine.ts index b20027e0701..12bf5841874 100644 --- a/workspaces/ballerina/ballerina-extension/src/stateMachine.ts +++ b/workspaces/ballerina/ballerina-extension/src/stateMachine.ts @@ -2,20 +2,37 @@ import { ExtendedLangClient } from './core'; import { createMachine, assign, interpret } from 'xstate'; import { activateBallerina } from './extension'; -import { EVENT_TYPE, SyntaxTree, History, HistoryEntry, MachineStateValue, STByRangeRequest, SyntaxTreeResponse, IUndoRedoManager, VisualizerLocation, webviewReady, MACHINE_VIEW, DIRECTORY_MAP, SCOPE, ProjectStructureResponse, ArtifactData, ProjectStructureArtifactResponse, CodeData, getVisualizerLocation, ProjectDiagnosticsResponse } from "@wso2/ballerina-core"; +import { EVENT_TYPE, SyntaxTree, History, MachineStateValue, IUndoRedoManager, VisualizerLocation, webviewReady, MACHINE_VIEW, DIRECTORY_MAP, SCOPE, ProjectStructureResponse, ProjectStructureArtifactResponse, CodeData, ProjectDiagnosticsResponse, Type, dependencyPullProgress } from "@wso2/ballerina-core"; import { fetchAndCacheLibraryData } from './features/library-browser'; import { VisualizerWebview } from './views/visualizer/webview'; -import { commands, extensions, ShellExecution, Task, TaskDefinition, tasks, Uri, window, workspace, WorkspaceFolder } from 'vscode'; +import { commands, extensions, Uri, window, workspace, WorkspaceFolder } from 'vscode'; import { notifyCurrentWebview, RPCLayer } from './RPCLayer'; import { generateUid, getComponentIdentifier, getNodeByIndex, getNodeByName, getNodeByUid, getView } from './utils/state-machine-utils'; import * as path from 'path'; -import * as fs from 'fs'; import { extension } from './BalExtensionContext'; -import { BiDiagramRpcManager } from './rpc-managers/bi-diagram/rpc-manager'; import { AIStateMachine } from './views/ai-panel/aiMachine'; import { StateMachinePopup } from './stateMachinePopup'; -import { checkIsBallerina, checkIsBI, fetchScope, getOrgPackageName, UndoRedoManager } from './utils'; -import { buildProjectArtifactsStructure } from './utils/project-artifacts'; +import { + checkIsBallerinaPackage, + checkIsBallerinaWorkspace, + checkIsBI, + fetchScope, + getOrgPackageName, + UndoRedoManager, + getOrgAndPackageName +} from './utils'; +import { buildProjectsStructure } from './utils/project-artifacts'; +import { runCommandWithOutput } from './utils/runCommand'; +import { buildOutputChannel } from './utils/logger'; + +export interface ProjectMetadata { + readonly isBI: boolean; + readonly workspacePath?: string; + readonly projectPath?: string; + readonly scope?: SCOPE; + readonly orgName?: string; + readonly packageName?: string; +} interface MachineContext extends VisualizerLocation { langClient: ExtendedLangClient | null; @@ -30,7 +47,7 @@ let pendingProjectRootUpdateResolvers: Array<() => void> = []; const stateMachine = createMachine( { - /** @xstate-layout N4IgpgJg5mDOIC5QDUCWsCuBDANqgXmAE4DEASgKIDKFAKgPq0Dy9FAGrRQHJUCSTXepQCCAEQCaAbQAMAXUSgADgHtYqAC6plAOwUgAnogC0ARgDsAVgB0AZgvSHANhPS7Ji44BMAGhAAPRHsAFgBfEN80TFwCYitUbQ1UaMISCB0wOO0AN2UAawzI7DxCIkzE5LAEeJyAYyxNHRlZJr0VNQbdJH9ETyCgqwAOO2legE4gxwtLTxtfQwQTT1HpW1G18aCLAaCZsIj0IpjS+PLisBJiImVSxRx6gDNrgFsrQorjhM0KquzlOo6mi0um1Ejo9AEEL1+kN7GMJlMLDM5sYTHYrI5LA4bNILOYpgM9iA3mdSlgaposvUwAAZKipdKZHL5V4Hd5WMkUqm0n61epabSAuStVSgzqgCF2UZWIJmTyIkwDcYDcxBZELGzjaVjUYWUbbbEmUaE4lHdnk1CU9Q0umXa5WW4PZ4sqIks2cq3c6p-PmNORApQijrgxCS6Wy+WKoLKsyqgyIExBPXSxNrSwuBXSAnhIms104WAUIhXUiUWhkKRC4GB-nBhYDTxWQ2LMwKpUqnxx9WanYp3X66SG42501gPxW7RqHRkMBYCD6EhMAAK3HoyF4FAA6v6QCCg10Ib0BtLhjYXPZpMsBo41QmLNZPAMY2tXI4caMzEOXaasqgwAB3YRzSyDIf3-XhPnpbQMi9ZkTRKKxQIAoCQN-P9wI0HlvQBP1KwDdoay6eZz2ldYBgsbFT0TCxfAlcwrA8R8PBcNwPE-Q54MQwCKQyP8wAAIzQf9qWUWd4igSDoN+WDhw41CuItHj+MEv9hNE7QoEw-5+UFeQq3wsF9x6bZ6McRjnFcXEPDVTYGxTPVyNcBMdTYtlOOQqxeIE1DVIgSAJMZPIChk2I3O4jylO8kTfIgTSfQFHDdLw0VayWBshkxUZ3ERMwbD6azpH6OyyIopyLBc11QoUhDUOnWd5yXFc103bddwI8UelPVYbEsbFcUsMwBjVO8j1y7q7BKqjyu-OT3MQ2q5xIJqN3oABVRdRGETgWurAz2shTqNW6hy+vxNVHEmWxHyjPUBmkAavCm2T-3k4Dqv-eb5wAMV4akKFYUReFobb9LFbp9pMLqepxPEBrVMxZWPRY+k2bZdmzOCQpmsLEIoCBEnUkgKABhhRAEChgeSwz9scKwzFGI7NnhxwbAxDt5kfKUZTsl83w-QltGUXz4C6DGiGFEHayMUZr07IxPGZqwRnPZYJnfPoyvR4KPlOGJxcpvbTClSZegGs8FTlDEhqjEi1mKxzJs1r94I5C0uSoPW9wNw10URGVlWh+sPDMOHsUbFMr3rZYH1CR32NifNC2LD22rBw2fZN-3cUDy3O0yiG6dtmFEzumxHtiUdx0nbQPuT3bU+942-bN7Pg87FwJisTwn2WRwgm6uU+f2J3Mee5Da9BiEjCjNVTxp+sUxsB8KMHnNh9KSrXsQ9D1HH2tpCGhwbfsibnNj1ysaqzzlJ8sTd6p-fO1MhsnL1J+o+2Mv14v16r8i2dIDvntYyUZHymRsGRFszhZidgGLAzuSMBo9nsCzT+b0kLYxqjOOcgCwYP3mO3awfRbY3TuleTwqCN4oX-LjfGUAcEQjwfGcwUpRjak8CYRw0sCqODCGEIAA */ + /** @xstate-layout N4IgpgJg5mDOIC5QDUCWsCuBDANqgXmAE4DEASgKIDKFAKgPq0Dy9FAGrRQHJUCSTXepQCCAEQCaAbQAMAXUSgADgHtYqAC6plAOwUgAHogDsRgDQgAnogCMADgBsAVgB0ATkcAmawGZX0owAsRrYBtgC+YeZomLgExCQAqgAKosKc9ElkTABSFADCDFS0ZAkFCZQy8kggKmqaOnqGCNYervbOtkbW0gG+AR4B0t7mVs3Sts4Bjt7Wg66uAdZd9q4RUejYeISkyanpmTn5DFlMtJV6tRpautVNPl7OM-beL0Hjsx4jNgsTU17e0mk9ls81WkRA0U2cR2KTSFAyWVyBXoABkmHk0vwuOdqpd6jdQHcAQFnNIPEYPPYuk93GZLDYPGsIRtYtsSFQAOq8Wh5AASCMOBRxSlUVwatxs-i+zQ8HhcQNc3lsMzs5McRiZkNZxGcsAA7hoAMYAC3oiiIygAVmBDeoSBAdGBnKhtAA3ZQAaydWq2Ov1RtN5qtNvUCBd7sNWHxlWFNVF+MaiCC1jcPnmnm8rUc0kc0us1j8znz9mswL89iG5M1LN9RGd2iu2vtjvr7q9zh90Prjd9Ybdykj0bksbx10TCA8DlJ9jlOaC3lCM+lXQm3QWbXJRgXmerMVr3c0TYd2id4c93prXZdPbifYjUeuMesVRFdTHEonU6Bs8c88Xn3pBB1RJbxHAWQEjBLbpgV3KFtgPVAm2IC060UHAowAM2UIgAFsO0veDr0PXsz0HR9hzkC543fQlEHJdpv2zX8t3-aUQW8ZxHFsMCQVLCkjC42DtTrIgwG0CBiF4BtiLQMA9WbE9W3PfC9y7UTxMk6TEJwWS9TvAcHx0GNKNxajxVohBFQ4ycWgBVwQjlLjl0CR5QJBewgnJVxrEcIT93UiSiCkntdJIZDsOcNDMOwvDO3ggLNJC1A5P0sijIol84zfcyDEQKznBsjw7IcxwnMAil2mVCsVknPxxl88E4p1LBbVQV0ozAFEqAU09+3bJq6xazR2vUTqqFSwztGMzLRxyu5+lcDp7NAgIAkVNbHHsZdWkmbjXCMfw5RWJY-K7Ia2o6rqwqIFDIvQ9QsNwlS4Oa1qRrGiah1kEczIJXLLLpUZZnsdpNsVPw+l-AJTvgjCwHUE0kgta1bSodQiAwW0MFEnqlP6gidThhHjSR4NUfRzH1GxsBPvI76TNfMU-qafoOKmOzoJWRxSzzA6PAK0JbFsHNFSK0qYcJ+HEeRkM0YxrGcfC1D7se2KCbrInpbJ9Q5cp6nafS+mZt+8dWcmaZpG8oEuZ5wDS3GZwjHcIWunJVb8wluscFgCgbuw8g6DIKQGaypnx28QG6JmDowN8bjbFlOUE895wwH0UbtDUHQyDALAIAsEgmCSbh6GQXgKA5H7suZvKhkeXonGeYIneVXn-Dcey2kBfwwNWlPXWSvVhDep0B7k4K7WPXq2wvVT4LHoeR+cBeJ4NqaMqo6vxx8IEluVOxuK3YEtrt7mSR6CsIOFpUq0a9Xl8H4fhtHweJ9xs98bnnUF6ftqX-H6Sa8nzGy3h+HelVloH3VN4Y+eZG6Oy7iqYEgwXj90fkvUSsBlA4FdGAAAsugNQ2goCiDAIoMSEltCGmSrAd+fVZ4vTrD-DBcBsG4IIbAIhJCyEULEtQuAQCN6mVARZAsk5SQBCpO8LoPRXB5jWimBUixIK+AjjBO+X8mHoOfs4PUYAABGukUTKDzi6KAdCZ7PWEg-OSv9cG6IMUYkxEAzGCKNpvMOH4Bj5jcMCHiSwgixzgYsR2LRgQmBzBSeYaDbFLz0YYwexi86QAscpAaNjF46PiU45JEA3FV08RZbxKY2h7VsAEgSio8wLhJFxCsiowLTAjuEDRjCMl2P-nqHOecC5FxLmXCuBSExeOth0HonhZGZhWCfIGC4XDlMVA4ASHlLYtPWJo9pS8F7dPziQAZHJ6C7DhEMmi-1im+LKRUoJp8pgFTAjOcpXgE4CRiZkv+GSdkFwAGK8BRPCCgohuQnLmnRRYJS-H2SuVUu2rRz4OH8ICCO0gfJrOZBs5hOiF4UBcZoYhJAAXcnoKIAQFBgU1wnL0CYAx7ITP2isSOMpeicXhZIoIDhFkRHBNoZQEl4DVAGh44ZFkAC0+Z5EgVjm0FBNTOgp39MTM0MtbSCtOU0AERgY4+VlJmUCFI8weDJNOBpzxgRKlcIyVp1iiLaTiCqkFYwGXqgmEqMCfhFi9AEha9ZbSEpBS0rgXSdryVdBJMEFo7qarmoAqMZYzL7mUkTgWBq3rrHnXel1IN29Zi-DTIEDc2ZgjSldW4Pa2ZJEHXzF6tFbTNYkyVTrCmCswCZo-OauBDxPADDLb4ckIQU7e19ihFtFktwpmmHVJYcpBh6rtm5SYq1QIFkGNxQSlr9xpwzlnbQnzh3-S3PzToCjSzlMpTMmwo7JgCV-DMRcryOm7ruEMFwcdWhUmCK0QIeYfIMT2k7JYPl9rJurdYjF7yV7SQfZKZUjx7KvpMAnfaAR5GdAkRWSRwsgjmrvSwrBOD8GELMaQ8hGkqE0Mg80EsGqDVZgGJmZZthkOLV-P4qkThIJAfSaB+x2TEnOLMeR2UpYY5RorAa+yq04FLAKmE4+yLzUR2w1kxxvHckCd7kWUI5IyT7SdqVPMjSOgRwEvmQERUQaKbA4PHdwjClnIGKuezq0-G9DkbOks0nyRLoEk8Cz9isU4v4zZoVZz1PZq0x+3TuYYUglJGSDykqqQNQiEAA */ id: "Visualizer", initial: 'initialize', predictableActionArguments: true, @@ -38,12 +55,12 @@ const stateMachine = createMachine( langClient: null, errorCode: null, isBISupported: false, - view: MACHINE_VIEW.Overview, + view: MACHINE_VIEW.PackageOverview, dependenciesResolved: false }, on: { RESET_TO_EXTENSION_READY: { - target: "extensionReady", + target: "extensionReady" }, UPDATE_PROJECT_STRUCTURE: { actions: [ @@ -53,7 +70,13 @@ const stateMachine = createMachine( () => { // Use queueMicrotask to ensure context is updated before command execution queueMicrotask(() => { + console.log('Refreshing BI project explorer'); commands.executeCommand("BI.project-explorer.refresh"); + console.log('Notifying current webview'); + // Check if the current view is Service desginer and if so don't notify the webview + if (StateMachine.context().view !== MACHINE_VIEW.ServiceDesigner) { + notifyCurrentWebview(); + } }); } ] @@ -61,16 +84,52 @@ const stateMachine = createMachine( UPDATE_PROJECT_ROOT: { actions: [ assign({ - projectUri: (context, event) => event.projectPath + projectPath: (context, event) => event.projectPath }), async (context, event) => { - await buildProjectArtifactsStructure(event.projectPath, StateMachine.langClient(), true); + await buildProjectsStructure(context.projectInfo, StateMachine.langClient(), true); notifyCurrentWebview(); // Resolve the next pending promise waiting for project root update completion pendingProjectRootUpdateResolvers.shift()?.(); } ] }, + REFRESH_PROJECT_INFO: { + actions: [ + async (context, event) => { + try { + const projectPath = context.workspacePath || context.projectPath; + if (!projectPath) { + console.warn("No project path available for refreshing project info"); + return; + } + + // Fetch updated project info from language server + const projectInfo = await context.langClient.getProjectInfo({ projectPath }); + + // Update context with new project info + stateService.send({ + type: 'UPDATE_PROJECT_INFO', + projectInfo + }); + } catch (error) { + console.error("Error refreshing project info:", error); + } + } + ] + }, + UPDATE_PROJECT_INFO: { + actions: [ + assign({ + projectInfo: (context, event) => event.projectInfo + }), + async (context, event) => { + // Rebuild project structure with updated project info + await buildProjectsStructure(event.projectInfo, StateMachine.langClient(), true); + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.WorkspaceOverview }); + } + ] + }, UPDATE_PROJECT_LOCATION: { actions: [ assign({ @@ -80,48 +139,23 @@ const stateMachine = createMachine( addType: (context, event) => event.viewLocation?.addType !== undefined ? event.viewLocation.addType : context?.addType, }) ] - }, - SWITCH_PROJECT: { - target: "switch_project" } }, states: { - switch_project: { - invoke: { - src: checkForProjects, - onDone: [ - { - target: "viewActive.viewReady", - actions: [ - assign({ - isBI: (context, event) => event.data.isBI, - projectUri: (context, event) => event.data.projectPath, - scope: (context, event) => event.data.scope, - org: (context, event) => event.data.orgName, - package: (context, event) => event.data.packageName, - }), - async (context, event) => { - await buildProjectArtifactsStructure(event.data.projectPath, StateMachine.langClient(), true); - notifyCurrentWebview(); - } - ] - } - ], - } - }, initialize: { invoke: { - src: checkForProjects, + src: (context, event) => checkForProjects, onDone: [ { target: "renderInitialView", cond: (context, event) => event.data && event.data.isBI, actions: assign({ isBI: (context, event) => event.data.isBI, - projectUri: (context, event) => event.data.projectPath, + projectPath: (context, event) => event.data.projectPath, + workspacePath: (context, event) => event.data.workspacePath, scope: (context, event) => event.data.scope, org: (context, event) => event.data.orgName, - package: (context, event) => event.data.packageName, + package: (context, event) => event.data.packageName }) }, { @@ -129,10 +163,11 @@ const stateMachine = createMachine( cond: (context, event) => event.data && event.data.isBI === false, actions: assign({ isBI: (context, event) => event.data.isBI, - projectUri: (context, event) => event.data.projectPath, + projectPath: (context, event) => event.data.projectPath, + workspacePath: (context, event) => event.data.workspacePath, scope: (context, event) => event.data.scope, org: (context, event) => event.data.orgName, - package: (context, event) => event.data.packageName, + package: (context, event) => event.data.packageName }) } ], @@ -156,7 +191,7 @@ const stateMachine = createMachine( invoke: { src: 'activateLanguageServer', onDone: { - target: "fetchProjectStructure", + target: "fetchProjectInfo", actions: assign({ langClient: (context, event) => event.data.langClient, isBISupported: (context, event) => event.data.isBISupported @@ -170,6 +205,23 @@ const stateMachine = createMachine( } } }, + fetchProjectInfo: { + invoke: { + src: 'fetchProjectInfo', + onDone: { + target: "fetchProjectStructure", + actions: assign({ + projectInfo: (context, event) => event.data.projectInfo + }) + }, + onError: { + target: "lsError", + actions: () => { + console.error("Error occurred while fetching project info."); + } + } + } + }, fetchProjectStructure: { invoke: { src: 'registerProjectArtifactsStructure', @@ -197,8 +249,11 @@ const stateMachine = createMachine( OPEN_VIEW: { target: "viewActive", actions: assign({ + org: (context, event) => event.viewLocation?.org, + package: (context, event) => event.viewLocation?.package, view: (context, event) => event.viewLocation.view, documentUri: (context, event) => event.viewLocation.documentUri, + projectPath: (context, event) => event.viewLocation?.projectPath || context?.projectPath, position: (context, event) => event.viewLocation.position, identifier: (context, event) => event.viewLocation.identifier, serviceType: (context, event) => event.viewLocation.serviceType, @@ -276,6 +331,9 @@ const stateMachine = createMachine( position: (context, event) => event.viewLocation.position, identifier: (context, event) => event.viewLocation.identifier, serviceType: (context, event) => event.viewLocation.serviceType, + projectPath: (context, event) => event.viewLocation?.projectPath || context?.projectPath, + org: (context, event) => event.viewLocation?.org || context?.org, + package: (context, event) => event.viewLocation?.package || context?.package, type: (context, event) => event.viewLocation?.type, isGraphql: (context, event) => event.viewLocation?.isGraphql, metadata: (context, event) => event.viewLocation?.metadata, @@ -302,7 +360,7 @@ const stateMachine = createMachine( FILE_EDIT: { target: "viewEditing" }, - } + }, }, viewEditing: { on: { @@ -334,18 +392,28 @@ const stateMachine = createMachine( } }); }, + fetchProjectInfo: (context, event) => { + return new Promise(async (resolve, reject) => { + try { + const projectInfo = await context.langClient.getProjectInfo({ projectPath: context.workspacePath || context.projectPath }); + resolve({ projectInfo }); + } catch (error) { + throw new Error("Error occurred while fetching project info.", error); + } + }); + }, registerProjectArtifactsStructure: (context, event) => { return new Promise(async (resolve, reject) => { try { // Register the event driven listener to get the artifact changes context.langClient.registerPublishArtifacts(); - // If the project uri is not set, we don't need to build the project structure - if (context.projectUri) { + // IF the project info is not set, we don't need to build the project structure + if (context.projectInfo) { // Add a 2 second delay before registering artifacts await new Promise(resolve => setTimeout(resolve, 1000)); // Initial Project Structure - const projectStructure = await buildProjectArtifactsStructure(context.projectUri, context.langClient); + const projectStructure = await buildProjectsStructure(context.projectInfo, context.langClient); resolve({ projectStructure }); } else { resolve({ projectStructure: undefined }); @@ -383,10 +451,10 @@ const stateMachine = createMachine( }, resolveMissingDependencies: (context, event) => { return new Promise(async (resolve, reject) => { - if (context?.projectUri) { + if (context?.projectPath) { const diagnostics: ProjectDiagnosticsResponse = await StateMachine.langClient().getProjectDiagnostics({ projectRootIdentifier: { - uri: Uri.file(context.projectUri).toString(), + uri: Uri.file(context.projectPath).toString(), } }); @@ -404,11 +472,7 @@ const stateMachine = createMachine( return; } - const taskDefinition: TaskDefinition = { - type: 'shell', - task: 'run' - }; - + // Construct the build command let buildCommand = 'bal build'; const config = workspace.getConfiguration('ballerina'); @@ -417,44 +481,46 @@ const stateMachine = createMachine( buildCommand = path.join(ballerinaHome, 'bin', buildCommand); } - // Use the current process environment which should have the updated PATH - const execution = new ShellExecution(buildCommand, { env: process.env as { [key: string]: string } }); - - if (!workspace.workspaceFolders || workspace.workspaceFolders.length === 0) { - resolve(true); - return; - } - - - const task = new Task( - taskDefinition, - workspace.workspaceFolders![0], - 'Ballerina Build', - 'ballerina', - execution - ); - try { - const taskExecution = await tasks.executeTask(task); - - // Wait for task completion - await new Promise((taskResolve) => { - // Listen for task completion - const disposable = tasks.onDidEndTask((taskEndEvent) => { - if (taskEndEvent.execution === taskExecution) { - console.log('Build task completed'); + // Execute the build command with output streaming + const result = await runCommandWithOutput( + buildCommand, + context.projectPath, + buildOutputChannel, + (message: string) => { + // Send progress notification to the visualizer + RPCLayer._messenger.sendNotification( + dependencyPullProgress, + { type: 'webview', webviewType: VisualizerWebview.viewType }, + message + ); + } + ); - // Close the terminal pane on completion - commands.executeCommand('workbench.action.closePanel'); + if (result.success) { + console.log('Build task completed successfully'); - disposable.dispose(); - taskResolve(); + // Retry resolving missing dependencies after build is successful. This is a temporary solution to ensure the project is reloaded with new dependencies. + const projectUri = Uri.file(context.projectPath).toString(); + await StateMachine.langClient().resolveMissingDependencies({ + documentIdentifier: { + uri: projectUri } }); - }); + + + // Close the output panel on successful completion + commands.executeCommand('workbench.action.closePanel'); + } else { + const errorMsg = `Failed to build Ballerina package. Exit code: ${result.exitCode}`; + console.error(errorMsg); + window.showErrorMessage(errorMsg); + } } catch (error) { - window.showErrorMessage(`Failed to build Ballerina package: ${error}`); + const errorMsg = `Failed to build Ballerina package: ${error}`; + console.error(errorMsg, error); + window.showErrorMessage(errorMsg); } } @@ -463,12 +529,30 @@ const stateMachine = createMachine( }, findView(context, event): Promise { return new Promise(async (resolve, reject) => { + const { orgName, packageName } = getOrgAndPackageName(context.projectInfo, context.projectPath); if (!context.view && context.langClient) { if (!context.position || ("groupId" in context.position)) { - history.push({ location: { view: MACHINE_VIEW.Overview, documentUri: context.documentUri } }); + if (!context.projectPath && context.workspacePath) { + history.push({ + location: { + view: MACHINE_VIEW.WorkspaceOverview + } + }); + } else { + history.push({ + location: { + view: MACHINE_VIEW.PackageOverview, + documentUri: context.documentUri, + org: orgName || context.org, + package: packageName || context.package, + } + }); + } return resolve(); } - const view = await getView(context.documentUri, context.position, context?.projectUri); + const view = await getView(context.documentUri, context.position, context?.projectPath); + view.location.package = packageName || context.package; + view.location.package = packageName || context.package; history.push(view); return resolve(); } else { @@ -478,6 +562,8 @@ const stateMachine = createMachine( documentUri: context.documentUri, position: context.position, identifier: context.identifier, + org: orgName || context.org, + package: packageName || context.package, type: context?.type, isGraphql: context?.isGraphql, addType: context?.addType, @@ -494,9 +580,13 @@ const stateMachine = createMachine( const selectedEntry = getLastHistory(); if (!context.langClient) { if (!selectedEntry) { - return resolve({ view: MACHINE_VIEW.Overview, documentUri: context.documentUri }); + return resolve( + context.workspacePath + ? { view: MACHINE_VIEW.WorkspaceOverview } + : { view: MACHINE_VIEW.PackageOverview, documentUri: context.documentUri } + ); } - return resolve({ ...selectedEntry.location, view: selectedEntry.location.view ? selectedEntry.location.view : MACHINE_VIEW.Overview }); + return resolve({ ...selectedEntry.location, view: selectedEntry.location.view ? selectedEntry.location.view : MACHINE_VIEW.PackageOverview }); } if (selectedEntry && (selectedEntry.location.view === MACHINE_VIEW.ERDiagram || selectedEntry.location.view === MACHINE_VIEW.ServiceDesigner || selectedEntry.location.view === MACHINE_VIEW.BIDiagram)) { @@ -522,7 +612,11 @@ const stateMachine = createMachine( }) as SyntaxTree; if (!selectedEntry?.location.view) { - return resolve({ view: MACHINE_VIEW.Overview, documentUri: context.documentUri }); + return resolve( + context.workspacePath + ? { view: MACHINE_VIEW.WorkspaceOverview } + : { view: MACHINE_VIEW.PackageOverview, documentUri: context.documentUri } + ); } let selectedST; @@ -636,6 +730,9 @@ export const StateMachine = { stateService.send({ type: "UPDATE_PROJECT_ROOT", projectPath }); }); }, + refreshProjectInfo: () => { + stateService.send({ type: 'REFRESH_PROJECT_INFO' }); + }, resetToExtensionReady: () => { stateService.send({ type: 'RESET_TO_EXTENSION_READY' }); }, @@ -648,10 +745,14 @@ export function openView(type: EVENT_TYPE, viewLocation: VisualizerLocation, res } extension.hasPullModuleResolved = false; extension.hasPullModuleNotification = false; + const projectPath = viewLocation.projectPath || StateMachine.context().projectPath; + const { orgName, packageName } = getOrgAndPackageName(StateMachine.context().projectInfo, projectPath); + viewLocation.org = orgName; + viewLocation.package = packageName; stateService.send({ type: type, viewLocation: viewLocation }); } -export function updateView(refreshTreeView?: boolean, projectUri?: string) { +export function updateView(refreshTreeView?: boolean) { let lastView = getLastHistory(); // Step over to the next location if the last view is skippable if (!refreshTreeView && lastView?.location.view.includes("SKIP")) { @@ -660,6 +761,7 @@ export function updateView(refreshTreeView?: boolean, projectUri?: string) { } let newLocation: VisualizerLocation = lastView?.location; + let newLocationFound = false; if (lastView && lastView.location?.artifactType && lastView.location?.identifier) { newLocation = { ...lastView.location }; const currentIdentifier = lastView.location?.identifier; @@ -671,8 +773,11 @@ export function updateView(refreshTreeView?: boolean, projectUri?: string) { targetedArtifactType = DIRECTORY_MAP.SERVICE; } + const projectPath = StateMachine.context().projectPath; + const project = StateMachine.context().projectStructure.projects.find(project => project.projectPath === projectPath); + // These changes will be revisited in the revamp - StateMachine.context().projectStructure.directoryMap[targetedArtifactType].forEach((artifact) => { + project.directoryMap[targetedArtifactType].forEach((artifact) => { if (artifact.id === currentIdentifier || artifact.name === currentIdentifier) { currentArtifact = artifact; } @@ -692,12 +797,46 @@ export function updateView(refreshTreeView?: boolean, projectUri?: string) { ...lastView, location: newLocation }); + newLocationFound = true; + } + + // Check for service class model in the new location + if (!newLocationFound && lastView?.location?.type) { + let currentArtifact: ProjectStructureArtifactResponse; + + const projectPath = StateMachine.context().projectPath; + const project = StateMachine.context().projectStructure.projects.find(project => project.projectPath === projectPath); + + project.directoryMap[DIRECTORY_MAP.TYPE].forEach((artifact) => { + if (artifact.id === lastView.location.type.name || artifact.name === lastView.location.type.name) { + currentArtifact = artifact; + } + }); + const newPosition = currentArtifact?.position || lastView.location.position; + const updatedType: Type = { + ...lastView.location.type, + codedata: { + ...lastView.location.type.codedata, + lineRange: { + ...lastView.location.type.codedata.lineRange, + startLine: { line: newPosition.startLine, offset: newPosition.startColumn }, + endLine: { line: newPosition.endLine, offset: newPosition.endColumn } + } + } + }; + + newLocation = { ...lastView.location, position: newPosition, type: updatedType }; + history.updateCurrentEntry({ + ...lastView, + location: newLocation + }); + } stateService.send({ type: "VIEW_UPDATE", viewLocation: lastView ? newLocation : { view: "Overview" } }); if (refreshTreeView) { - buildProjectArtifactsStructure(projectUri || StateMachine.context().projectUri, StateMachine.langClient(), true); + buildProjectsStructure(StateMachine.context().projectInfo, StateMachine.langClient(), true); } notifyCurrentWebview(); } @@ -732,63 +871,78 @@ function getLastHistory() { return historyStack?.[historyStack?.length - 1]; } -async function checkForProjects(): Promise<{ isBI: boolean, projectPath: string, scope?: SCOPE }> { +async function checkForProjects() { const workspaceFolders = workspace.workspaceFolders; if (!workspaceFolders) { - return { isBI: false, projectPath: '' }; + return { isBI: false, projects: [] }; } if (workspaceFolders.length > 1) { - return await handleMultipleWorkspaces(workspaceFolders); + return await handleMultipleWorkspaceFolders(workspaceFolders); } - return await handleSingleWorkspace(workspaceFolders[0].uri); + return await handleSingleWorkspaceFolder(workspaceFolders[0].uri); } -async function handleMultipleWorkspaces(workspaceFolders: readonly WorkspaceFolder[]) { - const balProjects = workspaceFolders.filter(folder => checkIsBallerina(folder.uri)); - - if (balProjects.length > 1) { - const projectPaths = balProjects.map(folder => folder.uri.fsPath); - let selectedProject = await window.showQuickPick(projectPaths, { - placeHolder: 'Select a project to load the WSO2 Integrator' +async function handleMultipleWorkspaceFolders(workspaceFolders: readonly WorkspaceFolder[]): Promise { + const balProjectChecks = await Promise.all( + workspaceFolders.map(async folder => ({ + folder, + isBallerinaPackage: await checkIsBallerinaPackage(folder.uri) + })) + ); + const balProjects = balProjectChecks + .filter(result => result.isBallerinaPackage) + .map(result => result.folder); + + if (balProjects.length > 1 && workspace.workspaceFile?.scheme === "file") { + // Show notification to guide users to use Ballerina workspaces instead of VSCode workspaces + window.showInformationMessage( + 'Multiple Ballerina projects detected in VSCode workspace. Please use Ballerina workspaces for better project management and native support.', + 'Learn More' + ).then(selection => { + if (selection === 'Learn More') { + commands.executeCommand('vscode.open', Uri.parse('https://ballerina.io/learn/workspaces')); + } }); - if (!selectedProject) { - // Pick the first project if the user cancels the selection - selectedProject = projectPaths[0]; - } - - const isBI = checkIsBI(Uri.file(selectedProject)); - const scope = isBI && fetchScope(Uri.file(selectedProject)); - const { orgName, packageName } = getOrgPackageName(selectedProject); - setBIContext(isBI); - return { isBI, projectPath: selectedProject, scope, orgName, packageName }; + // Return empty result to indicate no project should be loaded + return { isBI: false }; } else if (balProjects.length === 1) { const isBI = checkIsBI(balProjects[0].uri); const scope = isBI && fetchScope(balProjects[0].uri); const { orgName, packageName } = getOrgPackageName(balProjects[0].uri.fsPath); setBIContext(isBI); - return { isBI, projectPath: balProjects[0].uri.fsPath, scope, orgName, packageName }; + const projectPath = balProjects[0].uri.fsPath; + return { isBI, projectPath, scope, orgName, packageName }; } - return { isBI: false, projectPath: '' }; + return { isBI: false }; } -async function handleSingleWorkspace(workspaceURI: any) { - const isBallerina = checkIsBallerina(workspaceURI); - const isBI = isBallerina && checkIsBI(workspaceURI); - const scope = fetchScope(workspaceURI); - const projectPath = isBallerina ? workspaceURI.fsPath : ""; - const { orgName, packageName } = getOrgPackageName(projectPath); +async function handleSingleWorkspaceFolder(workspaceURI: Uri): Promise { + const isBallerinaWorkspace = await checkIsBallerinaWorkspace(workspaceURI); - setBIContext(isBI); - if (!isBI) { - console.error("No BI enabled workspace found"); - } + if (isBallerinaWorkspace) { + const isBI = checkIsBI(workspaceURI); + setBIContext(isBI); - return { isBI, projectPath, scope, orgName, packageName }; + return { isBI, workspacePath: workspaceURI.fsPath }; + } else { + const isBallerinaPackage = await checkIsBallerinaPackage(workspaceURI); + const isBI = isBallerinaPackage && checkIsBI(workspaceURI); + const scope = fetchScope(workspaceURI); + const projectPath = isBallerinaPackage ? workspaceURI.fsPath : ""; + const { orgName, packageName } = getOrgPackageName(projectPath); + + setBIContext(isBI); + if (!isBI) { + console.error("No BI enabled workspace found"); + } + + return { isBI, projectPath, scope, orgName, packageName }; + } } function setBIContext(isBI: boolean) { diff --git a/workspaces/ballerina/ballerina-extension/src/stateMachinePopup.ts b/workspaces/ballerina/ballerina-extension/src/stateMachinePopup.ts index a9e3022be13..b0506e90673 100644 --- a/workspaces/ballerina/ballerina-extension/src/stateMachinePopup.ts +++ b/workspaces/ballerina/ballerina-extension/src/stateMachinePopup.ts @@ -146,7 +146,7 @@ const stateMachinePopup = createMachine({ initializeData: (context, event) => { // Get context values from the project storage so that we can restore the earlier state when user reopens vscode return new Promise((resolve, reject) => { - const documentUri = StateMachine.context().projectUri; + const documentUri = StateMachine.context().projectPath; resolve({ documentUri }); }); }, diff --git a/workspaces/ballerina/ballerina-extension/src/utils/bi.ts b/workspaces/ballerina/ballerina-extension/src/utils/bi.ts index 07e0521f36c..424b6cfc4da 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/bi.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/bi.ts @@ -15,22 +15,48 @@ * specific language governing permissions and limitations * under the License. */ - -import { exec } from "child_process"; -import { window, commands, workspace, Uri } from "vscode"; +import { commands, workspace, Uri } from "vscode"; import * as fs from 'fs'; import path from "path"; -import { BallerinaProjectComponents, ComponentRequest, CreateComponentResponse, createFunctionSignature, EVENT_TYPE, MigrateRequest, NodePosition, ProjectRequest, STModification, SyntaxTreeResponse } from "@wso2/ballerina-core"; +import { + AddProjectToWorkspaceRequest, + BallerinaProjectComponents, + ComponentRequest, + CreateComponentResponse, + createFunctionSignature, + EVENT_TYPE, + MigrateRequest, + NodePosition, + ProjectMigrationResult, + ProjectRequest, + STModification, + SyntaxTreeResponse, + WorkspaceTomlValues +} from "@wso2/ballerina-core"; import { StateMachine, history, openView } from "../stateMachine"; import { applyModifications, modifyFileContent, writeBallerinaFileDidOpen } from "./modification"; import { ModulePart, STKindChecker } from "@wso2/syntax-tree"; import { URI } from "vscode-uri"; import { debug } from "./logger"; +import { parse } from "toml"; +import { getProjectTomlValues } from "./config"; export const README_FILE = "readme.md"; export const FUNCTIONS_FILE = "functions.bal"; export const DATA_MAPPING_FILE = "data_mappings.bal"; +/** + * Interface for the processed project information + */ +interface ProcessedProjectInfo { + sanitizedPackageName: string; + projectRoot: string; + finalOrgName: string; + finalVersion: string; + packageName: string; + integrationName: string; +} + const settingsJsonContent = ` { "ballerina.isBI": true @@ -86,54 +112,6 @@ generated/ Config.toml `; -export function openBIProject() { - window.showOpenDialog({ canSelectFolders: true, canSelectFiles: false, openLabel: 'Open Integration' }) - .then(uri => { - if (uri && uri[0]) { - commands.executeCommand('vscode.openFolder', uri[0]); - } - }); -} - -export function createBIProject(name: string, isService: boolean) { - window.showOpenDialog({ canSelectFolders: true, canSelectFiles: false, openLabel: 'Select Project Location' }) - .then(uri => { - if (uri && uri[0]) { - const projectLocation = uri[0].fsPath; - - const command = isService ? `bal new -t service ${name}` : `bal new ${name}`; - const options = { cwd: projectLocation }; - - exec(command, options, (error, stdout, stderr) => { - if (error) { - console.error(`Error creating BI project: ${error.message}`); - return; - } - - console.log(`BI project created successfully at ${projectLocation}`); - console.log(`stdout: ${stdout}`); - console.error(`stderr: ${stderr}`); - - // Update Ballerina.toml file in the created project folder - const tomlFilePath = `${projectLocation}/${name}/Ballerina.toml`; - hackToUpdateBallerinaToml(tomlFilePath); - - if (isService) { - const filePath = `${projectLocation}/${name}/service.bal`; - hackToUpdateService(filePath); - } else { - const filePath = `${projectLocation}/${name}/main.bal`; - hackToUpdateMain(filePath); - } - - const newProjectUri = Uri.joinPath(uri[0], name); - commands.executeCommand('vscode.openFolder', newProjectUri); - - }); - } - }); -} - export function getUsername(): string { // Get current username from the system across different OS platforms let username: string; @@ -147,23 +125,90 @@ export function getUsername(): string { return username; } -function setupProjectInfo(projectRequest: ProjectRequest) { - const sanitizedPackageName = sanitizeName(projectRequest.packageName); - - const projectRoot = projectRequest.createDirectory - ? path.join(projectRequest.projectPath, sanitizedPackageName) - : projectRequest.projectPath; +/** + * Generic function to resolve directory paths and create directories if needed + * Can be used for both project and workspace directory creation + * @param basePath - Base directory path + * @param directoryName - Name of the directory to create (optional) + * @param shouldCreateDirectory - Whether to create a new directory + * @returns The resolved directory path + */ +function resolveDirectoryPath(basePath: string, directoryName?: string, shouldCreateDirectory: boolean = true): string { + const resolvedPath = directoryName + ? path.join(basePath, directoryName) + : basePath; - // Create project root directory if needed - if (projectRequest.createDirectory && !fs.existsSync(projectRoot)) { - fs.mkdirSync(projectRoot, { recursive: true }); + if (shouldCreateDirectory && !fs.existsSync(resolvedPath)) { + fs.mkdirSync(resolvedPath, { recursive: true }); } - let finalOrgName = projectRequest.orgName; - if (!finalOrgName) { - finalOrgName = getUsername(); + return resolvedPath; +} + +/** + * Creates .vscode folder and settings.json file + * @param projectRoot - Root directory of the project + */ +function createVSCodeSettings(projectRoot: string): void { + const vscodeDir = path.join(projectRoot, '.vscode'); + if (!fs.existsSync(vscodeDir)) { + fs.mkdirSync(vscodeDir); } + const settingsPath = path.join(vscodeDir, 'settings.json'); + fs.writeFileSync(settingsPath, settingsJsonContent); +} + +/** + * Creates .vscode folder with both settings.json and launch.json files + * @param projectRoot - Root directory of the project + */ +function createVSCodeSettingsWithLaunch(projectRoot: string): void { + createVSCodeSettings(projectRoot); + + const vscodeDir = path.join(projectRoot, '.vscode'); + const launchPath = path.join(vscodeDir, 'launch.json'); + fs.writeFileSync(launchPath, launchJsonContent.trim()); +} + +/** + * Resolves the project root path and creates the directory if needed + * @param projectPath - Base project path + * @param sanitizedPackageName - Sanitized package name for directory creation + * @param createDirectory - Whether to create a new directory + * @returns The resolved project root path + */ +function resolveProjectPath(projectPath: string, sanitizedPackageName: string, createDirectory: boolean): string { + return resolveDirectoryPath( + projectPath, + createDirectory ? sanitizedPackageName : undefined, + createDirectory + ); +} + +/** + * Resolves the workspace root path and creates the directory + * @param basePath - Base path where workspace should be created + * @param workspaceName - Name of the workspace directory + * @returns The resolved workspace root path + */ +function resolveWorkspacePath(basePath: string, workspaceName: string): string { + return resolveDirectoryPath(basePath, workspaceName, true); +} + +/** + * Orchestrates the setup of project information + * @param projectRequest - The project request containing all necessary information + * @returns Processed project information ready for use + */ +function setupProjectInfo(projectRequest: ProjectRequest): ProcessedProjectInfo { + const sanitizedPackageName = sanitizeName(projectRequest.packageName); + const projectRoot = resolveProjectPath( + projectRequest.projectPath, + sanitizedPackageName, + projectRequest.createDirectory + ); + const finalOrgName = projectRequest.orgName || getUsername(); const finalVersion = projectRequest.version || "0.1.0"; return { @@ -176,7 +221,31 @@ function setupProjectInfo(projectRequest: ProjectRequest) { }; } -export function createBIProjectPure(projectRequest: ProjectRequest) { +export function createBIWorkspace(projectRequest: ProjectRequest): string { + const ballerinaTomlContent = ` +[workspace] +packages = ["${projectRequest.packageName}"] + +`; + + // Use the workspace-specific directory resolver + const workspaceRoot = resolveWorkspacePath(projectRequest.projectPath, projectRequest.workspaceName); + + // Create Ballerina.toml file + const ballerinaTomlPath = path.join(workspaceRoot, 'Ballerina.toml'); + writeBallerinaFileDidOpen(ballerinaTomlPath, ballerinaTomlContent); + + // Create Ballerina Package + createBIProjectPure({ ...projectRequest, projectPath: workspaceRoot, createDirectory: true }); + + // create settings.json file + createVSCodeSettings(workspaceRoot); + + console.log(`BI workspace created successfully at ${workspaceRoot}`); + return workspaceRoot; +} + +export function createBIProjectPure(projectRequest: ProjectRequest): string { const projectInfo = setupProjectInfo(projectRequest); const { projectRoot, finalOrgName, finalVersion, packageName: finalPackageName, integrationName } = projectInfo; @@ -194,8 +263,6 @@ sticky = true `; - - // Create Ballerina.toml file const ballerinaTomlPath = path.join(projectRoot, 'Ballerina.toml'); writeBallerinaFileDidOpen(ballerinaTomlPath, ballerinaTomlContent); @@ -232,25 +299,175 @@ sticky = true const datamappingsBalPath = path.join(projectRoot, 'data_mappings.bal'); writeBallerinaFileDidOpen(datamappingsBalPath, EMPTY); - // Create a .vscode folder - const vscodeDir = path.join(projectRoot, '.vscode'); - if (!fs.existsSync(vscodeDir)) { - fs.mkdirSync(vscodeDir); - } - - // Create launch.json file - const launchPath = path.join(vscodeDir, 'launch.json'); - fs.writeFileSync(launchPath, launchJsonContent.trim()); - - // Create settings.json file - const settingsPath = path.join(vscodeDir, 'settings.json'); - fs.writeFileSync(settingsPath, settingsJsonContent); + // Create .vscode configuration files + createVSCodeSettingsWithLaunch(projectRoot); // Create .gitignore file const gitignorePath = path.join(projectRoot, '.gitignore'); fs.writeFileSync(gitignorePath, gitignoreContent.trim()); console.log(`BI project created successfully at ${projectRoot}`); + return projectRoot; +} + +export async function convertProjectToWorkspace(params: AddProjectToWorkspaceRequest) { + const currentProjectPath = StateMachine.context().projectPath; + const tomlValues = await getProjectTomlValues(currentProjectPath); + const currentPackageName = tomlValues?.package?.name; + if (!currentPackageName) { + throw new Error('No package name found in Ballerina.toml'); + } + + const newDirectory = path.join(path.dirname(currentProjectPath), params.workspaceName); + + if (!fs.existsSync(newDirectory)) { + fs.mkdirSync(newDirectory, { recursive: true }); + } + + const updatedProjectPath = path.join(newDirectory, path.basename(currentProjectPath)); + fs.renameSync(currentProjectPath, updatedProjectPath); + + createWorkspaceToml(newDirectory, currentPackageName); + addToWorkspaceToml(newDirectory, params.packageName); + + createProjectInWorkspace(params, newDirectory); + + // create settings.json file + createVSCodeSettings(newDirectory); + + openInVSCode(newDirectory); +} + +export async function addProjectToExistingWorkspace(params: AddProjectToWorkspaceRequest): Promise { + const workspacePath = StateMachine.context().workspacePath; + addToWorkspaceToml(workspacePath, params.packageName); + + createProjectInWorkspace(params, workspacePath); +} + +function createWorkspaceToml(workspacePath: string, packageName: string) { + const ballerinaTomlContent = ` +[workspace] +packages = ["${packageName}"] +`; + const ballerinaTomlPath = path.join(workspacePath, 'Ballerina.toml'); + writeBallerinaFileDidOpen(ballerinaTomlPath, ballerinaTomlContent); +} + +function addToWorkspaceToml(workspacePath: string, packageName: string) { + const ballerinaTomlPath = path.join(workspacePath, 'Ballerina.toml'); + + if (!fs.existsSync(ballerinaTomlPath)) { + return; + } + + try { + const ballerinaTomlContent = fs.readFileSync(ballerinaTomlPath, 'utf8'); + const tomlData: WorkspaceTomlValues = parse(ballerinaTomlContent); + const existingPackages: string[] = tomlData.workspace?.packages || []; + + if (existingPackages.includes(packageName)) { + return; // Package already exists + } + + const updatedContent = addPackageToToml(ballerinaTomlContent, packageName); + fs.writeFileSync(ballerinaTomlPath, updatedContent); + } catch (error) { + console.error('Failed to update workspace Ballerina.toml:', error); + } +} + +export function deleteProjectFromWorkspace(workspacePath: string, packagePath: string) { + const relativeProjectPath = path.relative(workspacePath, packagePath); + console.log(">>> relative project path", relativeProjectPath); + + const ballerinaTomlPath = path.join(workspacePath, 'Ballerina.toml'); + if (!fs.existsSync(ballerinaTomlPath)) { + return; + } + + try { + const ballerinaTomlContent = fs.readFileSync(ballerinaTomlPath, 'utf8'); + const tomlData: WorkspaceTomlValues = parse(ballerinaTomlContent); + const existingPackages: string[] = tomlData.workspace?.packages || []; + + if (!existingPackages.includes(relativeProjectPath)) { + return; // Package not found + } + + const updatedContent = removePackageFromToml(ballerinaTomlContent, relativeProjectPath); + fs.writeFileSync(ballerinaTomlPath, updatedContent); + + // send didChange event to the language server + StateMachine.langClient().didChange({ + contentChanges: [ + { + text: updatedContent + } + ], + textDocument: { + uri: Uri.file(ballerinaTomlPath).toString(), + version: 1 + } + }); + + // delete the project directory + fs.rmdirSync(packagePath, { recursive: true }); + } catch (error) { + console.error(">>> error deleting project from workspace", error); + } +} + +function addPackageToToml(tomlContent: string, packageName: string): string { + const packagesRegex = /packages\s*=\s*\[([\s\S]*?)\]/; + const match = tomlContent.match(packagesRegex); + + if (match) { + const currentArrayContent = match[1].trim(); + const newArrayContent = currentArrayContent === '' + ? `"${packageName}"` + : `${currentArrayContent}, "${packageName}"`; + + return tomlContent.replace(packagesRegex, `packages = [${newArrayContent}]`); + } else { + return tomlContent + `\npackages = ["${packageName}"]\n`; + } +} + +function removePackageFromToml(tomlContent: string, packagePath: string): string { + const packagesRegex = /packages\s*=\s*\[([\s\S]*?)\]/; + const match = tomlContent.match(packagesRegex); + + if (match) { + const currentArrayContent = match[1].trim(); + + // Split by comma, trim whitespace, and filter out the package to remove + const packages = currentArrayContent + .split(',') + .map(pkg => pkg.trim()) + .filter(pkg => pkg && pkg !== `"${packagePath}"`); + + const newArrayContent = packages.length > 0 ? packages.join(', ') : ''; + return tomlContent.replace(packagesRegex, `packages = [${newArrayContent}]`); + } else { + return tomlContent; + } +} + +function createProjectInWorkspace(params: AddProjectToWorkspaceRequest, workspacePath: string): string { + const projectRequest: ProjectRequest = { + projectName: params.projectName, + packageName: params.packageName, + projectPath: workspacePath, + createDirectory: true, + orgName: params.orgName, + version: params.version + }; + + return createBIProjectPure(projectRequest); +} + +export function openInVSCode(projectRoot: string) { commands.executeCommand('vscode.openFolder', Uri.file(path.resolve(projectRoot))); } @@ -273,19 +490,12 @@ export async function createBIProjectFromMigration(params: MigrateRequest) { writeBallerinaFileDidOpen(filePath, content || EMPTY); } - // Create a .vscode folder - const vscodeDir = path.join(projectRoot, '.vscode'); - if (!fs.existsSync(vscodeDir)) { - fs.mkdirSync(vscodeDir); - } - - // Create launch.json file - const launchPath = path.join(vscodeDir, 'launch.json'); - fs.writeFileSync(launchPath, launchJsonContent.trim()); + params.projects?.forEach(project => { + createProjectFiles(project, projectRoot); + }); - // Create settings.json file - const settingsPath = path.join(vscodeDir, 'settings.json'); - fs.writeFileSync(settingsPath, settingsJsonContent); + // Create .vscode configuration files + createVSCodeSettingsWithLaunch(projectRoot); // Create .gitignore file const gitignorePath = path.join(projectRoot, '.gitignore'); @@ -295,11 +505,28 @@ export async function createBIProjectFromMigration(params: MigrateRequest) { commands.executeCommand('vscode.openFolder', Uri.file(path.resolve(projectRoot))); } +async function createProjectFiles(project: ProjectMigrationResult, projectRoot: string) { + for (const [fileName, fileContent] of Object.entries(project.textEdits)) { + const filePath = path.join(projectRoot, project.projectName, fileName); + const fileDir = path.dirname(filePath); + if (!fs.existsSync(fileDir)) { + fs.mkdirSync(fileDir, { recursive: true }); + } + writeBallerinaFileDidOpen(filePath, fileContent || "\n"); + } + + // Save migration report for this project + if (project.report) { + const reportPath = path.join(projectRoot, project.projectName, 'migration_report.html'); + fs.writeFileSync(reportPath, project.report); + } +} + export async function createBIAutomation(params: ComponentRequest): Promise { return new Promise(async (resolve) => { const functionFile = await handleAutomationCreation(params); const components = await StateMachine.langClient().getBallerinaProjectComponents({ - documentIdentifiers: [{ uri: URI.file(StateMachine.context().projectUri).toString() }] + documentIdentifiers: [{ uri: URI.file(StateMachine.context().projectPath).toString() }] }) as BallerinaProjectComponents; const position: NodePosition = {}; for (const pkg of components.packages) { @@ -321,9 +548,9 @@ export async function createBIAutomation(params: ComponentRequest): Promise { return new Promise(async (resolve) => { const isExpressionBodied = params.functionType.isExpressionBodied; - const projectDir = path.join(StateMachine.context().projectUri); + const projectPath = StateMachine.context().projectPath; // Hack to create trasformation function (Use LS API to create the function when available) - const targetFile = path.join(projectDir, isExpressionBodied ? DATA_MAPPING_FILE : FUNCTIONS_FILE); + const targetFile = path.join(projectPath, isExpressionBodied ? DATA_MAPPING_FILE : FUNCTIONS_FILE); if (!fs.existsSync(targetFile)) { writeBallerinaFileDidOpen(targetFile, ''); } @@ -367,9 +594,9 @@ ${funcSignature} } } `; - const projectDir = path.join(StateMachine.context().projectUri); + const projectPath = StateMachine.context().projectPath; // Create foo.bal file within services directory - const taskFile = path.join(projectDir, `automation.bal`); + const taskFile = path.join(projectPath, `automation.bal`); writeBallerinaFileDidOpen(taskFile, balContent); console.log('Task Created.', `automation.bal`); return taskFile; @@ -424,77 +651,3 @@ export async function handleFunctionCreation(targetFile: string, params: Compone export function sanitizeName(name: string): string { return name.replace(/[^a-z0-9]_./gi, '_').toLowerCase(); // Replace invalid characters with underscores } - -// ------------------- HACKS TO MANIPULATE PROJECT FILES ----------------> -function hackToUpdateBallerinaToml(filePath: string) { - fs.readFile(filePath, 'utf8', (err, data) => { - if (err) { - console.error(`Error reading Ballerina.toml file: ${err.message}`); - return; - } - - // Append "bi=true" to the Ballerina.toml content - const updatedContent = `${data.trim()}\nbi = true\n`; - - // Write the updated content back to the Ballerina.toml file - fs.writeFile(filePath, updatedContent, 'utf8', (err) => { - if (err) { - console.error(`Error updating Ballerina.toml file: ${err.message}`); - } else { - console.log('Ballerina.toml file updated successfully'); - } - }); - }); -} - -function hackToUpdateService(filePath: string) { - fs.readFile(filePath, 'utf8', (err, data) => { - if (err) { - console.error(`Error reading Ballerina.toml file: ${err.message}`); - return; - } - - // Append "bi=true" to the Ballerina.toml content - const newContent = `import ballerina/http; - - service /hello on new http:Listener(9090) { - resource function get greeting(string name) returns string|error { - - } - } - `; - - // Write the updated content back to the Ballerina.toml file - fs.writeFile(filePath, newContent, 'utf8', (err) => { - if (err) { - console.error(`Error updating Ballerina.toml file: ${err.message}`); - } else { - console.log('Ballerina.toml file updated successfully'); - } - }); - }); -} - -function hackToUpdateMain(filePath: string) { - fs.readFile(filePath, 'utf8', (err, data) => { - if (err) { - console.error(`Error reading Ballerina.toml file: ${err.message}`); - return; - } - - // Append "bi=true" to the Ballerina.toml content - const newContent = `public function main() { - - } - `; - - // Write the updated content back to the Ballerina.toml file - fs.writeFile(filePath, newContent, 'utf8', (err) => { - if (err) { - console.error(`Error updating Ballerina.toml file: ${err.message}`); - } else { - console.log('Ballerina.toml file updated successfully'); - } - }); - }); -} diff --git a/workspaces/ballerina/ballerina-extension/src/utils/config.ts b/workspaces/ballerina/ballerina-extension/src/utils/config.ts index e03e89a422c..f3b6c780b59 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/config.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/config.ts @@ -16,9 +16,9 @@ * under the License. */ -import { SCOPE, TomlValues } from '@wso2/ballerina-core'; +import { SemanticVersion, PackageTomlValues, SCOPE, WorkspaceTomlValues, ProjectInfo } from '@wso2/ballerina-core'; import { BallerinaExtension } from '../core'; -import { WorkspaceConfiguration, workspace, Uri } from 'vscode'; +import { WorkspaceConfiguration, workspace, Uri, RelativePattern } from 'vscode'; import * as fs from 'fs'; import * as path from 'path'; import { parse } from 'toml'; @@ -98,18 +98,92 @@ export function isSupportedVersion(ballerinaExtInstance: BallerinaExtension, sup return false; } -export function isSupportedSLVersion(ballerinaExtInstance: BallerinaExtension, minSupportedVersion: number) { +/** + * Creates a version object for comparison. + * + * @param major Major version number + * @param minor Minor version number + * @param patch Patch version number + * @returns A version object with major, minor, and patch components + * + * @example + * // Version 2201.1.30 + * createVersionNumber(2201, 1, 30) + * // Version 2201.12.10 + * createVersionNumber(2201, 12, 10) + */ +export function createVersionNumber( + major: number, + minor: number, + patch: number +): SemanticVersion { + return { major, minor, patch }; +} + +/** + * Compares two versions using semantic versioning rules. + * Returns true if current version >= minimum version. + * + * @param current Current version components + * @param minimum Minimum required version components + * @returns true if current >= minimum + */ +function compareVersions( + current: SemanticVersion, + minimum: SemanticVersion +): boolean { + // Compare major version first + if (current.major !== minimum.major) { + return current.major > minimum.major; + } + + // Major versions are equal, compare minor + if (current.minor !== minimum.minor) { + return current.minor > minimum.minor; + } + + // Major and minor are equal, compare patch + return current.patch >= minimum.patch; +} + +/** + * Compares the current Ballerina version against a minimum required version. + * Only returns true for GA (non-preview/alpha/beta) versions that meet or exceed the minimum. + * + * @param ballerinaExtInstance The Ballerina extension instance + * @param minSupportedVersion Minimum version (use createVersionNumber helper to generate) + * @returns true if current version is GA and meets minimum requirement + * + * @example + * // Check if version is at least 2201.1.30 + * isSupportedSLVersion(ext, createVersionNumber(2201, 1, 30)) + */ +export function isSupportedSLVersion( + ballerinaExtInstance: BallerinaExtension, + minSupportedVersion: SemanticVersion +) { const ballerinaVersion: string = ballerinaExtInstance.ballerinaVersion.toLocaleLowerCase(); const isGA: boolean = !ballerinaVersion.includes(VERSION.ALPHA) && !ballerinaVersion.includes(VERSION.BETA) && !ballerinaVersion.includes(VERSION.PREVIEW); + if (!isGA) { + return false; + } + + // Parse current version const regex = /(\d+)\.(\d+)\.(\d+)/; const match = ballerinaVersion.match(regex); - const currentVersionNumber = match ? Number(match.slice(1).join("")) : 0; - - if (minSupportedVersion <= currentVersionNumber && isGA) { - return true; + if (!match) { + return false; } - return false; + + const currentVersion = { + major: Number(match[1]), + minor: Number(match[2]), + patch: Number(match[3]) + }; + + // Compare versions component by component + return compareVersions(currentVersion, minSupportedVersion); } export function checkIsBI(uri: Uri): boolean { @@ -127,9 +201,81 @@ export function checkIsBI(uri: Uri): boolean { return false; // Return false if isBI is not set } -export function checkIsBallerina(uri: Uri): boolean { +export async function checkIsBallerinaPackage(uri: Uri): Promise { const ballerinaTomlPath = path.join(uri.fsPath, 'Ballerina.toml'); - return fs.existsSync(ballerinaTomlPath); + + // First check if the file exists + if (!fs.existsSync(ballerinaTomlPath)) { + return false; + } + + try { + const tomlValues = await getProjectTomlValues(uri.fsPath); + return tomlValues?.package !== undefined; + } catch (error) { + // If there's an error reading the file, it's not a valid Ballerina project + console.error(`Error reading package Ballerina.toml: ${error}`); + return false; + } +} + + +export async function checkIsBallerinaWorkspace(uri: Uri): Promise { + const ballerinaTomlPath = path.join(uri.fsPath, 'Ballerina.toml'); + + // First check if the file exists + if (!fs.existsSync(ballerinaTomlPath)) { + return false; + } + + try { + const tomlValues = await getWorkspaceTomlValues(uri.fsPath); + return tomlValues?.workspace !== undefined && tomlValues.workspace?.packages !== undefined; + } catch (error) { + // If there's an error reading the file, it's not a valid Ballerina workspace + console.error(`Error reading workspace Ballerina.toml: ${error}`); + return false; + } +} + +export async function hasMultipleBallerinaPackages(uri: Uri): Promise { + const packages = await getBallerinaPackages(uri); + return packages.length > 1; +} + +export async function getBallerinaPackages(uri: Uri): Promise { + try { + const ballerinaTomlPattern = `**${path.sep}Ballerina.toml`; + const tomls = await workspace.findFiles( + new RelativePattern(uri.fsPath, ballerinaTomlPattern) + ); + + if (tomls.length === 0) { + return []; + } + + // Collect valid package paths (Ballerina.toml files with [package] section) + const packagePaths: string[] = []; + + for (const toml of tomls) { + const projectRoot = path.dirname(toml.fsPath); + try { + const tomlValues = await getProjectTomlValues(projectRoot); + // Only count as a package if it has a package section + if (tomlValues?.package !== undefined) { + packagePaths.push(projectRoot); + } + } catch (error) { + // Skip invalid TOML files + console.error(`Error reading Ballerina.toml at ${toml.fsPath}: ${error}`); + } + } + + return packagePaths; + } catch (error) { + console.error(`Error checking for multiple Ballerina packages: ${error}`); + return []; + } } export function getOrgPackageName(projectPath: string): { orgName: string, packageName: string } { @@ -157,6 +303,32 @@ export function getOrgPackageName(projectPath: string): { orgName: string, packa } } +export async function getProjectTomlValues(projectPath: string): Promise { + const ballerinaTomlPath = path.join(projectPath, 'Ballerina.toml'); + if (fs.existsSync(ballerinaTomlPath)) { + const tomlContent = await fs.promises.readFile(ballerinaTomlPath, 'utf-8'); + try { + return parse(tomlContent); + } catch (error) { + console.error("Failed to load Ballerina.toml content for project at path: ", projectPath, error); + return; + } + } +} + +export async function getWorkspaceTomlValues(workspacePath: string): Promise { + const ballerinaTomlPath = path.join(workspacePath, 'Ballerina.toml'); + if (fs.existsSync(ballerinaTomlPath)) { + const tomlContent = await fs.promises.readFile(ballerinaTomlPath, 'utf-8'); + try { + return parse(tomlContent); + } catch (error) { + console.error("Failed to load Ballerina.toml content for workspace at path: ", workspacePath, error); + return; + } + } +} + export function fetchScope(uri: Uri): SCOPE { const config = workspace.getConfiguration('ballerina', uri); const inspected = config.inspect('scope'); @@ -185,15 +357,26 @@ export function setupBIFiles(projectDir: string): void { }); } -export async function getProjectTomlValues(projectPath: string): Promise { - const ballerinaTomlPath = path.join(projectPath, 'Ballerina.toml'); - if (fs.existsSync(ballerinaTomlPath)) { - const tomlContent = await fs.promises.readFile(ballerinaTomlPath, 'utf-8'); - try { - return parse(tomlContent); - } catch (error) { - console.error("Failed to load Ballerina.toml content for project at path: ", projectPath, error); - return; +export function getOrgAndPackageName(projectInfo: ProjectInfo, projectPath: string): { orgName: string, packageName: string } { + if (!projectPath || !projectInfo) { + return { orgName: '', packageName: '' }; + } + + if (projectInfo.children?.length) { + const matchedProject = projectInfo.children.find( + (child) => child.projectPath === projectPath + ); + + if (matchedProject) { + return { + orgName: matchedProject.org || matchedProject.orgName, + packageName: matchedProject.title || matchedProject.name + }; } } + + return { + orgName: projectInfo.org || projectInfo.orgName, + packageName: projectInfo.title || projectInfo.name + }; } diff --git a/workspaces/ballerina/ballerina-extension/src/utils/file-utils.ts b/workspaces/ballerina/ballerina-extension/src/utils/file-utils.ts index 9bc57e70ffa..97bc039886a 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/file-utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/file-utils.ts @@ -38,6 +38,7 @@ import { } from "../features/telemetry"; import { NodePosition } from "@wso2/syntax-tree"; import { existsSync } from "fs"; +import { checkIsBallerinaPackage } from "./config"; interface ProgressMessage { message: string; increment?: number; @@ -47,7 +48,6 @@ const ALLOWED_ORG_LIST = ['ballerina-platform', 'ballerina-guides', 'ballerinax' const GIT_DOMAIN = "github.com"; const GIST_OWNER = "ballerina-github-bot"; const NEXT_STARTING_UP_FILE = "next-starting-up-file"; -const BALLERINA_TOML = "Ballerina.toml"; const REPO_LOCATIONS = "repository-locations"; const buildStatusItem = window.createStatusBarItem(StatusBarAlignment.Left, 100); @@ -384,8 +384,8 @@ function getGitHubRawFileUrl(githubFileUrl) { } async function resolveModules(langClient: ExtendedLangClient, pathValue) { - const isBallerinProject = findBallerinaTomlFile(pathValue); - if (isBallerinProject) { + const ballerinProjectPath = await findBallerinaPackageRoot(pathValue); + if (ballerinProjectPath) { // Create a status bar item for the build notification buildStatusItem.text = "$(sync~spin) Pulling modules..."; buildStatusItem.tooltip = "Pulling the missing ballerina modules."; @@ -427,19 +427,28 @@ async function resolveModules(langClient: ExtendedLangClient, pathValue) { } } -function findBallerinaTomlFile(filePath) { +export async function findBallerinaPackageRoot(filePath: string) { + if (!filePath) { + return null; + } + let currentFolderPath = path.dirname(filePath); while (currentFolderPath !== path.sep) { - const tomlFilePath = path.join(currentFolderPath, BALLERINA_TOML); - if (fs.existsSync(tomlFilePath)) { + const isBallerinaPackage = await checkIsBallerinaPackage(Uri.parse(currentFolderPath)); + if (isBallerinaPackage) { return currentFolderPath; } - currentFolderPath = path.dirname(currentFolderPath); + const parentPath = path.dirname(currentFolderPath); + // Prevent infinite loop + if (parentPath === currentFolderPath) { + break; + } + currentFolderPath = parentPath; } - return null; // Ballerina.toml not found in any parent folder + return null; } export async function handleResolveMissingDependencies(ballerinaExtInstance: BallerinaExtension) { @@ -514,6 +523,14 @@ function urlToUniqueID(url) { return hash.digest('hex'); } +export function getProjectWorkingDirectory(projectPath: string): string { + try { + return fs.statSync(projectPath).isFile() ? path.dirname(projectPath) : projectPath; + } catch (error) { + throw error; + } +} + export async function goToSource(nodePosition: NodePosition, documentUri: string) { const { startLine, startColumn, endLine, endColumn } = nodePosition; if (!existsSync(documentUri)) { diff --git a/workspaces/ballerina/ballerina-extension/src/utils/logger.ts b/workspaces/ballerina/ballerina-extension/src/utils/logger.ts index cc8be1a259a..d507c28b191 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/logger.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/logger.ts @@ -23,6 +23,7 @@ import os from 'os'; import fs from 'fs'; export const outputChannel = vscode.window.createOutputChannel("Ballerina"); +export const buildOutputChannel = vscode.window.createOutputChannel("Ballerina Build"); const logLevelDebug: boolean = getPluginConfig().get('debugLog') === true; function withNewLine(value: string) { diff --git a/workspaces/ballerina/ballerina-extension/src/utils/migrate-integration.ts b/workspaces/ballerina/ballerina-extension/src/utils/migrate-integration.ts index 5851b19636c..02da6e72759 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/migrate-integration.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/migrate-integration.ts @@ -131,7 +131,7 @@ export async function pullMigrationTool(migrationToolName: string, version: stri // Extract download info from progress line if available const sizeMatch = lastLine.match(/(\d+)\/(\d+)\s+KB/); - let message = `Downloading... ${currentPercentage}%`; + let message = `Downloading...`; if (sizeMatch) { const downloaded = parseInt(sizeMatch[1], 10); diff --git a/workspaces/ballerina/ballerina-extension/src/utils/project-artifacts.ts b/workspaces/ballerina/ballerina-extension/src/utils/project-artifacts.ts index 8d6a16349f3..9269a352017 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/project-artifacts.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/project-artifacts.ts @@ -16,16 +16,58 @@ * under the License. */ import * as vscode from "vscode"; +import * as path from 'path'; import { URI, Utils } from "vscode-uri"; -import { ARTIFACT_TYPE, Artifacts, ArtifactsNotification, BaseArtifact, DIRECTORY_MAP, NodePosition, ProjectStructureArtifactResponse, ProjectStructureResponse } from "@wso2/ballerina-core"; +import { ARTIFACT_TYPE, Artifacts, ArtifactsNotification, BaseArtifact, DIRECTORY_MAP, PROJECT_KIND, ProjectInfo, ProjectStructure, ProjectStructureArtifactResponse, ProjectStructureResponse } from "@wso2/ballerina-core"; import { StateMachine } from "../stateMachine"; import { ExtendedLangClient } from "../core/extended-language-client"; import { ArtifactsUpdated, ArtifactNotificationHandler } from "./project-artifacts-handler"; -import { CommonRpcManager } from "../rpc-managers/common/rpc-manager"; -export async function buildProjectArtifactsStructure(projectDir: string, langClient: ExtendedLangClient, isUpdate: boolean = false): Promise { - const result: ProjectStructureResponse = { - projectName: "", +export async function buildProjectsStructure( + projectInfo: ProjectInfo, + langClient: ExtendedLangClient, + isUpdate: boolean = false +): Promise { + + const isWorkspace = projectInfo.projectKind === PROJECT_KIND.WORKSPACE_PROJECT; + + const packages = isWorkspace ? projectInfo.children : [projectInfo]; + + const projects: ProjectStructure[] = []; + for (const packageInfo of packages) { + const project = await buildProjectArtifactsStructure( + packageInfo.projectPath, + packageInfo.name, + packageInfo.title, + langClient + ); + projects.push(project); + } + + const response: ProjectStructureResponse = { + workspaceName: isWorkspace ? projectInfo.name : undefined, + workspacePath: isWorkspace ? projectInfo.projectPath : undefined, + workspaceTitle: isWorkspace ? projectInfo.title : undefined, + projects: projects + }; + + if (isUpdate) { + StateMachine.updateProjectStructure({ ...response }); + } + + return response; +} + +async function buildProjectArtifactsStructure( + projectPath: string, + packageName: string, + packageTitle: string, + langClient: ExtendedLangClient +): Promise { + const result: ProjectStructure = { + projectName: packageName, + projectPath: projectPath, + projectTitle: packageTitle, directoryMap: { [DIRECTORY_MAP.AUTOMATION]: [], [DIRECTORY_MAP.SERVICE]: [], @@ -40,34 +82,23 @@ export async function buildProjectArtifactsStructure(projectDir: string, langCli [DIRECTORY_MAP.LOCAL_CONNECTORS]: [], } }; - const designArtifacts = await langClient.getProjectArtifacts({ projectPath: projectDir }); + const designArtifacts = await langClient.getProjectArtifacts({ projectPath }); console.log("designArtifacts", designArtifacts); if (designArtifacts?.artifacts) { - traverseComponents(designArtifacts.artifacts, result); - await populateLocalConnectors(projectDir, result); + traverseComponents(designArtifacts.artifacts, projectPath, result); + await populateLocalConnectors(projectPath, result); } - // Attempt to get the project name from the workspace folder as a fallback if not found in Ballerina.toml - const workspace = vscode.workspace.workspaceFolders?.find(folder => folder.uri.fsPath === projectDir); - let projectName = workspace?.name; - // Get the project name from the ballerina.toml file - const commonRpcManager = new CommonRpcManager(); - const tomlValues = await commonRpcManager.getCurrentProjectTomlValues(); - if (tomlValues) { - projectName = tomlValues.package?.title || tomlValues.package?.name; - } - result.projectName = projectName; - if (isUpdate) { - StateMachine.updateProjectStructure({ ...result }); - } return result; } export async function updateProjectArtifacts(publishedArtifacts: ArtifactsNotification): Promise { // Current project structure const currentProjectStructure: ProjectStructureResponse = StateMachine.context().projectStructure; - const projectUri = URI.file(StateMachine.context().projectUri); - const isWithinProject = URI.parse(publishedArtifacts.uri).fsPath.toLowerCase().includes(projectUri.fsPath.toLowerCase()); + const projectUri = URI.file(StateMachine.context().projectPath) || URI.file(StateMachine.context().workspacePath); + const isWithinProject = URI + .parse(publishedArtifacts.uri).fsPath.toLowerCase() + .includes(projectUri.fsPath.toLowerCase()); if (currentProjectStructure && isWithinProject) { const entryLocations = await traverseUpdatedComponents(publishedArtifacts.artifacts, currentProjectStructure); const notificationHandler = ArtifactNotificationHandler.getInstance(); @@ -87,19 +118,26 @@ export async function updateProjectArtifacts(publishedArtifacts: ArtifactsNotifi } } -async function traverseComponents(artifacts: Artifacts, response: ProjectStructureResponse) { - response.directoryMap[DIRECTORY_MAP.AUTOMATION].push(...await getComponents(artifacts[ARTIFACT_TYPE.EntryPoints], DIRECTORY_MAP.AUTOMATION, "task")); - response.directoryMap[DIRECTORY_MAP.SERVICE].push(...await getComponents(artifacts[ARTIFACT_TYPE.EntryPoints], DIRECTORY_MAP.SERVICE, "http-service")); - response.directoryMap[DIRECTORY_MAP.LISTENER].push(...await getComponents(artifacts[ARTIFACT_TYPE.Listeners], DIRECTORY_MAP.LISTENER, "http-service")); - response.directoryMap[DIRECTORY_MAP.FUNCTION].push(...await getComponents(artifacts[ARTIFACT_TYPE.Functions], DIRECTORY_MAP.FUNCTION, "function")); - response.directoryMap[DIRECTORY_MAP.DATA_MAPPER].push(...await getComponents(artifacts[ARTIFACT_TYPE.DataMappers], DIRECTORY_MAP.DATA_MAPPER, "dataMapper")); - response.directoryMap[DIRECTORY_MAP.CONNECTION].push(...await getComponents(artifacts[ARTIFACT_TYPE.Connections], DIRECTORY_MAP.CONNECTION, "connection")); - response.directoryMap[DIRECTORY_MAP.TYPE].push(...await getComponents(artifacts[ARTIFACT_TYPE.Types], DIRECTORY_MAP.TYPE, "type")); - response.directoryMap[DIRECTORY_MAP.CONFIGURABLE].push(...await getComponents(artifacts[ARTIFACT_TYPE.Configurations], DIRECTORY_MAP.CONFIGURABLE, "config")); - response.directoryMap[DIRECTORY_MAP.NP_FUNCTION].push(...await getComponents(artifacts[ARTIFACT_TYPE.NaturalFunctions], DIRECTORY_MAP.NP_FUNCTION, "function")); +async function traverseComponents(artifacts: Artifacts, projectPath: string, response: ProjectStructure) { + response.directoryMap[DIRECTORY_MAP.AUTOMATION].push(...await getComponents(artifacts[ARTIFACT_TYPE.EntryPoints], projectPath, DIRECTORY_MAP.AUTOMATION, "task")); + response.directoryMap[DIRECTORY_MAP.SERVICE].push(...await getComponents(artifacts[ARTIFACT_TYPE.EntryPoints], projectPath, DIRECTORY_MAP.SERVICE, "http-service")); + response.directoryMap[DIRECTORY_MAP.LISTENER].push(...await getComponents(artifacts[ARTIFACT_TYPE.Listeners], projectPath, DIRECTORY_MAP.LISTENER, "http-service")); + response.directoryMap[DIRECTORY_MAP.FUNCTION].push(...await getComponents(artifacts[ARTIFACT_TYPE.Functions], projectPath, DIRECTORY_MAP.FUNCTION, "function")); + response.directoryMap[DIRECTORY_MAP.DATA_MAPPER].push(...await getComponents(artifacts[ARTIFACT_TYPE.DataMappers], projectPath, DIRECTORY_MAP.DATA_MAPPER, "dataMapper")); + response.directoryMap[DIRECTORY_MAP.CONNECTION].push(...await getComponents(artifacts[ARTIFACT_TYPE.Connections], projectPath, DIRECTORY_MAP.CONNECTION, "connection")); + response.directoryMap[DIRECTORY_MAP.TYPE].push(...await getComponents(artifacts[ARTIFACT_TYPE.Types], projectPath, DIRECTORY_MAP.TYPE, "type")); + response.directoryMap[DIRECTORY_MAP.CONFIGURABLE].push(...await getComponents(artifacts[ARTIFACT_TYPE.Configurations], projectPath, DIRECTORY_MAP.CONFIGURABLE, "config")); + response.directoryMap[DIRECTORY_MAP.NP_FUNCTION].push(...await getComponents(artifacts[ARTIFACT_TYPE.NaturalFunctions], projectPath, DIRECTORY_MAP.NP_FUNCTION, "function")); } -async function getComponents(artifacts: Record, artifactType: DIRECTORY_MAP, icon: string, moduleName?: string): Promise { +async function getComponents( + artifacts: Record, + projectPath: string, + artifactType: DIRECTORY_MAP, + icon: string, + moduleName?: string +): Promise { + const entries: ProjectStructureArtifactResponse[] = []; if (!artifacts) { return entries; @@ -110,14 +148,14 @@ async function getComponents(artifacts: Record, artifactTy if (artifact.type !== artifactType) { continue; } - const entryValue = await getEntryValue(artifact, icon, moduleName); + const entryValue = await getEntryValue(artifact, projectPath, icon, moduleName); entries.push(entryValue); } return entries; } -async function getEntryValue(artifact: BaseArtifact, icon: string, moduleName?: string) { - const targetFile = Utils.joinPath(URI.file(StateMachine.context().projectUri), artifact.location.fileName).fsPath; +async function getEntryValue(artifact: BaseArtifact, projectPath: string, icon: string, moduleName?: string) { + const targetFile = Utils.joinPath(URI.file(projectPath), artifact.location.fileName).fsPath; const entryValue: ProjectStructureArtifactResponse = { id: artifact.id, name: artifact.name, @@ -154,17 +192,17 @@ async function getEntryValue(artifact: BaseArtifact, icon: string, moduleName?: }; } else { // Get the children of the service - const resourceFunctions = await getComponents(artifact.children, DIRECTORY_MAP.RESOURCE, icon, artifact.module); - const remoteFunctions = await getComponents(artifact.children, DIRECTORY_MAP.REMOTE, icon, artifact.module); - const privateFunctions = await getComponents(artifact.children, DIRECTORY_MAP.FUNCTION, icon, artifact.module); + const resourceFunctions = await getComponents(artifact.children, projectPath, DIRECTORY_MAP.RESOURCE, icon, artifact.module); + const remoteFunctions = await getComponents(artifact.children, projectPath, DIRECTORY_MAP.REMOTE, icon, artifact.module); + const privateFunctions = await getComponents(artifact.children, projectPath, DIRECTORY_MAP.FUNCTION, icon, artifact.module); entryValue.resources = [...resourceFunctions, ...remoteFunctions, ...privateFunctions]; } break; case DIRECTORY_MAP.TYPE: if (artifact.children && Object.keys(artifact.children).length > 0) { - const resourceFunctions = await getComponents(artifact.children, DIRECTORY_MAP.RESOURCE, icon, artifact.module); - const remoteFunctions = await getComponents(artifact.children, DIRECTORY_MAP.REMOTE, icon, artifact.module); - const privateFunctions = await getComponents(artifact.children, DIRECTORY_MAP.FUNCTION, icon, artifact.module); + const resourceFunctions = await getComponents(artifact.children, projectPath, DIRECTORY_MAP.RESOURCE, icon, artifact.module); + const remoteFunctions = await getComponents(artifact.children, projectPath, DIRECTORY_MAP.REMOTE, icon, artifact.module); + const privateFunctions = await getComponents(artifact.children, projectPath, DIRECTORY_MAP.FUNCTION, icon, artifact.module); entryValue.resources = [...resourceFunctions, ...remoteFunctions, ...privateFunctions]; } break; @@ -257,8 +295,10 @@ function getDirectoryMapKeyAndIcon(artifact: BaseArtifact, artifactCategoryKey: function processDeletion(artifact: BaseArtifact, artifactCategoryKey: string, projectStructure: ProjectStructureResponse): void { const mapping = getDirectoryMapKeyAndIcon(artifact, artifactCategoryKey); if (mapping) { - projectStructure.directoryMap[mapping.mapKey] = - projectStructure.directoryMap[mapping.mapKey]?.filter(value => value.id !== artifact.id) ?? []; + const projectPath = StateMachine.context().projectPath; + const project = projectStructure.projects.find(project => project.projectPath === projectPath); + project.directoryMap[mapping.mapKey] = + project.directoryMap[mapping.mapKey]?.filter(value => value.id !== artifact.id) ?? []; } else { console.error(`Could not determine directory map key for deletion of artifact ${artifact.id} in category ${artifactCategoryKey}`); } @@ -275,13 +315,16 @@ async function processAddition(artifact: BaseArtifact, artifactCategoryKey: stri const mapping = getDirectoryMapKeyAndIcon(artifact, artifactCategoryKey); if (mapping) { try { - const entryValue = await getEntryValue(artifact, mapping.icon); + const projectPath = StateMachine.context().projectPath; + const entryValue = await getEntryValue(artifact, projectPath, mapping.icon); + + const project = projectStructure.projects.find(project => project.projectPath === projectPath); // Ensure the array exists before pushing - if (!projectStructure.directoryMap[mapping.mapKey]) { - projectStructure.directoryMap[mapping.mapKey] = []; + if (!project.directoryMap[mapping.mapKey]) { + project.directoryMap[mapping.mapKey] = []; } entryValue.isNew = true; // This is a flag to identify the new artifact - projectStructure.directoryMap[mapping.mapKey]?.push(entryValue); + project.directoryMap[mapping.mapKey]?.push(entryValue); return entryValue; } catch (error) { console.error(`Error processing addition for artifact ${artifact.id} in category ${artifactCategoryKey}:`, error); @@ -304,18 +347,20 @@ async function processUpdate(artifact: BaseArtifact, artifactCategoryKey: string const mapping = getDirectoryMapKeyAndIcon(artifact, artifactCategoryKey); if (mapping) { try { - const entryValue = await getEntryValue(artifact, mapping.icon); + const projectPath = StateMachine.context().projectPath; + const entryValue = await getEntryValue(artifact, projectPath, mapping.icon); + const project = projectStructure.projects.find(project => project.projectPath === projectPath); // Ensure the array exists - if (!projectStructure.directoryMap[mapping.mapKey]) { - projectStructure.directoryMap[mapping.mapKey] = []; + if (!project.directoryMap[mapping.mapKey]) { + project.directoryMap[mapping.mapKey] = []; } - const index = projectStructure.directoryMap[mapping.mapKey]?.findIndex(value => value.id === artifact.id); + const index = project.directoryMap[mapping.mapKey]?.findIndex(value => value.id === artifact.id); if (index !== undefined && index !== -1) { - projectStructure.directoryMap[mapping.mapKey][index] = entryValue; + project.directoryMap[mapping.mapKey][index] = entryValue; } else { // Artifact not found for update, add it instead (matches original logic) console.warn(`Artifact ${artifact.id} not found for update in ${mapping.mapKey}, adding it instead.`); - projectStructure.directoryMap[mapping.mapKey]?.push(entryValue); + project.directoryMap[mapping.mapKey]?.push(entryValue); } return entryValue; } catch (error) { @@ -359,9 +404,12 @@ async function traverseUpdatedComponents(publishedArtifacts: Artifacts, currentP // Wait for all additions and updates to complete const results = await Promise.all(promises); - for (const key of Object.keys(currentProjectStructure.directoryMap)) { - if (currentProjectStructure.directoryMap[key]) { - currentProjectStructure.directoryMap[key].sort((a, b) => a.name.localeCompare(b.name)); + const projectPath = StateMachine.context().projectPath; + const project = currentProjectStructure.projects.find(project => project.projectPath === projectPath); + + for (const key of Object.keys(project.directoryMap)) { + if (project.directoryMap[key]) { + project.directoryMap[key].sort((a, b) => a.name.localeCompare(b.name)); } } @@ -374,9 +422,9 @@ async function traverseUpdatedComponents(publishedArtifacts: Artifacts, currentP return entryLocations; } -async function populateLocalConnectors(projectDir: string, response: ProjectStructureResponse) { +async function populateLocalConnectors(projectDir: string, response: ProjectStructure) { const filePath = `${projectDir}/Ballerina.toml`; - const localConnectors = (await StateMachine.langClient().getOpenApiGeneratedModules({ projectPath: projectDir })).modules; + const localConnectors = (await StateMachine.langClient().getOpenApiGeneratedModules({ projectPath: projectDir })).modules || []; const mappedEntries: ProjectStructureArtifactResponse[] = localConnectors.map(moduleName => ({ id: moduleName, name: moduleName, @@ -426,6 +474,10 @@ function getCustomEntryNodeIcon(type: string) { return "bi-ftp"; case "file": return "bi-file"; + case "mcp": + return "bi-mcp"; + case "solace": + return "bi-solace"; default: return "bi-globe"; } diff --git a/workspaces/ballerina/ballerina-extension/src/utils/project-utils.ts b/workspaces/ballerina/ballerina-extension/src/utils/project-utils.ts index 55bf802e4b1..622ce5fe70b 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/project-utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/project-utils.ts @@ -17,16 +17,36 @@ */ import { extension } from "../BalExtensionContext"; -import { Uri, window, workspace } from "vscode"; +import { Uri, window, workspace, RelativePattern, WorkspaceFolder } from "vscode"; import * as path from 'path'; -import { isSupportedVersion, VERSION } from "./config"; +import { checkIsBallerinaPackage, isSupportedVersion, VERSION } from "./config"; import { BallerinaProject } from "@wso2/ballerina-core"; +import { readFileSync } from 'fs'; +import { dirname, sep } from 'path'; +import { parseTomlToConfig } from '../features/config-generator/utils'; +import { PROJECT_TYPE } from "../features/project"; +import { StateMachine } from "../stateMachine"; -function getCurrentBallerinaProject(file?: string): Promise { +const BALLERINA_TOML_REGEX = `**${sep}Ballerina.toml`; +const BALLERINA_FILE_REGEX = `**${sep}*.bal`; + +export interface BALLERINA_TOML { + package: PACKAGE; + "build-options": any; +} + +export interface PACKAGE { + org: string; + name: string; + version: string; + distribution: string; +} + +function getCurrentBallerinaProject(projectPath?: string): Promise { return new Promise((resolve, reject) => { const activeEditor = window.activeTextEditor; // get path of the current bal file - const uri = file ? Uri.file(file) : activeEditor.document.uri; + const uri = projectPath ? Uri.file(projectPath) : activeEditor.document.uri; // if currently opened file is a bal file if (extension.ballerinaExtInstance.langClient && isSupportedVersion(extension.ballerinaExtInstance, VERSION.BETA, 1)) { // get Ballerina Project path for current Ballerina file @@ -78,4 +98,134 @@ function addToWorkspace(url: string) { workspace.updateWorkspaceFolders(workspace.workspaceFolders ? workspace.workspaceFolders.length : 0, null, { uri: Uri.parse(url) }); } -export { addToWorkspace, getCurrentBallerinaProject, getCurrentBallerinaFile, getCurrenDirectoryPath }; +async function selectBallerinaProjectForDebugging(workspaceFolder?: WorkspaceFolder): Promise { + const tomls = await workspace.findFiles(workspaceFolder ? new RelativePattern(workspaceFolder, BALLERINA_TOML_REGEX) : BALLERINA_TOML_REGEX); + const projects: { project: BallerinaProject; balFile: Uri; relativePath: string }[] = []; + + for (const toml of tomls) { + const projectRoot = dirname(toml.fsPath); + const balFiles = await workspace.findFiles(new RelativePattern(projectRoot, BALLERINA_FILE_REGEX), undefined, 1); + if (balFiles.length > 0) { + const tomlContent: string = readFileSync(toml.fsPath, 'utf8'); + const tomlObj: BALLERINA_TOML = parseTomlToConfig(tomlContent) as BALLERINA_TOML; + const relativePath = workspace.asRelativePath(projectRoot); + // Add only if package name is present in Ballerina.toml (this is to exclude workspace projects) + if (tomlObj.package && tomlObj.package.name) { + projects.push({ project: { packageName: tomlObj.package.name }, balFile: balFiles[0], relativePath }); + } + } + } + + if (projects.length === 1) { + return projects[0].balFile.fsPath; + } else if (projects.length > 1) { + const selectedProject = await window.showQuickPick(projects.map((project) => { + return { + label: project.project.packageName, + description: project.relativePath + }; + }), { placeHolder: "Detected multiple Ballerina projects within the workspace. Select one to debug.", canPickMany: false }); + + if (selectedProject) { + const foundProject = projects.find((project) => project.project.packageName === selectedProject.label); + if (foundProject) { + return foundProject.balFile.fsPath; + } + } + throw new Error("Project selection cancelled"); + } else { + extension.ballerinaExtInstance.showMessageInvalidProject(); + throw new Error("No valid Ballerina projects found"); + } +} + + +/** + * Determines and returns the current project root directory. + * + * Resolution order: + * 1. State machine context (when working within a webview) + * 2. Open Ballerina file's project root + * 3. Workspace root (if it's a valid Ballerina package) + * + * @returns The current project root path + * @throws Error if unable to determine a valid Ballerina project root + */ +async function getCurrentProjectRoot(): Promise { + const currentFilePath = tryGetCurrentBallerinaFile(); + const contextProjectRoot = StateMachine.context()?.projectPath; + + // Use state machine context only when not in a regular text editor (e.g., within a webview) + if (contextProjectRoot && !currentFilePath) { + return contextProjectRoot; + } + + // Resolve project root from the currently open Ballerina file + if (currentFilePath) { + const projectRoot = await resolveProjectRootFromFile(currentFilePath); + if (projectRoot) { + return projectRoot; + } + } + + // Fallback to workspace root if it's a valid Ballerina package + const workspaceRoot = getWorkspaceRoot(); + if (!workspaceRoot) { + throw new Error("Unable to determine the current workspace root."); + } + + if (await checkIsBallerinaPackage(Uri.file(workspaceRoot))) { + return workspaceRoot; + } + + throw new Error(`No valid Ballerina project found`); +} + +/** + * Safely attempts to get the current Ballerina file without throwing errors. + * @returns The current Ballerina file path or undefined if not available + */ +function tryGetCurrentBallerinaFile(): string | undefined { + try { + return getCurrentBallerinaFile(); + } catch { + return undefined; + } +} + +/** + * Resolves the project root from the given Ballerina file. + * @param filePath The Ballerina file path + * @returns The project root path or undefined if unable to resolve + */ +async function resolveProjectRootFromFile(filePath: string): Promise { + try { + const project = await getCurrentBallerinaProject(filePath); + + if (project.kind === PROJECT_TYPE.SINGLE_FILE) { + return filePath; + } + + return project.path; + } catch { + return undefined; + } +} + +/** + * Gets the workspace root directory. + * @returns The workspace root path or undefined if not available + */ +function getWorkspaceRoot(): string | undefined { + return workspace.workspaceFolders?.[0]?.uri.fsPath; +} + +export { + addToWorkspace, + getCurrentBallerinaProject, + getCurrentBallerinaFile, + getCurrenDirectoryPath, + selectBallerinaProjectForDebugging, + getCurrentProjectRoot, + getWorkspaceRoot +}; diff --git a/workspaces/ballerina/ballerina-extension/src/utils/runCommand.ts b/workspaces/ballerina/ballerina-extension/src/utils/runCommand.ts index 49dddf0f045..ee791f5075e 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/runCommand.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/runCommand.ts @@ -38,6 +38,93 @@ export async function runBackgroundTerminalCommand(command: string) { }); } +/** + * Run a command with output streamed to an output channel + * @param command Command to execute + * @param cwd Working directory for the command + * @param outputChannel VSCode output channel to stream output to + * @param onProgress Optional callback to report progress (e.g., module being pulled) + * @returns Promise that resolves with success status and exit code + */ +export function runCommandWithOutput( + command: string, + cwd: string, + outputChannel: vscode.OutputChannel, + onProgress?: (message: string) => void +): Promise<{ success: boolean; exitCode: number | null }> { + return new Promise((resolve) => { + console.log(`[runCommandWithOutput] Executing: ${command} in ${cwd}`); + + // Show the output channel + outputChannel.show(true); + outputChannel.appendLine(`Running: ${command}`); + outputChannel.appendLine(`Working directory: ${cwd}`); + outputChannel.appendLine(''); + + // Spawn the process + const proc = child_process.spawn(command, [], { + shell: true, + cwd: cwd, + env: process.env as { [key: string]: string } + }); + + // Handle stdout + proc.stdout?.on('data', (data: Buffer) => { + const text = data.toString(); + outputChannel.append(text); + + // Parse module names from output for progress reporting + if (onProgress) { + // Look for patterns like "ballerinax/redis:3.1.0 [central.ballerina.io..." + const moduleMatch = text.match(/(\w+\/[\w-]+:\d+\.\d+\.\d+)\s+\[/); + if (moduleMatch) { + const moduleName = moduleMatch[1]; + onProgress(`Pulling ${moduleName} ...`); + } + + // Also check for "pulled from central successfully" messages + const successMatch = text.match(/(\w+\/[\w-]+:\d+\.\d+\.\d+)\s+pulled from central successfully/); + if (successMatch) { + const moduleName = successMatch[1]; + onProgress(`${moduleName} pulled successfully`); + } + } + }); + + // Handle stderr + proc.stderr?.on('data', (data: Buffer) => { + const text = data.toString(); + outputChannel.append(text); + console.log(`[runCommandWithOutput] stderr: ${text}`); + onProgress(`Something went wrong. check the output for more details.`); + }); + + // Handle process errors + proc.on('error', (error) => { + const errorMsg = `Process error: ${error.message}`; + outputChannel.appendLine(errorMsg); + console.error(`[runCommandWithOutput] ${errorMsg}`, error); + onProgress(`Something went wrong. check the output for more details.`); + resolve({ success: false, exitCode: null }); + }); + + // Handle process exit + proc.on('close', (code) => { + const exitMsg = `\nProcess exited with code ${code}`; + outputChannel.appendLine(exitMsg); + console.log(`[runCommandWithOutput] ${exitMsg}`); + + const success = code === 0; + if (success) { + onProgress(`All dependencies pulled successfully`); + } else { + onProgress(`Something went wrong. check the output for more details.`); + } + resolve({ success, exitCode: code }); + }); + }); +} + export function openExternalUrl(url:string){ vscode.env.openExternal(vscode.Uri.parse(url)); } diff --git a/workspaces/ballerina/ballerina-extension/src/utils/server/server.ts b/workspaces/ballerina/ballerina-extension/src/utils/server/server.ts index df95ea9b0e0..d817676ef4c 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/server/server.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/server/server.ts @@ -21,7 +21,7 @@ import { debug, log } from '../logger'; import { ServerOptions, ExecutableOptions } from 'vscode-languageclient/node'; import { isWindows } from '..'; import { BallerinaExtension } from '../../core'; -import { isSupportedSLVersion } from '../config'; +import { isSupportedSLVersion, createVersionNumber } from '../config'; import * as fs from 'fs'; import * as path from 'path'; import { orderBy } from 'lodash'; @@ -150,7 +150,7 @@ export function findHighestVersionJdk(directory: string): string | null { export function getServerOptions(extension: BallerinaExtension): ServerOptions { debug('Getting server options.'); // Check if user wants to use Ballerina CLI language server or if version requires it - const BI_SUPPORTED_MINIMUM_VERSION = 2201123; // 2201.12.3 + const BI_SUPPORTED_MINIMUM_VERSION = createVersionNumber(2201, 12, 3); // Version 2201.12.3 if (extension?.useDistributionLanguageServer() || !isSupportedSLVersion(extension, BI_SUPPORTED_MINIMUM_VERSION)) { return getServerOptionsUsingCLI(extension); } else { diff --git a/workspaces/ballerina/ballerina-extension/src/utils/source-utils.ts b/workspaces/ballerina/ballerina-extension/src/utils/source-utils.ts index 8aeb0502eb1..ed399c82c75 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/source-utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/source-utils.ts @@ -36,6 +36,7 @@ export interface UpdateSourceCodeRequest { description?: string; identifier?: string; skipPayloadCheck?: boolean; // This is used to skip the payload check because the payload data might become empty as a result of a change. Example: Deleting a component. + isRenameOperation?: boolean; // This is used to identify if the update is a rename operation. } export async function updateSourceCode(updateSourceCodeRequest: UpdateSourceCodeRequest): Promise { @@ -175,7 +176,7 @@ export async function updateSourceCode(updateSourceCodeRequest: UpdateSourceCode clearTimeout(timeoutId); resolve(payload.data); StateMachine.setReadyMode(); - checkAndNotifyWebview(payload.data, updateSourceCodeRequest.identifier); + checkAndNotifyWebview(payload.data, updateSourceCodeRequest); unsubscribe(); } }); @@ -185,7 +186,7 @@ export async function updateSourceCode(updateSourceCodeRequest: UpdateSourceCode console.log("No artifact update notification received within 10 seconds"); unsubscribe(); StateMachine.setReadyMode(); - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.Overview }); + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.PackageOverview }); reject(new Error("Operation timed out. Please try again.")); }, 10000); @@ -213,10 +214,16 @@ export async function updateSourceCode(updateSourceCodeRequest: UpdateSourceCode //** // Notify webview unless a new TYPE artifact is created outside the type diagram view // */ -function checkAndNotifyWebview(response: ProjectStructureArtifactResponse[], identifier?: string) { +function checkAndNotifyWebview(response: ProjectStructureArtifactResponse[], request: UpdateSourceCodeRequest) { const newArtifact = response.find(artifact => artifact.isNew); - const selectedArtifact = response.find(artifact => artifact.id === identifier); + const selectedArtifact = response.find(artifact => artifact.id === request.identifier); const stateContext = StateMachine.context().view; + + if (request.isRenameOperation) { + notifyCurrentWebview(); + return; + } + if ((selectedArtifact?.type === "TYPE " || newArtifact?.type === "TYPE") && stateContext !== MACHINE_VIEW.TypeDiagram) { return; } else { diff --git a/workspaces/ballerina/ballerina-extension/src/utils/state-machine-utils.ts b/workspaces/ballerina/ballerina-extension/src/utils/state-machine-utils.ts index a519d4da8a2..a769b3291f7 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/state-machine-utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/state-machine-utils.ts @@ -28,10 +28,10 @@ import { getConstructBodyString } from "./history/util"; import { extension } from "../BalExtensionContext"; import path from "path"; -export async function getView(documentUri: string, position: NodePosition, projectUri?: string): Promise { +export async function getView(documentUri: string, position: NodePosition, projectPath: string): Promise { const haveTreeData = !!StateMachine.context().projectStructure; - const isServiceClassFunction = await checkForServiceClassFunctions(documentUri, position); - if (isServiceClassFunction || path.relative(projectUri || '', documentUri).startsWith("tests")) { + const isServiceClassFunction = await checkForServiceClassFunctions(documentUri, position, projectPath); + if (isServiceClassFunction || path.relative(projectPath || '', documentUri).startsWith("tests")) { return { location: { view: MACHINE_VIEW.BIDiagram, @@ -42,17 +42,18 @@ export async function getView(documentUri: string, position: NodePosition, proje dataMapperDepth: 0 }; } else if (haveTreeData) { - return getViewByArtifacts(documentUri, position, projectUri); + return getViewByArtifacts(documentUri, position, projectPath); } else { - return await getViewBySTRange(documentUri, position, projectUri); + return await getViewBySTRange(documentUri, position, projectPath); } } -async function checkForServiceClassFunctions(documentUri: string, position: NodePosition) { +async function checkForServiceClassFunctions(documentUri: string, position: NodePosition, projectPath: string) { const currentProjectArtifacts = StateMachine.context().projectStructure; if (currentProjectArtifacts) { - for (const dir of currentProjectArtifacts.directoryMap[DIRECTORY_MAP.TYPE]) { + const project = currentProjectArtifacts.projects.find(project => project.projectPath === projectPath); + for (const dir of project.directoryMap[DIRECTORY_MAP.TYPE]) { if (dir.path === documentUri && isPositionWithinBlock(position, dir.position)) { const req = getSTByRangeReq(documentUri, position); const node = await StateMachine.langClient().getSTByRange(req) as SyntaxTreeResponse; @@ -66,7 +67,7 @@ async function checkForServiceClassFunctions(documentUri: string, position: Node } // TODO: This is not used anymore. Remove it. -async function getViewBySTRange(documentUri: string, position: NodePosition, projectUri?: string) { +async function getViewBySTRange(documentUri: string, position: NodePosition, projectPath?: string): Promise { const req = getSTByRangeReq(documentUri, position); const node = await StateMachine.langClient().getSTByRange(req) as SyntaxTreeResponse; if (node.parseSuccess) { @@ -85,7 +86,7 @@ async function getViewBySTRange(documentUri: string, position: NodePosition, pro documentUri: documentUri, position: position, identifier: name, - projectUri: projectUri + projectPath } }; } @@ -104,7 +105,7 @@ async function getViewBySTRange(documentUri: string, position: NodePosition, pro documentUri: documentUri, position: position, identifier: name, - projectUri: projectUri + projectPath } }; } @@ -123,7 +124,7 @@ async function getViewBySTRange(documentUri: string, position: NodePosition, pro documentUri: documentUri, position: position, identifier: name, - projectUri: projectUri + projectPath } }; } @@ -174,7 +175,7 @@ async function getViewBySTRange(documentUri: string, position: NodePosition, pro identifier: node.syntaxTree.absoluteResourcePath.map((path) => path.value).join(''), documentUri: documentUri, position: position, - projectUri: projectUri + projectPath } }; } else { @@ -262,21 +263,22 @@ async function getViewBySTRange(documentUri: string, position: NodePosition, pro } } - return { location: { view: MACHINE_VIEW.Overview, documentUri: documentUri } }; + return { location: { view: MACHINE_VIEW.PackageOverview, documentUri: documentUri } }; } -function getViewByArtifacts(documentUri: string, position: NodePosition, projectUri?: string) { +function getViewByArtifacts(documentUri: string, position: NodePosition, projectPath: string) { const currentProjectArtifacts = StateMachine.context().projectStructure; if (currentProjectArtifacts) { // Iterate through each category in the directory map - for (const [key, directory] of Object.entries(currentProjectArtifacts.directoryMap)) { + const project = currentProjectArtifacts.projects.find(project => project.projectPath === projectPath); + for (const [key, directory] of Object.entries(project.directoryMap)) { // Check each artifact in the category for (const dir of directory) { // Go through the resources array if it exists if (dir.resources && dir.resources.length > 0) { for (const resource of dir.resources) { - const view = findViewByArtifact(resource, position, documentUri, projectUri); + const view = findViewByArtifact(resource, position, documentUri, projectPath); if (view) { view.location.parentIdentifier = dir.name; return view; @@ -284,18 +286,23 @@ function getViewByArtifacts(documentUri: string, position: NodePosition, project } } // Check the current directory - const view = findViewByArtifact(dir, position, documentUri, projectUri); + const view = findViewByArtifact(dir, position, documentUri, projectPath); if (view) { return view; } } } // If no view is found, return the overview view - return { location: { view: MACHINE_VIEW.Overview, documentUri: documentUri } }; + return { location: { view: MACHINE_VIEW.PackageOverview, documentUri: documentUri } }; } } -function findViewByArtifact(dir: ProjectStructureArtifactResponse, position: NodePosition, documentUri: string, projectUri?: string): HistoryEntry { +function findViewByArtifact( + dir: ProjectStructureArtifactResponse, + position: NodePosition, + documentUri: string, + projectPath?: string +): HistoryEntry { const currentDocumentUri = documentUri; const artifactUri = dir.path; if (artifactUri === currentDocumentUri && isPositionWithinRange(position, dir.position)) { @@ -308,7 +315,7 @@ function findViewByArtifact(dir: ProjectStructureArtifactResponse, position: Nod identifier: dir.name, documentUri: currentDocumentUri, position: position, - projectUri: projectUri, + projectPath: projectPath, artifactType: DIRECTORY_MAP.SERVICE } }; @@ -319,7 +326,7 @@ function findViewByArtifact(dir: ProjectStructureArtifactResponse, position: Nod identifier: dir.name, documentUri: currentDocumentUri, position: position, - projectUri: projectUri, + projectPath: projectPath, artifactType: DIRECTORY_MAP.SERVICE, } }; @@ -398,7 +405,7 @@ function findViewByArtifact(dir: ProjectStructureArtifactResponse, position: Nod documentUri: currentDocumentUri, position: position, identifier: dir.name, - projectUri: projectUri, + projectPath: projectPath, artifactType: DIRECTORY_MAP.TYPE } }; diff --git a/workspaces/ballerina/ballerina-extension/src/views/ai-panel/activate.ts b/workspaces/ballerina/ballerina-extension/src/views/ai-panel/activate.ts index 3fe5b860c14..df064c0e375 100644 --- a/workspaces/ballerina/ballerina-extension/src/views/ai-panel/activate.ts +++ b/workspaces/ballerina/ballerina-extension/src/views/ai-panel/activate.ts @@ -17,20 +17,54 @@ */ import * as vscode from 'vscode'; -import { AIPanelPrompt, SHARED_COMMANDS } from '@wso2/ballerina-core'; +import { AIPanelPrompt, EVENT_TYPE, MACHINE_VIEW, SHARED_COMMANDS } from '@wso2/ballerina-core'; import { closeAIWebview, openAIWebview } from './aiMachine'; import { BallerinaExtension } from '../../core'; import { notifyAiWebview } from '../../RPCLayer'; +import { openView, StateMachine } from '../../stateMachine'; export function activateAiPanel(ballerinaExtInstance: BallerinaExtension) { ballerinaExtInstance.context.subscriptions.push( - vscode.commands.registerCommand(SHARED_COMMANDS.OPEN_AI_PANEL, (defaultPrompt?: AIPanelPrompt) => { - if (defaultPrompt instanceof vscode.Uri) { - // Passed directly from vscode side - openAIWebview(null); - } else { - openAIWebview(defaultPrompt); + vscode.commands.registerCommand(SHARED_COMMANDS.OPEN_AI_PANEL, async (defaultPrompt?: AIPanelPrompt) => { + const context = StateMachine.context(); + const { workspacePath, view, projectPath, projectInfo } = context; + + // Determine if package selection is required + const requiresPackageSelection = + workspacePath && + (view === MACHINE_VIEW.WorkspaceOverview || !projectPath); + + if (requiresPackageSelection) { + const availablePackages = projectInfo?.children.map((child) => child.projectPath) ?? []; + + // No packages available, open webview with no context + if (availablePackages.length === 0) { + openAIWebview(null); + return; + } + + try { + const selectedPackage = await vscode.window.showQuickPick(availablePackages, { + placeHolder: "Select a package to open AI panel", + ignoreFocusOut: false + }); + + // User cancelled selection + if (!selectedPackage) { + return; + } + + // StateMachine.updateProjectRoot(selectedPackage); + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.PackageOverview, projectPath: selectedPackage }); + } catch (error) { + console.error("Error selecting package:", error); + return; + } } + + // Open webview with appropriate prompt + const prompt = defaultPrompt instanceof vscode.Uri ? null : defaultPrompt; + openAIWebview(prompt); }) ); ballerinaExtInstance.context.subscriptions.push( diff --git a/workspaces/ballerina/ballerina-extension/src/views/migration-report/webview.ts b/workspaces/ballerina/ballerina-extension/src/views/migration-report/webview.ts index 0e4c1dd6ec1..1797dc1cf5b 100644 --- a/workspaces/ballerina/ballerina-extension/src/views/migration-report/webview.ts +++ b/workspaces/ballerina/ballerina-extension/src/views/migration-report/webview.ts @@ -19,6 +19,7 @@ import { Disposable, Uri, ViewColumn, WebviewPanel, window } from "vscode"; import { extension } from "../../BalExtensionContext"; import path from "path"; +import { MigrateIntegrationRpcManager } from "../../rpc-managers/migrate-integration/rpc-manager"; export class MigrationReportWebview { public static currentPanel: MigrationReportWebview | undefined; @@ -29,31 +30,75 @@ export class MigrationReportWebview { this._panel = panel; this._panel.onDidDispose(() => this.dispose(), null, this._disposables); - const htmlWithStyleRemoval = reportContent.replace( + // Get the singleton RPC manager + const rpcManager = MigrateIntegrationRpcManager.getInstance(); + + // Set up message listener to handle clicks from webview + this._panel.webview.onDidReceiveMessage( + message => { + if (message.type === 'openSubProjectReport') { + // Forward the message to the RPC manager + rpcManager.openSubProjectReport({ + projectName: message.projectName + }).catch(error => { + console.error("Failed to open sub-project report:", error); + }); + } + }, + null, + this._disposables + ); + + const htmlWithScripts = reportContent.replace( "", `` ); - this._panel.webview.html = htmlWithStyleRemoval; + this._panel.webview.html = htmlWithScripts; } public static createOrShow(fileName: string, reportContent: string): void { - if (MigrationReportWebview.currentPanel) { + // For the aggregate report (default name), reuse the panel if it exists + const isAggregateReport = fileName === "migration-report.html"; + + if (isAggregateReport && MigrationReportWebview.currentPanel) { MigrationReportWebview.currentPanel._panel.reveal(ViewColumn.Active); MigrationReportWebview.currentPanel.updateContent(reportContent); return; } const panel = window.createWebviewPanel( - "migrationReport", - `Migration Report`, + isAggregateReport ? "migrationReport" : `migrationReport-${Date.now()}`, + isAggregateReport ? `Migration Report` : `Migration Report - ${fileName}`, ViewColumn.Active, { enableScripts: true, @@ -66,23 +111,50 @@ export class MigrationReportWebview { dark: Uri.file(path.join(extension.context.extensionPath, "resources", "icons", "dark-icon.svg")), }; - MigrationReportWebview.currentPanel = new MigrationReportWebview(panel, reportContent); + const webview = new MigrationReportWebview(panel, reportContent); + + // Only set as currentPanel if it's the aggregate report + if (isAggregateReport) { + MigrationReportWebview.currentPanel = webview; + } } private updateContent(reportContent: string): void { - const htmlWithStyleRemoval = reportContent.replace( + const htmlWithScripts = reportContent.replace( "", `` ); - this._panel.webview.html = htmlWithStyleRemoval; + this._panel.webview.html = htmlWithScripts; } public dispose(): void { diff --git a/workspaces/ballerina/ballerina-extension/src/views/persist-layer-diagram/activator.ts b/workspaces/ballerina/ballerina-extension/src/views/persist-layer-diagram/activator.ts index ff24490d7fa..76eb85b55a9 100644 --- a/workspaces/ballerina/ballerina-extension/src/views/persist-layer-diagram/activator.ts +++ b/workspaces/ballerina/ballerina-extension/src/views/persist-layer-diagram/activator.ts @@ -16,19 +16,10 @@ * under the License. */ -import { TextEditor, Uri, ViewColumn, WebviewPanel, commands, window, workspace } from "vscode"; -import { debounce } from "lodash"; -import { basename, dirname, join } from "path"; -import { existsSync } from "fs"; -import { PALETTE_COMMANDS } from "../../features/project/cmds/cmd-runner"; +import { TextEditor, Uri, window } from "vscode"; +import { basename, dirname } from "path"; import { BallerinaExtension, ExtendedLangClient } from "../../core"; -import { getCommonWebViewOptions } from "../../utils"; -import { render } from "./renderer"; - -const COMPATIBILITY_MESSAGE = "An incompatible Ballerina version was detected. Update Ballerina to 2201.6.0 or higher to use the feature."; - -let diagramWebview: WebviewPanel | undefined; -let filePath: string | undefined; +import { checkIsBallerinaPackage } from "../../utils"; export function activate(ballerinaExtInstance: BallerinaExtension) { const langClient = ballerinaExtInstance.langClient; @@ -119,6 +110,10 @@ export function activate(ballerinaExtInstance: BallerinaExtension) { // return parseFloat(ballerinaVersion) >= 2201.6; // } -export function checkIsPersistModelFile(fileUri: Uri): boolean { - return basename(dirname(fileUri.fsPath)) === 'persist' && existsSync(join(dirname(dirname(fileUri.fsPath)), 'Ballerina.toml')); +export async function checkIsPersistModelFile(fileUri: Uri): Promise { + const directoryPath = dirname(fileUri.fsPath); + const parentDirectoryPath = dirname(directoryPath); + const directoryName = basename(directoryPath); + const isBallerinaPackage = await checkIsBallerinaPackage(Uri.parse(parentDirectoryPath)); + return directoryName === 'persist' && isBallerinaPackage; } diff --git a/workspaces/ballerina/ballerina-extension/src/views/visualizer/activate.ts b/workspaces/ballerina/ballerina-extension/src/views/visualizer/activate.ts index 1d8ce9af830..ef92daa4f04 100644 --- a/workspaces/ballerina/ballerina-extension/src/views/visualizer/activate.ts +++ b/workspaces/ballerina/ballerina-extension/src/views/visualizer/activate.ts @@ -21,8 +21,8 @@ import { PALETTE_COMMANDS } from '../../features/project/cmds/cmd-runner'; import { StateMachine, openView } from '../../stateMachine'; import { extension } from '../../BalExtensionContext'; import { BI_COMMANDS, EVENT_TYPE, MACHINE_VIEW, NodePosition, SHARED_COMMANDS } from '@wso2/ballerina-core'; -import { findBallerinaProjectRoot } from '../../features/ai/utils'; -import { buildProjectArtifactsStructure } from '../../utils/project-artifacts'; +import { buildProjectsStructure } from '../../utils/project-artifacts'; +import { createVersionNumber, findBallerinaPackageRoot, isSupportedSLVersion } from '../../utils'; export function activateSubscriptions() { const context = extension.context; @@ -45,49 +45,68 @@ export function activateSubscriptions() { // <------------- Shared Commands ------------> context.subscriptions.push( - vscode.commands.registerCommand(SHARED_COMMANDS.SHOW_VISUALIZER, async (path: string | vscode.Uri, position, resetHistory = false) => { - // Check if position is a LineRange object (has 'start' and 'end' keys) - let nodePosition: NodePosition = position; - if (position && typeof position === "object" && "start" in position && "end" in position) { - // Convert LineRange to NodePosition - nodePosition = { - startLine: position.start.line, - startColumn: position.start.character, - endLine: position.end.line, - endColumn: position.end.character - }; - } - let documentPath = ""; - if (path) { - if (typeof path === "string") { - if (path.startsWith("file:")) { - documentPath = vscode.Uri.parse(path).fsPath; - } else { - documentPath = vscode.Uri.file(path).fsPath; + vscode.commands.registerCommand( + SHARED_COMMANDS.SHOW_VISUALIZER, + async ( + pathOrItem: string | vscode.Uri | vscode.TreeItem, + position, + resetHistory = false + ) => { + // Check if position is a LineRange object (has 'start' and 'end' keys) + let nodePosition: NodePosition = position; + if (position && typeof position === "object" && "start" in position && "end" in position) { + // Convert LineRange to NodePosition + nodePosition = { + startLine: position.start.line, + startColumn: position.start.character, + endLine: position.end.line, + endColumn: position.end.character + }; + } + let documentPath = ""; + if (pathOrItem) { + if (typeof pathOrItem === "string") { + if (pathOrItem.startsWith("file:")) { + documentPath = vscode.Uri.parse(pathOrItem).fsPath; + } else { + documentPath = vscode.Uri.file(pathOrItem).fsPath; + } + } else if (pathOrItem instanceof vscode.Uri) { + documentPath = pathOrItem.fsPath; } - } else if (path.fsPath) { - documentPath = path.fsPath; } - } - const projectPath = StateMachine.context()?.projectUri; - const projectRoot = await findBallerinaProjectRoot(documentPath); + let projectPath = StateMachine.context().projectPath; + const projectRoot = await findBallerinaPackageRoot(documentPath); + + const isBallerinaWorkspace = !!StateMachine.context().workspacePath; + if (isBallerinaWorkspace && pathOrItem instanceof vscode.TreeItem) { + openView( + EVENT_TYPE.OPEN_VIEW, + { + projectPath: pathOrItem.resourceUri?.fsPath, + view: MACHINE_VIEW.PackageOverview + }, + ); + return; + } - if (!projectPath || projectPath !== projectRoot) { - // Initialize project structure if not already set by finding and loading the Ballerina project root - // Can happen when the user opens a directory containing multiple Ballerina projects - if (projectRoot) { - await StateMachine.updateProjectRoot(projectRoot); + if (!projectPath || projectPath !== projectRoot) { + // Initialize project structure if not already set by finding and loading the Ballerina project root + // Can happen when the user opens a directory containing multiple Ballerina projects + if (projectRoot) { + // TODO: Need to create the project structure for the workspace + await StateMachine.updateProjectRoot(projectRoot); + } + } + + if (StateMachine.langClient() && StateMachine.context().isBISupported) { // This is added since we can't fetch new diagram data without bi supported ballerina version + openView(EVENT_TYPE.OPEN_VIEW, { documentUri: documentPath || vscode.window.activeTextEditor?.document.uri.fsPath, position: nodePosition }, resetHistory); + } else { + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BallerinaUpdateView }); // Redirect user to the ballerina update available page } } - - if (StateMachine.langClient() && StateMachine.context().isBISupported) { // This is added since we can't fetch new diagram data without bi supported ballerina version - openView(EVENT_TYPE.OPEN_VIEW, { documentUri: documentPath || vscode.window.activeTextEditor?.document.uri.fsPath, position: nodePosition }, resetHistory); - } else { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BallerinaUpdateView }); // Redirect user to the ballerina update available page - } - - }) + ) ); context.subscriptions.push( @@ -98,7 +117,8 @@ export function activateSubscriptions() { context.subscriptions.push( vscode.commands.registerCommand(SHARED_COMMANDS.FORCE_UPDATE_PROJECT_ARTIFACTS, () => { - return buildProjectArtifactsStructure(StateMachine.context().projectUri, StateMachine.langClient(), true); + console.log("Force updating project artifacts..."); + return buildProjectsStructure(StateMachine.context().projectInfo, StateMachine.langClient(), true); }) ); @@ -114,7 +134,17 @@ export function activateSubscriptions() { context.subscriptions.push( vscode.commands.registerCommand(SHARED_COMMANDS.OPEN_BI_NEW_PROJECT, () => { - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BIProjectForm }); + const isBallerinaWorkspace = !!StateMachine.context().workspacePath; + const isWorkspaceSupported = isSupportedSLVersion( + extension.ballerinaExtInstance, + createVersionNumber(2201, 13, 0) + ); + + if (isBallerinaWorkspace && isWorkspaceSupported) { + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BIAddProjectForm }); + } else { + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.BIProjectForm }); + } }) ); diff --git a/workspaces/ballerina/ballerina-extension/src/views/visualizer/webview.ts b/workspaces/ballerina/ballerina-extension/src/views/visualizer/webview.ts index 4cb902a33f8..93172a02b46 100644 --- a/workspaces/ballerina/ballerina-extension/src/views/visualizer/webview.ts +++ b/workspaces/ballerina/ballerina-extension/src/views/visualizer/webview.ts @@ -64,11 +64,11 @@ export class VisualizerWebview { } // Check the file is changed in the project. - const projectUri = StateMachine.context().projectUri; + const projectPath = StateMachine.context().projectPath; const documentUri = document.document.uri.toString(); - const isDocumentUnderProject = documentUri.includes(projectUri); + const isDocumentUnderProject = documentUri.includes(projectPath); // Reset visualizer the undo-redo stack if user did changes in the editor - if (isOpened && isDocumentUnderProject && !this._panel?.active) { + if (isOpened && isDocumentUnderProject && !this._panel?.active && !undoRedoManager?.isBatchInProgress()) { undoRedoManager.reset(); } @@ -146,13 +146,14 @@ export class VisualizerWebview { } private getWebviewContent(webView: Webview) { + const biExtension = vscode.extensions.getExtension('wso2.ballerina-integrator'); const body = `
-

WSO2 Integrator: BI

+

${biExtension ? 'WSO2 Integrator: BI' : 'Ballerina Visualizer'}

Setting up your workspace and tools

Loading @@ -171,16 +172,15 @@ export class VisualizerWebview { .loader-wrapper { display: flex; justify-content: center; - align-items: flex-start; - height: 100%; + align-items: center; + height: 100vh; width: 100%; - padding-top: 30vh; } .loader { - width: 36px; + width: 28px; aspect-ratio: 1; border-radius: 50%; - border: 6px solid var(--vscode-button-background); + border: 5px solid var(--vscode-progressBar-background); animation: l20-1 0.5s infinite linear alternate, l20-2 1s infinite linear; @@ -209,13 +209,12 @@ export class VisualizerWebview { font-family: var(--vscode-font-family); } .logo-container { - margin-bottom: 2rem; display: flex; justify-content: center; } .welcome-title { color: var(--vscode-foreground); - margin: 0 0 0.5rem 0; + margin: 1.5rem 0 0.5rem 0; letter-spacing: -0.02em; font-size: 1.5em; font-weight: 400; @@ -228,7 +227,7 @@ export class VisualizerWebview { opacity: 0.8; } .loading-text { - color: var(--vscode-foreground); + color: var(--vscode-button-background); font-size: 13px; font-weight: 500; } diff --git a/workspaces/ballerina/ballerina-extension/test/ai/evals/code/utils/evaluator-utils.ts b/workspaces/ballerina/ballerina-extension/test/ai/evals/code/utils/evaluator-utils.ts index 18cd396aab9..49946170609 100644 --- a/workspaces/ballerina/ballerina-extension/test/ai/evals/code/utils/evaluator-utils.ts +++ b/workspaces/ballerina/ballerina-extension/test/ai/evals/code/utils/evaluator-utils.ts @@ -15,7 +15,7 @@ // under the License. import { generateText } from "ai"; -import { ProjectModule, ProjectSource, SourceFile, SourceFiles } from "@wso2/ballerina-core"; +import { ProjectModule, ProjectSource, SourceFile } from "@wso2/ballerina-core"; import { createAnthropic } from "@ai-sdk/anthropic"; import path from "path"; import fs from "fs"; @@ -61,12 +61,12 @@ const evaluationSchema = z.object({ */ export async function evaluateCodeWithLLM( userQuery: string, - initialSource: SourceFiles[], - finalSource: SourceFiles[] + initialSource: SourceFile[], + finalSource: SourceFile[] ): Promise { console.log("🤖 Starting LLM-based semantic evaluation..."); - const stringifySources = (sources: SourceFiles[]): string => { + const stringifySources = (sources: SourceFile[]): string => { if (sources.length === 0) return "No files in the project."; return sources.map(file => `--- File: ${file.filePath} ---\n${file.content}`).join("\n\n"); }; @@ -164,7 +164,9 @@ export async function getProjectSource(dirPath: string): Promise\s*```ballerina([\s\S]*?)```\s*<\/code>/g; let match; diff --git a/workspaces/ballerina/ballerina-extension/test/ai/evals/code/utils/test-execution.ts b/workspaces/ballerina/ballerina-extension/test/ai/evals/code/utils/test-execution.ts index 028b2e89c20..c175edc1293 100644 --- a/workspaces/ballerina/ballerina-extension/test/ai/evals/code/utils/test-execution.ts +++ b/workspaces/ballerina/ballerina-extension/test/ai/evals/code/utils/test-execution.ts @@ -21,14 +21,14 @@ import { createTestEventHandler } from './test-event-handler'; import { validateTestResult } from './test-validation'; import { VSCODE_COMMANDS } from './constants'; import { getProjectFromResponse, getProjectSource } from "./evaluator-utils"; -import { SourceFiles } from "@wso2/ballerina-core"; +import { SourceFile } from "@wso2/ballerina-core"; /** * Executes a single test case and returns the result */ export async function executeSingleTestCase(useCase: TestUseCase): Promise { console.log(`\n🚀 Starting test case: ${useCase.id} - ${useCase.description}`); - + const { handler: testEventHandler, getResult } = createTestEventHandler(useCase); const params: GenerateCodeRequest = { @@ -38,13 +38,13 @@ export async function executeSingleTestCase(useCase: TestUseCase): Promise { +export async function validateTestResult(result: TestEventResult, useCase: TestUseCase, initialSources: SourceFile[], finalSources: SourceFile[]): Promise { const validationDetails = { noErrorCheck: true, noDiagnosticsCheck: true diff --git a/workspaces/ballerina/ballerina-extension/test/ai/integration_tests/libs/index.ts b/workspaces/ballerina/ballerina-extension/test/ai/integration_tests/libs/index.ts index e2309aace78..f42d6fedd87 100644 --- a/workspaces/ballerina/ballerina-extension/test/ai/integration_tests/libs/index.ts +++ b/workspaces/ballerina/ballerina-extension/test/ai/integration_tests/libs/index.ts @@ -29,27 +29,28 @@ export function run(): Promise { const testsRoot = path.resolve(__dirname, "."); return new Promise((resolve, reject) => { - glob.glob("**/**.test.js", { cwd: testsRoot }, (err, files) => { - if (err) { - return reject(err); - } - - // Add files to the test suite - files.forEach((f) => mocha.addFile(path.resolve(testsRoot, f))); - - try { - // Run the mocha test - mocha.run((failures) => { - if (failures > 0) { - reject(new Error(`${failures} tests failed.`)); - } else { - resolve(); - } - }); - } catch (err) { + glob.glob("**/**.test.js", { cwd: testsRoot }) + .then((files) => { + // Add files to the test suite + files.forEach((f) => mocha.addFile(path.resolve(testsRoot, f))); + + try { + // Run the mocha test + mocha.run((failures) => { + if (failures > 0) { + reject(new Error(`${failures} tests failed.`)); + } else { + resolve(); + } + }); + } catch (err) { + console.error(err); + reject(err); + } + }) + .catch((err) => { console.error(err); reject(err); - } - }); + }); }); } diff --git a/workspaces/ballerina/ballerina-extension/test/ai/post_proccess/post.test.ts b/workspaces/ballerina/ballerina-extension/test/ai/post_proccess/post.test.ts index 56b87f7ac5f..9809a7105b9 100644 --- a/workspaces/ballerina/ballerina-extension/test/ai/post_proccess/post.test.ts +++ b/workspaces/ballerina/ballerina-extension/test/ai/post_proccess/post.test.ts @@ -21,7 +21,7 @@ import { attemptRepairProject } from '../../../src/rpc-managers/ai-panel/repair- import * as assert from 'assert'; import * as fs from 'fs'; import * as os from 'os'; -import { StateMachine } from '../../../src/stateMachine'; +import { StateMachine } from '../../stateMachine'; import { Uri } from 'vscode'; import { Diagnostics } from '@wso2/ballerina-core'; diff --git a/workspaces/ballerina/ballerina-extension/webpack.config.js b/workspaces/ballerina/ballerina-extension/webpack.config.js index cbf4aad0946..509f2aa0292 100644 --- a/workspaces/ballerina/ballerina-extension/webpack.config.js +++ b/workspaces/ballerina/ballerina-extension/webpack.config.js @@ -3,15 +3,48 @@ 'use strict'; const path = require('path'); -const MergeIntoSingleFile = require('webpack-merge-and-include-globally'); +const fs = require('fs'); +const { minify } = require('uglify-js'); const dotenv = require('dotenv'); const webpack = require('webpack'); const { createEnvDefinePlugin } = require('../../../common/scripts/env-webpack-helper'); +/** + * Concatenate and minify a list of source files into a single output file. + * @param {{ sources: string[]; outputRelativePath: string }} options + * @returns {{ apply(compiler: import('webpack').Compiler): void }} + */ +function concatenateAndMinify(options) { + return { + apply(compiler) { + compiler.hooks.afterEmit.tapPromise('ConcatenateAndMinifyPlugin', async (compilation) => { + try { + const concatenated = options.sources + .map(file => fs.readFileSync(file, 'utf8')) + .join('\n;\n'); + const result = minify(concatenated, { toplevel: false }); + if (result.error) throw result.error; + const outBase = (compiler.options.output && compiler.options.output.path) ? compiler.options.output.path : path.resolve(__dirname, 'dist'); + const outPath = path.resolve(outBase, options.outputRelativePath); + fs.mkdirSync(path.dirname(outPath), { recursive: true }); + fs.writeFileSync(outPath, result.code, 'utf8'); + console.log(`Created concatenated webview commons: ${outPath}`); + } catch (err) { + const e = err instanceof Error ? err : new Error(String(err)); + compilation.errors.push(e); + console.error('Failed to build webviewCommons.js:', e); + } + }); + } + }; +} + const envPath = path.resolve(__dirname, '.env'); -const env = dotenv.config({ path: envPath }).parsed; +const env = dotenv.config({ path: envPath }).parsed || {}; // ensure object for //@ts-check console.log("Fetching values for environment variables..."); -const { envKeys, missingVars } = createEnvDefinePlugin(env); +const cenv = /** @type {any} */ (createEnvDefinePlugin(env)); +const envKeys = cenv.envKeys || {}; +const missingVars = Array.isArray(cenv.missingVars) ? cenv.missingVars : []; if (missingVars.length > 0) { console.warn( '\n⚠️ Environment Variable Configuration Warning:\n' + @@ -60,16 +93,13 @@ module.exports = { stats: 'normal', plugins: [ new webpack.DefinePlugin(envKeys), - new MergeIntoSingleFile({ - files: { - [path.join('..', 'resources', 'jslibs', 'webviewCommons.js')]: [ - path.resolve('resources', 'utils', 'undo-redo.js'), - path.resolve('node_modules', 'pako', 'dist', 'pako.min.js'), - ], - }, - transform: { - 'webviewCommons.js': code => require("uglify-js").minify(code).code - } + // Custom concatenation + minification plugin (replacement for deprecated dependency) + concatenateAndMinify({ + sources: [ + path.resolve(__dirname, 'resources', 'utils', 'undo-redo.js'), + path.resolve(__dirname, 'node_modules', 'pako', 'dist', 'pako.min.js'), + ], + outputRelativePath: path.join('..', 'resources', 'jslibs', 'webviewCommons.js') }) ] }; diff --git a/workspaces/ballerina/ballerina-low-code-diagram/package.json b/workspaces/ballerina/ballerina-low-code-diagram/package.json index 2fa7e46f929..c4ecb72a6e6 100644 --- a/workspaces/ballerina/ballerina-low-code-diagram/package.json +++ b/workspaces/ballerina/ballerina-low-code-diagram/package.json @@ -75,7 +75,7 @@ "css-loader": "^7.1.2", "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^9.1.0", - "glob": "^11.0.2", + "glob": "^11.1.0", "react-scripts-ts": "^3.1.0", "react-test-renderer": "^19.1.0", "rimraf": "^6.0.1", diff --git a/workspaces/ballerina/ballerina-rpc-client/src/BallerinaRpcClient.ts b/workspaces/ballerina/ballerina-rpc-client/src/BallerinaRpcClient.ts index 0ad25d5aaa1..7b5882861a8 100644 --- a/workspaces/ballerina/ballerina-rpc-client/src/BallerinaRpcClient.ts +++ b/workspaces/ballerina/ballerina-rpc-client/src/BallerinaRpcClient.ts @@ -51,7 +51,10 @@ import { currentThemeChanged, ChatNotify, onChatNotify, - AIMachineSendableEvent + AIMachineSendableEvent, + dependencyPullProgress, + ProjectMigrationResult, + onMigratedProject } from "@wso2/ballerina-core"; import { LangClientRpcClient } from "./rpc-clients/lang-client/rpc-client"; import { LibraryBrowserRpcClient } from "./rpc-clients/library-browser/rpc-client"; @@ -237,6 +240,14 @@ export class BallerinaRpcClient { this.messenger.onNotification(onMigrationToolStateChanged, callback); } + onDependencyPullProgress(callback: (message: string) => void) { + this.messenger.onNotification(dependencyPullProgress, callback); + } + + onMigratedProject(callback: (result: ProjectMigrationResult) => void) { + this.messenger.onNotification(onMigratedProject, callback); + } + getPopupVisualizerState(): Promise { return this.messenger.sendRequest(getPopupVisualizerState, HOST_EXTENSION); } diff --git a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/agent-chat/rpc-client.ts b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/agent-chat/rpc-client.ts index 8d5200a6ad8..4f3a08c0288 100644 --- a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/agent-chat/rpc-client.ts +++ b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/agent-chat/rpc-client.ts @@ -14,14 +14,19 @@ * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. + * + * THIS FILE INCLUDES AUTO GENERATED CODE */ - import { + abortChatRequest, AgentChatAPI, ChatReqMessage, ChatRespMessage, - abortChatRequest, - getChatMessage + getChatMessage, + getTracingStatus, + showTraceView, + TraceInput, + TraceStatus } from "@wso2/ballerina-core"; import { HOST_EXTENSION } from "vscode-messenger-common"; import { Messenger } from "vscode-messenger-webview"; @@ -40,4 +45,12 @@ export class AgentChatRpcClient implements AgentChatAPI { abortChatRequest(): void { return this._messenger.sendNotification(abortChatRequest, HOST_EXTENSION); } + + getTracingStatus(): Promise { + return this._messenger.sendRequest(getTracingStatus, HOST_EXTENSION); + } + + showTraceView(params: TraceInput): Promise { + return this._messenger.sendRequest(showTraceView, HOST_EXTENSION, params); + } } diff --git a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/bi-diagram/rpc-client.ts b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/bi-diagram/rpc-client.ts index 47455b7a01c..4caa723cdd3 100644 --- a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/bi-diagram/rpc-client.ts +++ b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/bi-diagram/rpc-client.ts @@ -53,6 +53,7 @@ import { CurrentBreakpointsResponse, DeleteConfigVariableRequestV2, DeleteConfigVariableResponseV2, + DeleteProjectRequest, DeleteTypeRequest, DeleteTypeResponse, DeploymentRequest, @@ -125,10 +126,12 @@ import { createComponent, createGraphqlClassType, createProject, + addProjectToWorkspace, deleteByComponentInfo, deleteConfigVariableV2, deleteFlowNode, deleteOpenApiGeneratedModules, + deleteProject, deleteType, deployProject, formDidClose, @@ -197,6 +200,8 @@ import { getFormDiagnostics, getExpressionTokens, ExpressionTokensRequest, + AddProjectToWorkspaceRequest, + OpenReadmeRequest, } from "@wso2/ballerina-core"; import { HOST_EXTENSION } from "vscode-messenger-common"; import { Messenger } from "vscode-messenger-webview"; @@ -268,6 +273,14 @@ export class BiDiagramRpcClient implements BIDiagramAPI { return this._messenger.sendNotification(createProject, HOST_EXTENSION, params); } + deleteProject(params: DeleteProjectRequest): void { + return this._messenger.sendNotification(deleteProject, HOST_EXTENSION, params); + } + + addProjectToWorkspace(params: AddProjectToWorkspaceRequest): void { + return this._messenger.sendNotification(addProjectToWorkspace, HOST_EXTENSION, params); + } + getWorkspaces(): Promise { return this._messenger.sendRequest(getWorkspaces, HOST_EXTENSION); } @@ -328,12 +341,12 @@ export class BiDiagramRpcClient implements BIDiagramAPI { return this._messenger.sendRequest(getModuleNodes, HOST_EXTENSION); } - getReadmeContent(): Promise { - return this._messenger.sendRequest(getReadmeContent, HOST_EXTENSION); + getReadmeContent(params: ReadmeContentRequest): Promise { + return this._messenger.sendRequest(getReadmeContent, HOST_EXTENSION, params); } - openReadme(): void { - return this._messenger.sendNotification(openReadme, HOST_EXTENSION); + openReadme(params: OpenReadmeRequest): void { + return this._messenger.sendNotification(openReadme, HOST_EXTENSION, params); } renameIdentifier(params: RenameIdentifierRequest): Promise { diff --git a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/common/rpc-client.ts b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/common/rpc-client.ts index cbbcbeafe3a..21bb01bcc7c 100644 --- a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/common/rpc-client.ts +++ b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/common/rpc-client.ts @@ -46,9 +46,11 @@ import { runBackgroundTerminalCommand, selectFileOrDirPath, getCurrentProjectTomlValues, - TomlValues, + PackageTomlValues, selectFileOrFolderPath, - showErrorMessage + showErrorMessage, + WorkspaceTypeResponse, + getWorkspaceType } from "@wso2/ballerina-core"; import { HOST_EXTENSION } from "vscode-messenger-common"; import { Messenger } from "vscode-messenger-webview"; @@ -111,8 +113,12 @@ export class CommonRpcClient implements CommonRPCAPI { showErrorMessage(params: ShowErrorMessageRequest): void { return this._messenger.sendNotification(showErrorMessage, HOST_EXTENSION, params); } - - getCurrentProjectTomlValues(): Promise { + + getCurrentProjectTomlValues(): Promise { return this._messenger.sendRequest(getCurrentProjectTomlValues, HOST_EXTENSION); } + + getWorkspaceType(): Promise { + return this._messenger.sendRequest(getWorkspaceType, HOST_EXTENSION); + } } diff --git a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/lang-client/rpc-client.ts b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/lang-client/rpc-client.ts index f8ca9980d51..d32b268b933 100644 --- a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/lang-client/rpc-client.ts +++ b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/lang-client/rpc-client.ts @@ -62,6 +62,7 @@ import { didOpen, getBallerinaProjectComponents, getBallerinaVersion, + isSupportedSLVersion, getCompletion, getDefinitionPosition, getDiagnostics, @@ -83,7 +84,8 @@ import { getTypesFromFnDefinition, rename, stModify, - updateFileContent + updateFileContent, + SemanticVersion } from "@wso2/ballerina-core"; import { HOST_EXTENSION } from "vscode-messenger-common"; import { Messenger } from "vscode-messenger-webview"; @@ -115,6 +117,10 @@ export class LangClientRpcClient implements LangClientAPI { return this._messenger.sendRequest(getBallerinaVersion, HOST_EXTENSION); } + isSupportedSLVersion(params: SemanticVersion): Promise { + return this._messenger.sendRequest(isSupportedSLVersion, HOST_EXTENSION, params); + } + getCompletion(params: CompletionRequest): Promise { return this._messenger.sendRequest(getCompletion, HOST_EXTENSION, params); } diff --git a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/migrate-integration/rpc-client.ts b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/migrate-integration/rpc-client.ts index 8c91f99e201..e2894c7c5a3 100644 --- a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/migrate-integration/rpc-client.ts +++ b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/migrate-integration/rpc-client.ts @@ -25,13 +25,17 @@ import { MigrateRequest, MigrationToolPullRequest, OpenMigrationReportRequest, + OpenSubProjectReportRequest, SaveMigrationReportRequest, + StoreSubProjectReportsRequest, getMigrationTools, importIntegration, migrateProject, openMigrationReport, + openSubProjectReport, pullMigrationTool, - saveMigrationReport + saveMigrationReport, + storeSubProjectReports } from "@wso2/ballerina-core"; import { HOST_EXTENSION } from "vscode-messenger-common"; import { Messenger } from "vscode-messenger-webview"; @@ -59,6 +63,14 @@ export class MigrateIntegrationRpcClient implements MigrateIntegrationAPI { return this._messenger.sendNotification(openMigrationReport, HOST_EXTENSION, params); } + openSubProjectReport(params: OpenSubProjectReportRequest): void { + return this._messenger.sendNotification(openSubProjectReport, HOST_EXTENSION, params); + } + + storeSubProjectReports(params: StoreSubProjectReportsRequest): void { + return this._messenger.sendNotification(storeSubProjectReports, HOST_EXTENSION, params); + } + saveMigrationReport(params: SaveMigrationReportRequest): void { return this._messenger.sendNotification(saveMigrationReport, HOST_EXTENSION, params); } diff --git a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/visualizer/rpc-client.ts b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/visualizer/rpc-client.ts index bbdde39ea7e..cb01c023a9d 100644 --- a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/visualizer/rpc-client.ts +++ b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/visualizer/rpc-client.ts @@ -21,6 +21,8 @@ import { AddToUndoStackRequest, ColorThemeKind, HistoryEntry, + JoinProjectPathRequest, + JoinProjectPathResponse, OpenViewRequest, ProjectStructureArtifactResponse, UndoRedoStateResponse, @@ -90,8 +92,8 @@ export class VisualizerRpcClient implements VisualizerAPI { return this._messenger.sendRequest(undoRedoState, HOST_EXTENSION); } - joinProjectPath(segments: string | string[]): Promise { - return this._messenger.sendRequest(joinProjectPath, HOST_EXTENSION, segments); + joinProjectPath(params: JoinProjectPathRequest): Promise { + return this._messenger.sendRequest(joinProjectPath, HOST_EXTENSION, params); } getThemeKind(): Promise { diff --git a/workspaces/ballerina/ballerina-side-panel/package.json b/workspaces/ballerina/ballerina-side-panel/package.json index 8fcaa618b85..1c0db97214a 100644 --- a/workspaces/ballerina/ballerina-side-panel/package.json +++ b/workspaces/ballerina/ballerina-side-panel/package.json @@ -28,7 +28,13 @@ "lodash": "~4.17.21", "react-hook-form": "7.56.4", "react-markdown": "~10.1.0", - "@github/markdown-toolbar-element": "^2.2.3" + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.1", + "@github/markdown-toolbar-element": "^2.2.3", + "@codemirror/commands": "~6.10.0", + "@codemirror/state": "~6.5.2", + "@codemirror/view": "~6.38.6", + "@codemirror/autocomplete": "~6.19.1" }, "devDependencies": { "@storybook/react": "^6.5.16", diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/Form/index.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/Form/index.tsx index 5e911c4fc0c..ee7921bf142 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/Form/index.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/Form/index.tsx @@ -48,6 +48,7 @@ import { Type, VisualizableField, NodeProperties, + VisualizerLocation, } from "@wso2/ballerina-core"; import { FormContext, Provider } from "../../context"; import { @@ -323,7 +324,7 @@ export interface FormProps { onFormValidation?: (data: FormValues, dirtyFields?: any) => Promise; isSaving?: boolean; openRecordEditor?: (isOpen: boolean, fields: FormValues, editingField?: FormField, newType?: string | NodeProperties) => void; - openView?: (filePath: string, position: NodePosition) => void; + openView?: (location: VisualizerLocation) => void; openSubPanel?: (subPanel: SubPanel) => void; subPanelView?: SubPanelView; onCancelForm?: () => void; @@ -421,7 +422,7 @@ export const Form = forwardRef((props: FormProps) => { const [isMarkdownExpanded, setIsMarkdownExpanded] = useState(false); const [isIdentifierEditing, setIsIdentifierEditing] = useState(false); const [isSubComponentEnabled, setIsSubComponentEnabled] = useState(false); - const [optionalFieldsTitle, setOptionalFieldsTitle] = useState("Optional Configurations"); + const [optionalFieldsTitle, setOptionalFieldsTitle] = useState("Advanced Configurations"); const markdownRef = useRef(null); @@ -493,7 +494,7 @@ export const Form = forwardRef((props: FormProps) => { reset(defaultValues); if (changeOptionalFieldTitle) { - setOptionalFieldsTitle("Optional Listener Configurations"); + setOptionalFieldsTitle("Advanced Configurations"); } } }, [formFields, reset]); @@ -613,11 +614,16 @@ export const Form = forwardRef((props: FormProps) => { }, targetLineRange, fileName, - popupManager: popupManager + popupManager: popupManager, + nodeInfo: { + kind: selectedNode, + } }; // Find the first editable field - const firstEditableFieldIndex = formFields.findIndex((field) => field.editable !== false); + const firstEditableFieldIndex = formFields.findIndex( + (field) => field.editable !== false && (field.value == null || field.value === '') + ); const isValid = useMemo(() => { let hasDiagnostics: boolean = false; diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/Form/types.ts b/workspaces/ballerina/ballerina-side-panel/src/components/Form/types.ts index bdc15bde850..d74111308e8 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/Form/types.ts +++ b/workspaces/ballerina/ballerina-side-panel/src/components/Form/types.ts @@ -20,6 +20,7 @@ import { RefObject } from "react"; import { DiagnosticMessage, FormDiagnostics, TextEdit, PropertyModel, LinePosition, LineRange, ExpressionProperty, Metadata, RecordTypeField, Imports, ConfigProperties } from "@wso2/ballerina-core"; import { ParamConfig } from "../ParamManager/ParamManager"; import { CompletionItem, FormExpressionEditorRef, HelperPaneHeight, HelperPaneOrigin, OptionProps } from "@wso2/ui-toolkit"; +import { InputMode } from "../editors/MultiModeExpressionEditor/ChipExpressionEditor/types"; export type FormValues = { [key: string]: any; @@ -91,6 +92,12 @@ export type HelperPaneCompletionCategory = { items: HelperPaneCompletionItem[]; } + +export type HelperpaneOnChangeOptions = { + closeHelperPane?: boolean; + replaceFullText?: boolean; +} + export type HelperPaneVariableInfo = { category: HelperPaneCompletionCategory[]; } @@ -173,12 +180,13 @@ type FormHelperPaneConditionalProps = { anchorRef: RefObject, defaultValue: string, value: string, - onChange: (value: string, closeHelperPane: boolean) => void, + onChange: (value: string, options?: HelperpaneOnChangeOptions) => void, changeHelperPaneState: (isOpen: boolean) => void, helperPaneHeight: HelperPaneHeight, recordTypeField?: RecordTypeField, isAssignIdentifier?: boolean, - valueTypeConstraint?: string | string[] + valueTypeConstraint?: string | string[], + inputMode?: InputMode ) => JSX.Element; helperPaneOrigin?: HelperPaneOrigin; helperPaneHeight: HelperPaneHeight; @@ -212,6 +220,7 @@ type FormExpressionEditorBaseProps = { onSave?: (value: string) => void | Promise; onRemove?: () => void; onSaveConfigurables?: (values: any) => void; + onOpenRecordConfigPage?: (fieldKey: string, currentValue: string, recordTypeField: any, onChange: (value: string) => void) => void; } type ExpressionEditorRPCManager = { diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/GroupList/index.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/GroupList/index.tsx index 3eb6bc77a45..555826f913e 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/GroupList/index.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/GroupList/index.tsx @@ -22,6 +22,8 @@ import styled from "@emotion/styled"; import { CallIcon, LogIcon } from "../../resources"; import { Category, Node } from "./../NodeList/types"; import { stripHtmlTags } from "../Form/utils"; +import { formatMethodName } from "../../utils/formatMethodName"; + namespace S { export const Card = styled.div<{}>` @@ -229,7 +231,8 @@ function getComponentTitle(node: Node) { return stripHtmlTags(node.description); } - return stripHtmlTags(node.label); + const label = stripHtmlTags(node.label); + return formatMethodName(label); } function getComponentDescription(node: Node) { diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/ModeSwitcher/index.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/ModeSwitcher/index.tsx index 74374c69005..e9cfe023f82 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/ModeSwitcher/index.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/ModeSwitcher/index.tsx @@ -23,16 +23,17 @@ import { getDefaultExpressionMode } from '../editors/MultiModeExpressionEditor/C interface ModeSwitcherProps { value: InputMode; + isRecordTypeField: boolean; onChange: (value: InputMode) => void; valueTypeConstraint: string | string[]; } -const ModeSwitcher: React.FC = ({ value, onChange, valueTypeConstraint }) => { +const ModeSwitcher: React.FC = ({ value, isRecordTypeField, onChange, valueTypeConstraint }) => { const isChecked = value === InputMode.EXP; const defaultMode = useMemo( - () => getDefaultExpressionMode(valueTypeConstraint), - [valueTypeConstraint] + () => isRecordTypeField ? InputMode.GUIDED : getDefaultExpressionMode(valueTypeConstraint), + [valueTypeConstraint, isRecordTypeField] ); const handlePrimaryModeClick = () => { diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/ModeSwitcher/styles.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/ModeSwitcher/styles.tsx index 2697d4dc233..872f1e0c11e 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/ModeSwitcher/styles.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/ModeSwitcher/styles.tsx @@ -34,15 +34,19 @@ export const Label = styled.span` top: 50%; transform: translateY(-50%); cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + white-space: nowrap; &:first-of-type { left: 0; - width: 30%; + width: 40%; } &:last-of-type { - left: 30%; - width: 70%; + left: 40%; + width: 60%; } `; @@ -67,8 +71,8 @@ export const Slider = styled.div<{ checked: boolean }>` content: ""; position: absolute; height: calc(100% - 4px); - width: ${props => props.checked ? 'calc(70% - 6px)' : 'calc(30% - 2px)'}; - left: ${props => props.checked ? 'calc(30% + 4px)' : '2px'}; + width: ${props => props.checked ? 'calc(60% - 4px)' : 'calc(40% - 2px)'}; + left: ${props => props.checked ? 'calc(40% + 2px)' : '2px'}; border-radius: 1px; background: ${ThemeColors.SURFACE_DIM}; transition: all 0.25s cubic-bezier(0.4, 0.0, 0.2, 1); @@ -90,7 +94,8 @@ export const SwitchWrapper = styled.div` position: relative; display: inline-flex; align-items: center; - width: 110px; + min-width: 112px; + width: max-content; height: 24px; margin-top: 2px; `; diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/NodeList/categoryConfig.ts b/workspaces/ballerina/ballerina-side-panel/src/components/NodeList/categoryConfig.ts index c3aa227d8f2..da37cedf5bd 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/NodeList/categoryConfig.ts +++ b/workspaces/ballerina/ballerina-side-panel/src/components/NodeList/categoryConfig.ts @@ -31,6 +31,7 @@ export interface CategoryConfig { actions: CategoryAction[]; showWhenEmpty: boolean; useConnectionContainer: boolean; // Whether to use getConnectionContainer for rendering + fixed?: boolean; // Whether the header should be non-collapsible } // Configuration for all categories with their specific behaviors @@ -44,7 +45,8 @@ export const CATEGORY_CONFIGS: Record = { handlerKey: 'onAddConnection' }], showWhenEmpty: true, - useConnectionContainer: true + useConnectionContainer: true, + fixed: true }, "Current Integration": { title: "Current Integration", @@ -72,7 +74,8 @@ export const CATEGORY_CONFIGS: Record = { } ], showWhenEmpty: true, - useConnectionContainer: false + useConnectionContainer: false, + fixed: true }, "Agents": { title: "Agents", @@ -89,7 +92,8 @@ export const CATEGORY_CONFIGS: Record = { handlerKey: 'onAdd' }], showWhenEmpty: true, - useConnectionContainer: true + useConnectionContainer: true, + fixed: true }, "Vector Stores": { title: "Vector Stores", @@ -100,7 +104,8 @@ export const CATEGORY_CONFIGS: Record = { handlerKey: 'onAdd' }], showWhenEmpty: true, - useConnectionContainer: true + useConnectionContainer: true, + fixed: true }, "Embedding Providers": { title: "Embedding Providers", @@ -111,7 +116,8 @@ export const CATEGORY_CONFIGS: Record = { handlerKey: 'onAdd' }], showWhenEmpty: true, - useConnectionContainer: true + useConnectionContainer: true, + fixed: true }, "Data Loaders": { title: "Data Loaders", @@ -122,7 +128,8 @@ export const CATEGORY_CONFIGS: Record = { handlerKey: 'onAdd' }], showWhenEmpty: true, - useConnectionContainer: true + useConnectionContainer: true, + fixed: true }, "Chunkers": { title: "Chunkers", @@ -133,7 +140,8 @@ export const CATEGORY_CONFIGS: Record = { handlerKey: 'onAdd' }], showWhenEmpty: true, - useConnectionContainer: true + useConnectionContainer: true, + fixed: true }, "Knowledge Bases": { title: "Knowledge Bases", @@ -144,7 +152,8 @@ export const CATEGORY_CONFIGS: Record = { handlerKey: 'onAdd' }], showWhenEmpty: true, - useConnectionContainer: true + useConnectionContainer: true, + fixed: true } }; @@ -163,6 +172,11 @@ export const shouldUseConnectionContainer = (title: string): boolean => { return config?.useConnectionContainer ?? false; }; +export const isCategoryFixed = (title: string): boolean => { + const config = getCategoryConfig(title); + return config?.fixed ?? false; +}; + export const getCategoryActions = (title: string, contextTitle?: string): CategoryAction[] => { const config = getCategoryConfig(title); if (!config) return []; diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/NodeList/index.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/NodeList/index.tsx index 12c0790d955..f8e1e6ba4e2 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/NodeList/index.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/NodeList/index.tsx @@ -36,7 +36,7 @@ import { GroupListSkeleton } from "../Skeletons"; import GroupList from "../GroupList"; import { useRpcContext } from "@wso2/ballerina-rpc-client"; import { getExpandedCategories, setExpandedCategories, getDefaultExpandedState } from "../../utils/localStorage"; -import { getCategoryConfig, shouldShowEmptyCategory, shouldUseConnectionContainer, getCategoryActions, CategoryAction } from "./categoryConfig"; +import { shouldShowEmptyCategory, shouldUseConnectionContainer, getCategoryActions, isCategoryFixed } from "./categoryConfig"; namespace S { export const Container = styled.div<{}>` @@ -54,6 +54,7 @@ namespace S { export const PanelBody = styled(SidePanelBody)` height: calc(100vh - 100px); padding-top: 0; + overflow-y: auto; `; export const StyledSearchInput = styled(SearchBox)` @@ -237,6 +238,7 @@ namespace S { } `; + export const AdvancedSubTitle = styled.div` font-size: 12px; opacity: 0.7; @@ -261,6 +263,18 @@ namespace S { } `; + export const CategoryHeaderFixed = styled.div<{ fullWidth?: boolean }>` + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + width: -webkit-fill-available; + padding: 12px; + cursor: default; + border-radius: 5px; + margin: ${({ fullWidth }) => fullWidth ? '0 -12px' : '0'}; + `; + export const CategoryCard = styled.div<{ hasBackground?: boolean }>` background-color: ${({ hasBackground }) => hasBackground ? `rgba(255, 255, 255, 0.02)` : 'transparent'}; border-radius: 5px; @@ -589,9 +603,17 @@ export function NodeList(props: NodeListProps) { {!isSubCategory ? ( - toggleCategory(group.title)}> - - {group.title} + (() => { + const isFixed = isCategoryFixed(group.title); + const HeaderComponent = isFixed ? S.CategoryHeaderFixed : S.CategoryHeader; + const headerProps = isFixed ? + { fullWidth: config.hasBackground && !isSubCategory } : + { fullWidth: config.hasBackground && !isSubCategory, onClick: () => toggleCategory(group.title) }; + + return ( + + + {group.title}
{categoryActions.map((action, actionIndex) => { const handlers = { @@ -622,14 +644,18 @@ export function NodeList(props: NodeListProps) { ); })} - - - - - + {!isFixed && ( + + + + + + )}
-
+ + ); + })() ) : ( @@ -637,7 +663,7 @@ export function NodeList(props: NodeListProps) { )} - {isCategoryExpanded && ( + {(isCategoryExpanded || isCategoryFixed(group.title)) && ( <> {(!group.items || group.items.length === 0) && !searchText && diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/ParamManager/ParamEditor.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/ParamManager/ParamEditor.tsx index 2224a8188c4..18b77bf5056 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/ParamManager/ParamEditor.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/ParamManager/ParamEditor.tsx @@ -22,7 +22,7 @@ import React, { RefObject, useEffect, useState } from 'react'; import { EditorContainer } from './styles'; import { Parameter } from './ParamManager'; import Form from '../Form'; -import { FormField, FormValues } from '../Form/types'; +import { FormField, FormValues, HelperpaneOnChangeOptions } from '../Form/types'; import { useFormContext } from '../../context'; import { RecordTypeField, TextEdit } from '@wso2/ballerina-core'; import { HelperPaneHeight } from '@wso2/ui-toolkit'; @@ -51,7 +51,7 @@ export function ParamEditor(props: ParamProps) { anchorRef: RefObject, defaultValue: string, value: string, - onChange: (value: string, closeHelperPane: boolean) => void, + onChange: (value: string, options?: HelperpaneOnChangeOptions) => void, changeHelperPaneState: (isOpen: boolean) => void, helperPaneHeight: HelperPaneHeight, recordTypeField?: RecordTypeField diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ActionExpressionEditor.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ActionExpressionEditor.tsx index e7916549762..e585412f381 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ActionExpressionEditor.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ActionExpressionEditor.tsx @@ -26,6 +26,7 @@ const Row = styled.div` display: flex; flex-direction: column; margin: 0; + width: 100%; `; const actionButtonStyles = { diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ArrayEditor.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ArrayEditor.tsx index 016c6c3c25f..e5067b449e4 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ArrayEditor.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ArrayEditor.tsx @@ -16,7 +16,7 @@ * under the License. */ -import React, { useEffect, useState } from "react"; +import React, { useEffect, useRef, useState } from "react"; import { Button, Codicon, ThemeColors } from "@wso2/ui-toolkit"; import styled from "@emotion/styled"; @@ -102,18 +102,31 @@ export function ArrayEditor(props: ArrayEditorProps) { const value = watch(`${field.key}-${index}`); let updatedValue = value; + if (updatedValue === undefined) { // Use the initial array value if available updatedValue = Array.isArray(field.value) ? field.value[index] : ""; setValue(`${field.key}-${index}`, updatedValue ?? ""); } + // HACK: When using expression editor and if the user deleted whole text then the value becomes + // an empty value. + if (updatedValue === "") { + setValue(`${field.key}-${index}`, " "); + } return updatedValue; }) - .filter(Boolean); // Update the main field.value array whenever individual fields change + const previousValuesRef = useRef(); useEffect(() => { + const serializedValues = JSON.stringify(values); + if (previousValuesRef.current === serializedValues) { + return; + } + + // Prevent redundant form updates which would otherwise trigger endless rerenders. + previousValuesRef.current = serializedValues; setValue(field.key, values); }, [values, field.key, setValue]); diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/EditorFactory.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/EditorFactory.tsx index 85ca9aa36af..b66c118a6e7 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/editors/EditorFactory.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/EditorFactory.tsx @@ -155,10 +155,9 @@ export const EditorFactory = (props: FormFieldEditorProps) => { /> ); - } else if (!field.items && (field.type === "EXPRESSION" || field.type === "LV_EXPRESSION" || field.type == "ACTION_OR_EXPRESSION") && field.editable) { - // Expression field is a inline expression editor + } else if (!field.items && (field.type === "RAW_TEMPLATE" || field.valueTypeConstraint === "ai:Prompt") && field.editable) { return ( - { recordTypeField={recordTypeFields?.find(recordField => recordField.key === field.key)} /> ); - } else if (!field.items && field.type === "RAW_TEMPLATE" && field.editable) { + } else if (!field.items && (field.type === "EXPRESSION" || field.type === "LV_EXPRESSION" || field.type == "ACTION_OR_EXPRESSION") && field.editable) { + // Expression field is a inline expression editor return ( - recordField.key === field.key)} /> ); } else if (field.type === "VIEW") { diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/ExpandedEditor.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/ExpandedEditor.tsx index aea2afea676..23d55da3357 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/ExpandedEditor.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/ExpandedEditor.tsx @@ -19,13 +19,18 @@ import React, { useState, useEffect } from "react"; import { createPortal } from "react-dom"; import styled from "@emotion/styled"; -import { ThemeColors, Codicon, Divider, Button, Typography } from "@wso2/ui-toolkit"; -import { FormField } from "../../Form/types"; -import { S } from "../ExpressionEditor"; -import ReactMarkdown from "react-markdown"; +import { ThemeColors, Divider, Typography, CompletionItem, FnSignatureDocumentation, HelperPaneHeight } from "@wso2/ui-toolkit"; +import { FormField, HelperpaneOnChangeOptions } from "../../Form/types"; import { EditorMode } from "./modes/types"; import { TextMode } from "./modes/TextMode"; import { PromptMode } from "./modes/PromptMode"; +import { ExpressionMode } from "./modes/ExpressionMode"; +import { TemplateMode } from "./modes/TemplateMode"; +import { MinimizeIcon } from "../MultiModeExpressionEditor/ChipExpressionEditor/components/FloatingButtonIcons"; +import { LineRange } from "@wso2/ballerina-core/lib/interfaces/common"; +import { DiagnosticMessage } from "@wso2/ballerina-core"; +import { InputMode } from "../MultiModeExpressionEditor/ChipExpressionEditor/types"; +import { FieldError } from "react-hook-form"; interface ExpandedPromptEditorProps { isOpen: boolean; @@ -33,6 +38,29 @@ interface ExpandedPromptEditorProps { value: string; onClose: () => void; onSave: (value: string) => void; + onChange: (updatedValue: string, updatedCursorPosition: number) => void; + // Optional mode override (if not provided, will be auto-detected) + mode?: EditorMode; + // Expression mode specific props + completions?: CompletionItem[]; + fileName?: string; + targetLineRange?: LineRange; + sanitizedExpression?: (value: string) => string; + rawExpression?: (value: string) => string; + extractArgsFromFunction?: (value: string, cursorPosition: number) => Promise<{ + label: string; + args: string[]; + currentArgIndex: number; + documentation?: FnSignatureDocumentation; + }>; + getHelperPane?: ( + value: string, + onChange: (value: string, options?: HelperpaneOnChangeOptions) => void, + helperPaneHeight: HelperPaneHeight + ) => React.ReactNode; + // Error diagnostics props + error?: FieldError; + formDiagnostics?: DiagnosticMessage[]; } const ModalContainer = styled.div` @@ -41,7 +69,7 @@ const ModalContainer = styled.div` left: 0; width: 100%; height: 100%; - z-index: 30000; + z-index: 2001; display: flex; justify-content: center; align-items: center; @@ -50,17 +78,22 @@ const ModalContainer = styled.div` `; const ModalBox = styled.div` - width: 800px; + width: 1000px; + max-width: 95vw; + min-width: 800px; + height: 80vh; max-height: 90vh; + min-height: 600px; position: relative; display: flex; flex-direction: column; - overflow: hidden; + overflow: auto; padding: 8px 8px; border-radius: 3px; background-color: ${ThemeColors.SURFACE_DIM}; box-shadow: 0 3px 8px rgb(0 0 0 / 0.2); - z-index: 30001; + z-index: 2001; + resize: both; `; const ModalHeaderSection = styled.header` @@ -73,17 +106,40 @@ const ModalHeaderSection = styled.header` const ModalContent = styled.div` flex: 1; - overflow-y: auto; - padding: 18px 16px; + overflow-y: hidden; + padding: 8px 18px 16px; display: flex; flex-direction: column; `; -const ButtonContainer = styled.div` +const MinimizeButton = styled.div` + cursor: pointer; + width: 20px; + height: 20px; display: flex; - justify-content: flex-end; - gap: 8px; - padding: 0 16px 8px 16px; + align-items: center; + justify-content: center; + opacity: 0.7; + transition: opacity 0.2s ease, background-color 0.2s ease; + border-radius: 2px; + + &:hover { + opacity: 1; + background-color: var(--vscode-editor-inactiveSelectionBackground); + } + + svg { + width: 16px; + height: auto; + } +`; + +const TitleWrapper = styled.div` + margin: 12px 0; + + h3 { + margin: 0; + } `; /** @@ -91,7 +147,9 @@ const ButtonContainer = styled.div` */ const MODE_COMPONENTS: Record> = { text: TextMode, - prompt: PromptMode + prompt: PromptMode, + expression: ExpressionMode, + template: TemplateMode }; export const ExpandedEditor: React.FC = ({ @@ -99,17 +157,33 @@ export const ExpandedEditor: React.FC = ({ field, value, onClose, + onChange, onSave, + mode: propMode, + completions, + fileName, + targetLineRange, + sanitizedExpression, + rawExpression, + extractArgsFromFunction, + getHelperPane, + error, + formDiagnostics }) => { - const [editedValue, setEditedValue] = useState(value); const promptFields = ["query", "instructions", "role"]; - const defaultMode: EditorMode = promptFields.includes(field.key) ? "prompt" : "text"; - const [mode] = useState(defaultMode); + + // Determine mode - use prop if provided, otherwise auto-detect + const defaultMode: EditorMode = propMode ?? ( + promptFields.includes(field.key) ? "prompt" : "text" + ); + + const [mode, setMode] = useState(defaultMode); const [showPreview, setShowPreview] = useState(false); + const [mouseDownTarget, setMouseDownTarget] = useState(null); useEffect(() => { - setEditedValue(value); - }, [value, isOpen]); + setMode(defaultMode); + }, [defaultMode]); useEffect(() => { if (mode === "text") { @@ -117,14 +191,20 @@ export const ExpandedEditor: React.FC = ({ } }, [mode]); - const handleSave = () => { - onSave(editedValue); + const handleMinimize = () => { onClose(); }; - const handleCancel = () => { - setEditedValue(value); - onClose(); + const handleBackdropMouseDown = (e: React.MouseEvent) => { + setMouseDownTarget(e.target); + }; + + const handleBackdropClick = (e: React.MouseEvent) => { + // Only close if both mousedown and click happened on the backdrop + if (e.target === e.currentTarget && mouseDownTarget === e.currentTarget) { + handleMinimize(); + } + setMouseDownTarget(null); }; if (!isOpen) return null; @@ -134,24 +214,54 @@ export const ExpandedEditor: React.FC = ({ // Prepare props for the mode component const modeProps = { - value: editedValue, - onChange: setEditedValue, + value: value, + onChange: onChange, field, // Props for modes with preview support ...(mode === "prompt" && { isPreviewMode: showPreview, - onTogglePreview: () => setShowPreview(!showPreview) + onTogglePreview: (enabled: boolean) => setShowPreview(enabled) + }), + // Props for expression mode + ...(mode === "expression" && { + completions, + fileName, + targetLineRange, + sanitizedExpression, + rawExpression, + extractArgsFromFunction, + getHelperPane, + error, + formDiagnostics + }), + // Props for template mode + ...(mode === "template" && { + completions, + fileName, + targetLineRange, + sanitizedExpression, + rawExpression, + extractArgsFromFunction, + getHelperPane, + isPreviewMode: showPreview, + onTogglePreview: (enabled: boolean) => setShowPreview(enabled), + error, + formDiagnostics }) }; + // HACK: Must find a proper central way to manager popups + const targetEl = document.getElementById("visualizer-container"); - return createPortal( - + return targetEl ? createPortal( + e.stopPropagation()}> - {field.label} -
- -
+ + {field.label} + + + +
@@ -159,16 +269,8 @@ export const ExpandedEditor: React.FC = ({ - - - - , - document.body - ); + targetEl + ) : null; }; diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/ChipComponent.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/ChipComponent.tsx new file mode 100644 index 00000000000..7121af0b8f2 --- /dev/null +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/ChipComponent.tsx @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from "react"; + +import { DocumentType, TokenType } from "../../MultiModeExpressionEditor/ChipExpressionEditor/types"; +import { + getChipDisplayContent, + StandardChip, + ChipText, + getTokenIconClass, + StandardIcon +} from "../../MultiModeExpressionEditor/ChipExpressionEditor/chipStyles"; + +export interface ChipComponentProps { + type: TokenType; + content: string; + documentType?: DocumentType; +} + +export const ChipComponent: React.FC = ({ type, content, documentType }) => { + let iconClass = getTokenIconClass(type, documentType); + return ( + + + {getChipDisplayContent(type, content)} + + ); +}; diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/MarkdownPreview.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/MarkdownPreview.tsx index 943565f42c1..7429841c27b 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/MarkdownPreview.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/MarkdownPreview.tsx @@ -20,20 +20,29 @@ import React from "react"; import styled from "@emotion/styled"; import { ThemeColors } from "@wso2/ui-toolkit"; import ReactMarkdown from "react-markdown"; +import rehypeRaw from "rehype-raw"; +import remarkGfm from "remark-gfm"; +import { ChipComponent } from "./ChipComponent"; +import { DocumentType, TokenType } from "../../MultiModeExpressionEditor/ChipExpressionEditor/types"; +import "../styles/markdown-preview.css"; const PreviewContainer = styled.div` width: 100%; - min-height: 500px; - padding: 12px; - fontSize: 14px; - font-family: var(--vscode-editor-font-family); + height: 100%; + padding: 16px; background: var(--input-background); - color: ${ThemeColors.ON_SURFACE}; border: 1px solid ${ThemeColors.OUTLINE_VARIANT}; border-top: none; border-radius: 0 0 4px 4px; overflow-y: auto; + overflow-x: auto; box-sizing: border-box; + + .markdown-body { + background: transparent; + font-size: 14px; + color: ${ThemeColors.ON_SURFACE}; + } `; interface MarkdownPreviewProps { @@ -47,17 +56,31 @@ interface MarkdownPreviewProps { export const MarkdownPreview: React.FC = ({ content }) => { return ( - null, - iframe: () => null, - }} - disallowedElements={['script', 'iframe', 'object', 'embed']} - unwrapDisallowed={true} - > - {content} - +
+ null, + iframe: () => null, + // Custom chip component for rendering tokens + chip: ({ node }: any) => { + const props = node?.properties || {}; + return ( + + ); + } + }} + disallowedElements={['script', 'iframe', 'object', 'embed']} + unwrapDisallowed={true} + > + {content} + +
); }; diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/MarkdownToolbar.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/MarkdownToolbar.tsx index 61ca9bf29d9..09bd74955aa 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/MarkdownToolbar.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/MarkdownToolbar.tsx @@ -46,10 +46,10 @@ const ToolbarContainer = styled.div` justify-content: space-between; gap: 4px; padding: 8px 12px; - background-color: ${ThemeColors.SURFACE_BRIGHT}; border: 1px solid ${ThemeColors.OUTLINE_VARIANT}; border-radius: 4px 4px 0 0; flex-wrap: wrap; + font-family: GilmerMedium; markdown-toolbar { display: flex; @@ -181,7 +181,8 @@ export const MarkdownToolbar: React.FC = ({ rightLabel="Preview" onChange={onTogglePreview} checkedColor="var(--vscode-button-background)" - enableTransition={true} + checkedBorder="1px solid color-mix(in srgb, var(--vscode-dropdown-border) 75%, transparent)" + enableTransition={false} sx={{ borderColor: ThemeColors.OUTLINE_VARIANT }} diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/TemplateMarkdownToolbar.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/TemplateMarkdownToolbar.tsx new file mode 100644 index 00000000000..12cc21662d7 --- /dev/null +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/controls/TemplateMarkdownToolbar.tsx @@ -0,0 +1,200 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from "react"; +import styled from "@emotion/styled"; +import { ThemeColors, Icon, Switch } from "@wso2/ui-toolkit"; +import { EditorView } from "@codemirror/view"; +import { + insertMarkdownFormatting, + insertMarkdownHeader, + insertMarkdownLink, + insertMarkdownBlockquote, + insertMarkdownUnorderedList, + insertMarkdownOrderedList, + insertMarkdownTaskList +} from "../utils/templateUtils"; +import { HelperPaneToggleButton } from "../../MultiModeExpressionEditor/ChipExpressionEditor/components/HelperPaneToggleButton"; + +const ToolbarContainer = styled.div` + display: flex; + align-items: center; + justify-content: space-between; + gap: 4px; + padding: 8px 12px; + border: 1px solid ${ThemeColors.OUTLINE_VARIANT}; + border-radius: 4px 4px 0 0; + flex-wrap: wrap; + font-family: GilmerMedium; +`; + +const ToolbarButtonGroup = styled.div` + display: flex; + align-items: center; + gap: 4px; + flex-wrap: wrap; +`; + +const ToolbarButton = styled.button` + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + padding: 0; + background-color: transparent; + color: ${ThemeColors.ON_SURFACE}; + border: 1px solid transparent; + border-radius: 4px; + cursor: pointer; + transition: all 0.2s ease; + + &:hover:not(:disabled) { + background-color: ${ThemeColors.SECONDARY_CONTAINER}; + border-color: ${ThemeColors.OUTLINE}; + } + + &:active:not(:disabled) { + background-color: ${ThemeColors.SECONDARY_CONTAINER}; + } + + &:disabled { + opacity: 0.5; + cursor: not-allowed; + } + + &:focus-visible { + outline: 2px solid ${ThemeColors.PRIMARY}; + outline-offset: 2px; + } +`; + +const ToolbarDivider = styled.div` + width: 1px; + height: 24px; + background-color: ${ThemeColors.OUTLINE_VARIANT}; + margin: 0 4px; +`; + +interface TemplateMarkdownToolbarProps { + editorView: EditorView | null; + isPreviewMode?: boolean; + onTogglePreview?: () => void; + helperPaneToggle?: { + ref: React.RefObject; + isOpen: boolean; + onClick: () => void; + }; +} + +export const TemplateMarkdownToolbar = React.forwardRef(({ + editorView, + isPreviewMode = false, + onTogglePreview, + helperPaneToggle +}, ref) => { + // Prevent buttons from taking focus away from the editor + const handleMouseDown = (e: React.MouseEvent) => { + e.preventDefault(); + }; + + const handleBold = () => insertMarkdownFormatting(editorView, '**'); + const handleItalic = () => insertMarkdownFormatting(editorView, '_'); + const handleCode = () => insertMarkdownFormatting(editorView, '`'); + const handleLink = () => insertMarkdownLink(editorView); + const handleHeader = () => insertMarkdownHeader(editorView, 3); + const handleQuote = () => insertMarkdownBlockquote(editorView); + const handleUnorderedList = () => insertMarkdownUnorderedList(editorView); + const handleOrderedList = () => insertMarkdownOrderedList(editorView); + const handleTaskList = () => insertMarkdownTaskList(editorView); + + return ( + + + {helperPaneToggle && ( + + )} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {onTogglePreview && ( + + )} + + ); +}); + +TemplateMarkdownToolbar.displayName = 'TemplateMarkdownToolbar'; diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/index.ts b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/index.ts index 662f369f6ae..12d5a822011 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/index.ts +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/index.ts @@ -17,4 +17,4 @@ */ export { ExpandedEditor } from "./ExpandedEditor"; -export type { EditorMode, EditorModeProps, EditorModeWithPreviewProps } from "./modes/types"; +export type { EditorMode, EditorModeProps, EditorModeWithPreviewProps, EditorModeExpressionProps } from "./modes/types"; diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/modes/ExpressionMode.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/modes/ExpressionMode.tsx new file mode 100644 index 00000000000..42fad8c2b02 --- /dev/null +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/modes/ExpressionMode.tsx @@ -0,0 +1,78 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from "react"; +import styled from "@emotion/styled"; +import { EditorModeExpressionProps } from "./types"; +import { ChipExpressionEditorComponent } from "../../MultiModeExpressionEditor/ChipExpressionEditor/components/ChipExpressionEditor"; +import { ErrorBanner } from "@wso2/ui-toolkit"; + +const ExpressionContainer = styled.div` + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + box-sizing: border-box; +`; + +/** + * Expression mode editor - uses ChipExpressionBaseComponent in expanded mode + */ +export const ExpressionMode: React.FC = ({ + value, + onChange, + completions = [], + fileName, + targetLineRange, + sanitizedExpression, + extractArgsFromFunction, + getHelperPane, + rawExpression, + error, + formDiagnostics +}) => { + // Convert onChange signature from (value: string) => void to (value: string, cursorPosition: number) => void + const handleChange = (updatedValue: string, updatedCursorPosition: number) => { + onChange(updatedValue, updatedCursorPosition); + }; + + return ( + <> + + + + {error ? + : + formDiagnostics && formDiagnostics.length > 0 && + d.message).join(', ')} /> + } + + ); +}; diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/modes/PromptMode.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/modes/PromptMode.tsx index 303a67e2bec..2bc061a6dda 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/modes/PromptMode.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/ExpandedEditor/modes/PromptMode.tsx @@ -25,7 +25,7 @@ import { MarkdownPreview } from "../controls/MarkdownPreview"; const TextArea = styled.textarea` width: 100%; - min-height: 500px; + height: 100%; padding: 12px !important; fontSize: 13px; font-family: var(--vscode-editor-font-family); @@ -34,7 +34,7 @@ const TextArea = styled.textarea` border: 1px solid ${ThemeColors.OUTLINE_VARIANT}; border-radius: 0 0 4px 4px; border-top: none; - resize: vertical; + resize: none; outline: none; box-sizing: border-box; `; @@ -77,7 +77,7 @@ export const PromptMode: React.FC = ({ if (!content.trim()) { e.preventDefault(); const newValue = textBeforeCursor.substring(0, lastNewlineIndex + 1) + '\n' + textAfterCursor; - onChange(newValue); + onChange(newValue, cursorPosition); // Set cursor position after both newlines queueMicrotask(() => { textarea.selectionStart = textarea.selectionEnd = lastNewlineIndex + 2; @@ -88,7 +88,7 @@ export const PromptMode: React.FC = ({ // Continue the list e.preventDefault(); const newValue = textBeforeCursor + '\n' + indent + marker + ' ' + textAfterCursor; - onChange(newValue); + onChange(newValue, cursorPosition); // Set cursor position after the list marker queueMicrotask(() => { const newCursorPos = cursorPosition + indent.length + marker.length + 2; @@ -106,7 +106,7 @@ export const PromptMode: React.FC = ({ if (!content.trim()) { e.preventDefault(); const newValue = textBeforeCursor.substring(0, lastNewlineIndex + 1) + '\n' + textAfterCursor; - onChange(newValue); + onChange(newValue, cursorPosition); // Set cursor position after both newlines queueMicrotask(() => { textarea.selectionStart = textarea.selectionEnd = lastNewlineIndex + 2; @@ -118,7 +118,7 @@ export const PromptMode: React.FC = ({ e.preventDefault(); const nextNumber = parseInt(number, 10) + 1; const newValue = textBeforeCursor + '\n' + indent + nextNumber + '. ' + textAfterCursor; - onChange(newValue); + onChange(newValue, cursorPosition); // Set cursor position after the list marker queueMicrotask(() => { const newCursorPos = cursorPosition + indent.length + nextNumber.toString().length + 3; @@ -136,7 +136,7 @@ export const PromptMode: React.FC = ({ if (!content.trim()) { e.preventDefault(); const newValue = textBeforeCursor.substring(0, lastNewlineIndex + 1) + '\n' + textAfterCursor; - onChange(newValue); + onChange(newValue, cursorPosition); // Set cursor position after both newlines queueMicrotask(() => { textarea.selectionStart = textarea.selectionEnd = lastNewlineIndex + 2; @@ -147,7 +147,7 @@ export const PromptMode: React.FC = ({ // Continue the task list with unchecked box e.preventDefault(); const newValue = textBeforeCursor + '\n' + indent + marker + ' [ ] ' + textAfterCursor; - onChange(newValue); + onChange(newValue, cursorPosition); // Set cursor position after the task marker queueMicrotask(() => { const newCursorPos = cursorPosition + indent.length + marker.length + 6; @@ -174,7 +174,7 @@ export const PromptMode: React.FC = ({