diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cfa48d64021..e54b378f023 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -167,6 +167,17 @@ jobs: PLATFORM_DEV_GHAPP_CLIENT_ID: ${{ secrets.PLATFORM_DEV_GHAPP_CLIENT_ID }} PLATFORM_DEV_DEVANT_ASGARDEO_CLIENT_ID: ${{ secrets.PLATFORM_DEV_DEVANT_ASGARDEO_CLIENT_ID }} + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@0.28.0 + with: + scan-type: 'fs' + scan-ref: '.' + format: 'table' + ignore-unfixed: true + exit-code: '1' + timeout: '10m' + skip-dirs: 'common/temp' + ExtTest_Ballerina: name: Run Ballerina extension tests needs: Build_Stage @@ -401,7 +412,7 @@ jobs: strategy: fail-fast: false matrix: - group: [group1, group2, group3] + group: [group1, group2, group3, group4] steps: - name: Restore build uses: actions/download-artifact@v4 diff --git a/common/config/rush/.pnpmfile.cjs b/common/config/rush/.pnpmfile.cjs index f83cfef864f..60edcb80b49 100644 --- a/common/config/rush/.pnpmfile.cjs +++ b/common/config/rush/.pnpmfile.cjs @@ -49,7 +49,7 @@ module.exports = { pkg.dependencies['xmldom'] = 'npm:@xmldom/xmldom@^0.8.10'; } if (pkg.dependencies['@eslint/plugin-kit']) { - pkg.dependencies['@eslint/plugin-kit'] = '^0.3.3'; + pkg.dependencies['@eslint/plugin-kit'] = '^0.3.4'; } if (pkg.dependencies['on-headers']) { pkg.dependencies['on-headers'] = '^1.1.0'; @@ -89,7 +89,7 @@ module.exports = { pkg.devDependencies['xmldom'] = 'npm:@xmldom/xmldom@^0.8.10'; } if (pkg.devDependencies['@eslint/plugin-kit']) { - pkg.devDependencies['@eslint/plugin-kit'] = '^0.3.3'; + pkg.devDependencies['@eslint/plugin-kit'] = '^0.3.4'; } if (pkg.devDependencies['on-headers']) { pkg.devDependencies['on-headers'] = '^1.1.0'; diff --git a/common/config/rush/common-versions.json b/common/config/rush/common-versions.json index 11be3b08058..e218fcd4819 100644 --- a/common/config/rush/common-versions.json +++ b/common/config/rush/common-versions.json @@ -25,7 +25,7 @@ */ // "some-library": "1.2.3" "webpack": "^5.56.0", - "@eslint/plugin-kit": "^0.3.3", + "@eslint/plugin-kit": "^0.3.4", "on-headers": "^1.1.0", "form-data": "^4.0.4" }, diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index ca2b51df8ec..2dff47c4f18 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -20,7 +20,7 @@ importers: version: 10.0.10 '@types/node': specifier: ^18.11.19 - version: 18.19.120 + version: 18.19.121 '@types/vscode': specifier: ^1.63.0 version: 1.102.0 @@ -111,27 +111,30 @@ importers: version: 1.102.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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + 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) '@typescript-eslint/parser': specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.5.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.4.2) + version: 9.27.0(jiti@2.5.1) typescript: specifier: 5.8.3 version: 5.8.3 ../../workspaces/ballerina/ballerina-extension: dependencies: + '@ai-sdk/anthropic': + specifier: ^1.2.12 + version: 1.2.12(zod@3.25.76) '@types/lodash': specifier: ^4.14.200 version: 4.17.17 '@vscode/test-electron': - specifier: ^2.4.0 + specifier: ^2.5.2 version: 2.5.2 '@vscode/vsce': specifier: ^2.22.0 @@ -151,6 +154,9 @@ importers: '@wso2/wso2-platform-core': specifier: workspace:* version: link:../../wso2-platform/wso2-platform-core + ai: + specifier: ^4.3.16 + version: 4.3.19(react@19.1.0)(zod@3.25.76) cors-anywhere: specifier: ^0.4.4 version: 0.4.4 @@ -232,6 +238,9 @@ importers: xstate: specifier: ^4.38.3 version: 4.38.3 + zod: + specifier: ^3.25.74 + version: 3.25.76 devDependencies: '@sentry/webpack-plugin': specifier: ^1.20.1 @@ -244,7 +253,7 @@ importers: version: 10.0.10 '@types/node': specifier: ^18.18.7 - version: 18.19.120 + version: 18.19.121 '@types/tcp-port-used': specifier: ^1.0.3 version: 1.0.4 @@ -307,7 +316,7 @@ importers: version: 1.0.2 ts-loader: specifier: ^9.5.0 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) tslint: specifier: ^6.1.3 version: 6.1.3(typescript@5.8.3) @@ -322,13 +331,13 @@ importers: version: 5.10.0(mocha@10.8.2)(typescript@5.8.3) webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) + version: 5.101.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack@5.100.2) + version: 6.0.1(webpack@5.101.0) webpack-merge-and-include-globally: specifier: ^2.3.4 - version: 2.3.4(webpack@5.100.2) + version: 2.3.4(webpack@5.101.0) yarn: specifier: ^1.22.19 version: 1.22.22 @@ -419,31 +428,31 @@ importers: version: 7.27.2(@babel/core@7.27.7) '@rollup/plugin-commonjs': specifier: ^28.0.3 - version: 28.0.6(rollup@4.45.1) + version: 28.0.6(rollup@4.46.1) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.45.1) + version: 6.1.0(rollup@4.46.1) '@rollup/plugin-node-resolve': specifier: ^16.0.1 - version: 16.0.1(rollup@4.45.1) + version: 16.0.1(rollup@4.46.1) '@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.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.100.2) + 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) '@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.4.2))(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(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': specifier: ^6.5.9 - version: 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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(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/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.4.2))(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.4.2))(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.4.2))(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(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) '@types/classnames': specifier: ^2.2.9 version: 2.3.4 @@ -476,25 +485,25 @@ importers: version: 5.28.5(webpack-cli@6.0.1) babel-loader: specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.27.7)(webpack@5.100.2) + version: 10.0.0(@babel/core@7.27.7)(webpack@5.101.0) copy-webpack-plugin: specifier: ^13.0.0 - version: 13.0.0(webpack@5.100.2) + version: 13.0.0(webpack@5.101.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) + version: 7.1.2(webpack@5.101.0) express: specifier: ^5.1.0 version: 5.1.0 file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) + version: 6.2.0(webpack@5.101.0) fork-ts-checker-webpack-plugin: specifier: ^9.1.0 - version: 9.1.0(typescript@5.8.3)(webpack@5.100.2) + version: 9.1.0(typescript@5.8.3)(webpack@5.101.0) glob: specifier: ^11.0.2 version: 11.0.3 @@ -503,19 +512,19 @@ importers: 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) react-test-renderer: specifier: ^19.1.0 - version: 19.1.0(react@18.2.0) + version: 19.1.1(react@18.2.0) rimraf: specifier: ^6.0.1 version: 6.0.1 rollup: specifier: ^4.41.0 - version: 4.45.1 + version: 4.46.1 rollup-plugin-import-css: specifier: ^3.5.8 - version: 3.5.8(rollup@4.45.1) + version: 3.5.8(rollup@4.46.1) rollup-plugin-peer-deps-external: specifier: ^2.2.4 - version: 2.2.4(rollup@4.45.1) + version: 2.2.4(rollup@4.46.1) rollup-plugin-postcss: specifier: ^4.0.2 version: 4.0.2(postcss@8.5.6) @@ -527,19 +536,19 @@ importers: version: 2.0.0 rollup-plugin-typescript2: specifier: ^0.36.0 - version: 0.36.0(rollup@4.45.1)(typescript@5.8.3) + version: 0.36.0(rollup@4.46.1)(typescript@5.8.3) sass: specifier: ^1.89.0 version: 1.89.2 sass-loader: specifier: ^16.0.5 - version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2) + version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.101.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.100.2) + version: 4.0.0(webpack@5.101.0) stylelint: specifier: ^16.19.1 version: 16.22.0(typescript@5.8.3) @@ -548,10 +557,10 @@ importers: version: 38.0.0(stylelint@16.22.0(typescript@5.8.3)) svg-url-loader: specifier: ^8.0.0 - version: 8.0.0(webpack@5.100.2) + version: 8.0.0(webpack@5.101.0) ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -569,13 +578,13 @@ importers: version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) + version: 5.101.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) + version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) + version: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) ../../workspaces/ballerina/ballerina-rpc-client: dependencies: @@ -615,22 +624,22 @@ 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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + 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) '@typescript-eslint/parser': specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.5.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.4.2) + version: 9.27.0(jiti@2.5.1) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.27.0(jiti@2.5.1)) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.20(eslint@9.27.0(jiti@2.4.2)) + version: 0.4.20(eslint@9.27.0(jiti@2.5.1)) typescript: specifier: 5.8.3 version: 5.8.3 @@ -670,7 +679,7 @@ importers: devDependencies: '@storybook/react': specifier: ^6.5.16 - version: 6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.28.0)(@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) '@types/lodash': specifier: ~4.17.16 version: 4.17.17 @@ -700,7 +709,7 @@ 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.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.2.6(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)) @@ -816,6 +825,9 @@ importers: specifier: ~1.6.1 version: 1.6.1 devDependencies: + '@ai-sdk/openai': + specifier: ^1.3.22 + version: 1.3.23(zod@3.25.76) '@types/lodash.debounce': specifier: ^4.0.6 version: 4.0.9 @@ -842,10 +854,13 @@ 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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + 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) '@typescript-eslint/parser': specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) + ai: + specifier: ^4.3.16 + version: 4.3.19(react@18.2.0)(zod@3.25.76) buffer: specifier: ^6.0.3 version: 6.0.3 @@ -854,37 +869,37 @@ importers: version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) + version: 7.1.2(webpack@5.101.0) eslint: specifier: ^9.26.0 - version: 9.27.0(jiti@2.4.2) + version: 9.27.0(jiti@2.5.1) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.27.0(jiti@2.5.1)) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.20(eslint@9.27.0(jiti@2.4.2)) + version: 0.4.20(eslint@9.27.0(jiti@2.5.1)) sass-loader: specifier: ^16.0.5 - version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2) + version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.101.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) + version: 5.0.0(webpack@5.101.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) + version: 4.0.0(webpack@5.101.0) ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) typescript: specifier: 5.8.3 version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@5.1.4) + version: 5.101.0(webpack-cli@5.1.4) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@5.1.4)(webpack@5.100.2) + version: 5.2.2(webpack-cli@5.1.4)(webpack@5.101.0) ../../workspaces/ballerina/bi-diagram: dependencies: @@ -936,7 +951,7 @@ importers: devDependencies: '@storybook/react': specifier: ^6.3.7 - version: 6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.28.0)(@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) '@types/dagre': specifier: ~0.7.52 version: 0.7.53 @@ -1006,7 +1021,7 @@ importers: devDependencies: '@storybook/react': specifier: ^6.5.16 - version: 6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.28.0)(@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) '@types/dagre': specifier: ~0.7.52 version: 0.7.53 @@ -1124,13 +1139,13 @@ importers: version: 7.27.2(@babel/core@7.27.7) '@rollup/plugin-commonjs': specifier: ^28.0.3 - version: 28.0.6(rollup@4.45.1) + version: 28.0.6(rollup@4.46.1) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.45.1) + version: 6.1.0(rollup@4.46.1) '@rollup/plugin-node-resolve': specifier: ^16.0.1 - version: 16.0.1(rollup@4.45.1) + version: 16.0.1(rollup@4.46.1) '@storybook/addon-actions': specifier: ^8.6.14 version: 8.6.14(storybook@8.6.14(prettier@3.5.3)) @@ -1145,7 +1160,7 @@ importers: version: 8.6.14(storybook@8.6.14(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@6.0.1) '@storybook/manager-webpack5': specifier: ^6.5.16 - version: 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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(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/react': 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) @@ -1181,49 +1196,49 @@ importers: version: 5.28.5(webpack-cli@6.0.1) '@typescript-eslint/eslint-plugin': specifier: ~8.32.1 - version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + 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) '@typescript-eslint/parser': specifier: ~8.32.1 - version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.7.0(vite@6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) + version: 4.7.0(vite@6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) babel-loader: specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.27.7)(webpack@5.100.2) + version: 10.0.0(@babel/core@7.27.7)(webpack@5.101.0) babel-plugin-transform-typescript-metadata: specifier: ^0.3.2 version: 0.3.2 copy-webpack-plugin: specifier: ^13.0.0 - version: 13.0.0(webpack@5.100.2) + version: 13.0.0(webpack@5.101.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) + version: 7.1.2(webpack@5.101.0) dagre: specifier: ^0.8.5 version: 0.8.5 eslint: specifier: ^9.27.0 - version: 9.27.0(jiti@2.4.2) + version: 9.27.0(jiti@2.5.1) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.27.0(jiti@2.5.1)) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.20(eslint@9.27.0(jiti@2.4.2)) + version: 0.4.20(eslint@9.27.0(jiti@2.5.1)) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) + version: 6.2.0(webpack@5.101.0) fork-ts-checker-webpack-plugin: specifier: ^9.1.0 - version: 9.1.0(typescript@5.8.3)(webpack@5.100.2) + version: 9.1.0(typescript@5.8.3)(webpack@5.101.0) monaco-editor-webpack-plugin: specifier: ^7.1.0 - version: 7.1.0(monaco-editor@0.52.2)(webpack@5.100.2) + version: 7.1.0(monaco-editor@0.52.2)(webpack@5.101.0) mousetrap: specifier: ^1.6.5 version: 1.6.5 @@ -1238,19 +1253,19 @@ importers: 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) react-test-renderer: specifier: ^19.1.0 - version: 19.1.0(react@18.2.0) + version: 19.1.1(react@18.2.0) rimraf: specifier: ^6.0.1 version: 6.0.1 rollup: specifier: ^4.41.0 - version: 4.45.1 + version: 4.46.1 rollup-plugin-import-css: specifier: ^3.5.8 - version: 3.5.8(rollup@4.45.1) + version: 3.5.8(rollup@4.46.1) rollup-plugin-peer-deps-external: specifier: ^2.2.4 - version: 2.2.4(rollup@4.45.1) + version: 2.2.4(rollup@4.46.1) rollup-plugin-postcss: specifier: ^4.0.2 version: 4.0.2(postcss@8.5.6) @@ -1262,19 +1277,19 @@ importers: version: 2.0.0 rollup-plugin-typescript2: specifier: ^0.36.0 - version: 0.36.0(rollup@4.45.1)(typescript@5.8.3) + version: 0.36.0(rollup@4.46.1)(typescript@5.8.3) sass: specifier: ^1.89.0 version: 1.89.2 sass-loader: specifier: ^16.0.5 - version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2) + version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.101.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.100.2) + version: 4.0.0(webpack@5.101.0) stylelint: specifier: ^16.19.1 version: 16.22.0(typescript@5.8.3) @@ -1283,10 +1298,10 @@ importers: version: 38.0.0(stylelint@16.22.0(typescript@5.8.3)) svg-url-loader: specifier: ^8.0.0 - version: 8.0.0(webpack@5.100.2) + version: 8.0.0(webpack@5.101.0) ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -1304,19 +1319,19 @@ importers: version: 5.8.3 vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) + version: 6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) vscode-uri: specifier: ^3.1.0 version: 3.1.0 webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) + version: 5.101.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) + version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) + version: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) ../../workspaces/ballerina/graphql: dependencies: @@ -1344,19 +1359,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.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.100.2) + 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) '@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.4.2))(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.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': specifier: ^6.5.9 - version: 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.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/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.4.2))(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.4.2))(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.4.2))(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.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) '@types/react': specifier: 18.2.0 version: 18.2.0 @@ -1365,34 +1380,34 @@ importers: version: 18.2.0 babel-loader: specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.27.7)(webpack@5.100.2) + version: 10.0.0(@babel/core@7.27.7)(webpack@5.101.0) css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) + version: 7.1.2(webpack@5.101.0) graphql: specifier: ^16.11.0 version: 16.11.0 mini-css-extract-plugin: specifier: ^2.9.2 - version: 2.9.2(webpack@5.100.2) + version: 2.9.2(webpack@5.101.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) + version: 5.0.0(webpack@5.101.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) + version: 4.0.0(webpack@5.101.0) ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) typescript: specifier: 5.8.3 version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@4.10.0) + version: 5.101.0(webpack-cli@4.10.0) webpack-cli: specifier: ^4.10.0 - version: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.100.2) + version: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0) ../../workspaces/ballerina/graphql-design-diagram: dependencies: @@ -1565,34 +1580,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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + 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) '@typescript-eslint/parser': specifier: ~8.32.1 - version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.32.1(eslint@9.27.0(jiti@2.5.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.100.2) + version: 7.1.2(webpack@5.101.0) eslint: specifier: ^9.26.0 - version: 9.27.0(jiti@2.4.2) + version: 9.27.0(jiti@2.5.1) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.27.0(jiti@2.5.1)) eslint-plugin-react-refresh: specifier: ^0.4.4 - version: 0.4.20(eslint@9.27.0(jiti@2.4.2)) + version: 0.4.20(eslint@9.27.0(jiti@2.5.1)) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) + version: 6.2.0(webpack@5.101.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.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -1707,7 +1722,7 @@ importers: version: 0.8.5 file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) + version: 6.2.0(webpack@5.101.0) html-to-image: specifier: ^1.10.8 version: 1.11.11 @@ -1750,31 +1765,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.100.2) + version: 10.0.0(@babel/core@7.27.7)(webpack@5.101.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) + version: 7.1.2(webpack@5.101.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) + version: 5.0.0(webpack@5.101.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) + version: 4.0.0(webpack@5.101.0) ts-loader: specifier: ^9.4.1 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) + version: 5.101.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) + version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) + version: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) ../../workspaces/ballerina/record-creator: dependencies: @@ -1853,7 +1868,7 @@ importers: version: 2.4.1 eslint: specifier: ~9.26.0 - version: 9.26.0(jiti@2.4.2) + version: 9.26.0(jiti@2.5.1) react-scripts-ts: specifier: 3.1.0 version: 3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.28.0))(babel-runtime@6.26.0)(typescript@5.8.3) @@ -1911,7 +1926,7 @@ importers: devDependencies: '@storybook/react': specifier: ^6.3.7 - version: 6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.26.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.28.0)(@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) '@types/dagre': specifier: ~0.7.52 version: 0.7.53 @@ -1926,19 +1941,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.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + 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) copyfiles: specifier: ^2.4.1 version: 2.4.1 eslint: specifier: ~9.26.0 - version: 9.26.0(jiti@2.4.2) + version: 9.26.0(jiti@2.5.1) eslint-plugin-react-hooks: specifier: ~5.2.0 - version: 5.2.0(eslint@9.26.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.26.0(jiti@2.5.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.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)) + 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)) prettier: specifier: ~3.5.3 version: 3.5.3 @@ -2011,7 +2026,7 @@ importers: devDependencies: '@storybook/react': specifier: ^6.5.9 - version: 6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.28.0)(@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) '@types/classnames': specifier: ^2.2.9 version: 2.3.4 @@ -2119,7 +2134,7 @@ importers: version: 0.8.5 file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) + version: 6.2.0(webpack@5.101.0) html-to-image: specifier: ^1.11.11 version: 1.11.11 @@ -2168,31 +2183,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.100.2) + version: 10.0.0(@babel/core@7.27.7)(webpack@5.101.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) + version: 7.1.2(webpack@5.101.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) + version: 5.0.0(webpack@5.101.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) + version: 4.0.0(webpack@5.101.0) ts-loader: specifier: ^9.4.1 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) + version: 5.101.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) + version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) + version: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) ../../workspaces/ballerina/type-editor: dependencies: @@ -2274,7 +2289,7 @@ importers: version: 2.4.1 eslint: specifier: ~9.26.0 - version: 9.26.0(jiti@2.4.2) + version: 9.26.0(jiti@2.5.1) react-scripts-ts: specifier: 3.1.0 version: 3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.28.0))(babel-runtime@6.26.0)(typescript@5.8.3) @@ -2323,7 +2338,7 @@ importers: version: link:../../common-libs/playwright-vscode-tester copy-webpack-plugin: specifier: ^13.0.0 - version: 13.0.0(webpack@5.100.2) + version: 13.0.0(webpack@5.101.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 @@ -2341,16 +2356,16 @@ importers: version: 0.5.21 ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) typescript: specifier: 5.8.3 version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) + version: 5.101.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack@5.100.2) + version: 6.0.1(webpack@5.101.0) webpack-permissions-plugin: specifier: ^1.0.9 version: 1.0.10 @@ -2472,7 +2487,7 @@ importers: version: 1.9.0 copy-webpack-plugin: specifier: ^13.0.0 - version: 13.0.0(webpack@5.100.2) + version: 13.0.0(webpack@5.101.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 @@ -2484,10 +2499,10 @@ importers: version: 11.7.1 terser-webpack-plugin: specifier: ^5.3.10 - version: 5.3.14(webpack@5.100.2) + version: 5.3.14(webpack@5.101.0) ts-loader: specifier: ~9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) typescript: specifier: 5.8.3 version: 5.8.3 @@ -2496,10 +2511,10 @@ importers: version: 8.14.1(mocha@11.7.1)(typescript@5.8.3) webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) + version: 5.101.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack@5.100.2) + version: 6.0.1(webpack@5.101.0) webpack-permissions-plugin: specifier: ^1.0.9 version: 1.0.10 @@ -2514,7 +2529,7 @@ importers: version: 0.8.2 '@headlessui/react': specifier: ^2.2.4 - version: 2.2.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.2.6(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)) @@ -2614,10 +2629,10 @@ importers: version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) + version: 7.1.2(webpack@5.101.0) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) + version: 6.2.0(webpack@5.101.0) node-sass: specifier: ^9.0.0 version: 9.0.0 @@ -2629,34 +2644,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.100.2) + version: 8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.101.0) sass-loader: specifier: ^16.0.5 - version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2) + version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.101.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) + version: 5.0.0(webpack@5.101.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) + version: 4.0.0(webpack@5.101.0) tailwindcss: specifier: ^3.4.3 version: 3.4.17 ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) typescript: specifier: 5.8.3 version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) + version: 5.101.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) + version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) + version: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) ../../workspaces/common-libs/font-wso2-vscode: devDependencies: @@ -2714,10 +2729,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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + 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) '@typescript-eslint/parser': specifier: ~8.33.0 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) typescript: specifier: 5.8.3 version: 5.8.3 @@ -2766,7 +2781,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.28.0)(@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-dev-server@5.2.2(webpack@5.100.2))(webpack-hot-middleware@2.26.1) + version: 7.4.6(@babel/core@7.28.0)(@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-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1) '@types/react': specifier: 18.2.0 version: 18.2.0 @@ -2854,19 +2869,19 @@ importers: devDependencies: '@storybook/addon-docs': specifier: ^9.0.12 - version: 9.0.17(@types/react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + version: 9.0.18(@types/react@18.2.0)(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + version: 8.6.14(@types/react@18.2.0)(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) '@storybook/cli': specifier: ^9.0.12 - version: 9.0.17(@babel/preset-env@7.27.2(@babel/core@7.28.0))(@testing-library/dom@10.4.0)(prettier@3.5.3) + version: 9.0.18(@babel/preset-env@7.27.2(@babel/core@7.28.0))(@testing-library/dom@10.4.1)(prettier@3.5.3) '@storybook/react': specifier: ^9.0.12 - version: 9.0.17(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) + version: 9.0.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) '@storybook/react-vite': specifier: ^9.0.12 - version: 9.0.17(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.45.1)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) + version: 9.0.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.46.1)(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) '@types/lodash': specifier: ~4.17.16 version: 4.17.17 @@ -2899,7 +2914,7 @@ importers: version: 5.2.0(eslint@8.57.1) eslint-plugin-storybook: specifier: ^9.0.12 - version: 9.0.17(eslint@8.57.1)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) + version: 9.0.18(eslint@8.57.1)(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) gh-pages: specifier: ^6.3.0 version: 6.3.0 @@ -2914,7 +2929,7 @@ importers: version: 6.0.0(react@19.1.0) storybook: specifier: ^9.0.12 - version: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + version: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) typescript: specifier: 5.8.3 version: 5.8.3 @@ -2963,7 +2978,7 @@ importers: devDependencies: '@storybook/react': specifier: ^6.3.7 - version: 6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1) + version: 6.5.16(@babel/core@7.28.0)(@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) '@types/dagre': specifier: ~0.7.52 version: 0.7.53 @@ -3006,13 +3021,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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + 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) '@typescript-eslint/parser': specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) eslint: specifier: ^9.27.0 - version: 9.27.0(jiti@2.4.2) + version: 9.27.0(jiti@2.5.1) typescript: specifier: 5.8.3 version: 5.8.3 @@ -3115,34 +3130,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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + 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) '@typescript-eslint/parser': specifier: ~8.32.1 - version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.32.1(eslint@9.27.0(jiti@2.5.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.100.2) + version: 7.1.2(webpack@5.101.0) eslint: specifier: ^9.27.0 - version: 9.27.0(jiti@2.4.2) + version: 9.27.0(jiti@2.5.1) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.27.0(jiti@2.5.1)) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.20(eslint@9.27.0(jiti@2.4.2)) + version: 0.4.20(eslint@9.27.0(jiti@2.5.1)) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) + version: 6.2.0(webpack@5.101.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.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) ts-morph: specifier: ^22.0.0 version: 22.0.0 @@ -3228,10 +3243,10 @@ importers: version: 2.4.1 eslint-plugin-react-hooks: specifier: ~5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.27.0(jiti@2.5.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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)) + 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)) html-to-image: specifier: 1.11.11 version: 1.11.11 @@ -3313,13 +3328,13 @@ importers: version: 8.6.14(storybook@8.6.14(prettier@3.5.3)) '@testing-library/dom': specifier: ~10.4.0 - version: 10.4.0 + version: 10.4.1 '@testing-library/jest-dom': specifier: ~6.6.3 - version: 6.6.3 + version: 6.6.4 '@testing-library/react': specifier: ~16.3.0 - version: 16.3.0(@testing-library/dom@10.4.0)(@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: 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) '@types/deep-equal': specifier: ~1.0.4 version: 1.0.4 @@ -3340,7 +3355,7 @@ 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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + 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) babel-jest: specifier: 29.7.0 version: 29.7.0(@babel/core@7.27.7) @@ -3361,7 +3376,7 @@ importers: version: 29.7.0 react-test-renderer: specifier: ~19.1.0 - version: 19.1.0(react@18.2.0) + version: 19.1.1(react@18.2.0) storybook: specifier: ^8.6.14 version: 8.6.14(prettier@3.5.3) @@ -3481,7 +3496,7 @@ importers: version: 3.3.2 node-loader: specifier: ~2.1.0 - version: 2.1.0(webpack@5.100.2) + version: 2.1.0(webpack@5.101.0) portfinder: specifier: ^1.0.37 version: 1.0.37 @@ -3489,8 +3504,8 @@ importers: specifier: ^0.23.11 version: 0.23.11 tmp: - specifier: ~0.2.3 - version: 0.2.3 + specifier: ~0.2.4 + version: 0.2.4 to-json-schema: specifier: 0.2.5 version: 0.2.5 @@ -3548,10 +3563,10 @@ importers: version: 1.102.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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + 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) '@typescript-eslint/parser': specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) '@vscode/test-electron': specifier: ^2.5.2 version: 2.5.2 @@ -3569,7 +3584,7 @@ importers: version: 1.0.1 eslint: specifier: ^9.27.0 - version: 9.27.0(jiti@2.4.2) + version: 9.27.0(jiti@2.5.1) glob: specifier: ^11.0.2 version: 11.0.3 @@ -3584,7 +3599,7 @@ importers: version: 6.0.1 ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) ts-morph: specifier: ^26.0.0 version: 26.0.0 @@ -3593,10 +3608,10 @@ importers: version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@4.10.0) + version: 5.101.0(webpack-cli@4.10.0) webpack-cli: specifier: ^4.10.0 - version: 4.10.0(webpack@5.100.2) + version: 4.10.0(webpack@5.101.0) yaml: specifier: ~2.8.0 version: 2.8.0 @@ -3633,13 +3648,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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + 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) '@typescript-eslint/parser': specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3) eslint: specifier: ^9.27.0 - version: 9.27.0(jiti@2.4.2) + version: 9.27.0(jiti@2.5.1) typescript: specifier: 5.8.3 version: 5.8.3 @@ -3672,7 +3687,7 @@ importers: version: 1.52.0 '@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.17.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.100.2) + version: 0.6.1(@types/webpack@5.28.5(webpack-cli@5.1.4))(react-refresh@0.17.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.101.0) '@tanstack/query-core': specifier: ^5.76.0 version: 5.83.0 @@ -3796,19 +3811,19 @@ importers: version: 7.27.1(@babel/core@7.28.0) '@headlessui/react': specifier: ~2.2.4 - version: 2.2.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.2.6(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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + version: 8.6.14(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + version: 8.6.14(@types/react@18.2.0)(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + version: 8.6.14(react@18.2.0)(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4) + version: 8.6.14(@storybook/test@8.6.14(storybook@9.0.18(@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.0.18(@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 @@ -3829,19 +3844,19 @@ importers: version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) + version: 7.1.2(webpack@5.101.0) sass-loader: specifier: ^16.0.5 - version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2) + version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.101.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) + version: 5.0.0(webpack@5.101.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) + version: 4.0.0(webpack@5.101.0) ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) typescript: specifier: 5.8.3 version: 5.8.3 @@ -3850,13 +3865,13 @@ importers: version: 3.17.5 webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@5.1.4) + version: 5.101.0(webpack-cli@5.1.4) webpack-cli: specifier: ~5.1.4 - version: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2) + version: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.101.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@5.1.4)(webpack@5.100.2) + version: 5.2.2(webpack-cli@5.1.4)(webpack@5.101.0) yaml: specifier: ~2.8.0 version: 2.8.0 @@ -3868,7 +3883,7 @@ importers: version: 22.15.35 eslint: specifier: ~9.27.0 - version: 9.27.0(jiti@2.4.2) + version: 9.27.0(jiti@2.5.1) jsonix: specifier: ~3.0.0 version: 3.0.0 @@ -3884,13 +3899,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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + 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) eslint-plugin-react-hooks: specifier: ~5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) + version: 5.2.0(eslint@9.27.0(jiti@2.5.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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)) + 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)) husky: specifier: ^9.1.7 version: 9.1.7 @@ -3930,7 +3945,7 @@ importers: dependencies: '@aws-sdk/client-s3': specifier: ^3.817.0 - version: 3.850.0 + version: 3.855.0 '@vscode-logging/logger': specifier: ^2.0.0 version: 2.0.0 @@ -4027,7 +4042,7 @@ importers: version: 1.9.0 copy-webpack-plugin: specifier: ^13.0.0 - version: 13.0.0(webpack@5.100.2) + version: 13.0.0(webpack@5.101.0) copyfiles: specifier: ^2.4.1 version: 2.4.1 @@ -4039,10 +4054,10 @@ importers: version: 11.7.1 terser-webpack-plugin: specifier: ^5.3.14 - version: 5.3.14(webpack@5.100.2) + version: 5.3.14(webpack@5.101.0) ts-loader: specifier: ~9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) typescript: specifier: ^5.8.3 version: 5.8.3 @@ -4051,10 +4066,10 @@ importers: version: 8.14.1(mocha@11.7.1)(typescript@5.8.3) webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) + version: 5.101.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack@5.100.2) + version: 6.0.1(webpack@5.101.0) webpack-permissions-plugin: specifier: ^1.0.10 version: 1.0.10 @@ -4069,7 +4084,7 @@ importers: version: 0.8.2 '@headlessui/react': specifier: ^2.1.2 - version: 2.2.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.2.6(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)) @@ -4166,10 +4181,10 @@ importers: version: 2.4.1 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) + version: 7.1.2(webpack@5.101.0) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) + version: 6.2.0(webpack@5.101.0) node-sass: specifier: ^9.0.0 version: 9.0.0 @@ -4181,40 +4196,78 @@ 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.100.2) + version: 8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.101.0) sass-loader: specifier: ^16.0.5 - version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2) + version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.101.0) source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) + version: 5.0.0(webpack@5.101.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) + version: 4.0.0(webpack@5.101.0) tailwindcss: specifier: ^4.1.7 version: 4.1.11 ts-loader: specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) + version: 9.5.2(typescript@5.8.3)(webpack@5.101.0) typescript: specifier: 5.8.3 version: 5.8.3 webpack: specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) + version: 5.101.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) + version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) webpack-dev-server: specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) + version: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) packages: '@adobe/css-tools@4.4.3': resolution: {integrity: sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==} + '@ai-sdk/anthropic@1.2.12': + resolution: {integrity: sha512-YSzjlko7JvuiyQFmI9RN1tNZdEiZxc+6xld/0tq/VkJaHpEzGAb1yiNxxvmYVcjvfu/PcvCxAAYXmTYQQ63IHQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + + '@ai-sdk/openai@1.3.23': + resolution: {integrity: sha512-86U7rFp8yacUAOE/Jz8WbGcwMCqWvjK33wk5DXkfnAOEn3mx2r7tNSJdjukQFZbAK97VMXGPPHxF+aEARDXRXQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + + '@ai-sdk/provider-utils@2.2.8': + resolution: {integrity: sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.23.8 + + '@ai-sdk/provider@1.1.3': + resolution: {integrity: sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==} + engines: {node: '>=18'} + + '@ai-sdk/react@1.2.12': + resolution: {integrity: sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + zod: ^3.23.8 + peerDependenciesMeta: + zod: + optional: true + + '@ai-sdk/ui-utils@1.2.11': + resolution: {integrity: sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.23.8 + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -4254,44 +4307,44 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-s3@3.850.0': - resolution: {integrity: sha512-tX5bUfqiLOh6jtAlaiAuOUKFYh8KDG9k9zFLUdgGplC5TP47AYTreUEg+deCTHo4DD3YCvrLuyZ8tIDgKu7neQ==} + '@aws-sdk/client-s3@3.855.0': + resolution: {integrity: sha512-f8EP7ia+5LwrCLT/Etsw0LmZZMcz5kyBBK+96IJAKj3JNTB9zViGMDzasAwt/Vdo3eDnca7r4+XJ3U/Lw2TC3w==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-sso@3.848.0': - resolution: {integrity: sha512-mD+gOwoeZQvbecVLGoCmY6pS7kg02BHesbtIxUj+PeBqYoZV5uLvjUOmuGfw1SfoSobKvS11urxC9S7zxU/Maw==} + '@aws-sdk/client-sso@3.855.0': + resolution: {integrity: sha512-4gFvnn8oL9DeJp4fc5KoOB/v20eUuoYkElMCegnGA2AG1nPkf6igib16+Dt2xhoCmkA3cX5FET9gKI2hY7RiQw==} engines: {node: '>=18.0.0'} - '@aws-sdk/core@3.846.0': - resolution: {integrity: sha512-7CX0pM906r4WSS68fCTNMTtBCSkTtf3Wggssmx13gD40gcWEZXsU00KzPp1bYheNRyPlAq3rE22xt4wLPXbuxA==} + '@aws-sdk/core@3.855.0': + resolution: {integrity: sha512-viFAe3IB64xEFjl/OMw0af+tD+v8Ei09+0Fn69y+HoF5ESSJyNIZnj/U69OhpzdSCO65aathBNdYhG+AMbMLhw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-env@3.846.0': - resolution: {integrity: sha512-QuCQZET9enja7AWVISY+mpFrEIeHzvkx/JEEbHYzHhUkxcnC2Kq2c0bB7hDihGD0AZd3Xsm653hk1O97qu69zg==} + '@aws-sdk/credential-provider-env@3.855.0': + resolution: {integrity: sha512-2hKTkrb4RG+eXE+OpKW0ST75ti32ExtJlzK5TEDd+STVJBWTf6W6bxhP6GzfeyYQ5XGSUSI94X5eXhBOLdAJ6A==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-http@3.846.0': - resolution: {integrity: sha512-Jh1iKUuepdmtreMYozV2ePsPcOF5W9p3U4tWhi3v6nDvz0GsBjzjAROW+BW8XMz9vAD3I9R+8VC3/aq63p5nlw==} + '@aws-sdk/credential-provider-http@3.855.0': + resolution: {integrity: sha512-JxZ6VBpU9z6YQLhIDIC9wYojsgAGKmYaFQt0fBvwaeUF/P65kN8q+y/35tMFDPSiJ9XXu6tsJrgFvIldYt6+Zw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-ini@3.848.0': - resolution: {integrity: sha512-r6KWOG+En2xujuMhgZu7dzOZV3/M5U/5+PXrG8dLQ3rdPRB3vgp5tc56KMqLwm/EXKRzAOSuw/UE4HfNOAB8Hw==} + '@aws-sdk/credential-provider-ini@3.855.0': + resolution: {integrity: sha512-wbdQI1N9xU3bnFDzU9Iq4fqpJbgNq4sVvxdhx0YgBMir+cmAuHgjmAuNZIBKHbH3+23snySzDfY6hTAZeBkPag==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-node@3.848.0': - resolution: {integrity: sha512-AblNesOqdzrfyASBCo1xW3uweiSro4Kft9/htdxLeCVU1KVOnFWA5P937MNahViRmIQm2sPBCqL8ZG0u9lnh5g==} + '@aws-sdk/credential-provider-node@3.855.0': + resolution: {integrity: sha512-n6IH1wLrAJYb2JSN/hKzNU1h7UiqnxpI4m3ScTNZJmkpCub9Q+TVugnnWGdyRmszz5gsKim5n9AiNVXddtA/UQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-process@3.846.0': - resolution: {integrity: sha512-mEpwDYarJSH+CIXnnHN0QOe0MXI+HuPStD6gsv3z/7Q6ESl8KRWon3weFZCDnqpiJMUVavlDR0PPlAFg2MQoPg==} + '@aws-sdk/credential-provider-process@3.855.0': + resolution: {integrity: sha512-GmJ6eCB7TYicXKPIq+hxq9ZBJDn6fGPdH/ptgSj0MNKzmie8zqWKRYDri9cy3zLmz7+b7JHy1t158Z8kp7RsXQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-sso@3.848.0': - resolution: {integrity: sha512-pozlDXOwJZL0e7w+dqXLgzVDB7oCx4WvtY0sk6l4i07uFliWF/exupb6pIehFWvTUcOvn5aFTTqcQaEzAD5Wsg==} + '@aws-sdk/credential-provider-sso@3.855.0': + resolution: {integrity: sha512-oXI/YQdTj/9unzyOQM/OxAtd85U3oACleyVoldawl/n5NdY215sEGW94uEw1Jg20jIoRFYt++Fw0UDXMQhhNow==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-web-identity@3.848.0': - resolution: {integrity: sha512-D1fRpwPxtVDhcSc/D71exa2gYweV+ocp4D3brF0PgFd//JR3XahZ9W24rVnTQwYEcK9auiBZB89Ltv+WbWN8qw==} + '@aws-sdk/credential-provider-web-identity@3.855.0': + resolution: {integrity: sha512-x4BqqvqFc5aUxT9jNSm3yUiRkrQuXbdTMtshmG5/zzErASuLIixOmaPreqdb5MMqoyqdrNJSoL+u6YEfvOeB1Q==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-bucket-endpoint@3.840.0': @@ -4302,8 +4355,8 @@ packages: resolution: {integrity: sha512-iJg2r6FKsKKvdiU4oCOuCf7Ro/YE0Q2BT/QyEZN3/Rt8Nr4SAZiQOlcBXOCpGvuIKOEAhvDOUnW3aDHL01PdVw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.846.0': - resolution: {integrity: sha512-CdkeVfkwt3+bDLhmOwBxvkUf6oY9iUhvosaUnqkoPsOqIiUEN54yTGOnO8A0wLz6mMsZ6aBlfFrQhFnxt3c+yw==} + '@aws-sdk/middleware-flexible-checksums@3.855.0': + resolution: {integrity: sha512-IoLYv0rpOX7if/ecHXQkMV+cexW03DP6lm9j763j/3vGdUvs+gHaPs2q8LXC9UCsjEDCincEC/GKbCWMOPtTDA==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-host-header@3.840.0': @@ -4322,32 +4375,32 @@ packages: resolution: {integrity: sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-sdk-s3@3.846.0': - resolution: {integrity: sha512-jP9x+2Q87J5l8FOP+jlAd7vGLn0cC6G9QGmf386e5OslBPqxXKcl3RjqGLIOKKos2mVItY3ApP5xdXQx7jGTVA==} + '@aws-sdk/middleware-sdk-s3@3.855.0': + resolution: {integrity: sha512-X7HsCCaTQcbBGR78gUSYTUFbPoDvWE4tq54WKn+ZFQPFFHIA1/EsVlQc0svWvhLFe4/DG4dySuyRRUFlu+Zd5w==} engines: {node: '>=18.0.0'} '@aws-sdk/middleware-ssec@3.840.0': resolution: {integrity: sha512-CBZP9t1QbjDFGOrtnUEHL1oAvmnCUUm7p0aPNbIdSzNtH42TNKjPRN3TuEIJDGjkrqpL3MXyDSmNayDcw/XW7Q==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-user-agent@3.848.0': - resolution: {integrity: sha512-rjMuqSWJEf169/ByxvBqfdei1iaduAnfolTshsZxwcmLIUtbYrFUmts0HrLQqsAG8feGPpDLHA272oPl+NTCCA==} + '@aws-sdk/middleware-user-agent@3.855.0': + resolution: {integrity: sha512-jYi5ZI+xy0/Xj7fCeSFMNWab2APnwqYhMbZEb71P5YTyYFgIGhPUOXkSxGRX5Y+aSifG3Kw+/OYVE0AKJioPbQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/nested-clients@3.848.0': - resolution: {integrity: sha512-joLsyyo9u61jnZuyYzo1z7kmS7VgWRAkzSGESVzQHfOA1H2PYeUFek6vLT4+c9xMGrX/Z6B0tkRdzfdOPiatLg==} + '@aws-sdk/nested-clients@3.855.0': + resolution: {integrity: sha512-l/ZpcSCYQ+cJsY9NgsEZjn1RR71JQwOMCGJUqAz+dxg7qovmy2ckuHzknBr3W5N6rNcVESbhjzcZKCmu2UaeFQ==} engines: {node: '>=18.0.0'} '@aws-sdk/region-config-resolver@3.840.0': resolution: {integrity: sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==} engines: {node: '>=18.0.0'} - '@aws-sdk/signature-v4-multi-region@3.846.0': - resolution: {integrity: sha512-ZMfIMxUljqZzPJGOcraC6erwq/z1puNMU35cO1a/WdhB+LdYknMn1lr7SJuH754QwNzzIlZbEgg4hoHw50+DpQ==} + '@aws-sdk/signature-v4-multi-region@3.855.0': + resolution: {integrity: sha512-Vj7QfuGUZGLM4kQ5dVodNAo3HXlPk53Ff9UPaRaGF8BQQM8j00W2ydnraUKeHvjt/yzRdG4o/giWukqH7wCiTw==} engines: {node: '>=18.0.0'} - '@aws-sdk/token-providers@3.848.0': - resolution: {integrity: sha512-oNPyM4+Di2Umu0JJRFSxDcKQ35+Chl/rAwD47/bS0cDPI8yrao83mLXLeDqpRPHyQW4sXlP763FZcuAibC0+mg==} + '@aws-sdk/token-providers@3.855.0': + resolution: {integrity: sha512-Ieh86MA+lOtvLAuCsT/gX5PSHkfmE7AnItT2ZFZddvu+s4LWWjDfAF0ktsR0H6166P7yAWTovfbEtORB3XzoTQ==} engines: {node: '>=18.0.0'} '@aws-sdk/types@3.840.0': @@ -4369,8 +4422,8 @@ packages: '@aws-sdk/util-user-agent-browser@3.840.0': resolution: {integrity: sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==} - '@aws-sdk/util-user-agent-node@3.848.0': - resolution: {integrity: sha512-Zz1ft9NiLqbzNj/M0jVNxaoxI2F4tGXN0ZbZIj+KJ+PbJo+w5+Jo6d0UDAtbj3AEd79pjcCaP4OA9NTVzItUdw==} + '@aws-sdk/util-user-agent-node@3.855.0': + resolution: {integrity: sha512-leDOlnChk+0qRYtc70X1KZCe/TAFNHUGtvqLE6bqdr08V446hYhmtHT9LXnZtflzbIb9zpgrzSXXigWz3GH6uA==} engines: {node: '>=18.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -4420,16 +4473,16 @@ packages: resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==} engines: {node: '>=20.0.0'} - '@azure/msal-browser@4.15.0': - resolution: {integrity: sha512-+AIGTvpVz+FIx5CsM1y+nW0r/qOb/ChRdM8/Cbp+jKWC0Wdw4ldnwPdYOBi5NaALUQnYITirD9XMZX7LdklEzQ==} + '@azure/msal-browser@4.16.0': + resolution: {integrity: sha512-yF8gqyq7tVnYftnrWaNaxWpqhGQXoXpDfwBtL7UCGlIbDMQ1PUJF/T2xCL6NyDNHoO70qp1xU8GjjYTyNIefkw==} engines: {node: '>=0.8.0'} - '@azure/msal-common@15.8.1': - resolution: {integrity: sha512-ltIlFK5VxeJ5BurE25OsJIfcx1Q3H/IZg2LjV9d4vmH+5t4c1UCyRQ/HgKLgXuCZShs7qfc/TC95GYZfsUsJUQ==} + '@azure/msal-common@15.9.0': + resolution: {integrity: sha512-lbz/D+C9ixUG3hiZzBLjU79a0+5ZXCorjel3mwXluisKNH0/rOS/ajm8yi4yI9RP5Uc70CAcs9Ipd0051Oh/kA==} engines: {node: '>=0.8.0'} - '@azure/msal-node@3.6.3': - resolution: {integrity: sha512-95wjsKGyUcAd5tFmQBo5Ug/kOj+hFh/8FsXuxluEvdfbgg6xCimhSP9qnyq6+xIg78/jREkBD1/BSqd7NIDDYQ==} + '@azure/msal-node@3.6.4': + resolution: {integrity: sha512-jMeut9UQugcmq7aPWWlJKhJIse4DQ594zc/JaP6BIxg55XaX3aM/jcPuIQ4ryHnI4QSf03wUspy/uqAvjWKbOg==} engines: {node: '>=16'} '@babel/code-frame@7.27.1': @@ -4552,8 +4605,8 @@ packages: resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.6': - resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + '@babel/helpers@7.28.2': + resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==} engines: {node: '>=6.9.0'} '@babel/parser@7.28.0': @@ -5165,12 +5218,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime-corejs3@7.28.0': - resolution: {integrity: sha512-nlIXnSqLcBij8K8TtkxbBJgfzfvi75V1pAKSM7dUXejGw12vJAqez74jZrHTsJ3Z+Aczc5Q/6JgNjKRMsVU44g==} + '@babel/runtime-corejs3@7.28.2': + resolution: {integrity: sha512-FVFaVs2/dZgD3Y9ZD+AKNKjyGKzwu0C54laAXWUXgLcVXcCX6YZ6GhK2cp7FogSN2OA0Fu+QT8dP3FUdo9ShSQ==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.27.6': - resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} + '@babel/runtime@7.28.2': + resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': @@ -5181,8 +5234,8 @@ packages: resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.1': - resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} '@base2/pretty-print-object@1.0.1': @@ -5698,8 +5751,8 @@ packages: react: ^16 || ^17 || ^18 react-dom: ^16 || ^17 || ^18 - '@headlessui/react@2.2.4': - resolution: {integrity: sha512-lz+OGcAH1dK93rgSMzXmm1qKOJkBUqZf1L4M8TWLNplftQD3IkoEDdUFNfAn4ylsN6WOTVtWaLmvmaHOUk1dTA==} + '@headlessui/react@2.2.6': + resolution: {integrity: sha512-gN5CT8Kf4IWwL04GQOjZ/ZnHMFoeFHZmVSFoDKeTmbtmy9oFqQqJMthdBiO3Pl5LXk2w03fGFLpQV6EW84vjjQ==} engines: {node: '>=10'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -5919,14 +5972,14 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/json-pack@1.2.0': - resolution: {integrity: sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==} + '@jsonjoy.com/json-pack@1.4.0': + resolution: {integrity: sha512-Akn8XZqN3xO9YGcgvIiTauBBXTP92QSvw6EcGha+p5nm7brhbwvev5gw4fi+ouLGrBpfPpb72+S5pxl4mkMIGQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/util@1.6.0': - resolution: {integrity: sha512-sw/RMbehRhN68WRtcKCpQOPfnH6lLP4GJfqzi3iYej8tnzpZUDr6UkZYJjcjjC0FWEJOJbyM3PTIwxucUmDG2A==} + '@jsonjoy.com/util@1.8.0': + resolution: {integrity: sha512-HeR0JQNEdBozt+FrfyM5T0X3R+fIN0D+BRDkxPP5o41fTWzHfeZEqtK16aTW8haU+h+SG7XYq9PP5kobvOmkSA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -6023,8 +6076,8 @@ packages: '@microsoft/fast-web-utilities@5.4.1': resolution: {integrity: sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==} - '@modelcontextprotocol/sdk@1.16.0': - resolution: {integrity: sha512-8ofX7gkZcLj9H9rSd50mCgm3SSF8C7XoclxJuLoV0Cz3rEQ1tv9MZRYYvJtm9n1BiEQQMzSmE/w2AEkNacLYfg==} + '@modelcontextprotocol/sdk@1.17.0': + resolution: {integrity: sha512-qFfbWFA7r1Sd8D697L7GkTd36yqDuTkvz0KfOGkgXR8EUhQn3/EDNIR/qUdQNMT8IjmasBvHWuXeisxtXTQT2g==} engines: {node: '>=18'} '@monaco-editor/loader@1.5.0': @@ -6121,6 +6174,10 @@ packages: resolution: {integrity: sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==} engines: {node: '>=8.0'} + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -6918,26 +6975,26 @@ packages: '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} - '@react-aria/focus@3.20.5': - resolution: {integrity: sha512-JpFtXmWQ0Oca7FcvkqgjSyo6xEP7v3oQOLUId6o0xTvm4AD5W0mU2r3lYrbhsJ+XxdUUX4AVR5473sZZ85kU4A==} + '@react-aria/focus@3.21.0': + resolution: {integrity: sha512-7NEGtTPsBy52EZ/ToVKCu0HSelE3kq9qeis+2eEq90XSuJOMaDHUQrA7RC2Y89tlEwQB31bud/kKRi9Qme1dkA==} 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.3': - resolution: {integrity: sha512-J1bhlrNtjPS/fe5uJQ+0c7/jiXniwa4RQlP+Emjfc/iuqpW2RhbF9ou5vROcLzWIyaW8tVMZ468J68rAs/aZ5A==} + '@react-aria/interactions@3.25.4': + resolution: {integrity: sha512-HBQMxgUPHrW8V63u9uGgBymkMfj6vdWbB0GgUJY49K9mBKMsypcHeWkWM6+bF7kxRO728/IK8bWDV6whDbqjHg==} 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/ssr@3.9.9': - resolution: {integrity: sha512-2P5thfjfPy/np18e5wD4WPt8ydNXhij1jwA8oehxZTFqlgVMGXzcWKxTb4RtJrLFsqPO7RUQTiY8QJk0M4Vy2g==} + '@react-aria/ssr@3.9.10': + resolution: {integrity: sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==} engines: {node: '>= 12'} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-aria/utils@3.29.1': - resolution: {integrity: sha512-yXMFVJ73rbQ/yYE/49n5Uidjw7kh192WNN9PNQGV0Xoc7EJUlSOxqhnpHmYTyO0EotJ8fdM1fMH8durHjUSI8g==} + '@react-aria/utils@3.30.0': + resolution: {integrity: sha512-ydA6y5G1+gbem3Va2nczj/0G0W7/jUVo/cbN10WA5IizzWIwMP5qhFr7macgbKfHMkZ+YZC3oXnt2NNre5odKw==} 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 @@ -6954,13 +7011,13 @@ packages: '@react-stately/flags@3.1.2': resolution: {integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==} - '@react-stately/utils@3.10.7': - resolution: {integrity: sha512-cWvjGAocvy4abO9zbr6PW6taHgF24Mwy/LbQ4TC4Aq3tKdKDntxyD+sh7AkSRfJRT2ccMVaHVv2+FfHThd3PKQ==} + '@react-stately/utils@3.10.8': + resolution: {integrity: sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-types/shared@3.30.0': - resolution: {integrity: sha512-COIazDAx1ncDg046cTJ8SFYsX8aS3lB/08LDnbkH/SkdYrFPWDlXMrO/sUam8j1WWM+PJ+4d1mj7tODIKNiFog==} + '@react-types/shared@3.31.0': + resolution: {integrity: sha512-ua5U6V66gDcbLZe4P2QeyNgPp4YWD1ymGA6j3n+s8CGExtrCPe64v+g4mvpT8Bnb985R96e4zFT61+m0YCwqMg==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 @@ -7058,103 +7115,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.45.1': - resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==} + '@rollup/rollup-android-arm-eabi@4.46.1': + resolution: {integrity: sha512-oENme6QxtLCqjChRUUo3S6X8hjCXnWmJWnedD7VbGML5GUtaOtAyx+fEEXnBXVf0CBZApMQU0Idwi0FmyxzQhw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.45.1': - resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==} + '@rollup/rollup-android-arm64@4.46.1': + resolution: {integrity: sha512-OikvNT3qYTl9+4qQ9Bpn6+XHM+ogtFadRLuT2EXiFQMiNkXFLQfNVppi5o28wvYdHL2s3fM0D/MZJ8UkNFZWsw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.45.1': - resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==} + '@rollup/rollup-darwin-arm64@4.46.1': + resolution: {integrity: sha512-EFYNNGij2WllnzljQDQnlFTXzSJw87cpAs4TVBAWLdkvic5Uh5tISrIL6NRcxoh/b2EFBG/TK8hgRrGx94zD4A==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.45.1': - resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==} + '@rollup/rollup-darwin-x64@4.46.1': + resolution: {integrity: sha512-ZaNH06O1KeTug9WI2+GRBE5Ujt9kZw4a1+OIwnBHal92I8PxSsl5KpsrPvthRynkhMck4XPdvY0z26Cym/b7oA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.45.1': - resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==} + '@rollup/rollup-freebsd-arm64@4.46.1': + resolution: {integrity: sha512-n4SLVebZP8uUlJ2r04+g2U/xFeiQlw09Me5UFqny8HGbARl503LNH5CqFTb5U5jNxTouhRjai6qPT0CR5c/Iig==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.45.1': - resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==} + '@rollup/rollup-freebsd-x64@4.46.1': + resolution: {integrity: sha512-8vu9c02F16heTqpvo3yeiu7Vi1REDEC/yES/dIfq3tSXe6mLndiwvYr3AAvd1tMNUqE9yeGYa5w7PRbI5QUV+w==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.45.1': - resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==} + '@rollup/rollup-linux-arm-gnueabihf@4.46.1': + resolution: {integrity: sha512-K4ncpWl7sQuyp6rWiGUvb6Q18ba8mzM0rjWJ5JgYKlIXAau1db7hZnR0ldJvqKWWJDxqzSLwGUhA4jp+KqgDtQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.45.1': - resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==} + '@rollup/rollup-linux-arm-musleabihf@4.46.1': + resolution: {integrity: sha512-YykPnXsjUjmXE6j6k2QBBGAn1YsJUix7pYaPLK3RVE0bQL2jfdbfykPxfF8AgBlqtYbfEnYHmLXNa6QETjdOjQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.45.1': - resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==} + '@rollup/rollup-linux-arm64-gnu@4.46.1': + resolution: {integrity: sha512-kKvqBGbZ8i9pCGW3a1FH3HNIVg49dXXTsChGFsHGXQaVJPLA4f/O+XmTxfklhccxdF5FefUn2hvkoGJH0ScWOA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.45.1': - resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==} + '@rollup/rollup-linux-arm64-musl@4.46.1': + resolution: {integrity: sha512-zzX5nTw1N1plmqC9RGC9vZHFuiM7ZP7oSWQGqpbmfjK7p947D518cVK1/MQudsBdcD84t6k70WNczJOct6+hdg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.45.1': - resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==} + '@rollup/rollup-linux-loongarch64-gnu@4.46.1': + resolution: {integrity: sha512-O8CwgSBo6ewPpktFfSDgB6SJN9XDcPSvuwxfejiddbIC/hn9Tg6Ai0f0eYDf3XvB/+PIWzOQL+7+TZoB8p9Yuw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': - resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==} + '@rollup/rollup-linux-ppc64-gnu@4.46.1': + resolution: {integrity: sha512-JnCfFVEKeq6G3h3z8e60kAp8Rd7QVnWCtPm7cxx+5OtP80g/3nmPtfdCXbVl063e3KsRnGSKDHUQMydmzc/wBA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.45.1': - resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==} + '@rollup/rollup-linux-riscv64-gnu@4.46.1': + resolution: {integrity: sha512-dVxuDqS237eQXkbYzQQfdf/njgeNw6LZuVyEdUaWwRpKHhsLI+y4H/NJV8xJGU19vnOJCVwaBFgr936FHOnJsQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.45.1': - resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==} + '@rollup/rollup-linux-riscv64-musl@4.46.1': + resolution: {integrity: sha512-CvvgNl2hrZrTR9jXK1ye0Go0HQRT6ohQdDfWR47/KFKiLd5oN5T14jRdUVGF4tnsN8y9oSfMOqH6RuHh+ck8+w==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.45.1': - resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==} + '@rollup/rollup-linux-s390x-gnu@4.46.1': + resolution: {integrity: sha512-x7ANt2VOg2565oGHJ6rIuuAon+A8sfe1IeUx25IKqi49OjSr/K3awoNqr9gCwGEJo9OuXlOn+H2p1VJKx1psxA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.45.1': - resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==} + '@rollup/rollup-linux-x64-gnu@4.46.1': + resolution: {integrity: sha512-9OADZYryz/7E8/qt0vnaHQgmia2Y0wrjSSn1V/uL+zw/i7NUhxbX4cHXdEQ7dnJgzYDS81d8+tf6nbIdRFZQoQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.45.1': - resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==} + '@rollup/rollup-linux-x64-musl@4.46.1': + resolution: {integrity: sha512-NuvSCbXEKY+NGWHyivzbjSVJi68Xfq1VnIvGmsuXs6TCtveeoDRKutI5vf2ntmNnVq64Q4zInet0UDQ+yMB6tA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.45.1': - resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==} + '@rollup/rollup-win32-arm64-msvc@4.46.1': + resolution: {integrity: sha512-mWz+6FSRb82xuUMMV1X3NGiaPFqbLN9aIueHleTZCc46cJvwTlvIh7reQLk4p97dv0nddyewBhwzryBHH7wtPw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.45.1': - resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==} + '@rollup/rollup-win32-ia32-msvc@4.46.1': + resolution: {integrity: sha512-7Thzy9TMXDw9AU4f4vsLNBxh7/VOKuXi73VH3d/kHGr0tZ3x/ewgL9uC7ojUKmH1/zvmZe2tLapYcZllk3SO8Q==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.45.1': - resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==} + '@rollup/rollup-win32-x64-msvc@4.46.1': + resolution: {integrity: sha512-7GVB4luhFmGUNXXJhH2jJwZCFB3pIOixv2E3s17GQHBFUOQaISlt7aGcQgqvCaDSxTZJUzlK/QJ1FN8S94MrzQ==} cpu: [x64] os: [win32] @@ -7287,8 +7344,8 @@ packages: resolution: {integrity: sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==} engines: {node: '>=18.0.0'} - '@smithy/core@3.7.1': - resolution: {integrity: sha512-ExRCsHnXFtBPnM7MkfKBPcBBdHw1h/QS/cbNw4ho95qnyNHvnpmGbR39MIAv9KggTr5qSPxRSEL+hRXlyGyGQw==} + '@smithy/core@3.7.2': + resolution: {integrity: sha512-JoLw59sT5Bm8SAjFCYZyuCGxK8y3vovmoVbZWLDPTH5XpPEIwpFd9m90jjVMwoypDuB/SdVgje5Y4T7w50lJaw==} engines: {node: '>=18.0.0'} '@smithy/credential-provider-imds@4.0.6': @@ -7351,12 +7408,12 @@ packages: resolution: {integrity: sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.1.16': - resolution: {integrity: sha512-plpa50PIGLqzMR2ANKAw2yOW5YKS626KYKqae3atwucbz4Ve4uQ9K9BEZxDLIFmCu7hKLcrq2zmj4a+PfmUV5w==} + '@smithy/middleware-endpoint@4.1.17': + resolution: {integrity: sha512-S3hSGLKmHG1m35p/MObQCBCdRsrpbPU8B129BVzRqRfDvQqPMQ14iO4LyRw+7LNizYc605COYAcjqgawqi+6jA==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.1.17': - resolution: {integrity: sha512-gsCimeG6BApj0SBecwa1Be+Z+JOJe46iy3B3m3A8jKJHf7eIihP76Is4LwLrbJ1ygoS7Vg73lfqzejmLOrazUA==} + '@smithy/middleware-retry@4.1.18': + resolution: {integrity: sha512-bYLZ4DkoxSsPxpdmeapvAKy7rM5+25gR7PGxq2iMiecmbrRGBHj9s75N74Ylg+aBiw9i5jIowC/cLU2NR0qH8w==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.0.8': @@ -7403,8 +7460,8 @@ packages: resolution: {integrity: sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.4.8': - resolution: {integrity: sha512-pcW691/lx7V54gE+dDGC26nxz8nrvnvRSCJaIYD6XLPpOInEZeKdV/SpSux+wqeQ4Ine7LJQu8uxMvobTIBK0w==} + '@smithy/smithy-client@4.4.9': + resolution: {integrity: sha512-mbMg8mIUAWwMmb74LoYiArP04zWElPzDoA1jVOp3or0cjlDMgoS6WTC3QXK0Vxoc9I4zdrX0tq6qsOmaIoTWEQ==} engines: {node: '>=18.0.0'} '@smithy/types@4.3.1': @@ -7439,12 +7496,12 @@ packages: resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.0.24': - resolution: {integrity: sha512-UkQNgaQ+bidw1MgdgPO1z1k95W/v8Ej/5o/T/Is8PiVUYPspl/ZxV6WO/8DrzZQu5ULnmpB9CDdMSRwgRc21AA==} + '@smithy/util-defaults-mode-browser@4.0.25': + resolution: {integrity: sha512-pxEWsxIsOPLfKNXvpgFHBGFC3pKYKUFhrud1kyooO9CJai6aaKDHfT10Mi5iiipPXN/JhKAu3qX9o75+X85OdQ==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.0.24': - resolution: {integrity: sha512-phvGi/15Z4MpuQibTLOYIumvLdXb+XIJu8TA55voGgboln85jytA3wiD7CkUE8SNcWqkkb+uptZKPiuFouX/7g==} + '@smithy/util-defaults-mode-node@4.0.25': + resolution: {integrity: sha512-+w4n4hKFayeCyELZLfsSQG5mCC3TwSkmRHv4+el5CzFU8ToQpYGhpV7mrRzqlwKkntlPilT1HJy1TVeEvEjWOQ==} engines: {node: '>=18.0.0'} '@smithy/util-endpoints@3.0.6': @@ -7592,10 +7649,10 @@ packages: peerDependencies: storybook: ^8.6.14 - '@storybook/addon-docs@9.0.17': - resolution: {integrity: sha512-LOX/kKgQGnyulrqZHsvf77+ZoH/nSUaplGr5hvZglW/U6ak6fO9seJyXAzVKEnC6p+F8n02kFBZbi3s+znQhSg==} + '@storybook/addon-docs@9.0.18': + resolution: {integrity: sha512-1mLhaRDx8s1JAF51o56OmwMnIsg4BOQJ8cn+4wbMjh14pDFALrovlFl/BpAXnV1VaZqHjCB4ZWuP+y5CwXEpeQ==} peerDependencies: - storybook: ^9.0.17 + storybook: ^9.0.18 '@storybook/addon-essentials@6.5.16': resolution: {integrity: sha512-TeoMr6tEit4Pe91GH6f8g/oar1P4M0JL9S6oMcFxxrhhtOGO7XkWD5EnfyCx272Ok2VYfE58FNBTGPNBVIqYKQ==} @@ -7861,10 +7918,10 @@ packages: '@storybook/builder-manager@7.6.20': resolution: {integrity: sha512-e2GzpjLaw6CM/XSmc4qJRzBF8GOoOyotyu3JrSPTYOt4RD8kjUsK4QlismQM1DQRu8i39aIexxmRbiJyD74xzQ==} - '@storybook/builder-vite@9.0.17': - resolution: {integrity: sha512-lyuvgGhb0NaVk1tdB4xwzky6+YXQfxlxfNQqENYZ9uYQZdPfErMa4ZTXVQTV+CQHAa2NL+p/dG2JPAeu39e9UA==} + '@storybook/builder-vite@9.0.18': + resolution: {integrity: sha512-lfbrozA6UPVizDrgbPEe04WMtxIraESwUkmwW3+Lxh8rKEUj5cXngcrJUW+meQNNaggdZZWEqeEtweuaLIR+Hg==} peerDependencies: - storybook: ^9.0.17 + storybook: ^9.0.18 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 '@storybook/builder-webpack4@6.5.16': @@ -7925,8 +7982,8 @@ packages: resolution: {integrity: sha512-ZlP+BJyqg7HlnXf7ypjG2CKMI/KVOn03jFIiClItE/jQfgR6kRFgtjRU7uajh427HHfjv9DRiur8nBzuO7vapA==} hasBin: true - '@storybook/cli@9.0.17': - resolution: {integrity: sha512-e/eFng34IiEGtyqxtwgG+wQeQf3h41XIf5GKNI0mEUwSRRdqYg6m2MGolF41miZ681x35QnABfoh02R5M02OMQ==} + '@storybook/cli@9.0.18': + resolution: {integrity: sha512-C+w8Kr06HOfF1zdok98FQP5JIhFjmDFeEvWwpIpg/RKW1ATQj9fXQ6Wk2QWbo1Cq4WDFG2DeVjlBmQXE2PMbUA==} hasBin: true '@storybook/client-api@6.5.16': @@ -7950,8 +8007,8 @@ packages: '@storybook/codemod@7.6.20': resolution: {integrity: sha512-8vmSsksO4XukNw0TmqylPmk7PxnfNfE21YsxFa7mnEBmEKQcZCQsNil4ZgWfG0IzdhTfhglAN4r++Ew0WE+PYA==} - '@storybook/codemod@9.0.17': - resolution: {integrity: sha512-mTtj4avQS3Y5ROBbIs4srCBbu8Fqpq5oVLwzNvwXysAFpWX/FWccRQ7VM+2UQE906qk3SA59HjI8s9JlcmWvcg==} + '@storybook/codemod@9.0.18': + resolution: {integrity: sha512-Obk26MVkSK9z+aX8hiYI5O+buA3W0CnDcgY+92T0GwM4Ia8W8jdFDv2hxv3CJJxNyu/cLJW6bgxItWwTIKHLUg==} '@storybook/components@6.5.16': resolution: {integrity: sha512-LzBOFJKITLtDcbW9jXl0/PaG+4xAz25PK8JxPZpIALbmOpYWOAPcO6V9C2heX6e6NgWFMUxjplkULEk9RCQMNA==} @@ -8069,10 +8126,10 @@ packages: peerDependencies: storybook: ^8.6.14 - '@storybook/csf-plugin@9.0.17': - resolution: {integrity: sha512-6Q4eo1ObrLlsnB6bIt6T8+45XAb4to2pQGNrI7QPkLQRLrZinrJcNbLY7AGkyIoCOEsEbq08n09/nClQUbu8HA==} + '@storybook/csf-plugin@9.0.18': + resolution: {integrity: sha512-MQ3WwXnMua5sX0uYyuO7dC5WOWuJCLqf8CsOn3zQ2ptNoH6hD7DFx5ZOa1uD6VxIuJ3LkA+YqfSRBncomJoRnA==} peerDependencies: - storybook: ^9.0.17 + storybook: ^9.0.18 '@storybook/csf-tools@6.5.16': resolution: {integrity: sha512-+WD4sH/OwAfXZX3IN6/LOZ9D9iGEFcN+Vvgv9wOsLRgsAZ10DG/NK6c1unXKDM/ogJtJYccNI8Hd+qNE/GFV6A==} @@ -8244,20 +8301,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.0.17': - resolution: {integrity: sha512-ak/x/m6MDDxdE6rCDymTltaiQF3oiKrPHSwfM+YPgQR6MVmzTTs4+qaPfeev7FZEHq23IkfDMTmSTTJtX7Vs9A==} + '@storybook/react-dom-shim@9.0.18': + resolution: {integrity: sha512-qGR/d9x9qWRRxITaBVQkMnb73kwOm+N8fkbZRxc7U4lxupXRvkMIDh247nn71SYVBnvbh6//AL7P6ghiPWZYjA==} 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.0.17 + storybook: ^9.0.18 - '@storybook/react-vite@9.0.17': - resolution: {integrity: sha512-wx1yKScni4ifOC/ccqpnnpceQbyF2xto+jHGsyua+M4UUCQdS2NYPDR8JFWp1YvBhVt2cQiD6SAltVGM9QLGnQ==} + '@storybook/react-vite@9.0.18': + resolution: {integrity: sha512-dHzUoeY0/S35TvSYxCkPuBlNQZx4Zj9QDhAZ0qdv+nSll++uPgqSe2y2vF+2p+XVYhjDn+YX5LORv00YtuQezg==} 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.0.17 + storybook: ^9.0.18 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 '@storybook/react-webpack5@7.4.6': @@ -8340,13 +8397,13 @@ packages: typescript: optional: true - '@storybook/react@9.0.17': - resolution: {integrity: sha512-wssao+uXg72OHtEJdQmmQJGdX90x/aU/6avoP3fgVgepWdZXVgciS9mnqHjKRF/vP+vPOlNQcJjojF/zTtq5qg==} + '@storybook/react@9.0.18': + resolution: {integrity: sha512-CCH6Vj/O6I07PrhCHxc1pvCWYMfZhRzK7CVHAtrBP9xxnYA7OoXhM2wymuDogml5HW1BKtyVMeQ3oWZXFNgDXQ==} 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.0.17 + storybook: ^9.0.18 typescript: '>= 4.9.x' peerDependenciesMeta: typescript: @@ -8522,68 +8579,68 @@ packages: resolution: {integrity: sha512-qMx1nOrzoB+PF+pzb26Q4Tc2sOlrx9Ba2UBNX9hB31Omrq+QoZ2Gly0KLrQWw4Of1AQ4J9lnD+XOdwOdcdXqqw==} engines: {node: '>=12.20.0'} - '@swc/core-darwin-arm64@1.13.1': - resolution: {integrity: sha512-zO6SW/jSMTUORPm6dUZFPUwf+EFWZsaXWMGXadRG6akCofYpoQb8pcY2QZkVr43z8TMka6BtXpyoD/DJ0iOPHQ==} + '@swc/core-darwin-arm64@1.13.3': + resolution: {integrity: sha512-ux0Ws4pSpBTqbDS9GlVP354MekB1DwYlbxXU3VhnDr4GBcCOimpocx62x7cFJkSpEBF8bmX8+/TTCGKh4PbyXw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.13.1': - resolution: {integrity: sha512-8RjaTZYxrlYKE5PgzZYWSOT4mAsyhIuh30Nu4dnn/2r0Ef68iNCbvX4ynGnFMhOIhqunjQbJf+mJKpwTwdHXhw==} + '@swc/core-darwin-x64@1.13.3': + resolution: {integrity: sha512-p0X6yhxmNUOMZrbeZ3ZNsPige8lSlSe1llllXvpCLkKKxN/k5vZt1sULoq6Nj4eQ7KeHQVm81/+AwKZyf/e0TA==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.13.1': - resolution: {integrity: sha512-jEqK6pECs2m4BpL2JA/4CCkq04p6iFOEtVNXTisO+lJ3zwmxlnIEm9UfJZG6VSu8GS9MHRKGB0ieZ1tEdN1qDA==} + '@swc/core-linux-arm-gnueabihf@1.13.3': + resolution: {integrity: sha512-OmDoiexL2fVWvQTCtoh0xHMyEkZweQAlh4dRyvl8ugqIPEVARSYtaj55TBMUJIP44mSUOJ5tytjzhn2KFxFcBA==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.13.1': - resolution: {integrity: sha512-PbkuIOYXO/gQbWQ7NnYIwm59ygNqmUcF8LBeoKvxhx1VtOwE+9KiTfoplOikkPLhMiTzKsd8qentTslbITIg+Q==} + '@swc/core-linux-arm64-gnu@1.13.3': + resolution: {integrity: sha512-STfKku3QfnuUj6k3g9ld4vwhtgCGYIFQmsGPPgT9MK/dI3Lwnpe5Gs5t1inoUIoGNP8sIOLlBB4HV4MmBjQuhw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.13.1': - resolution: {integrity: sha512-JaqFdBCarIBKiMu5bbAp+kWPMNGg97ej+7KzbKOzWP5pRptqKi86kCDZT3WmjPe8hNG6dvBwbm7Y8JNry5LebQ==} + '@swc/core-linux-arm64-musl@1.13.3': + resolution: {integrity: sha512-bc+CXYlFc1t8pv9yZJGus372ldzOVscBl7encUBlU1m/Sig0+NDJLz6cXXRcFyl6ABNOApWeR4Yl7iUWx6C8og==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.13.1': - resolution: {integrity: sha512-t4cLkku10YECDaakWUH0452WJHIZtrLPRwezt6BdoMntVMwNjvXRX7C8bGuYcKC3YxRW7enZKFpozLhQIQ37oA==} + '@swc/core-linux-x64-gnu@1.13.3': + resolution: {integrity: sha512-dFXoa0TEhohrKcxn/54YKs1iwNeW6tUkHJgXW33H381SvjKFUV53WR231jh1sWVJETjA3vsAwxKwR23s7UCmUA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.13.1': - resolution: {integrity: sha512-fSMwZOaG+3ukUucbEbzz9GhzGhUhXoCPqHe9qW0/Vc2IZRp538xalygKyZynYweH5d9EHux1aj3+IO8/xBaoiA==} + '@swc/core-linux-x64-musl@1.13.3': + resolution: {integrity: sha512-ieyjisLB+ldexiE/yD8uomaZuZIbTc8tjquYln9Quh5ykOBY7LpJJYBWvWtm1g3pHv6AXlBI8Jay7Fffb6aLfA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.13.1': - resolution: {integrity: sha512-tweCXK/79vAwj1NhAsYgICy8T1z2QEairmN2BFEBYFBFNMEB1iI1YlXwBkBtuihRvgZrTh1ORusKa4jLYzLCZA==} + '@swc/core-win32-arm64-msvc@1.13.3': + resolution: {integrity: sha512-elTQpnaX5vESSbhCEgcwXjpMsnUbqqHfEpB7ewpkAsLzKEXZaK67ihSRYAuAx6ewRQTo7DS5iTT6X5aQD3MzMw==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.13.1': - resolution: {integrity: sha512-zi7hO9D+2R2yQN9D7T10/CAI9KhuXkNkz8tcJOW6+dVPtAk/gsIC5NoGPELjgrAlLL9CS38ZQpLDslLfpP15ng==} + '@swc/core-win32-ia32-msvc@1.13.3': + resolution: {integrity: sha512-nvehQVEOdI1BleJpuUgPLrclJ0TzbEMc+MarXDmmiRFwEUGqj+pnfkTSb7RZyS1puU74IXdK/YhTirHurtbI9w==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.13.1': - resolution: {integrity: sha512-KubYjzqs/nz3H69ncX/XHKsC8c1xqc7UvonQAj26BhbL22HBsqdAaVutZ+Obho6RMpd3F5qQ95ldavUTWskRrw==} + '@swc/core-win32-x64-msvc@1.13.3': + resolution: {integrity: sha512-A+JSKGkRbPLVV2Kwx8TaDAV0yXIXm/gc8m98hSkVDGlPBBmydgzNdWy3X7HTUBM7IDk7YlWE7w2+RUGjdgpTmg==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.13.1': - resolution: {integrity: sha512-jEKKErLC6uwSqA+p6bmZR08usZM5Fpc+HdEu5CAzvye0q43yf1si1kjhHEa9XMkz0A2SAaal3eKCg/YYmtOsCA==} + '@swc/core@1.13.3': + resolution: {integrity: sha512-ZaDETVWnm6FE0fc+c2UE8MHYVS3Fe91o5vkmGfgwGXFbxYvAjKSqxM/j4cRc9T7VZNSJjriXq58XkfCp3Y6f+w==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -8682,12 +8739,16 @@ packages: resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} + '@testing-library/dom@10.4.1': + resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} + engines: {node: '>=18'} + '@testing-library/jest-dom@6.5.0': resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - '@testing-library/jest-dom@6.6.3': - resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} + '@testing-library/jest-dom@6.6.4': + resolution: {integrity: sha512-xDXgLjVunjHqczScfkCJ9iyjdNOVHvvCdqHSSxwM9L0l/wHkTRum67SDc020uAlCoqktJplgO2AAQeLP1wgqDQ==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} '@testing-library/react@16.3.0': @@ -8828,6 +8889,9 @@ packages: '@types/detect-port@1.3.5': resolution: {integrity: sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==} + '@types/diff-match-patch@1.0.36': + resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} + '@types/doctrine@0.0.3': resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} @@ -9018,8 +9082,8 @@ packages: '@types/node@16.18.126': resolution: {integrity: sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==} - '@types/node@18.19.120': - resolution: {integrity: sha512-WtCGHFXnVI8WHLxDAt5TbnCM4eSE+nI0QN2NJtwzcgMhht2eNz6V9evJrk+lwC8bCY8OWV5Ym8Jz7ZEyGnKnMA==} + '@types/node@18.19.121': + resolution: {integrity: sha512-bHOrbyztmyYIi4f1R0s17QsPs1uyyYnGcXeZoGEd227oZjry0q6XQBQxd82X1I57zEfwO8h9Xo+Kl5gX1d9MwQ==} '@types/node@22.15.18': resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} @@ -9996,6 +10060,16 @@ packages: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} + ai@4.3.19: + resolution: {integrity: sha512-dIE2bfNpqHN3r6IINp9znguYdhIOheKW2LDigAMrgt/upT3B8eBGPSCblENvaZGoq+hxaN9fSMzjWpbqloP+7Q==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + zod: ^3.23.8 + peerDependenciesMeta: + react: + optional: true + airbnb-js-shims@2.2.1: resolution: {integrity: sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ==} @@ -10756,10 +10830,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + babel-preset-current-node-syntax@1.1.1: + resolution: {integrity: sha512-23fWKohMTvS5s0wwJKycOe0dBdCwQ6+iiLaNR9zy8P13mtFRFM9qLLX6HJX5DL2pi/FNDf3fCQHM4FIMoHH/7w==} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0 || ^8.0.0-0 babel-preset-env@1.6.1: resolution: {integrity: sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==} @@ -11082,8 +11156,8 @@ packages: resolution: {integrity: sha512-Yo9wGIQUaAfIbk+qY0X4cDQgCosecfBe3V9NSyeY4qPC2SAkbCS4Xj79VP8WOzitpJUZKc/wsRCYF5ariDIwkg==} engines: {node: '>=18'} - cacheable@1.10.2: - resolution: {integrity: sha512-hMkETCRV4hwBAvjQY1/xGw15tlPj+7cM4d5HOlYJJFftLQVRCboVX+mT6AJ6eL0fsqUhSUwDiF+pgfTR2r2Hxg==} + cacheable@1.10.3: + resolution: {integrity: sha512-M6p10iJ/VT0wT7TLIGUnm958oVrU2cUK8pQAVU21Zu7h8rbk/PeRtRWrvHJBql97Bhzk3g1N6+2VKC+Rjxna9Q==} call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} @@ -11159,11 +11233,11 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-db@1.0.30001727: - resolution: {integrity: sha512-1o0BfNPo5JXbPYWHL83+9AcElT+bVjXt19goeoB2U6qkNZNChq5B4/BHR+RmLyf8TlTZplTFqOhJQygNWLBX6Q==} + caniuse-db@1.0.30001731: + resolution: {integrity: sha512-IbYSXiOfvIJmCRLkrE/hMSsTZTu48NBddgIgC027NnuPwu/V14PnO3UtHxoQGSA16b09zZJkCsaoLbwMSllZrA==} - caniuse-lite@1.0.30001727: - resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} + caniuse-lite@1.0.30001731: + resolution: {integrity: sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==} capture-exit@2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} @@ -11766,8 +11840,8 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true - create-storybook@9.0.17: - resolution: {integrity: sha512-ilnTYTiEA7Vw1+FCcGecwEgBUxYpsUnUmZkucV38JHUJDnE1MPKKvqi0qFG2x+zYiHA4X7j5IrYfKvh/X+H8+w==} + create-storybook@9.0.18: + resolution: {integrity: sha512-qbpvn3TnSIhb/JDqebap5PX+L6r9WacM045neXTxXRLHLCW6XD16sKrawrMnRoHB4gm/m+MB3yKT5cMEJhuRDA==} hasBin: true crelt@1.0.6: @@ -12260,6 +12334,9 @@ packages: didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + diff-match-patch@1.0.5: + resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} + diff-sequences@25.2.6: resolution: {integrity: sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==} engines: {node: '>= 8.3'} @@ -12431,8 +12508,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.189: - resolution: {integrity: sha512-y9D1ntS1ruO/pZ/V2FtLE+JXLQe28XoRpZ7QCCo0T8LdQladzdcOVQZH/IWLVJvCw12OGMb6hYOeOAjntCmJRQ==} + electron-to-chromium@1.5.192: + resolution: {integrity: sha512-rP8Ez0w7UNw/9j5eSXCe10o1g/8B1P5SM90PCCMVkIRQn2R0LEHWz4Eh9RnxkniuDe1W0cTSOB3MLlkTGDcuCg==} email-addresses@5.0.0: resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==} @@ -12583,8 +12660,8 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - es-toolkit@1.39.7: - resolution: {integrity: sha512-ek/wWryKouBrZIjkwW2BFf91CWOIMvoy2AE5YYgUrfWsJQM2Su1LoLtrw8uusEpN9RfqLlV/0FVNjT0WMv8Bxw==} + es-toolkit@1.39.8: + resolution: {integrity: sha512-A8QO9TfF+rltS8BXpdu8OS+rpGgEdnRhqIVxO/ZmNvnXBYgOdSsxukT55ELyP94gZIntWJ+Li9QRrT2u1Kitpg==} es5-ext@0.10.64: resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} @@ -12753,12 +12830,12 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-storybook@9.0.17: - resolution: {integrity: sha512-IuTdlwCEwoDNobdygRCxNhlKXHmsDfPtPvHGcsY35x2Bx8KItrjfekO19gJrjc1VT2CMfcZMYF8OBKaxHELupw==} + eslint-plugin-storybook@9.0.18: + resolution: {integrity: sha512-f2FnWjTQkM9kYtbpChVuEo8F04QATBiuxYUdSBR58lWb3NprPKBfmRZC1dTA5NVeLY6geXduDLIPXefwXFz6Ag==} engines: {node: '>=20.0.0'} peerDependencies: eslint: '>=8' - storybook: ^9.0.17 + storybook: ^9.0.18 eslint-plugin-unused-imports@4.1.4: resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} @@ -13159,8 +13236,8 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} - file-entry-cache@10.1.1: - resolution: {integrity: sha512-zcmsHjg2B2zjuBgjdnB+9q0+cWcgWfykIcsDkWDB4GTPtl1eXUA+gTI6sO0u01AqK3cliHryTU55/b2Ow1hfZg==} + file-entry-cache@10.1.3: + resolution: {integrity: sha512-D+w75Ub8T55yor7fPgN06rkCAUbAYw2vpxJmmjv/GDAcvCnv9g7IvHhIZoxzRZThrXPFI2maeY24pPbtyYU7Lg==} file-entry-cache@5.0.1: resolution: {integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==} @@ -13305,8 +13382,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flat-cache@6.1.11: - resolution: {integrity: sha512-zfOAns94mp7bHG/vCn9Ru2eDCmIxVQ5dELUHKjHfDEOJmHNzE+uGa6208kfkgmtym4a0FFjEuFksCXFacbVhSg==} + flat-cache@6.1.12: + resolution: {integrity: sha512-U+HqqpZPPXP5d24bWuRzjGqVqUcw64k4nZAbruniDwdRg0H10tvN7H6ku1tjhA4rg5B9GS3siEvwO2qjJJ6f8Q==} flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} @@ -13322,8 +13399,8 @@ packages: resolution: {integrity: sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==} deprecated: flatten is deprecated in favor of utility frameworks such as lodash. - flow-parser@0.276.0: - resolution: {integrity: sha512-rHZzn3I1Hc6L+XCTHe4miH9mEW4+CozvGghVLwE5xHasf2nchq2GJonUowRihuOx6NsJO8pGD+5XdIDH1iLgNg==} + flow-parser@0.277.1: + resolution: {integrity: sha512-86F5PGl+OrFvCzyK04id9Yf9rxFB8485GPs5sexB4cVLOXmpHbSi1/dYiaemI53I85CpImBu/qHVmZnGQflgmw==} engines: {node: '>=0.4.0'} flush-write-stream@1.1.1: @@ -14008,8 +14085,8 @@ packages: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} - hookified@1.10.0: - resolution: {integrity: sha512-dJw0492Iddsj56U1JsSTm9E/0B/29a1AuoSLRAte8vQg/kaTGF3IgjEWT8c8yG4cC10+HisE1x5QAwR0Xwc+DA==} + hookified@1.11.0: + resolution: {integrity: sha512-aDdIN3GyU5I6wextPplYdfmWCo+aLmjjVbntmX6HLD5RCi/xKsivYEBhnRD+d9224zFf008ZpLMPlWF0ZodYZw==} hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -15327,8 +15404,8 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + jiti@2.5.1: + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true joi@17.13.3: @@ -15485,6 +15562,11 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsondiffpatch@0.6.0: + resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + jsonfile@2.4.0: resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} @@ -15582,8 +15664,8 @@ packages: resolution: {integrity: sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==} engines: {node: '>=4'} - launch-editor@2.10.0: - resolution: {integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==} + launch-editor@2.11.0: + resolution: {integrity: sha512-R/PIF14L6e2eHkhvQPu7jDRCr0msfCYCxbYiLgkkAGi0dVPWuM+RrsPu0a5dpuNe0KWGL3jpAkOlv53xGfPheQ==} lazy-universal-dotenv@3.0.1: resolution: {integrity: sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==} @@ -15840,8 +15922,8 @@ packages: loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - loupe@3.1.4: - resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} + loupe@3.2.0: + resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} lower-case@1.1.4: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} @@ -16080,8 +16162,8 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} - memfs@4.17.2: - resolution: {integrity: sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==} + memfs@4.23.0: + resolution: {integrity: sha512-SucHN2lcWf0jrnw+jP6FoVW6l/zGJiXfNMdApZzG0x/0mAIMdwAeR5mjfsCH5U3BoqpUEtqzz+dSQSO0H/eqxg==} engines: {node: '>= 4.0.0'} memoizee@0.4.17: @@ -16810,8 +16892,8 @@ packages: nwmatcher@1.4.4: resolution: {integrity: sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==} - nwsapi@2.2.20: - resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + nwsapi@2.2.21: + resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} nypm@0.5.4: resolution: {integrity: sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==} @@ -18281,8 +18363,8 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-is@19.1.0: - resolution: {integrity: sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==} + react-is@19.1.1: + resolution: {integrity: sha512-tr41fA15Vn8p4X9ntI+yCyeGSf1TlYaY5vlTZfQmeLBrFo3psOPX6HhTDnFNL9uj3EhP0KAQ80cugCl4b4BERA==} react-json-view-lite@2.4.1: resolution: {integrity: sha512-fwFYknRIBxjbFm0kBDrzgBy1xa5tDg2LyXXBepC5f1b+MY3BUClMCsvanMPn089JbV1Eg3nZcrp0VCuH43aXnA==} @@ -18404,10 +18486,10 @@ packages: peerDependencies: react: '>= 0.14.0' - react-test-renderer@19.1.0: - resolution: {integrity: sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==} + react-test-renderer@19.1.1: + resolution: {integrity: sha512-aGRXI+zcBTtg0diHofc7+Vy97nomBs9WHHFY1Csl3iV0x6xucjNYZZAkiVKGiNYUv23ecOex5jE67t8ZzqYObA==} peerDependencies: - react: ^19.1.0 + react: ^19.1.1 react-textarea-autosize@8.5.9: resolution: {integrity: sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==} @@ -18904,8 +18986,8 @@ packages: resolution: {integrity: sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==} hasBin: true - rollup@4.45.1: - resolution: {integrity: sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==} + rollup@4.46.1: + resolution: {integrity: sha512-33xGNBsDJAkzt0PvninskHlWnTIPgDtTwhg0U38CUoNP/7H6wI2Cz6dUeoNPbjdTdsYTGuiFFASuUOWovH0SyQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -19074,6 +19156,9 @@ packages: secure-compare@3.0.1: resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} @@ -19385,9 +19470,9 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} @@ -19515,8 +19600,8 @@ packages: prettier: optional: true - storybook@9.0.17: - resolution: {integrity: sha512-O+9jgJ+Trlq9VGD1uY4OBLKQWHHDKM/A/pA8vMW6PVehhGHNvpzcIC1bngr6mL5gGHZP2nBv+9XG8pTMcggMmg==} + storybook@9.0.18: + resolution: {integrity: sha512-ruxpEpizwoYQTt1hBOrWyp9trPYWD9Apt1TJ37rs1rzmNQWpSNGJDMg91JV4mUhBChzRvnid/oRBFFCWJz/dfw==} hasBin: true peerDependencies: prettier: ^2 || ^3 @@ -19911,6 +19996,11 @@ packages: '@swc/core': ^1.2.147 webpack: '>=2' + swr@2.3.4: + resolution: {integrity: sha512-bYd2lrhc+VarcpkgWclcUi92wYCpOgMws9Sd1hG1ntAu0NEy+14CbotuFjshBU2kt9rYj9TSmDcybpxpeTU1fg==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -20085,6 +20175,10 @@ packages: throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + throttleit@2.1.0: + resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} + engines: {node: '>=18'} + through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} @@ -20146,8 +20240,8 @@ packages: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + tmp@0.2.4: + resolution: {integrity: sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ==} engines: {node: '>=14.14'} tmpl@1.0.5: @@ -21040,8 +21134,8 @@ packages: vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} @@ -21411,8 +21505,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.100.2: - resolution: {integrity: sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==} + webpack@5.101.0: + resolution: {integrity: sha512-B4t+nJqytPeuZlHuIKTbalhljIFXeNRqrUGAQgTGlfOl2lXXKXw+yZu6bicycP+PUlM44CxBjCFD6aciKFT3LQ==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -21836,6 +21930,56 @@ snapshots: '@adobe/css-tools@4.4.3': {} + '@ai-sdk/anthropic@1.2.12(zod@3.25.76)': + dependencies: + '@ai-sdk/provider': 1.1.3 + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + zod: 3.25.76 + + '@ai-sdk/openai@1.3.23(zod@3.25.76)': + dependencies: + '@ai-sdk/provider': 1.1.3 + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + zod: 3.25.76 + + '@ai-sdk/provider-utils@2.2.8(zod@3.25.76)': + dependencies: + '@ai-sdk/provider': 1.1.3 + nanoid: 3.3.11 + secure-json-parse: 2.7.0 + zod: 3.25.76 + + '@ai-sdk/provider@1.1.3': + dependencies: + json-schema: 0.4.0 + + '@ai-sdk/react@1.2.12(react@18.2.0)(zod@3.25.76)': + dependencies: + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + '@ai-sdk/ui-utils': 1.2.11(zod@3.25.76) + react: 18.2.0 + swr: 2.3.4(react@18.2.0) + throttleit: 2.1.0 + optionalDependencies: + zod: 3.25.76 + + '@ai-sdk/react@1.2.12(react@19.1.0)(zod@3.25.76)': + dependencies: + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + '@ai-sdk/ui-utils': 1.2.11(zod@3.25.76) + react: 19.1.0 + swr: 2.3.4(react@19.1.0) + throttleit: 2.1.0 + optionalDependencies: + zod: 3.25.76 + + '@ai-sdk/ui-utils@1.2.11(zod@3.25.76)': + dependencies: + '@ai-sdk/provider': 1.1.3 + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) + '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': @@ -21900,32 +22044,32 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.850.0': + '@aws-sdk/client-s3@3.855.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.846.0 - '@aws-sdk/credential-provider-node': 3.848.0 + '@aws-sdk/core': 3.855.0 + '@aws-sdk/credential-provider-node': 3.855.0 '@aws-sdk/middleware-bucket-endpoint': 3.840.0 '@aws-sdk/middleware-expect-continue': 3.840.0 - '@aws-sdk/middleware-flexible-checksums': 3.846.0 + '@aws-sdk/middleware-flexible-checksums': 3.855.0 '@aws-sdk/middleware-host-header': 3.840.0 '@aws-sdk/middleware-location-constraint': 3.840.0 '@aws-sdk/middleware-logger': 3.840.0 '@aws-sdk/middleware-recursion-detection': 3.840.0 - '@aws-sdk/middleware-sdk-s3': 3.846.0 + '@aws-sdk/middleware-sdk-s3': 3.855.0 '@aws-sdk/middleware-ssec': 3.840.0 - '@aws-sdk/middleware-user-agent': 3.848.0 + '@aws-sdk/middleware-user-agent': 3.855.0 '@aws-sdk/region-config-resolver': 3.840.0 - '@aws-sdk/signature-v4-multi-region': 3.846.0 + '@aws-sdk/signature-v4-multi-region': 3.855.0 '@aws-sdk/types': 3.840.0 '@aws-sdk/util-endpoints': 3.848.0 '@aws-sdk/util-user-agent-browser': 3.840.0 - '@aws-sdk/util-user-agent-node': 3.848.0 + '@aws-sdk/util-user-agent-node': 3.855.0 '@aws-sdk/xml-builder': 3.821.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.7.1 + '@smithy/core': 3.7.2 '@smithy/eventstream-serde-browser': 4.0.4 '@smithy/eventstream-serde-config-resolver': 4.1.2 '@smithy/eventstream-serde-node': 4.0.4 @@ -21936,21 +22080,21 @@ snapshots: '@smithy/invalid-dependency': 4.0.4 '@smithy/md5-js': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.1.16 - '@smithy/middleware-retry': 4.1.17 + '@smithy/middleware-endpoint': 4.1.17 + '@smithy/middleware-retry': 4.1.18 '@smithy/middleware-serde': 4.0.8 '@smithy/middleware-stack': 4.0.4 '@smithy/node-config-provider': 4.1.3 '@smithy/node-http-handler': 4.1.0 '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.8 + '@smithy/smithy-client': 4.4.9 '@smithy/types': 4.3.1 '@smithy/url-parser': 4.0.4 '@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.24 - '@smithy/util-defaults-mode-node': 4.0.24 + '@smithy/util-defaults-mode-browser': 4.0.25 + '@smithy/util-defaults-mode-node': 4.0.25 '@smithy/util-endpoints': 3.0.6 '@smithy/util-middleware': 4.0.4 '@smithy/util-retry': 4.0.6 @@ -21963,41 +22107,41 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.848.0': + '@aws-sdk/client-sso@3.855.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.846.0 + '@aws-sdk/core': 3.855.0 '@aws-sdk/middleware-host-header': 3.840.0 '@aws-sdk/middleware-logger': 3.840.0 '@aws-sdk/middleware-recursion-detection': 3.840.0 - '@aws-sdk/middleware-user-agent': 3.848.0 + '@aws-sdk/middleware-user-agent': 3.855.0 '@aws-sdk/region-config-resolver': 3.840.0 '@aws-sdk/types': 3.840.0 '@aws-sdk/util-endpoints': 3.848.0 '@aws-sdk/util-user-agent-browser': 3.840.0 - '@aws-sdk/util-user-agent-node': 3.848.0 + '@aws-sdk/util-user-agent-node': 3.855.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.7.1 + '@smithy/core': 3.7.2 '@smithy/fetch-http-handler': 5.1.0 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.1.16 - '@smithy/middleware-retry': 4.1.17 + '@smithy/middleware-endpoint': 4.1.17 + '@smithy/middleware-retry': 4.1.18 '@smithy/middleware-serde': 4.0.8 '@smithy/middleware-stack': 4.0.4 '@smithy/node-config-provider': 4.1.3 '@smithy/node-http-handler': 4.1.0 '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.8 + '@smithy/smithy-client': 4.4.9 '@smithy/types': 4.3.1 '@smithy/url-parser': 4.0.4 '@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.24 - '@smithy/util-defaults-mode-node': 4.0.24 + '@smithy/util-defaults-mode-browser': 4.0.25 + '@smithy/util-defaults-mode-node': 4.0.25 '@smithy/util-endpoints': 3.0.6 '@smithy/util-middleware': 4.0.4 '@smithy/util-retry': 4.0.6 @@ -22006,16 +22150,16 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.846.0': + '@aws-sdk/core@3.855.0': dependencies: '@aws-sdk/types': 3.840.0 '@aws-sdk/xml-builder': 3.821.0 - '@smithy/core': 3.7.1 + '@smithy/core': 3.7.2 '@smithy/node-config-provider': 4.1.3 '@smithy/property-provider': 4.0.4 '@smithy/protocol-http': 5.1.2 '@smithy/signature-v4': 5.1.2 - '@smithy/smithy-client': 4.4.8 + '@smithy/smithy-client': 4.4.9 '@smithy/types': 4.3.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 @@ -22024,36 +22168,36 @@ snapshots: fast-xml-parser: 5.2.5 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.846.0': + '@aws-sdk/credential-provider-env@3.855.0': dependencies: - '@aws-sdk/core': 3.846.0 + '@aws-sdk/core': 3.855.0 '@aws-sdk/types': 3.840.0 '@smithy/property-provider': 4.0.4 '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.846.0': + '@aws-sdk/credential-provider-http@3.855.0': dependencies: - '@aws-sdk/core': 3.846.0 + '@aws-sdk/core': 3.855.0 '@aws-sdk/types': 3.840.0 '@smithy/fetch-http-handler': 5.1.0 '@smithy/node-http-handler': 4.1.0 '@smithy/property-provider': 4.0.4 '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.8 + '@smithy/smithy-client': 4.4.9 '@smithy/types': 4.3.1 '@smithy/util-stream': 4.2.3 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.848.0': + '@aws-sdk/credential-provider-ini@3.855.0': dependencies: - '@aws-sdk/core': 3.846.0 - '@aws-sdk/credential-provider-env': 3.846.0 - '@aws-sdk/credential-provider-http': 3.846.0 - '@aws-sdk/credential-provider-process': 3.846.0 - '@aws-sdk/credential-provider-sso': 3.848.0 - '@aws-sdk/credential-provider-web-identity': 3.848.0 - '@aws-sdk/nested-clients': 3.848.0 + '@aws-sdk/core': 3.855.0 + '@aws-sdk/credential-provider-env': 3.855.0 + '@aws-sdk/credential-provider-http': 3.855.0 + '@aws-sdk/credential-provider-process': 3.855.0 + '@aws-sdk/credential-provider-sso': 3.855.0 + '@aws-sdk/credential-provider-web-identity': 3.855.0 + '@aws-sdk/nested-clients': 3.855.0 '@aws-sdk/types': 3.840.0 '@smithy/credential-provider-imds': 4.0.6 '@smithy/property-provider': 4.0.4 @@ -22063,14 +22207,14 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-node@3.848.0': + '@aws-sdk/credential-provider-node@3.855.0': dependencies: - '@aws-sdk/credential-provider-env': 3.846.0 - '@aws-sdk/credential-provider-http': 3.846.0 - '@aws-sdk/credential-provider-ini': 3.848.0 - '@aws-sdk/credential-provider-process': 3.846.0 - '@aws-sdk/credential-provider-sso': 3.848.0 - '@aws-sdk/credential-provider-web-identity': 3.848.0 + '@aws-sdk/credential-provider-env': 3.855.0 + '@aws-sdk/credential-provider-http': 3.855.0 + '@aws-sdk/credential-provider-ini': 3.855.0 + '@aws-sdk/credential-provider-process': 3.855.0 + '@aws-sdk/credential-provider-sso': 3.855.0 + '@aws-sdk/credential-provider-web-identity': 3.855.0 '@aws-sdk/types': 3.840.0 '@smithy/credential-provider-imds': 4.0.6 '@smithy/property-provider': 4.0.4 @@ -22080,20 +22224,20 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-process@3.846.0': + '@aws-sdk/credential-provider-process@3.855.0': dependencies: - '@aws-sdk/core': 3.846.0 + '@aws-sdk/core': 3.855.0 '@aws-sdk/types': 3.840.0 '@smithy/property-provider': 4.0.4 '@smithy/shared-ini-file-loader': 4.0.4 '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.848.0': + '@aws-sdk/credential-provider-sso@3.855.0': dependencies: - '@aws-sdk/client-sso': 3.848.0 - '@aws-sdk/core': 3.846.0 - '@aws-sdk/token-providers': 3.848.0 + '@aws-sdk/client-sso': 3.855.0 + '@aws-sdk/core': 3.855.0 + '@aws-sdk/token-providers': 3.855.0 '@aws-sdk/types': 3.840.0 '@smithy/property-provider': 4.0.4 '@smithy/shared-ini-file-loader': 4.0.4 @@ -22102,10 +22246,10 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-web-identity@3.848.0': + '@aws-sdk/credential-provider-web-identity@3.855.0': dependencies: - '@aws-sdk/core': 3.846.0 - '@aws-sdk/nested-clients': 3.848.0 + '@aws-sdk/core': 3.855.0 + '@aws-sdk/nested-clients': 3.855.0 '@aws-sdk/types': 3.840.0 '@smithy/property-provider': 4.0.4 '@smithy/types': 4.3.1 @@ -22130,12 +22274,12 @@ snapshots: '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.846.0': + '@aws-sdk/middleware-flexible-checksums@3.855.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.846.0 + '@aws-sdk/core': 3.855.0 '@aws-sdk/types': 3.840.0 '@smithy/is-array-buffer': 4.0.0 '@smithy/node-config-provider': 4.1.3 @@ -22172,16 +22316,16 @@ snapshots: '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.846.0': + '@aws-sdk/middleware-sdk-s3@3.855.0': dependencies: - '@aws-sdk/core': 3.846.0 + '@aws-sdk/core': 3.855.0 '@aws-sdk/types': 3.840.0 '@aws-sdk/util-arn-parser': 3.804.0 - '@smithy/core': 3.7.1 + '@smithy/core': 3.7.2 '@smithy/node-config-provider': 4.1.3 '@smithy/protocol-http': 5.1.2 '@smithy/signature-v4': 5.1.2 - '@smithy/smithy-client': 4.4.8 + '@smithy/smithy-client': 4.4.9 '@smithy/types': 4.3.1 '@smithy/util-config-provider': 4.0.0 '@smithy/util-middleware': 4.0.4 @@ -22195,51 +22339,51 @@ snapshots: '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.848.0': + '@aws-sdk/middleware-user-agent@3.855.0': dependencies: - '@aws-sdk/core': 3.846.0 + '@aws-sdk/core': 3.855.0 '@aws-sdk/types': 3.840.0 '@aws-sdk/util-endpoints': 3.848.0 - '@smithy/core': 3.7.1 + '@smithy/core': 3.7.2 '@smithy/protocol-http': 5.1.2 '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.848.0': + '@aws-sdk/nested-clients@3.855.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.846.0 + '@aws-sdk/core': 3.855.0 '@aws-sdk/middleware-host-header': 3.840.0 '@aws-sdk/middleware-logger': 3.840.0 '@aws-sdk/middleware-recursion-detection': 3.840.0 - '@aws-sdk/middleware-user-agent': 3.848.0 + '@aws-sdk/middleware-user-agent': 3.855.0 '@aws-sdk/region-config-resolver': 3.840.0 '@aws-sdk/types': 3.840.0 '@aws-sdk/util-endpoints': 3.848.0 '@aws-sdk/util-user-agent-browser': 3.840.0 - '@aws-sdk/util-user-agent-node': 3.848.0 + '@aws-sdk/util-user-agent-node': 3.855.0 '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.7.1 + '@smithy/core': 3.7.2 '@smithy/fetch-http-handler': 5.1.0 '@smithy/hash-node': 4.0.4 '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.1.16 - '@smithy/middleware-retry': 4.1.17 + '@smithy/middleware-endpoint': 4.1.17 + '@smithy/middleware-retry': 4.1.18 '@smithy/middleware-serde': 4.0.8 '@smithy/middleware-stack': 4.0.4 '@smithy/node-config-provider': 4.1.3 '@smithy/node-http-handler': 4.1.0 '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.8 + '@smithy/smithy-client': 4.4.9 '@smithy/types': 4.3.1 '@smithy/url-parser': 4.0.4 '@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.24 - '@smithy/util-defaults-mode-node': 4.0.24 + '@smithy/util-defaults-mode-browser': 4.0.25 + '@smithy/util-defaults-mode-node': 4.0.25 '@smithy/util-endpoints': 3.0.6 '@smithy/util-middleware': 4.0.4 '@smithy/util-retry': 4.0.6 @@ -22257,19 +22401,19 @@ snapshots: '@smithy/util-middleware': 4.0.4 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.846.0': + '@aws-sdk/signature-v4-multi-region@3.855.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.846.0 + '@aws-sdk/middleware-sdk-s3': 3.855.0 '@aws-sdk/types': 3.840.0 '@smithy/protocol-http': 5.1.2 '@smithy/signature-v4': 5.1.2 '@smithy/types': 4.3.1 tslib: 2.8.1 - '@aws-sdk/token-providers@3.848.0': + '@aws-sdk/token-providers@3.855.0': dependencies: - '@aws-sdk/core': 3.846.0 - '@aws-sdk/nested-clients': 3.848.0 + '@aws-sdk/core': 3.855.0 + '@aws-sdk/nested-clients': 3.855.0 '@aws-sdk/types': 3.840.0 '@smithy/property-provider': 4.0.4 '@smithy/shared-ini-file-loader': 4.0.4 @@ -22306,9 +22450,9 @@ snapshots: bowser: 2.11.0 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.848.0': + '@aws-sdk/util-user-agent-node@3.855.0': dependencies: - '@aws-sdk/middleware-user-agent': 3.848.0 + '@aws-sdk/middleware-user-agent': 3.855.0 '@aws-sdk/types': 3.840.0 '@smithy/node-config-provider': 4.1.3 '@smithy/types': 4.3.1 @@ -22382,8 +22526,8 @@ snapshots: '@azure/core-tracing': 1.3.0 '@azure/core-util': 1.13.0 '@azure/logger': 1.3.0 - '@azure/msal-browser': 4.15.0 - '@azure/msal-node': 3.6.3 + '@azure/msal-browser': 4.16.0 + '@azure/msal-node': 3.6.4 open: 10.2.0 tslib: 2.8.1 transitivePeerDependencies: @@ -22396,15 +22540,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@azure/msal-browser@4.15.0': + '@azure/msal-browser@4.16.0': dependencies: - '@azure/msal-common': 15.8.1 + '@azure/msal-common': 15.9.0 - '@azure/msal-common@15.8.1': {} + '@azure/msal-common@15.9.0': {} - '@azure/msal-node@3.6.3': + '@azure/msal-node@3.6.4': dependencies: - '@azure/msal-common': 15.8.1 + '@azure/msal-common': 15.9.0 jsonwebtoken: 9.0.2 uuid: 8.3.2 @@ -22421,11 +22565,11 @@ snapshots: '@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.27.6 + '@babel/helpers': 7.28.2 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 convert-source-map: 1.9.0 debug: 4.4.1(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -22444,11 +22588,11 @@ snapshots: '@babel/generator': 7.28.0 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.7) - '@babel/helpers': 7.27.6 + '@babel/helpers': 7.28.2 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 convert-source-map: 2.0.0 debug: 4.4.1(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -22464,11 +22608,11 @@ snapshots: '@babel/generator': 7.28.0 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helpers': 7.27.6 + '@babel/helpers': 7.28.2 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 convert-source-map: 2.0.0 debug: 4.4.1(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -22480,14 +22624,14 @@ snapshots: '@babel/generator@7.28.0': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/helper-compilation-targets@7.27.2': dependencies: @@ -22594,14 +22738,14 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -22634,7 +22778,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/helper-plugin-utils@7.10.4': {} @@ -22680,7 +22824,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -22694,18 +22838,18 @@ snapshots: dependencies: '@babel/template': 7.27.2 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color - '@babel/helpers@7.27.6': + '@babel/helpers@7.28.2': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/parser@7.28.0': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.7)': dependencies: @@ -23628,7 +23772,7 @@ 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.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -23639,7 +23783,7 @@ 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.28.0) - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -23992,14 +24136,14 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 esutils: 2.0.3 '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 esutils: 2.0.3 optional: true @@ -24058,17 +24202,17 @@ snapshots: pirates: 4.0.7 source-map-support: 0.5.21 - '@babel/runtime-corejs3@7.28.0': + '@babel/runtime-corejs3@7.28.2': dependencies: core-js-pure: 3.44.0 - '@babel/runtime@7.27.6': {} + '@babel/runtime@7.28.2': {} '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@babel/traverse@7.28.0': dependencies: @@ -24077,12 +24221,12 @@ snapshots: '@babel/helper-globals': 7.28.0 '@babel/parser': 7.28.0 '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 debug: 4.4.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/types@7.28.1': + '@babel/types@7.28.2': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -24240,7 +24384,7 @@ snapshots: '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.27.1 - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.3 @@ -24289,7 +24433,7 @@ snapshots: '@emotion/react@11.14.0(@types/react@17.0.87)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -24305,7 +24449,7 @@ snapshots: '@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -24321,7 +24465,7 @@ snapshots: '@emotion/react@11.14.0(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -24347,7 +24491,7 @@ snapshots: '@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)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@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) @@ -24362,7 +24506,7 @@ snapshots: '@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.27.6 + '@babel/runtime': 7.28.2 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.3.1 '@emotion/react': 11.14.0(@types/react@18.2.0)(react@18.2.0) @@ -24377,7 +24521,7 @@ 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.27.6 + '@babel/runtime': 7.28.2 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.3.1 '@emotion/react': 11.14.0(@types/react@18.2.0)(react@19.1.0) @@ -24392,7 +24536,7 @@ 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.27.6 + '@babel/runtime': 7.28.2 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.3.1 '@emotion/react': 11.14.0(@types/react@18.2.0)(react@19.1.0) @@ -24502,14 +24646,14 @@ snapshots: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.5.1))': dependencies: - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.5.1))': dependencies: - eslint: 9.27.0(jiti@2.4.2) + eslint: 9.27.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -24716,11 +24860,11 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@headlessui/react@2.2.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@headlessui/react@2.2.6(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.20.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/interactions': 3.25.3(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) '@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) @@ -25124,12 +25268,12 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))': dependencies: glob: 10.4.5 magic-string: 0.30.17 react-docgen-typescript: 2.4.0(typescript@5.8.3) - vite: 6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) + vite: 6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) optionalDependencies: typescript: 5.8.3 @@ -25158,15 +25302,15 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/json-pack@1.2.0(tslib@2.8.1)': + '@jsonjoy.com/json-pack@1.4.0(tslib@2.8.1)': dependencies: '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/util': 1.6.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.8.0(tslib@2.8.1) hyperdyperid: 1.2.0 thingies: 1.21.0(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/util@1.6.0(tslib@2.8.1)': + '@jsonjoy.com/util@1.8.0(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -25326,7 +25470,7 @@ snapshots: dependencies: exenv-es6: 1.1.1 - '@modelcontextprotocol/sdk@1.16.0': + '@modelcontextprotocol/sdk@1.17.0': dependencies: ajv: 6.12.6 content-type: 1.0.5 @@ -25459,6 +25603,8 @@ snapshots: '@oozcitak/util@8.3.8': {} + '@opentelemetry/api@1.9.0': {} + '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -25527,7 +25673,7 @@ snapshots: dependencies: playwright: 1.52.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.100.2)': + '@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)': dependencies: ansi-html: 0.0.9 core-js-pure: 3.44.0 @@ -25536,15 +25682,15 @@ snapshots: loader-utils: 2.0.4 react-refresh: 0.11.0 schema-utils: 4.3.2 - source-map: 0.7.4 - webpack: 5.100.2(webpack-cli@4.10.0) + source-map: 0.7.6 + webpack: 5.101.0(webpack-cli@4.10.0) optionalDependencies: '@types/webpack': 5.28.5(webpack-cli@4.10.0) type-fest: 4.41.0 - webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.100.2) + webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.101.0) 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.100.2)': + '@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)': dependencies: ansi-html: 0.0.9 core-js-pure: 3.44.0 @@ -25553,15 +25699,15 @@ snapshots: loader-utils: 2.0.4 react-refresh: 0.11.0 schema-utils: 4.3.2 - source-map: 0.7.4 - webpack: 5.100.2(webpack-cli@6.0.1) + source-map: 0.7.6 + webpack: 5.101.0(webpack-cli@6.0.1) optionalDependencies: '@types/webpack': 5.28.5(webpack-cli@6.0.1) type-fest: 4.41.0 - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) + webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.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.100.2))(webpack-hot-middleware@2.26.1)(webpack@5.100.2)': + '@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)': dependencies: ansi-html: 0.0.9 core-js-pure: 3.44.0 @@ -25570,15 +25716,15 @@ snapshots: loader-utils: 2.0.4 react-refresh: 0.11.0 schema-utils: 4.3.2 - source-map: 0.7.4 - webpack: 5.100.2(webpack-cli@5.1.4) + source-map: 0.7.6 + webpack: 5.101.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.100.2) + webpack-dev-server: 5.2.2(webpack@5.101.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.17.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.100.2)': + '@pmmmwh/react-refresh-webpack-plugin@0.6.1(@types/webpack@5.28.5(webpack-cli@5.1.4))(react-refresh@0.17.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.101.0)': dependencies: anser: 2.3.2 core-js-pure: 3.44.0 @@ -25586,12 +25732,12 @@ snapshots: html-entities: 2.6.0 react-refresh: 0.17.0 schema-utils: 4.3.2 - source-map: 0.7.4 - webpack: 5.100.2(webpack-cli@5.1.4) + source-map: 0.7.6 + webpack: 5.101.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.100.2) + webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.101.0) webpack-hot-middleware: 2.26.1 '@projectstorm/geometry@6.7.4': {} @@ -25787,17 +25933,17 @@ snapshots: '@radix-ui/number@1.0.1': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@radix-ui/primitive@1.0.1': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@radix-ui/primitive@1.1.2': {} '@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.27.6 + '@babel/runtime': 7.28.2 '@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) @@ -25816,7 +25962,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.27.6 + '@babel/runtime': 7.28.2 '@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) @@ -25853,7 +25999,7 @@ snapshots: '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 @@ -25872,7 +26018,7 @@ snapshots: '@radix-ui/react-context@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 @@ -25913,7 +26059,7 @@ snapshots: '@radix-ui/react-direction@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 @@ -25932,7 +26078,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.27.6 + '@babel/runtime': 7.28.2 '@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) @@ -25974,7 +26120,7 @@ snapshots: '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 @@ -25987,7 +26133,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.27.6 + '@babel/runtime': 7.28.2 '@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) @@ -26010,7 +26156,7 @@ snapshots: '@radix-ui/react-id@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 optionalDependencies: @@ -26058,7 +26204,7 @@ 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.27.6 + '@babel/runtime': 7.28.2 '@floating-ui/react-dom': 2.1.4(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) @@ -26095,7 +26241,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.27.6 + '@babel/runtime': 7.28.2 '@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) @@ -26125,7 +26271,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.27.6 + '@babel/runtime': 7.28.2 '@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) @@ -26187,7 +26333,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.27.6 + '@babel/runtime': 7.28.2 '@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) @@ -26226,7 +26372,7 @@ snapshots: '@radix-ui/react-slot@1.0.2(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 optionalDependencies: @@ -26309,7 +26455,7 @@ snapshots: '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 @@ -26328,7 +26474,7 @@ snapshots: '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 optionalDependencies: @@ -26366,7 +26512,7 @@ snapshots: '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 optionalDependencies: @@ -26381,7 +26527,7 @@ snapshots: '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 @@ -26400,14 +26546,14 @@ snapshots: '@radix-ui/react-use-previous@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 react: 19.1.0 optionalDependencies: '@types/react': 18.2.0 '@radix-ui/react-use-rect@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@radix-ui/rect': 1.0.1 react: 19.1.0 optionalDependencies: @@ -26422,7 +26568,7 @@ snapshots: '@radix-ui/react-use-size@1.0.1(@types/react@18.2.0)(react@19.1.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.0)(react@19.1.0) react: 19.1.0 optionalDependencies: @@ -26437,7 +26583,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.27.6 + '@babel/runtime': 7.28.2 '@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) @@ -26456,41 +26602,41 @@ snapshots: '@radix-ui/rect@1.0.1': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@radix-ui/rect@1.1.1': {} - '@react-aria/focus@3.20.5(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)': dependencies: - '@react-aria/interactions': 3.25.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.29.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-types/shared': 3.30.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/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) '@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.3(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)': dependencies: - '@react-aria/ssr': 3.9.9(react@18.2.0) - '@react-aria/utils': 3.29.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@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-stately/flags': 3.1.2 - '@react-types/shared': 3.30.0(react@18.2.0) + '@react-types/shared': 3.31.0(react@18.2.0) '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@react-aria/ssr@3.9.9(react@18.2.0)': + '@react-aria/ssr@3.9.10(react@18.2.0)': dependencies: '@swc/helpers': 0.5.17 react: 18.2.0 - '@react-aria/utils@3.29.1(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)': dependencies: - '@react-aria/ssr': 3.9.9(react@18.2.0) + '@react-aria/ssr': 3.9.10(react@18.2.0) '@react-stately/flags': 3.1.2 - '@react-stately/utils': 3.10.7(react@18.2.0) - '@react-types/shared': 3.30.0(react@18.2.0) + '@react-stately/utils': 3.10.8(react@18.2.0) + '@react-types/shared': 3.31.0(react@18.2.0) '@swc/helpers': 0.5.17 clsx: 2.1.1 react: 18.2.0 @@ -26506,12 +26652,12 @@ snapshots: dependencies: '@swc/helpers': 0.5.17 - '@react-stately/utils@3.10.7(react@18.2.0)': + '@react-stately/utils@3.10.8(react@18.2.0)': dependencies: '@swc/helpers': 0.5.17 react: 18.2.0 - '@react-types/shared@3.30.0(react@18.2.0)': + '@react-types/shared@3.31.0(react@18.2.0)': dependencies: react: 18.2.0 @@ -26554,9 +26700,9 @@ snapshots: resolve: 1.22.10 rollup: 1.32.1 - '@rollup/plugin-commonjs@28.0.6(rollup@4.45.1)': + '@rollup/plugin-commonjs@28.0.6(rollup@4.46.1)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.45.1) + '@rollup/pluginutils': 5.2.0(rollup@4.46.1) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.6(picomatch@4.0.3) @@ -26564,28 +26710,28 @@ snapshots: magic-string: 0.30.17 picomatch: 4.0.3 optionalDependencies: - rollup: 4.45.1 + rollup: 4.46.1 '@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.45.1)': + '@rollup/plugin-json@6.1.0(rollup@4.46.1)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.45.1) + '@rollup/pluginutils': 5.2.0(rollup@4.46.1) optionalDependencies: - rollup: 4.45.1 + rollup: 4.46.1 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.45.1)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.46.1)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.45.1) + '@rollup/pluginutils': 5.2.0(rollup@4.46.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.45.1 + rollup: 4.46.1 '@rollup/plugin-node-resolve@9.0.0(rollup@1.32.1)': dependencies: @@ -26615,72 +26761,72 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.2.0(rollup@4.45.1)': + '@rollup/pluginutils@5.2.0(rollup@4.46.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.45.1 + rollup: 4.46.1 - '@rollup/rollup-android-arm-eabi@4.45.1': + '@rollup/rollup-android-arm-eabi@4.46.1': optional: true - '@rollup/rollup-android-arm64@4.45.1': + '@rollup/rollup-android-arm64@4.46.1': optional: true - '@rollup/rollup-darwin-arm64@4.45.1': + '@rollup/rollup-darwin-arm64@4.46.1': optional: true - '@rollup/rollup-darwin-x64@4.45.1': + '@rollup/rollup-darwin-x64@4.46.1': optional: true - '@rollup/rollup-freebsd-arm64@4.45.1': + '@rollup/rollup-freebsd-arm64@4.46.1': optional: true - '@rollup/rollup-freebsd-x64@4.45.1': + '@rollup/rollup-freebsd-x64@4.46.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.45.1': + '@rollup/rollup-linux-arm-gnueabihf@4.46.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.45.1': + '@rollup/rollup-linux-arm-musleabihf@4.46.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.45.1': + '@rollup/rollup-linux-arm64-gnu@4.46.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.45.1': + '@rollup/rollup-linux-arm64-musl@4.46.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.45.1': + '@rollup/rollup-linux-loongarch64-gnu@4.46.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': + '@rollup/rollup-linux-ppc64-gnu@4.46.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.45.1': + '@rollup/rollup-linux-riscv64-gnu@4.46.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.45.1': + '@rollup/rollup-linux-riscv64-musl@4.46.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.45.1': + '@rollup/rollup-linux-s390x-gnu@4.46.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.45.1': + '@rollup/rollup-linux-x64-gnu@4.46.1': optional: true - '@rollup/rollup-linux-x64-musl@4.45.1': + '@rollup/rollup-linux-x64-musl@4.46.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.45.1': + '@rollup/rollup-win32-arm64-msvc@4.46.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.45.1': + '@rollup/rollup-win32-ia32-msvc@4.46.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.45.1': + '@rollup/rollup-win32-x64-msvc@4.46.1': optional: true '@rtsao/scc@1.1.0': {} @@ -26849,7 +26995,7 @@ snapshots: '@smithy/util-middleware': 4.0.4 tslib: 2.8.1 - '@smithy/core@3.7.1': + '@smithy/core@3.7.2': dependencies: '@smithy/middleware-serde': 4.0.8 '@smithy/protocol-http': 5.1.2 @@ -26952,9 +27098,9 @@ snapshots: '@smithy/types': 4.3.1 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.1.16': + '@smithy/middleware-endpoint@4.1.17': dependencies: - '@smithy/core': 3.7.1 + '@smithy/core': 3.7.2 '@smithy/middleware-serde': 4.0.8 '@smithy/node-config-provider': 4.1.3 '@smithy/shared-ini-file-loader': 4.0.4 @@ -26963,12 +27109,12 @@ snapshots: '@smithy/util-middleware': 4.0.4 tslib: 2.8.1 - '@smithy/middleware-retry@4.1.17': + '@smithy/middleware-retry@4.1.18': dependencies: '@smithy/node-config-provider': 4.1.3 '@smithy/protocol-http': 5.1.2 '@smithy/service-error-classification': 4.0.6 - '@smithy/smithy-client': 4.4.8 + '@smithy/smithy-client': 4.4.9 '@smithy/types': 4.3.1 '@smithy/util-middleware': 4.0.4 '@smithy/util-retry': 4.0.6 @@ -27042,10 +27188,10 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/smithy-client@4.4.8': + '@smithy/smithy-client@4.4.9': dependencies: - '@smithy/core': 3.7.1 - '@smithy/middleware-endpoint': 4.1.16 + '@smithy/core': 3.7.2 + '@smithy/middleware-endpoint': 4.1.17 '@smithy/middleware-stack': 4.0.4 '@smithy/protocol-http': 5.1.2 '@smithy/types': 4.3.1 @@ -27090,21 +27236,21 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.0.24': + '@smithy/util-defaults-mode-browser@4.0.25': dependencies: '@smithy/property-provider': 4.0.4 - '@smithy/smithy-client': 4.4.8 + '@smithy/smithy-client': 4.4.9 '@smithy/types': 4.3.1 bowser: 2.11.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.0.24': + '@smithy/util-defaults-mode-node@4.0.25': dependencies: '@smithy/config-resolver': 4.1.4 '@smithy/credential-provider-imds': 4.0.6 '@smithy/node-config-provider': 4.1.3 '@smithy/property-provider': 4.0.4 - '@smithy/smithy-client': 4.4.8 + '@smithy/smithy-client': 4.4.9 '@smithy/types': 4.3.1 tslib: 2.8.1 @@ -27221,13 +27367,13 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) uuid: 9.0.1 - '@storybook/addon-actions@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/addon-actions@8.6.14(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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)': @@ -27275,20 +27421,20 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/addon-backgrounds@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/addon-backgrounds@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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.4.2))(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(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)': 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.4.2))(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.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/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) @@ -27309,13 +27455,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/addon-controls@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.5.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.4.2))(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.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/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) @@ -27366,14 +27512,14 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/addon-controls@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/addon-controls@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.100.2)': + '@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)': 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) @@ -27382,7 +27528,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.4.2))(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.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-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) @@ -27393,7 +27539,7 @@ 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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) core-js: 3.44.0 fast-deep-equal: 3.1.3 global: 4.4.0 @@ -27418,7 +27564,7 @@ snapshots: - webpack - webpack-cli - '@storybook/addon-docs@6.5.16(@babel/core@7.27.7)(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.100.2)': + '@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)': 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) @@ -27427,7 +27573,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.4.2))(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.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-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) @@ -27438,7 +27584,7 @@ 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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) core-js: 3.44.0 fast-deep-equal: 3.1.3 global: 4.4.0 @@ -27505,55 +27651,55 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@storybook/addon-docs@8.6.14(@types/react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/addon-docs@8.6.14(@types/react@18.2.0)(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/csf-plugin': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + '@storybook/blocks': 8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/csf-plugin': 8.6.14(storybook@9.0.18(@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.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-docs@9.0.17(@types/react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/addon-docs@9.0.18(@types/react@18.2.0)(storybook@9.0.18(@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.0.17(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + '@storybook/csf-plugin': 9.0.18(storybook@9.0.18(@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.0.17(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + '@storybook/react-dom-shim': 9.0.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.100.2)': + '@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)': 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.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.100.2) + '@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-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.4.2))(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.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/node-logger': 6.5.16 core-js: 3.44.0 regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.5.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.100.2(webpack-cli@4.10.0) + webpack: 5.101.0(webpack-cli@4.10.0) transitivePeerDependencies: - '@storybook/mdx2-csf' - '@swc/core' @@ -27565,29 +27711,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.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.100.2)': + '@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)': 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.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.100.2) + '@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-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.4.2))(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.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/node-logger': 6.5.16 core-js: 3.44.0 regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.5.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.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) transitivePeerDependencies: - '@storybook/mdx2-csf' - '@swc/core' @@ -27639,18 +27785,18 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.6.14(@types/react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - '@storybook/addon-actions': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-backgrounds': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-controls': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-docs': 8.6.14(@types/react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-highlight': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-measure': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-outline': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-toolbars': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-viewport': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + '@storybook/addon-essentials@8.6.14(@types/react@18.2.0)(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': + dependencies: + '@storybook/addon-actions': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-backgrounds': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-controls': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-docs': 8.6.14(@types/react@18.2.0)(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-highlight': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-measure': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-outline': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-toolbars': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/addon-viewport': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' @@ -27666,10 +27812,10 @@ snapshots: '@storybook/global': 5.0.0 storybook: 8.6.14(prettier@3.5.3) - '@storybook/addon-highlight@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/addon-highlight@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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: @@ -27722,10 +27868,10 @@ snapshots: optionalDependencies: react: 18.2.0 - '@storybook/addon-links@8.6.14(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/addon-links@8.6.14(react@18.2.0)(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 optionalDependencies: react: 18.2.0 @@ -27767,10 +27913,10 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) tiny-invariant: 1.3.3 - '@storybook/addon-measure@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/addon-measure@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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))': @@ -27816,10 +27962,10 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/addon-outline@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/addon-outline@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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)': @@ -27853,9 +27999,9 @@ snapshots: dependencies: storybook: 8.6.14(prettier@3.5.3) - '@storybook/addon-toolbars@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/addon-toolbars@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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: @@ -27897,10 +28043,10 @@ snapshots: memoizerific: 1.11.3 storybook: 8.6.14(prettier@3.5.3) - '@storybook/addon-viewport@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/addon-viewport@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: memoizerific: 1.11.3 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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: @@ -28037,10 +28183,10 @@ snapshots: 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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/blocks@8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 optionalDependencies: react: 19.1.0 @@ -28068,14 +28214,14 @@ snapshots: - encoding - supports-color - '@storybook/builder-vite@9.0.17(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(vite@6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))': + '@storybook/builder-vite@9.0.18(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))(vite@6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))': dependencies: - '@storybook/csf-plugin': 9.0.17(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + '@storybook/csf-plugin': 9.0.18(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 - vite: 6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) + vite: 6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) - '@storybook/builder-webpack4@6.5.16(eslint@9.26.0(jiti@2.4.2))(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.5.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) @@ -28085,7 +28231,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.4.2))(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.5.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) @@ -28097,33 +28243,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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) case-sensitive-paths-webpack-plugin: 2.4.0 core-js: 3.44.0 - css-loader: 3.6.0(webpack@5.100.2) - file-loader: 6.2.0(webpack@5.100.2) + css-loader: 3.6.0(webpack@5.101.0) + file-loader: 6.2.0(webpack@5.101.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.100.2) + html-webpack-plugin: 4.5.2(webpack@5.101.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.100.2) - raw-loader: 4.0.2(webpack@5.100.2) + postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.101.0) + raw-loader: 4.0.2(webpack@5.101.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.100.2) - terser-webpack-plugin: 4.2.3(webpack@5.100.2) + style-loader: 1.3.0(webpack@5.101.0) + terser-webpack-plugin: 4.2.3(webpack@5.101.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.100.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-hot-middleware: 2.26.1 webpack-virtual-modules: 0.2.2 optionalDependencies: @@ -28137,7 +28283,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.5.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) @@ -28147,7 +28293,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.4.2))(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.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-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) @@ -28159,33 +28305,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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) case-sensitive-paths-webpack-plugin: 2.4.0 core-js: 3.44.0 - css-loader: 3.6.0(webpack@5.100.2) - file-loader: 6.2.0(webpack@5.100.2) + css-loader: 3.6.0(webpack@5.101.0) + file-loader: 6.2.0(webpack@5.101.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.100.2) + html-webpack-plugin: 4.5.2(webpack@5.101.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.100.2) - raw-loader: 4.0.2(webpack@5.100.2) + postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.101.0) + raw-loader: 4.0.2(webpack@5.101.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.100.2) - terser-webpack-plugin: 4.2.3(webpack@5.100.2) + style-loader: 1.3.0(webpack@5.101.0) + terser-webpack-plugin: 4.2.3(webpack@5.101.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.100.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-hot-middleware: 2.26.1 webpack-virtual-modules: 0.2.2 optionalDependencies: @@ -28199,7 +28345,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.5.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) @@ -28209,7 +28355,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.4.2))(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.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-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) @@ -28221,33 +28367,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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) case-sensitive-paths-webpack-plugin: 2.4.0 core-js: 3.44.0 - css-loader: 3.6.0(webpack@5.100.2) - file-loader: 6.2.0(webpack@5.100.2) + css-loader: 3.6.0(webpack@5.101.0) + file-loader: 6.2.0(webpack@5.101.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.100.2) + html-webpack-plugin: 4.5.2(webpack@5.101.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.100.2) - raw-loader: 4.0.2(webpack@5.100.2) + postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.101.0) + raw-loader: 4.0.2(webpack@5.101.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.100.2) - terser-webpack-plugin: 4.2.3(webpack@5.100.2) + style-loader: 1.3.0(webpack@5.101.0) + terser-webpack-plugin: 4.2.3(webpack@5.101.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.100.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-hot-middleware: 2.26.1 webpack-virtual-modules: 0.2.2 optionalDependencies: @@ -28261,7 +28407,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.5.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) @@ -28271,7 +28417,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.4.2))(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.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-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) @@ -28283,33 +28429,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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) case-sensitive-paths-webpack-plugin: 2.4.0 core-js: 3.44.0 - css-loader: 3.6.0(webpack@5.100.2) - file-loader: 6.2.0(webpack@5.100.2) + css-loader: 3.6.0(webpack@5.101.0) + file-loader: 6.2.0(webpack@5.101.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.100.2) + html-webpack-plugin: 4.5.2(webpack@5.101.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.100.2) - raw-loader: 4.0.2(webpack@5.100.2) + postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.101.0) + raw-loader: 4.0.2(webpack@5.101.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.100.2) - terser-webpack-plugin: 4.2.3(webpack@5.100.2) + style-loader: 1.3.0(webpack@5.101.0) + terser-webpack-plugin: 4.2.3(webpack@5.101.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.100.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-hot-middleware: 2.26.1 webpack-virtual-modules: 0.2.2 optionalDependencies: @@ -28323,7 +28469,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.5.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) @@ -28333,7 +28479,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.4.2))(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.5.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) @@ -28345,33 +28491,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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) case-sensitive-paths-webpack-plugin: 2.4.0 core-js: 3.44.0 - css-loader: 3.6.0(webpack@5.100.2) - file-loader: 6.2.0(webpack@5.100.2) + css-loader: 3.6.0(webpack@5.101.0) + file-loader: 6.2.0(webpack@5.101.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.100.2) + html-webpack-plugin: 4.5.2(webpack@5.101.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.100.2) - raw-loader: 4.0.2(webpack@5.100.2) + postcss-loader: 4.3.0(postcss@7.0.39)(webpack@5.101.0) + raw-loader: 4.0.2(webpack@5.101.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.100.2) - terser-webpack-plugin: 4.2.3(webpack@5.100.2) + style-loader: 1.3.0(webpack@5.101.0) + terser-webpack-plugin: 4.2.3(webpack@5.101.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.100.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-hot-middleware: 2.26.1 webpack-virtual-modules: 0.2.2 optionalDependencies: @@ -28385,7 +28531,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.5.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) @@ -28395,7 +28541,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.4.2))(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.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-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) @@ -28404,27 +28550,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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.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.44.0 - css-loader: 5.2.7(webpack@5.100.2) - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2) + 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) glob: 7.2.3 glob-promise: 3.4.0(glob@7.2.3) - html-webpack-plugin: 5.6.3(webpack@5.100.2) + html-webpack-plugin: 5.6.3(webpack@5.101.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.100.2) - terser-webpack-plugin: 5.3.14(webpack@5.100.2) + style-loader: 2.0.0(webpack@5.101.0) + terser-webpack-plugin: 5.3.14(webpack@5.101.0) ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 4.3.0(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@4.10.0) + webpack-dev-middleware: 4.3.0(webpack@5.101.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.4.6 optionalDependencies: @@ -28439,7 +28585,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.5.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) @@ -28449,7 +28595,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.4.2))(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.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-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) @@ -28458,27 +28604,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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.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.44.0 - css-loader: 5.2.7(webpack@5.100.2) - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2) + 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) glob: 7.2.3 glob-promise: 3.4.0(glob@7.2.3) - html-webpack-plugin: 5.6.3(webpack@5.100.2) + html-webpack-plugin: 5.6.3(webpack@5.101.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.100.2) - terser-webpack-plugin: 5.3.14(webpack@5.100.2) + style-loader: 2.0.0(webpack@5.101.0) + terser-webpack-plugin: 5.3.14(webpack@5.101.0) ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-dev-middleware: 4.3.0(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@6.0.1) + webpack-dev-middleware: 4.3.0(webpack@5.101.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.4.6 optionalDependencies: @@ -28512,33 +28658,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.1(@swc/helpers@0.5.17) + '@swc/core': 1.13.3(@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.100.2) + babel-loader: 9.2.1(@babel/core@7.27.7)(webpack@5.101.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.100.2) + css-loader: 6.11.0(webpack@5.101.0) express: 4.21.2 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.100.2) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.101.0) fs-extra: 11.3.0 - html-webpack-plugin: 5.6.3(webpack@5.100.2) + html-webpack-plugin: 5.6.3(webpack@5.101.0) 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.100.2) - swc-loader: 0.2.6(@swc/core@1.13.1(@swc/helpers@0.5.17))(webpack@5.100.2) - terser-webpack-plugin: 5.3.14(@swc/core@1.13.1(@swc/helpers@0.5.17))(webpack@5.100.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) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.100.2(@swc/core@1.13.1(@swc/helpers@0.5.17)) - webpack-dev-middleware: 6.1.3(webpack@5.100.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) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.5.0 optionalDependencies: @@ -28562,23 +28708,23 @@ snapshots: 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.100.2) + css-loader: 6.11.0(webpack@5.101.0) es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.100.2) - html-webpack-plugin: 5.6.3(webpack@5.100.2) + 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 path-browserify: 1.0.1 process: 0.11.10 semver: 7.7.2 storybook: 8.6.14(prettier@3.5.3) - style-loader: 3.3.4(webpack@5.100.2) - terser-webpack-plugin: 5.3.14(webpack@5.100.2) + style-loader: 3.3.4(webpack@5.101.0) + terser-webpack-plugin: 5.3.14(webpack@5.101.0) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-dev-middleware: 6.1.3(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@5.1.4) + webpack-dev-middleware: 6.1.3(webpack@5.101.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -28598,23 +28744,23 @@ snapshots: 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.100.2) + css-loader: 6.11.0(webpack@5.101.0) es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.100.2) - html-webpack-plugin: 5.6.3(webpack@5.100.2) + 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 path-browserify: 1.0.1 process: 0.11.10 semver: 7.7.2 storybook: 8.6.14(prettier@3.5.3) - style-loader: 3.3.4(webpack@5.100.2) - terser-webpack-plugin: 5.3.14(webpack@5.100.2) + style-loader: 3.3.4(webpack@5.101.0) + terser-webpack-plugin: 5.3.14(webpack@5.101.0) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-dev-middleware: 6.1.3(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@6.0.1) + webpack-dev-middleware: 6.1.3(webpack@5.101.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -28626,31 +28772,31 @@ snapshots: - uglify-js - webpack-cli - '@storybook/builder-webpack5@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)(webpack-cli@5.1.4)': + '@storybook/builder-webpack5@8.6.14(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + '@storybook/core-webpack': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) '@types/semver': 7.7.0 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.100.2) + css-loader: 6.11.0(webpack@5.101.0) es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.100.2) - html-webpack-plugin: 5.6.3(webpack@5.100.2) + 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 path-browserify: 1.0.1 process: 0.11.10 semver: 7.7.2 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) - style-loader: 3.3.4(webpack@5.100.2) - terser-webpack-plugin: 5.3.14(webpack@5.100.2) + storybook: 9.0.18(@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(webpack@5.101.0) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-dev-middleware: 6.1.3(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@5.1.4) + webpack-dev-middleware: 6.1.3(webpack@5.101.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -28708,7 +28854,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/preset-env': 7.27.2(@babel/core@7.27.7) - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@ndelangen/get-tarball': 3.0.9 '@storybook/codemod': 7.6.20 '@storybook/core-common': 7.6.20(encoding@0.1.13) @@ -28752,15 +28898,15 @@ snapshots: - supports-color - utf-8-validate - '@storybook/cli@9.0.17(@babel/preset-env@7.27.2(@babel/core@7.28.0))(@testing-library/dom@10.4.0)(prettier@3.5.3)': + '@storybook/cli@9.0.18(@babel/preset-env@7.27.2(@babel/core@7.28.0))(@testing-library/dom@10.4.1)(prettier@3.5.3)': dependencies: - '@storybook/codemod': 9.0.17(@babel/preset-env@7.27.2(@babel/core@7.28.0))(@testing-library/dom@10.4.0) + '@storybook/codemod': 9.0.18(@babel/preset-env@7.27.2(@babel/core@7.28.0))(@testing-library/dom@10.4.1) '@types/semver': 7.7.0 commander: 12.1.0 - create-storybook: 9.0.17 + create-storybook: 9.0.18 giget: 1.2.5 jscodeshift: 0.15.2(@babel/preset-env@7.27.2(@babel/core@7.28.0)) - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) ts-dedent: 2.2.0 transitivePeerDependencies: - '@babel/preset-env' @@ -28842,7 +28988,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/preset-env': 7.27.2(@babel/core@7.27.7) - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@storybook/csf': 0.1.13 '@storybook/csf-tools': 7.6.20 '@storybook/node-logger': 7.6.20 @@ -28857,15 +29003,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/codemod@9.0.17(@babel/preset-env@7.27.2(@babel/core@7.28.0))(@testing-library/dom@10.4.0)': + '@storybook/codemod@9.0.18(@babel/preset-env@7.27.2(@babel/core@7.28.0))(@testing-library/dom@10.4.1)': dependencies: '@types/cross-spawn': 6.0.6 cross-spawn: 7.0.6 - es-toolkit: 1.39.7 + es-toolkit: 1.39.8 globby: 14.1.0 jscodeshift: 0.15.2(@babel/preset-env@7.27.2(@babel/core@7.28.0)) prettier: 3.5.3 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) tiny-invariant: 1.3.3 transitivePeerDependencies: - '@babel/preset-env' @@ -28922,11 +29068,11 @@ snapshots: dependencies: storybook: 8.6.14(prettier@3.5.3) - '@storybook/components@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/components@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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.100.2)': + '@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)': 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 @@ -28950,11 +29096,11 @@ snapshots: ts-dedent: 2.2.0 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(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.100.2)': + '@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)': 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 @@ -28978,7 +29124,7 @@ snapshots: ts-dedent: 2.2.0 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: typescript: 4.9.5 @@ -28987,7 +29133,7 @@ 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.4.2))(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.5.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) @@ -29015,7 +29161,7 @@ snapshots: '@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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) babel-plugin-macros: 3.1.0 babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.7) chalk: 4.1.2 @@ -29023,7 +29169,7 @@ snapshots: 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.4.2))(typescript@5.8.3)(webpack@5.100.2) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0) fs-extra: 9.1.0 glob: 7.2.3 handlebars: 4.7.8 @@ -29040,7 +29186,7 @@ snapshots: telejson: 6.0.8 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -29052,7 +29198,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-common@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.27.0(jiti@2.5.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) @@ -29080,7 +29226,7 @@ snapshots: '@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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) babel-plugin-macros: 3.1.0 babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.7) chalk: 4.1.2 @@ -29088,7 +29234,7 @@ snapshots: 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.4.2))(typescript@5.8.3)(webpack@5.100.2) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0) fs-extra: 9.1.0 glob: 7.2.3 handlebars: 4.7.8 @@ -29105,7 +29251,7 @@ snapshots: telejson: 6.0.8 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -29117,7 +29263,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-common@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.5.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) @@ -29145,7 +29291,7 @@ snapshots: '@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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) babel-plugin-macros: 3.1.0 babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.7) chalk: 4.1.2 @@ -29153,7 +29299,7 @@ snapshots: 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.4.2))(typescript@5.8.3)(webpack@5.100.2) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0) fs-extra: 9.1.0 glob: 7.2.3 handlebars: 4.7.8 @@ -29170,7 +29316,7 @@ snapshots: telejson: 6.0.8 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) + webpack: 5.101.0(webpack-cli@4.10.0) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -29182,7 +29328,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-common@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.5.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) @@ -29210,7 +29356,7 @@ snapshots: '@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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) babel-plugin-macros: 3.1.0 babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.7) chalk: 4.1.2 @@ -29218,7 +29364,7 @@ snapshots: 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.4.2))(typescript@5.8.3)(webpack@5.100.2) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0) fs-extra: 9.1.0 glob: 7.2.3 handlebars: 4.7.8 @@ -29235,7 +29381,7 @@ snapshots: telejson: 6.0.8 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -29247,7 +29393,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-common@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.5.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) @@ -29275,7 +29421,7 @@ snapshots: '@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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) babel-plugin-macros: 3.1.0 babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.7) chalk: 4.1.2 @@ -29283,7 +29429,7 @@ snapshots: 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.4.2))(typescript@4.9.5)(webpack@5.100.2) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@4.9.5)(webpack@5.101.0) fs-extra: 9.1.0 glob: 7.2.3 handlebars: 4.7.8 @@ -29300,7 +29446,7 @@ snapshots: telejson: 6.0.8 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: @@ -29347,7 +29493,7 @@ snapshots: '@storybook/node-logger': 7.6.20 '@storybook/types': 7.6.20 '@types/find-cache-dir': 3.2.1 - '@types/node': 18.19.120 + '@types/node': 18.19.121 '@types/node-fetch': 2.6.12 '@types/pretty-hrtime': 1.0.3 chalk: 4.1.2 @@ -29382,20 +29528,20 @@ 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.4.2))(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.4.2))(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.4.2))(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(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)': dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.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/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.4.2))(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.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/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.4.2))(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.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/node': 16.18.126 '@types/node-fetch': 2.6.12 '@types/pretty-hrtime': 1.0.3 @@ -29428,12 +29574,12 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 watchpack: 2.4.4 - webpack: 5.100.2(webpack-cli@4.10.0) + webpack: 5.101.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.4.2))(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.4.2))(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.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) typescript: 5.8.3 transitivePeerDependencies: - '@storybook/mdx2-csf' @@ -29448,20 +29594,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.4.2))(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.4.2))(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.4.2))(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(@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)': dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.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/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.4.2))(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.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/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.4.2))(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.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/node': 16.18.126 '@types/node-fetch': 2.6.12 '@types/pretty-hrtime': 1.0.3 @@ -29494,12 +29640,12 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 watchpack: 2.4.4 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) ws: 8.18.3 x-default-browser: 0.4.0 optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.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' @@ -29514,20 +29660,20 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-server@6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.4.2))(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.5.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.4.2))(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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.4.2))(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.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/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.4.2))(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.5.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.4.2))(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.5.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.12 '@types/pretty-hrtime': 1.0.3 @@ -29560,7 +29706,7 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 watchpack: 2.4.4 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) ws: 8.18.3 x-default-browser: 0.4.0 optionalDependencies: @@ -29578,20 +29724,20 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-server@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.5.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.4.2))(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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.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/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.4.2))(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.5.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.4.2))(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.5.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.12 '@types/pretty-hrtime': 1.0.3 @@ -29624,7 +29770,7 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 watchpack: 2.4.4 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) ws: 8.18.3 x-default-browser: 0.4.0 optionalDependencies: @@ -29642,20 +29788,20 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core-server@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.5.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.4.2))(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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.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/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.4.2))(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.5.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.4.2))(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.5.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.12 '@types/pretty-hrtime': 1.0.3 @@ -29688,7 +29834,7 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 watchpack: 2.4.4 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) ws: 8.18.3 x-default-browser: 0.4.0 optionalDependencies: @@ -29724,7 +29870,7 @@ 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.120 + '@types/node': 18.19.121 '@types/pretty-hrtime': 1.0.3 '@types/semver': 7.7.0 better-opn: 3.0.2 @@ -29770,21 +29916,21 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) ts-dedent: 2.2.0 - '@storybook/core-webpack@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/core-webpack@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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.4.2))(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.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.100.2)': + '@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)': 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.100.2) - '@storybook/core-server': 6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.4.2))(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-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) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - webpack: 5.100.2(webpack-cli@4.10.0) + webpack: 5.101.0(webpack-cli@4.10.0) optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.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) typescript: 5.8.3 transitivePeerDependencies: - '@storybook/mdx2-csf' @@ -29799,16 +29945,16 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core@6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.100.2)': + '@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)': 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.100.2) - '@storybook/core-server': 6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.4.2))(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-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) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.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' @@ -29823,13 +29969,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core@6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.100.2)': + '@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)': 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.100.2) - '@storybook/core-server': 6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.4.2))(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-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) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -29845,13 +29991,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.100.2)': + '@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)': 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.100.2) - '@storybook/core-server': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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-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) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -29867,13 +30013,13 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/core@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.100.2)': + '@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)': 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.100.2) - '@storybook/core-server': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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-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) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: typescript: 4.9.5 transitivePeerDependencies: @@ -29922,14 +30068,14 @@ snapshots: storybook: 8.6.14(prettier@3.5.3) unplugin: 1.16.1 - '@storybook/csf-plugin@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/csf-plugin@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) unplugin: 1.16.1 - '@storybook/csf-plugin@9.0.17(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/csf-plugin@9.0.18(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) unplugin: 1.16.1 '@storybook/csf-tools@6.5.16': @@ -29940,7 +30086,7 @@ snapshots: '@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.1 + '@babel/types': 7.28.2 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/mdx1-csf': 0.0.1(@babel/core@7.27.7) core-js: 3.44.0 @@ -29956,7 +30102,7 @@ snapshots: '@babel/generator': 7.28.0 '@babel/parser': 7.28.0 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@storybook/csf': 0.1.13 '@storybook/types': 7.4.6 fs-extra: 11.3.0 @@ -29970,7 +30116,7 @@ snapshots: '@babel/generator': 7.28.0 '@babel/parser': 7.28.0 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@storybook/csf': 0.1.13 '@storybook/types': 7.6.20 fs-extra: 11.3.0 @@ -30047,11 +30193,11 @@ snapshots: '@vitest/utils': 2.1.9 storybook: 8.6.14(prettier@3.5.3) - '@storybook/instrumenter@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/instrumenter@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 '@vitest/utils': 2.1.9 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) optional: true '@storybook/manager-api@7.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': @@ -30078,33 +30224,33 @@ snapshots: dependencies: storybook: 8.6.14(prettier@3.5.3) - '@storybook/manager-api@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/manager-api@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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.4.2))(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.5.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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.4.2))(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/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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 core-js: 3.44.0 - css-loader: 3.6.0(webpack@5.100.2) + css-loader: 3.6.0(webpack@5.101.0) express: 4.21.2 - file-loader: 6.2.0(webpack@5.100.2) + file-loader: 6.2.0(webpack@5.101.0) find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.100.2) + html-webpack-plugin: 4.5.2(webpack@5.101.0) node-fetch: 2.7.0(encoding@0.1.13) pnp-webpack-plugin: 1.6.4(typescript@5.8.3) react: 18.2.0 @@ -30112,14 +30258,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.100.2) + style-loader: 1.3.0(webpack@5.101.0) telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.100.2) + terser-webpack-plugin: 4.2.3(webpack@5.101.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@5.1.4) + webpack-dev-middleware: 3.7.3(webpack@5.101.0) webpack-virtual-modules: 0.2.2 optionalDependencies: typescript: 5.8.3 @@ -30133,29 +30279,29 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.5.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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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/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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 core-js: 3.44.0 - css-loader: 3.6.0(webpack@5.100.2) + css-loader: 3.6.0(webpack@5.101.0) express: 4.21.2 - file-loader: 6.2.0(webpack@5.100.2) + file-loader: 6.2.0(webpack@5.101.0) find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.100.2) + html-webpack-plugin: 4.5.2(webpack@5.101.0) node-fetch: 2.7.0(encoding@0.1.13) pnp-webpack-plugin: 1.6.4(typescript@5.8.3) react: 18.2.0 @@ -30163,14 +30309,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.100.2) + style-loader: 1.3.0(webpack@5.101.0) telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.100.2) + terser-webpack-plugin: 4.2.3(webpack@5.101.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@5.1.4) + webpack-dev-middleware: 3.7.3(webpack@5.101.0) webpack-virtual-modules: 0.2.2 optionalDependencies: typescript: 5.8.3 @@ -30184,29 +30330,29 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.5.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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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/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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 core-js: 3.44.0 - css-loader: 3.6.0(webpack@5.100.2) + css-loader: 3.6.0(webpack@5.101.0) express: 4.21.2 - file-loader: 6.2.0(webpack@5.100.2) + file-loader: 6.2.0(webpack@5.101.0) find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.100.2) + html-webpack-plugin: 4.5.2(webpack@5.101.0) node-fetch: 2.7.0(encoding@0.1.13) pnp-webpack-plugin: 1.6.4(typescript@5.8.3) react: 18.2.0 @@ -30214,14 +30360,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.100.2) + style-loader: 1.3.0(webpack@5.101.0) telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.100.2) + terser-webpack-plugin: 4.2.3(webpack@5.101.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@4.10.0) + webpack-dev-middleware: 3.7.3(webpack@5.101.0) webpack-virtual-modules: 0.2.2 optionalDependencies: typescript: 5.8.3 @@ -30235,29 +30381,29 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.5.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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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/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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 core-js: 3.44.0 - css-loader: 3.6.0(webpack@5.100.2) + css-loader: 3.6.0(webpack@5.101.0) express: 4.21.2 - file-loader: 6.2.0(webpack@5.100.2) + file-loader: 6.2.0(webpack@5.101.0) find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.100.2) + html-webpack-plugin: 4.5.2(webpack@5.101.0) node-fetch: 2.7.0(encoding@0.1.13) pnp-webpack-plugin: 1.6.4(typescript@5.8.3) react: 18.2.0 @@ -30265,14 +30411,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.100.2) + style-loader: 1.3.0(webpack@5.101.0) telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.100.2) + terser-webpack-plugin: 4.2.3(webpack@5.101.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@6.0.1) + webpack-dev-middleware: 3.7.3(webpack@5.101.0) webpack-virtual-modules: 0.2.2 optionalDependencies: typescript: 5.8.3 @@ -30286,29 +30432,29 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.5.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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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/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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 core-js: 3.44.0 - css-loader: 3.6.0(webpack@5.100.2) + css-loader: 3.6.0(webpack@5.101.0) express: 4.21.2 - file-loader: 6.2.0(webpack@5.100.2) + file-loader: 6.2.0(webpack@5.101.0) find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.100.2) + html-webpack-plugin: 4.5.2(webpack@5.101.0) node-fetch: 2.7.0(encoding@0.1.13) pnp-webpack-plugin: 1.6.4(typescript@4.9.5) react: 19.1.0 @@ -30316,14 +30462,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.100.2) + style-loader: 1.3.0(webpack@5.101.0) telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.100.2) + terser-webpack-plugin: 4.2.3(webpack@5.101.0) ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0) util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@5.1.4) + webpack-dev-middleware: 3.7.3(webpack@5.101.0) webpack-virtual-modules: 0.2.2 optionalDependencies: typescript: 4.9.5 @@ -30337,27 +30483,27 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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)': 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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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/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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 core-js: 3.44.0 - css-loader: 5.2.7(webpack@5.100.2) + css-loader: 5.2.7(webpack@5.101.0) express: 4.21.2 find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 5.6.3(webpack@5.100.2) + html-webpack-plugin: 5.6.3(webpack@5.101.0) node-fetch: 2.7.0(encoding@0.1.13) process: 0.11.10 react: 18.2.0 @@ -30365,13 +30511,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.100.2) + style-loader: 2.0.0(webpack@5.101.0) telejson: 6.0.8 - terser-webpack-plugin: 5.3.14(webpack@5.100.2) + terser-webpack-plugin: 5.3.14(webpack@5.101.0) ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 4.3.0(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@4.10.0) + webpack-dev-middleware: 4.3.0(webpack@5.101.0) webpack-virtual-modules: 0.4.6 optionalDependencies: typescript: 5.8.3 @@ -30386,27 +30532,27 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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)': 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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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/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.100.2) + babel-loader: 8.4.1(@babel/core@7.27.7)(webpack@5.101.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 core-js: 3.44.0 - css-loader: 5.2.7(webpack@5.100.2) + css-loader: 5.2.7(webpack@5.101.0) express: 4.21.2 find-up: 5.0.0 fs-extra: 9.1.0 - html-webpack-plugin: 5.6.3(webpack@5.100.2) + html-webpack-plugin: 5.6.3(webpack@5.101.0) node-fetch: 2.7.0(encoding@0.1.13) process: 0.11.10 react: 18.2.0 @@ -30414,13 +30560,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.100.2) + style-loader: 2.0.0(webpack@5.101.0) telejson: 6.0.8 - terser-webpack-plugin: 5.3.14(webpack@5.100.2) + terser-webpack-plugin: 5.3.14(webpack@5.101.0) ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-dev-middleware: 4.3.0(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@6.0.1) + webpack-dev-middleware: 4.3.0(webpack@5.101.0) webpack-virtual-modules: 0.4.6 optionalDependencies: typescript: 5.8.3 @@ -30442,7 +30588,7 @@ snapshots: '@babel/generator': 7.28.0 '@babel/parser': 7.28.0 '@babel/preset-env': 7.27.2(@babel/core@7.27.7) - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@mdx-js/mdx': 1.6.22 '@types/lodash': 4.17.17 js-string-escape: 1.0.1 @@ -30474,16 +30620,16 @@ snapshots: '@storybook/postinstall@7.4.6': {} - '@storybook/preset-react-webpack@7.4.6(@babel/core@7.28.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-dev-server@5.2.2(webpack@5.100.2))(webpack-hot-middleware@2.26.1)': + '@storybook/preset-react-webpack@7.4.6(@babel/core@7.28.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-dev-server@5.2.2(webpack@5.101.0))(webpack-hot-middleware@2.26.1)': dependencies: '@babel/preset-flow': 7.27.1(@babel/core@7.28.0) '@babel/preset-react': 7.27.1(@babel/core@7.28.0) - '@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.100.2))(webpack-hot-middleware@2.26.1)(webpack@5.100.2) + '@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) '@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.100.2) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.101.0) '@types/node': 16.18.126 '@types/semver': 7.7.0 babel-plugin-add-react-displayname: 0.0.5 @@ -30493,7 +30639,7 @@ snapshots: react-dom: 19.1.0(react@19.1.0) react-refresh: 0.11.0 semver: 7.7.2 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: '@babel/core': 7.28.0 typescript: 5.8.3 @@ -30515,7 +30661,7 @@ snapshots: 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.100.2) + '@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 find-up: 5.0.0 magic-string: 0.30.17 @@ -30526,7 +30672,7 @@ snapshots: semver: 7.7.2 storybook: 8.6.14(prettier@3.5.3) tsconfig-paths: 4.2.0 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -30537,11 +30683,11 @@ snapshots: - uglify-js - webpack-cli - '@storybook/preset-react-webpack@8.6.14(@storybook/test@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(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.0.18(@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.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(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.100.2) + '@storybook/core-webpack': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.0.18(@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.0.18(@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 find-up: 5.0.0 magic-string: 0.30.17 @@ -30550,9 +30696,9 @@ snapshots: react-dom: 18.2.0(react@18.2.0) resolve: 1.22.10 semver: 7.7.2 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) tsconfig-paths: 4.2.0 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -30601,9 +30747,9 @@ snapshots: dependencies: storybook: 8.6.14(prettier@3.5.3) - '@storybook/preview-api@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/preview-api@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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: @@ -30649,7 +30795,7 @@ snapshots: '@storybook/preview@7.4.6': {} - '@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@4.9.5)(webpack@5.100.2)': + '@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@4.9.5)(webpack@5.101.0)': dependencies: debug: 4.4.1(supports-color@8.1.1) endent: 2.1.0 @@ -30659,11 +30805,11 @@ snapshots: react-docgen-typescript: 2.4.0(typescript@4.9.5) tslib: 2.8.1 typescript: 4.9.5 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.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.100.2)': + '@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.101.0)': dependencies: debug: 4.4.1(supports-color@8.1.1) endent: 2.1.0 @@ -30673,11 +30819,11 @@ snapshots: react-docgen-typescript: 2.4.0(typescript@5.8.3) tslib: 2.8.1 typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) transitivePeerDependencies: - supports-color - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.100.2)': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.101.0)': dependencies: debug: 4.4.1(supports-color@8.1.1) endent: 2.1.0 @@ -30687,7 +30833,7 @@ snapshots: react-docgen-typescript: 2.4.0(typescript@5.8.3) tslib: 2.8.1 typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) transitivePeerDependencies: - supports-color @@ -30702,11 +30848,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.0.17(@testing-library/dom@10.4.0)(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.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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: @@ -30714,42 +30860,42 @@ 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.0.17(@testing-library/dom@10.4.0)(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.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) - '@storybook/react-dom-shim@9.0.17(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/react-dom-shim@9.0.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) - '@storybook/react-vite@9.0.17(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.45.1)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))': + '@storybook/react-vite@9.0.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.46.1)(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) - '@rollup/pluginutils': 5.2.0(rollup@4.45.1) - '@storybook/builder-vite': 9.0.17(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(vite@6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) - '@storybook/react': 9.0.17(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) + '@rollup/pluginutils': 5.2.0(rollup@4.46.1) + '@storybook/builder-vite': 9.0.18(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))(vite@6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) + '@storybook/react': 9.0.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3) find-up: 7.0.0 magic-string: 0.30.17 react: 19.1.0 react-docgen: 8.0.0 react-dom: 19.1.0(react@19.1.0) resolve: 1.22.10 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) tsconfig-paths: 4.2.0 - vite: 6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) + vite: 6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) transitivePeerDependencies: - rollup - supports-color - typescript - '@storybook/react-webpack5@7.4.6(@babel/core@7.28.0)(@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-dev-server@5.2.2(webpack@5.100.2))(webpack-hot-middleware@2.26.1)': + '@storybook/react-webpack5@7.4.6(@babel/core@7.28.0)(@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-dev-server@5.2.2(webpack@5.101.0))(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.28.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-dev-server@5.2.2(webpack@5.100.2))(webpack-hot-middleware@2.26.1) + '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.28.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-dev-server@5.2.2(webpack@5.101.0))(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 @@ -30794,14 +30940,14 @@ snapshots: - uglify-js - webpack-cli - '@storybook/react-webpack5@8.6.14(@storybook/test@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(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.0.18(@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.0.18(@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.0.17(@testing-library/dom@10.4.0)(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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) + '@storybook/builder-webpack5': 8.6.14(storybook@9.0.18(@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.0.18(@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.0.18(@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.0.18(@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.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -30813,19 +30959,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.4.2))(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.4.2))(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.4.2))(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(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)': 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.100.2) + '@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) '@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.4.2))(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.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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(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/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.100.2) + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.101.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 @@ -30852,11 +30998,11 @@ snapshots: require-from-string: 2.0.2 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) + webpack: 5.101.0(webpack-cli@4.10.0) optionalDependencies: '@babel/core': 7.27.7 - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.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) typescript: 5.8.3 transitivePeerDependencies: - '@storybook/mdx2-csf' @@ -30877,19 +31023,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.4.2))(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.4.2))(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.4.2))(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.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)': 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.100.2) + '@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) '@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.4.2))(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.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.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/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.100.2) + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.101.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 @@ -30916,11 +31062,11 @@ snapshots: require-from-string: 2.0.2 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) optionalDependencies: '@babel/core': 7.27.7 - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.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' @@ -30941,19 +31087,19 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react@6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.26.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1)': + '@storybook/react@6.5.16(@babel/core@7.28.0)(@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)': dependencies: '@babel/preset-flow': 7.27.1(@babel/core@7.28.0) '@babel/preset-react': 7.27.1(@babel/core@7.28.0) - '@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.100.2))(webpack-hot-middleware@2.26.1)(webpack@5.100.2) + '@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) '@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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.100.2) - '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.4.2))(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.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/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.100.2) + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.101.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 @@ -30980,7 +31126,7 @@ snapshots: require-from-string: 2.0.2 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: '@babel/core': 7.28.0 typescript: 5.8.3 @@ -31003,19 +31149,19 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react@6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1)': + '@storybook/react@6.5.16(@babel/core@7.28.0)(@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)': dependencies: '@babel/preset-flow': 7.27.1(@babel/core@7.28.0) '@babel/preset-react': 7.27.1(@babel/core@7.28.0) - '@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.100.2))(webpack-hot-middleware@2.26.1)(webpack@5.100.2) + '@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) '@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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.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/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.100.2) + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.101.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 @@ -31042,7 +31188,7 @@ snapshots: require-from-string: 2.0.2 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: '@babel/core': 7.28.0 typescript: 5.8.3 @@ -31065,19 +31211,19 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react@6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1)': + '@storybook/react@6.5.16(@babel/core@7.28.0)(@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)': dependencies: '@babel/preset-flow': 7.27.1(@babel/core@7.28.0) '@babel/preset-react': 7.27.1(@babel/core@7.28.0) - '@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.100.2))(webpack-hot-middleware@2.26.1)(webpack@5.100.2) + '@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) '@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.4.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.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/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.100.2) + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@4.9.5)(webpack@5.101.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 @@ -31104,7 +31250,7 @@ snapshots: require-from-string: 2.0.2 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: '@babel/core': 7.28.0 typescript: 4.9.5 @@ -31173,28 +31319,28 @@ 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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)': + '@storybook/react@8.6.14(@storybook/test@8.6.14(storybook@9.0.18(@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.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3)': dependencies: - '@storybook/components': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + '@storybook/components': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/preview-api': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/theming': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + '@storybook/manager-api': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/preview-api': 8.6.14(storybook@9.0.18(@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.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) + '@storybook/theming': 8.6.14(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) optionalDependencies: - '@storybook/test': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + '@storybook/test': 8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3)) typescript: 5.8.3 - '@storybook/react@9.0.17(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)': + '@storybook/react@9.0.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.18(@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.0.17(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + '@storybook/react-dom-shim': 9.0.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) optionalDependencies: typescript: 5.8.3 @@ -31291,10 +31437,10 @@ 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.4.2))(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.5.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.26.0(jiti@2.4.2))(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.5.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.44.0 detect-package-manager: 2.0.1 @@ -31318,10 +31464,10 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.5.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.4.2))(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.27.0(jiti@2.5.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.44.0 detect-package-manager: 2.0.1 @@ -31345,10 +31491,10 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.5.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.4.2))(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.5.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.44.0 detect-package-manager: 2.0.1 @@ -31372,10 +31518,10 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.5.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.27.0(jiti@2.4.2))(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.5.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.44.0 detect-package-manager: 2.0.1 @@ -31399,10 +31545,10 @@ snapshots: - vue-template-compiler - webpack-cli - '@storybook/telemetry@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.5.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.4.2))(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.5.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.44.0 detect-package-manager: 2.0.1 @@ -31451,16 +31597,16 @@ snapshots: '@vitest/spy': 2.0.5 storybook: 8.6.14(prettier@3.5.3) - '@storybook/test@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/test@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3)) + '@storybook/instrumenter': 8.6.14(storybook@9.0.18(@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.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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)': @@ -31494,9 +31640,9 @@ snapshots: dependencies: storybook: 8.6.14(prettier@3.5.3) - '@storybook/theming@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))': + '@storybook/theming@8.6.14(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))': dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3) '@storybook/types@7.4.6': dependencies: @@ -31552,7 +31698,7 @@ snapshots: '@swagger-api/apidom-ast@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-error': 1.0.0-beta.44 '@types/ramda': 0.30.2 ramda: 0.30.1 @@ -31561,7 +31707,7 @@ snapshots: '@swagger-api/apidom-core@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-ast': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 '@types/ramda': 0.30.2 @@ -31573,18 +31719,18 @@ snapshots: '@swagger-api/apidom-error@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-json-pointer@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 '@swaggerexpert/json-pointer': 2.10.2 '@swagger-api/apidom-ns-api-design-systems@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.44 @@ -31596,7 +31742,7 @@ snapshots: '@swagger-api/apidom-ns-arazzo-1@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-json-schema-2020-12': 1.0.0-beta.44 '@types/ramda': 0.30.2 @@ -31607,7 +31753,7 @@ snapshots: '@swagger-api/apidom-ns-asyncapi-2@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-json-schema-draft-7': 1.0.0-beta.44 '@types/ramda': 0.30.2 @@ -31618,7 +31764,7 @@ snapshots: '@swagger-api/apidom-ns-json-schema-2019-09@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 '@swagger-api/apidom-ns-json-schema-draft-7': 1.0.0-beta.44 @@ -31629,7 +31775,7 @@ snapshots: '@swagger-api/apidom-ns-json-schema-2020-12@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 '@swagger-api/apidom-ns-json-schema-2019-09': 1.0.0-beta.44 @@ -31640,7 +31786,7 @@ snapshots: '@swagger-api/apidom-ns-json-schema-draft-4@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-ast': 1.0.0-beta.44 '@swagger-api/apidom-core': 1.0.0-beta.44 '@types/ramda': 0.30.2 @@ -31650,7 +31796,7 @@ snapshots: '@swagger-api/apidom-ns-json-schema-draft-6@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-beta.44 @@ -31661,7 +31807,7 @@ snapshots: '@swagger-api/apidom-ns-json-schema-draft-7@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 '@swagger-api/apidom-ns-json-schema-draft-6': 1.0.0-beta.44 @@ -31672,7 +31818,7 @@ snapshots: '@swagger-api/apidom-ns-openapi-2@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-beta.44 @@ -31684,7 +31830,7 @@ snapshots: '@swagger-api/apidom-ns-openapi-3-0@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-beta.44 @@ -31695,7 +31841,7 @@ snapshots: '@swagger-api/apidom-ns-openapi-3-1@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-ast': 1.0.0-beta.44 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-json-pointer': 1.0.0-beta.44 @@ -31708,7 +31854,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-api-design-systems': 1.0.0-beta.44 '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.44 @@ -31719,7 +31865,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-api-design-systems': 1.0.0-beta.44 '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.44 @@ -31730,7 +31876,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-arazzo-1': 1.0.0-beta.44 '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.44 @@ -31741,7 +31887,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-arazzo-1': 1.0.0-beta.44 '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.44 @@ -31752,7 +31898,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-beta.44 '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.44 @@ -31763,7 +31909,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-beta.44 '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.44 @@ -31774,7 +31920,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-json@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-ast': 1.0.0-beta.44 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 @@ -31788,7 +31934,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-openapi-json-2@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-openapi-2': 1.0.0-beta.44 '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.44 @@ -31799,7 +31945,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.44 '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.44 @@ -31810,7 +31956,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.44 '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.44 @@ -31821,7 +31967,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-openapi-2': 1.0.0-beta.44 '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.44 @@ -31832,7 +31978,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.44 '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.44 @@ -31843,7 +31989,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.44 '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.44 @@ -31854,7 +32000,7 @@ snapshots: '@swagger-api/apidom-parser-adapter-yaml-1-2@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-ast': 1.0.0-beta.44 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 @@ -31868,7 +32014,7 @@ snapshots: '@swagger-api/apidom-reference@1.0.0-beta.44': dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 '@types/ramda': 0.30.2 @@ -31909,51 +32055,51 @@ snapshots: dependencies: apg-lite: 1.0.5 - '@swc/core-darwin-arm64@1.13.1': + '@swc/core-darwin-arm64@1.13.3': optional: true - '@swc/core-darwin-x64@1.13.1': + '@swc/core-darwin-x64@1.13.3': optional: true - '@swc/core-linux-arm-gnueabihf@1.13.1': + '@swc/core-linux-arm-gnueabihf@1.13.3': optional: true - '@swc/core-linux-arm64-gnu@1.13.1': + '@swc/core-linux-arm64-gnu@1.13.3': optional: true - '@swc/core-linux-arm64-musl@1.13.1': + '@swc/core-linux-arm64-musl@1.13.3': optional: true - '@swc/core-linux-x64-gnu@1.13.1': + '@swc/core-linux-x64-gnu@1.13.3': optional: true - '@swc/core-linux-x64-musl@1.13.1': + '@swc/core-linux-x64-musl@1.13.3': optional: true - '@swc/core-win32-arm64-msvc@1.13.1': + '@swc/core-win32-arm64-msvc@1.13.3': optional: true - '@swc/core-win32-ia32-msvc@1.13.1': + '@swc/core-win32-ia32-msvc@1.13.3': optional: true - '@swc/core-win32-x64-msvc@1.13.1': + '@swc/core-win32-x64-msvc@1.13.3': optional: true - '@swc/core@1.13.1(@swc/helpers@0.5.17)': + '@swc/core@1.13.3(@swc/helpers@0.5.17)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.23 optionalDependencies: - '@swc/core-darwin-arm64': 1.13.1 - '@swc/core-darwin-x64': 1.13.1 - '@swc/core-linux-arm-gnueabihf': 1.13.1 - '@swc/core-linux-arm64-gnu': 1.13.1 - '@swc/core-linux-arm64-musl': 1.13.1 - '@swc/core-linux-x64-gnu': 1.13.1 - '@swc/core-linux-x64-musl': 1.13.1 - '@swc/core-win32-arm64-msvc': 1.13.1 - '@swc/core-win32-ia32-msvc': 1.13.1 - '@swc/core-win32-x64-msvc': 1.13.1 + '@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/helpers': 0.5.17 '@swc/counter@0.1.3': {} @@ -32040,7 +32186,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -32048,6 +32194,17 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 + '@testing-library/dom@10.4.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/runtime': 7.28.2 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + picocolors: 1.1.1 + pretty-format: 27.5.1 + '@testing-library/jest-dom@6.5.0': dependencies: '@adobe/css-tools': 4.4.3 @@ -32058,20 +32215,20 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/jest-dom@6.6.3': + '@testing-library/jest-dom@6.6.4': dependencies: '@adobe/css-tools': 4.4.3 aria-query: 5.3.2 - chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 lodash: 4.17.21 + picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@18.2.0)(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@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.27.6 - '@testing-library/dom': 10.4.0 + '@babel/runtime': 7.28.2 + '@testing-library/dom': 10.4.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: @@ -32082,9 +32239,9 @@ snapshots: dependencies: '@testing-library/dom': 10.4.0 - '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': + '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: - '@testing-library/dom': 10.4.0 + '@testing-library/dom': 10.4.1 '@textlint/ast-node-types@14.8.4': {} @@ -32149,23 +32306,23 @@ snapshots: '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.7 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__traverse@7.20.7': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/blueimp-md5@2.18.2': {} @@ -32225,6 +32382,8 @@ snapshots: '@types/detect-port@1.3.5': {} + '@types/diff-match-patch@1.0.36': {} + '@types/doctrine@0.0.3': {} '@types/doctrine@0.0.9': {} @@ -32425,7 +32584,7 @@ snapshots: '@types/node@16.18.126': {} - '@types/node@18.19.120': + '@types/node@18.19.121': dependencies: undici-types: 5.26.5 @@ -32617,7 +32776,7 @@ snapshots: dependencies: '@types/node': 22.15.35 '@types/source-list-map': 0.1.6 - source-map: 0.7.4 + source-map: 0.7.6 '@types/webpack@4.41.40': dependencies: @@ -32632,7 +32791,7 @@ snapshots: dependencies: '@types/node': 22.15.35 tapable: 2.2.2 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -32644,7 +32803,7 @@ snapshots: dependencies: '@types/node': 22.15.35 tapable: 2.2.2 - webpack: 5.100.2(webpack-cli@4.10.0) + webpack: 5.101.0(webpack-cli@4.10.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -32656,7 +32815,7 @@ snapshots: dependencies: '@types/node': 22.15.35 tapable: 2.2.2 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - esbuild @@ -32667,7 +32826,7 @@ snapshots: dependencies: '@types/node': 22.15.35 tapable: 2.2.2 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) transitivePeerDependencies: - '@swc/core' - esbuild @@ -32783,15 +32942,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + '@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)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.5.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.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@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/visitor-keys': 8.32.1 - eslint: 9.27.0(jiti@2.4.2) + eslint: 9.27.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -32800,15 +32959,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + '@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)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.33.1(eslint@9.26.0(jiti@2.5.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.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@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/visitor-keys': 8.32.1 - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -32817,15 +32976,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + '@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)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.33.1(eslint@9.27.0(jiti@2.5.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.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@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/visitor-keys': 8.32.1 - eslint: 9.27.0(jiti@2.4.2) + eslint: 9.27.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -32834,15 +32993,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + '@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)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.33.1(eslint@9.27.0(jiti@2.5.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.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@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/visitor-keys': 8.33.1 - eslint: 9.27.0(jiti@2.4.2) + eslint: 9.27.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -32912,14 +33071,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.5.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.4.2) + eslint: 9.27.0(jiti@2.5.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -32936,26 +33095,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.5.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.4.2) + eslint: 9.26.0(jiti@2.5.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.5.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.4.2) + eslint: 9.27.0(jiti@2.5.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -33052,34 +33211,34 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.32.1(eslint@9.26.0(jiti@2.5.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.4.2))(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.4.2) + eslint: 9.26.0(jiti@2.5.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.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0(jiti@2.5.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.4.2))(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.4.2) + eslint: 9.27.0(jiti@2.5.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.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.33.1(eslint@9.27.0(jiti@2.5.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.4.2))(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.4.2) + eslint: 9.27.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -33241,35 +33400,35 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.32.1(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.5.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.4.2) + eslint: 9.26.0(jiti@2.5.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.5.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.4.2) + eslint: 9.27.0(jiti@2.5.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.33.1(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.5.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.4.2) + eslint: 9.27.0(jiti@2.5.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -33335,7 +33494,7 @@ snapshots: '@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)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 '@codemirror/commands': 6.8.1 '@codemirror/state': 6.5.2 '@codemirror/theme-one-dark': 6.1.3 @@ -33349,7 +33508,7 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.7.0(vite@6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))': + '@vitejs/plugin-react@4.7.0(vite@6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) @@ -33357,7 +33516,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) + vite: 6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -33400,19 +33559,19 @@ snapshots: dependencies: '@vitest/pretty-format': 2.0.5 estree-walker: 3.0.3 - loupe: 3.1.4 + loupe: 3.2.0 tinyrainbow: 1.2.0 '@vitest/utils@2.1.9': dependencies: '@vitest/pretty-format': 2.1.9 - loupe: 3.1.4 + loupe: 3.2.0 tinyrainbow: 1.2.0 '@vitest/utils@3.2.4': dependencies: '@vitest/pretty-format': 3.2.4 - loupe: 3.1.4 + loupe: 3.2.0 tinyrainbow: 2.0.0 '@vscode-logging/logger@2.0.0': @@ -33521,7 +33680,7 @@ snapshots: parse-semver: 1.1.1 read: 1.0.7 semver: 7.7.2 - tmp: 0.2.3 + tmp: 0.2.4 typed-rest-client: 1.8.11 url-join: 4.0.1 xml2js: 0.5.0 @@ -33557,7 +33716,7 @@ snapshots: read: 1.0.7 secretlint: 9.3.4 semver: 7.7.2 - tmp: 0.2.3 + tmp: 0.2.4 typed-rest-client: 1.8.11 url-join: 4.0.1 xml2js: 0.5.0 @@ -33660,64 +33819,64 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.100.2)': + '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.101.0)': dependencies: - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.100.2) + 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-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.100.2)': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.101.0)': dependencies: - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2) + 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-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.100.2)': + '@webpack-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.101.0)': dependencies: - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack@5.101.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.100.2) + webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.100.2)': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.101.0)': dependencies: - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2) + 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-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.100.2)': + '@webpack-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.101.0)': dependencies: - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack@5.101.0) '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)': dependencies: - webpack-cli: 4.10.0(webpack@5.100.2) + webpack-cli: 4.10.0(webpack@5.101.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.100.2) + webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0) optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.100.2) + webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.101.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack@5.100.2)': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack@5.101.0)': dependencies: - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.101.0) optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.100.2) + webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.101.0) - '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.100.2)': + '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.101.0)': dependencies: - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) + webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) - '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack@5.100.2)': + '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack@5.101.0)': dependencies: - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack@5.101.0) '@xmldom/xmldom@0.7.13': {} @@ -33838,6 +33997,30 @@ snapshots: clean-stack: 4.2.0 indent-string: 5.0.0 + ai@4.3.19(react@18.2.0)(zod@3.25.76): + dependencies: + '@ai-sdk/provider': 1.1.3 + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + '@ai-sdk/react': 1.2.12(react@18.2.0)(zod@3.25.76) + '@ai-sdk/ui-utils': 1.2.11(zod@3.25.76) + '@opentelemetry/api': 1.9.0 + jsondiffpatch: 0.6.0 + zod: 3.25.76 + optionalDependencies: + react: 18.2.0 + + ai@4.3.19(react@19.1.0)(zod@3.25.76): + dependencies: + '@ai-sdk/provider': 1.1.3 + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + '@ai-sdk/react': 1.2.12(react@19.1.0)(zod@3.25.76) + '@ai-sdk/ui-utils': 1.2.11(zod@3.25.76) + '@opentelemetry/api': 1.9.0 + jsondiffpatch: 0.6.0 + zod: 3.25.76 + optionalDependencies: + react: 19.1.0 + airbnb-js-shims@2.2.1: dependencies: array-includes: 3.1.9 @@ -34220,7 +34403,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.25.1 - caniuse-lite: 1.0.30001727 + caniuse-lite: 1.0.30001731 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -34230,7 +34413,7 @@ snapshots: autoprefixer@6.7.7: dependencies: browserslist: 1.7.7 - caniuse-db: 1.0.30001727 + caniuse-db: 1.0.30001731 normalize-range: 0.1.2 num2fraction: 1.2.2 postcss: 5.2.18 @@ -34239,7 +34422,7 @@ snapshots: autoprefixer@7.1.6: dependencies: browserslist: 2.11.3 - caniuse-lite: 1.0.30001727 + caniuse-lite: 1.0.30001731 normalize-range: 0.1.2 num2fraction: 1.2.2 postcss: 6.0.23 @@ -34248,7 +34431,7 @@ snapshots: autoprefixer@9.8.8: dependencies: browserslist: 4.25.1 - caniuse-lite: 1.0.30001727 + caniuse-lite: 1.0.30001731 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -34328,7 +34511,7 @@ snapshots: '@babel/code-frame': 7.27.1 '@babel/parser': 7.28.0 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 eslint: 6.8.0 eslint-visitor-keys: 1.3.0 resolve: 1.22.10 @@ -34462,43 +34645,43 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@10.0.0(@babel/core@7.27.7)(webpack@5.100.2): + babel-loader@10.0.0(@babel/core@7.27.7)(webpack@5.101.0): dependencies: '@babel/core': 7.27.7 find-up: 5.0.0 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - babel-loader@7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(webpack@5.100.2): + babel-loader@7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(webpack@5.101.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.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - babel-loader@7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.28.0))(webpack@5.100.2): + babel-loader@7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.28.0))(webpack@5.101.0): dependencies: babel-core: 7.0.0-bridge.0(@babel/core@7.28.0) find-cache-dir: 1.0.0 loader-utils: 1.4.2 mkdirp: 0.5.6 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) - babel-loader@8.4.1(@babel/core@7.27.7)(webpack@5.100.2): + babel-loader@8.4.1(@babel/core@7.27.7)(webpack@5.101.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.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - babel-loader@9.2.1(@babel/core@7.27.7)(webpack@5.100.2): + babel-loader@9.2.1(@babel/core@7.27.7)(webpack@5.101.0): dependencies: '@babel/core': 7.27.7 find-cache-dir: 4.0.0 schema-utils: 4.3.2 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) babel-messages@6.23.0: dependencies: @@ -34558,25 +34741,25 @@ snapshots: babel-plugin-jest-hoist@25.5.0: dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__traverse': 7.20.7 babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.7 babel-plugin-macros@2.8.0: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 cosmiconfig: 6.0.0 resolve: 1.22.10 babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 cosmiconfig: 7.1.0 resolve: 1.22.10 @@ -34883,7 +35066,7 @@ snapshots: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.7) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.7) - babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.7): + babel-preset-current-node-syntax@1.1.1(@babel/core@7.27.7): dependencies: '@babel/core': 7.27.7 '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.7) @@ -34958,7 +35141,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.7) + babel-preset-current-node-syntax: 1.1.1(@babel/core@7.27.7) babel-preset-react-app@3.1.2(babel-runtime@6.26.0): dependencies: @@ -35200,18 +35383,18 @@ snapshots: browserslist@1.7.7: dependencies: - caniuse-db: 1.0.30001727 - electron-to-chromium: 1.5.189 + caniuse-db: 1.0.30001731 + electron-to-chromium: 1.5.192 browserslist@2.11.3: dependencies: - caniuse-lite: 1.0.30001727 - electron-to-chromium: 1.5.189 + caniuse-lite: 1.0.30001731 + electron-to-chromium: 1.5.192 browserslist@4.25.1: dependencies: - caniuse-lite: 1.0.30001727 - electron-to-chromium: 1.5.189 + caniuse-lite: 1.0.30001731 + electron-to-chromium: 1.5.192 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.1) @@ -35387,9 +35570,9 @@ snapshots: normalize-url: 8.0.2 responselike: 3.0.0 - cacheable@1.10.2: + cacheable@1.10.3: dependencies: - hookified: 1.10.0 + hookified: 1.11.0 keyv: 5.4.0 call-bind-apply-helpers@1.0.2: @@ -35460,20 +35643,20 @@ snapshots: caniuse-api@1.6.1: dependencies: browserslist: 1.7.7 - caniuse-db: 1.0.30001727 + caniuse-db: 1.0.30001731 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 caniuse-api@3.0.0: dependencies: browserslist: 4.25.1 - caniuse-lite: 1.0.30001727 + caniuse-lite: 1.0.30001731 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-db@1.0.30001727: {} + caniuse-db@1.0.30001731: {} - caniuse-lite@1.0.30001727: {} + caniuse-lite@1.0.30001731: {} capture-exit@2.0.0: dependencies: @@ -35508,7 +35691,7 @@ snapshots: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.4 + loupe: 3.2.0 pathval: 2.0.1 chainsaw@0.1.0: @@ -35983,14 +36166,14 @@ snapshots: dependencies: toggle-selection: 1.0.6 - copy-webpack-plugin@13.0.0(webpack@5.100.2): + copy-webpack-plugin@13.0.0(webpack@5.101.0): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.2 serialize-javascript: 6.0.2 tinyglobby: 0.2.14 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) copyfiles@2.4.1: dependencies: @@ -36126,7 +36309,7 @@ snapshots: - supports-color - ts-node - create-storybook@9.0.17: + create-storybook@9.0.18: dependencies: semver: 7.7.2 @@ -36201,7 +36384,7 @@ snapshots: postcss-value-parser: 3.3.1 source-list-map: 2.0.1 - css-loader@3.6.0(webpack@5.100.2): + css-loader@3.6.0(webpack@5.101.0): dependencies: camelcase: 5.3.1 cssesc: 3.0.0 @@ -36216,9 +36399,9 @@ snapshots: postcss-value-parser: 4.2.0 schema-utils: 2.7.1 semver: 6.3.1 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - css-loader@5.2.7(webpack@5.100.2): + css-loader@5.2.7(webpack@5.101.0): dependencies: icss-utils: 5.1.0(postcss@8.5.6) loader-utils: 2.0.4 @@ -36230,9 +36413,9 @@ snapshots: postcss-value-parser: 4.2.0 schema-utils: 3.3.0 semver: 7.7.2 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - css-loader@6.11.0(webpack@5.100.2): + css-loader@6.11.0(webpack@5.101.0): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -36243,9 +36426,9 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.2 optionalDependencies: - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - css-loader@7.1.2(webpack@5.100.2): + css-loader@7.1.2(webpack@5.101.0): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -36256,7 +36439,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.2 optionalDependencies: - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) css-select@4.3.0: dependencies: @@ -36718,6 +36901,8 @@ snapshots: didyoumean@1.2.2: {} + diff-match-patch@1.0.5: {} + diff-sequences@25.2.6: {} diff-sequences@29.6.3: {} @@ -36883,7 +37068,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.189: {} + electron-to-chromium@1.5.192: {} email-addresses@5.0.0: {} @@ -37095,7 +37280,7 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - es-toolkit@1.39.7: {} + es-toolkit@1.39.8: {} es5-ext@0.10.64: dependencies: @@ -37303,21 +37488,21 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-react-hooks@5.2.0(eslint@9.26.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.2.0(eslint@9.26.0(jiti@2.5.1)): dependencies: - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.5.1) - eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.5.1)): dependencies: - eslint: 9.27.0(jiti@2.4.2) + eslint: 9.27.0(jiti@2.5.1) eslint-plugin-react-refresh@0.4.20(eslint@8.57.1): dependencies: eslint: 8.57.1 - eslint-plugin-react-refresh@0.4.20(eslint@9.27.0(jiti@2.4.2)): + eslint-plugin-react-refresh@0.4.20(eslint@9.27.0(jiti@2.5.1)): dependencies: - eslint: 9.27.0(jiti@2.4.2) + eslint: 9.27.0(jiti@2.5.1) eslint-plugin-react@7.37.5(eslint@6.8.0): dependencies: @@ -37363,26 +37548,26 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-storybook@9.0.17(eslint@8.57.1)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3): + eslint-plugin-storybook@9.0.18(eslint@8.57.1)(storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3))(typescript@5.8.3): dependencies: '@typescript-eslint/utils': 8.38.0(eslint@8.57.1)(typescript@5.8.3) eslint: 8.57.1 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3) + storybook: 9.0.18(@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.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)): + 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)): dependencies: - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.5.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@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-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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)): + 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)): dependencies: - eslint: 9.27.0(jiti@2.4.2) + eslint: 9.27.0(jiti@2.5.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@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-scope@5.1.1: dependencies: @@ -37505,9 +37690,9 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@9.26.0(jiti@2.4.2): + eslint@9.26.0(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.1 '@eslint/config-helpers': 0.2.3 @@ -37518,7 +37703,7 @@ snapshots: '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@modelcontextprotocol/sdk': 1.16.0 + '@modelcontextprotocol/sdk': 1.17.0 '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 ajv: 6.12.6 @@ -37545,13 +37730,13 @@ snapshots: optionator: 0.9.4 zod: 3.25.76 optionalDependencies: - jiti: 2.4.2 + jiti: 2.5.1 transitivePeerDependencies: - supports-color - eslint@9.27.0(jiti@2.4.2): + eslint@9.27.0(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.1 '@eslint/config-helpers': 0.2.3 @@ -37587,7 +37772,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.4.2 + jiti: 2.5.1 transitivePeerDependencies: - supports-color @@ -37637,7 +37822,7 @@ snapshots: estree-to-babel@3.2.1: dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 c8: 7.14.0 transitivePeerDependencies: - supports-color @@ -37889,12 +38074,12 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - extract-text-webpack-plugin@3.0.2(webpack@5.100.2): + extract-text-webpack-plugin@3.0.2(webpack@5.101.0): dependencies: async: 2.6.4 loader-utils: 1.4.2 schema-utils: 0.3.0 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) webpack-sources: 1.4.3 extract-zip@1.7.0: @@ -38030,9 +38215,9 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - file-entry-cache@10.1.1: + file-entry-cache@10.1.3: dependencies: - flat-cache: 6.1.11 + flat-cache: 6.1.12 file-entry-cache@5.0.1: dependencies: @@ -38052,17 +38237,17 @@ snapshots: minimatch: 3.1.2 proper-lockfile: 1.2.0 - file-loader@1.1.5(webpack@5.100.2): + file-loader@1.1.5(webpack@5.101.0): dependencies: loader-utils: 1.4.2 schema-utils: 0.3.0 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - file-loader@6.2.0(webpack@5.100.2): + file-loader@6.2.0(webpack@5.101.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) file-system-cache@1.1.0: dependencies: @@ -38221,11 +38406,11 @@ snapshots: flatted: 3.3.3 keyv: 4.5.4 - flat-cache@6.1.11: + flat-cache@6.1.12: dependencies: - cacheable: 1.10.2 + cacheable: 1.10.3 flatted: 3.3.3 - hookified: 1.10.0 + hookified: 1.11.0 flat@5.0.2: {} @@ -38235,7 +38420,7 @@ snapshots: flatten@1.0.3: {} - flow-parser@0.276.0: {} + flow-parser@0.277.1: {} flush-write-stream@1.1.1: dependencies: @@ -38270,7 +38455,7 @@ snapshots: forever-agent@0.6.1: {} - fork-ts-checker-webpack-plugin@0.2.10(typescript@5.8.3)(webpack@5.100.2): + fork-ts-checker-webpack-plugin@0.2.10(typescript@5.8.3)(webpack@5.101.0): dependencies: babel-code-frame: 6.26.0 chalk: 1.1.3 @@ -38281,7 +38466,7 @@ snapshots: lodash.startswith: 4.2.1 minimatch: 3.1.2 typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) fork-ts-checker-webpack-plugin@4.1.6: dependencies: @@ -38293,7 +38478,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.4.2))(typescript@5.8.3)(webpack@5.100.2): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.26.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0): dependencies: '@babel/code-frame': 7.27.1 '@types/json-schema': 7.0.15 @@ -38309,11 +38494,11 @@ snapshots: semver: 7.7.2 tapable: 1.1.3 typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: - eslint: 9.26.0(jiti@2.4.2) + eslint: 9.26.0(jiti@2.5.1) - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.27.0(jiti@2.4.2))(typescript@4.9.5)(webpack@5.100.2): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@4.9.5)(webpack@5.101.0): dependencies: '@babel/code-frame': 7.27.1 '@types/json-schema': 7.0.15 @@ -38329,11 +38514,11 @@ snapshots: semver: 7.7.2 tapable: 1.1.3 typescript: 4.9.5 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: - eslint: 9.27.0(jiti@2.4.2) + eslint: 9.27.0(jiti@2.5.1) - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.27.0(jiti@2.5.1))(typescript@5.8.3)(webpack@5.101.0): dependencies: '@babel/code-frame': 7.27.1 '@types/json-schema': 7.0.15 @@ -38349,11 +38534,11 @@ snapshots: semver: 7.7.2 tapable: 1.1.3 typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) optionalDependencies: - eslint: 9.27.0(jiti@2.4.2) + eslint: 9.27.0(jiti@2.5.1) - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.3)(webpack@5.100.2): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.3)(webpack@5.101.0): dependencies: '@babel/code-frame': 7.27.1 chalk: 4.1.2 @@ -38368,9 +38553,9 @@ snapshots: semver: 7.7.2 tapable: 2.2.2 typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - fork-ts-checker-webpack-plugin@9.1.0(typescript@5.8.3)(webpack@5.100.2): + fork-ts-checker-webpack-plugin@9.1.0(typescript@5.8.3)(webpack@5.101.0): dependencies: '@babel/code-frame': 7.27.1 chalk: 4.1.2 @@ -38385,7 +38570,7 @@ snapshots: semver: 7.7.2 tapable: 2.2.2 typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) form-data-encoder@2.1.4: {} @@ -39138,7 +39323,7 @@ snapshots: space-separated-tokens: 2.0.2 style-to-js: 1.1.17 unist-util-position: 5.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 transitivePeerDependencies: - supports-color @@ -39224,7 +39409,7 @@ snapshots: dependencies: parse-passwd: 1.0.0 - hookified@1.10.0: {} + hookified@1.11.0: {} hosted-git-info@2.8.9: {} @@ -39301,7 +39486,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@2.29.0(webpack@5.100.2): + html-webpack-plugin@2.29.0(webpack@5.101.0): dependencies: bluebird: 3.7.2 html-minifier: 3.5.21 @@ -39309,9 +39494,9 @@ snapshots: lodash: 4.17.21 pretty-error: 2.1.2 toposort: 1.0.7 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - html-webpack-plugin@4.5.2(webpack@5.100.2): + html-webpack-plugin@4.5.2(webpack@5.101.0): dependencies: '@types/html-minifier-terser': 5.1.2 '@types/tapable': 1.0.12 @@ -39322,9 +39507,9 @@ snapshots: pretty-error: 2.1.2 tapable: 1.1.3 util.promisify: 1.0.0 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - html-webpack-plugin@5.6.3(webpack@5.100.2): + html-webpack-plugin@5.6.3(webpack@5.101.0): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -39332,7 +39517,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.2 optionalDependencies: - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) htmlparser2@10.0.0: dependencies: @@ -40935,7 +41120,7 @@ snapshots: jest-snapshot@25.5.1: dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@jest/types': 25.5.0 '@types/prettier': 1.19.1 chalk: 3.0.0 @@ -40957,11 +41142,11 @@ snapshots: '@babel/generator': 7.28.0 '@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.1 + '@babel/types': 7.28.2 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.7) + babel-preset-current-node-syntax: 1.1.1(@babel/core@7.27.7) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -41143,7 +41328,7 @@ snapshots: jiti@1.21.7: {} - jiti@2.4.2: {} + jiti@2.5.1: {} joi@17.13.3: dependencies: @@ -41199,7 +41384,7 @@ snapshots: '@babel/register': 7.27.1(@babel/core@7.27.7) babel-core: 7.0.0-bridge.0(@babel/core@7.27.7) chalk: 4.1.2 - flow-parser: 0.276.0 + flow-parser: 0.277.1 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -41226,7 +41411,7 @@ snapshots: '@babel/register': 7.27.1(@babel/core@7.27.7) babel-core: 7.0.0-bridge.0(@babel/core@7.27.7) chalk: 4.1.2 - flow-parser: 0.276.0 + flow-parser: 0.277.1 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -41254,7 +41439,7 @@ snapshots: escodegen: 1.14.3 html-encoding-sniffer: 1.0.2 left-pad: 1.3.0 - nwsapi: 2.2.20 + nwsapi: 2.2.21 parse5: 4.0.0 pn: 1.1.0 request: 2.88.2 @@ -41282,7 +41467,7 @@ snapshots: domexception: 1.0.1 escodegen: 1.14.3 html-encoding-sniffer: 1.0.2 - nwsapi: 2.2.20 + nwsapi: 2.2.21 parse5: 5.1.0 pn: 1.1.0 request: 2.88.2 @@ -41318,7 +41503,7 @@ snapshots: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.20 + nwsapi: 2.2.21 parse5: 7.3.0 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -41373,7 +41558,7 @@ snapshots: json-schema-to-ts@3.1.1: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 ts-algebra: 2.0.0 json-schema-traverse@0.3.1: {} @@ -41408,6 +41593,12 @@ snapshots: jsonc-parser@3.3.1: {} + jsondiffpatch@0.6.0: + dependencies: + '@types/diff-match-patch': 1.0.36 + chalk: 5.4.1 + diff-match-patch: 1.0.5 + jsonfile@2.4.0: optionalDependencies: graceful-fs: 4.2.11 @@ -41527,14 +41718,14 @@ snapshots: dependencies: package-json: 4.0.1 - launch-editor@2.10.0: + launch-editor@2.11.0: dependencies: picocolors: 1.1.1 shell-quote: 1.8.3 lazy-universal-dotenv@3.0.1: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 app-root-dir: 1.0.2 core-js: 3.44.0 dotenv: 8.6.0 @@ -41792,7 +41983,7 @@ snapshots: dependencies: get-func-name: 2.0.2 - loupe@3.1.4: {} + loupe@3.2.0: {} lower-case@1.1.4: {} @@ -42088,7 +42279,7 @@ snapshots: parse-entities: 4.0.2 stringify-entities: 4.0.4 unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 transitivePeerDependencies: - supports-color @@ -42195,10 +42386,10 @@ snapshots: dependencies: fs-monkey: 1.1.0 - memfs@4.17.2: + memfs@4.23.0: dependencies: - '@jsonjoy.com/json-pack': 1.2.0(tslib@2.8.1) - '@jsonjoy.com/util': 1.6.0(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.4.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.8.0(tslib@2.8.1) tree-dump: 1.0.3(tslib@2.8.1) tslib: 2.8.1 @@ -42652,11 +42843,11 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.2(webpack@5.100.2): + mini-css-extract-plugin@2.9.2(webpack@5.101.0): dependencies: schema-utils: 4.3.2 tapable: 2.2.2 - webpack: 5.100.2(webpack-cli@4.10.0) + webpack: 5.101.0(webpack-cli@4.10.0) minim@0.23.8: dependencies: @@ -42831,11 +43022,11 @@ snapshots: moment@2.30.1: {} - monaco-editor-webpack-plugin@7.1.0(monaco-editor@0.52.2)(webpack@5.100.2): + monaco-editor-webpack-plugin@7.1.0(monaco-editor@0.52.2)(webpack@5.101.0): dependencies: loader-utils: 2.0.4 monaco-editor: 0.52.2 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) monaco-editor@0.44.0: {} @@ -43036,10 +43227,10 @@ snapshots: node-int64@0.4.0: {} - node-loader@2.1.0(webpack@5.100.2): + node-loader@2.1.0(webpack@5.101.0): dependencies: loader-utils: 2.0.4 - webpack: 5.100.2(webpack-cli@4.10.0) + webpack: 5.101.0(webpack-cli@4.10.0) node-notifier@5.4.5: dependencies: @@ -43191,7 +43382,7 @@ snapshots: nwmatcher@1.4.4: {} - nwsapi@2.2.20: {} + nwsapi@2.2.21: {} nypm@0.5.4: dependencies: @@ -43794,7 +43985,7 @@ snapshots: polished@4.3.1: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 popmotion@11.0.3: dependencies: @@ -43948,7 +44139,7 @@ snapshots: postcss-load-config: 1.2.0 schema-utils: 0.3.0 - postcss-loader@4.3.0(postcss@7.0.39)(webpack@5.100.2): + postcss-loader@4.3.0(postcss@7.0.39)(webpack@5.101.0): dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 @@ -43956,16 +44147,16 @@ snapshots: postcss: 7.0.39 schema-utils: 3.3.0 semver: 7.7.2 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - postcss-loader@8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.100.2): + postcss-loader@8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.101.0): dependencies: cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 1.21.7 postcss: 8.5.6 semver: 7.7.2 optionalDependencies: - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) transitivePeerDependencies: - typescript @@ -44594,11 +44785,11 @@ snapshots: iconv-lite: 0.6.3 unpipe: 1.0.0 - raw-loader@4.0.2(webpack@5.100.2): + raw-loader@4.0.2(webpack@5.101.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) rc-config-loader@4.1.3: dependencies: @@ -44694,7 +44885,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/generator': 7.28.0 - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 @@ -44709,7 +44900,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.7 '@types/doctrine': 0.0.9 @@ -44724,7 +44915,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/types': 7.28.2 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.7 '@types/doctrine': 0.0.9 @@ -44772,7 +44963,7 @@ snapshots: react-error-boundary@6.0.0(react@19.1.0): dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 react: 19.1.0 react-error-overlay@4.0.1: {} @@ -44796,7 +44987,7 @@ snapshots: react-dom: 18.2.0(react@18.2.0) react-lifecycles-compat: 3.0.4 shallowequal: 1.1.0 - source-map: 0.7.4 + source-map: 0.7.6 optionalDependencies: '@types/react': 18.2.0 @@ -44817,7 +45008,7 @@ snapshots: react-inspector@5.1.1(react@18.2.0): dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 is-dom: 1.1.0 prop-types: 15.8.1 react: 18.2.0 @@ -44866,7 +45057,7 @@ snapshots: react-is@18.3.1: {} - react-is@19.1.0: {} + react-is@19.1.1: {} react-json-view-lite@2.4.1(react@18.2.0): dependencies: @@ -45000,18 +45191,18 @@ snapshots: 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.100.2) + babel-loader: 7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.27.7))(webpack@5.101.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.100.2) - file-loader: 1.1.5(webpack@5.100.2) - fork-ts-checker-webpack-plugin: 0.2.10(typescript@5.8.3)(webpack@5.100.2) + 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) fs-extra: 3.0.1 - html-webpack-plugin: 2.29.0(webpack@5.100.2) + html-webpack-plugin: 2.29.0(webpack@5.101.0) jest: 20.0.4 object-assign: 4.1.1 postcss-flexbugs-fixes: 3.2.0 @@ -45022,7 +45213,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.100.2) + sw-precache-webpack-plugin: 0.11.4(webpack@5.101.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 @@ -45030,11 +45221,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.100.2) - url-loader: 0.6.2(file-loader@1.1.5(webpack@5.100.2)) - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) - webpack-manifest-plugin: 1.3.2(webpack@5.100.2) + 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) whatwg-fetch: 2.0.3 optionalDependencies: fsevents: 1.2.13 @@ -45054,18 +45245,18 @@ snapshots: 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.28.0))(webpack@5.100.2) + babel-loader: 7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.28.0))(webpack@5.101.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.100.2) - file-loader: 1.1.5(webpack@5.100.2) - fork-ts-checker-webpack-plugin: 0.2.10(typescript@5.8.3)(webpack@5.100.2) + 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) fs-extra: 3.0.1 - html-webpack-plugin: 2.29.0(webpack@5.100.2) + html-webpack-plugin: 2.29.0(webpack@5.101.0) jest: 20.0.4 object-assign: 4.1.1 postcss-flexbugs-fixes: 3.2.0 @@ -45076,7 +45267,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.100.2) + sw-precache-webpack-plugin: 0.11.4(webpack@5.101.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 @@ -45084,11 +45275,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.100.2) - url-loader: 0.6.2(file-loader@1.1.5(webpack@5.100.2)) - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-dev-server: 5.2.2(webpack@5.100.2) - webpack-manifest-plugin: 1.3.2(webpack@5.100.2) + 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) whatwg-fetch: 2.0.3 optionalDependencies: fsevents: 1.2.13 @@ -45134,7 +45325,7 @@ snapshots: react-syntax-highlighter@15.6.1(react@18.2.0): dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 highlight.js: 10.7.3 highlightjs-vue: 1.0.0 lowlight: 1.20.0 @@ -45142,15 +45333,15 @@ snapshots: react: 18.2.0 refractor: 3.6.0 - react-test-renderer@19.1.0(react@18.2.0): + react-test-renderer@19.1.1(react@18.2.0): dependencies: react: 18.2.0 - react-is: 19.1.0 + react-is: 19.1.1 scheduler: 0.26.0 react-textarea-autosize@8.5.9(@types/react@18.2.0)(react@18.2.0): dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 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) @@ -45340,7 +45531,7 @@ snapshots: redux@4.2.1: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.2 redux@5.0.1: {} @@ -45726,14 +45917,14 @@ snapshots: glob: 11.0.3 package-json-from-dist: 1.0.1 - rollup-plugin-import-css@3.5.8(rollup@4.45.1): + rollup-plugin-import-css@3.5.8(rollup@4.46.1): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.45.1) - rollup: 4.45.1 + '@rollup/pluginutils': 5.2.0(rollup@4.46.1) + rollup: 4.46.1 - rollup-plugin-peer-deps-external@2.2.4(rollup@4.45.1): + rollup-plugin-peer-deps-external@2.2.4(rollup@4.46.1): dependencies: - rollup: 4.45.1 + rollup: 4.46.1 rollup-plugin-postcss@4.0.2(postcss@8.5.6): dependencies: @@ -45789,12 +45980,12 @@ snapshots: tslib: 2.0.1 typescript: 3.9.10 - rollup-plugin-typescript2@0.36.0(rollup@4.45.1)(typescript@5.8.3): + rollup-plugin-typescript2@0.36.0(rollup@4.46.1)(typescript@5.8.3): dependencies: '@rollup/pluginutils': 4.2.1 find-cache-dir: 3.3.2 fs-extra: 10.1.0 - rollup: 4.45.1 + rollup: 4.46.1 semver: 7.7.2 tslib: 2.8.1 typescript: 5.8.3 @@ -45814,30 +46005,30 @@ snapshots: '@types/node': 22.15.35 acorn: 7.4.1 - rollup@4.45.1: + rollup@4.46.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.45.1 - '@rollup/rollup-android-arm64': 4.45.1 - '@rollup/rollup-darwin-arm64': 4.45.1 - '@rollup/rollup-darwin-x64': 4.45.1 - '@rollup/rollup-freebsd-arm64': 4.45.1 - '@rollup/rollup-freebsd-x64': 4.45.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.45.1 - '@rollup/rollup-linux-arm-musleabihf': 4.45.1 - '@rollup/rollup-linux-arm64-gnu': 4.45.1 - '@rollup/rollup-linux-arm64-musl': 4.45.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.45.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.45.1 - '@rollup/rollup-linux-riscv64-gnu': 4.45.1 - '@rollup/rollup-linux-riscv64-musl': 4.45.1 - '@rollup/rollup-linux-s390x-gnu': 4.45.1 - '@rollup/rollup-linux-x64-gnu': 4.45.1 - '@rollup/rollup-linux-x64-musl': 4.45.1 - '@rollup/rollup-win32-arm64-msvc': 4.45.1 - '@rollup/rollup-win32-ia32-msvc': 4.45.1 - '@rollup/rollup-win32-x64-msvc': 4.45.1 + '@rollup/rollup-android-arm-eabi': 4.46.1 + '@rollup/rollup-android-arm64': 4.46.1 + '@rollup/rollup-darwin-arm64': 4.46.1 + '@rollup/rollup-darwin-x64': 4.46.1 + '@rollup/rollup-freebsd-arm64': 4.46.1 + '@rollup/rollup-freebsd-x64': 4.46.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.46.1 + '@rollup/rollup-linux-arm-musleabihf': 4.46.1 + '@rollup/rollup-linux-arm64-gnu': 4.46.1 + '@rollup/rollup-linux-arm64-musl': 4.46.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.46.1 + '@rollup/rollup-linux-ppc64-gnu': 4.46.1 + '@rollup/rollup-linux-riscv64-gnu': 4.46.1 + '@rollup/rollup-linux-riscv64-musl': 4.46.1 + '@rollup/rollup-linux-s390x-gnu': 4.46.1 + '@rollup/rollup-linux-x64-gnu': 4.46.1 + '@rollup/rollup-linux-x64-musl': 4.46.1 + '@rollup/rollup-win32-arm64-msvc': 4.46.1 + '@rollup/rollup-win32-ia32-msvc': 4.46.1 + '@rollup/rollup-win32-x64-msvc': 4.46.1 fsevents: 2.3.3 router@2.2.0: @@ -45940,13 +46131,13 @@ snapshots: scss-tokenizer: 0.4.3 yargs: 17.7.2 - sass-loader@16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2): + sass-loader@16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.101.0): dependencies: neo-async: 2.6.2 optionalDependencies: node-sass: 9.0.0 sass: 1.89.2 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) sass@1.89.2: dependencies: @@ -46011,7 +46202,7 @@ snapshots: scss-tokenizer@0.4.3: dependencies: js-base64: 2.6.4 - source-map: 0.7.4 + source-map: 0.7.6 secretlint@9.3.4: dependencies: @@ -46027,13 +46218,15 @@ snapshots: secure-compare@3.0.1: {} + secure-json-parse@2.7.0: {} + select-hose@2.0.0: {} selenium-webdriver@4.34.0: dependencies: '@bazel/runfiles': 6.3.1 jszip: 3.10.1 - tmp: 0.2.3 + tmp: 0.2.4 ws: 8.18.3 transitivePeerDependencies: - bufferutil @@ -46274,7 +46467,7 @@ snapshots: dependencies: bytes-iec: 3.1.1 chokidar: 4.0.3 - jiti: 2.4.2 + jiti: 2.5.1 lilconfig: 3.1.3 nanospinner: 1.2.2 picocolors: 1.1.1 @@ -46367,11 +46560,11 @@ snapshots: async: 2.6.4 loader-utils: 1.4.2 - source-map-loader@5.0.0(webpack@5.100.2): + source-map-loader@5.0.0(webpack@5.101.0): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) source-map-resolve@0.6.0: dependencies: @@ -46403,7 +46596,7 @@ snapshots: source-map@0.6.1: {} - source-map@0.7.4: {} + source-map@0.7.6: {} sourcemap-codec@1.4.8: {} @@ -46540,11 +46733,11 @@ snapshots: - supports-color - utf-8-validate - storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.5.3): + storybook@9.0.18(@testing-library/dom@10.4.1)(prettier@3.5.3): dependencies: '@storybook/global': 5.0.0 - '@testing-library/jest-dom': 6.6.3 - '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) + '@testing-library/jest-dom': 6.6.4 + '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 '@vitest/spy': 3.2.4 better-opn: 3.0.2 @@ -46787,25 +46980,25 @@ snapshots: loader-utils: 1.4.2 schema-utils: 0.3.0 - style-loader@1.3.0(webpack@5.100.2): + style-loader@1.3.0(webpack@5.101.0): dependencies: loader-utils: 2.0.4 schema-utils: 2.7.1 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - style-loader@2.0.0(webpack@5.100.2): + style-loader@2.0.0(webpack@5.101.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - style-loader@3.3.4(webpack@5.100.2): + style-loader@3.3.4(webpack@5.101.0): dependencies: - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - style-loader@4.0.0(webpack@5.100.2): + style-loader@4.0.0(webpack@5.101.0): dependencies: - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) style-mod@4.1.2: {} @@ -46856,7 +47049,7 @@ snapshots: debug: 4.4.1(supports-color@8.1.1) fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 10.1.1 + file-entry-cache: 10.1.3 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 @@ -46943,10 +47136,10 @@ snapshots: svg-tags@1.0.0: {} - svg-url-loader@8.0.0(webpack@5.100.2): + svg-url-loader@8.0.0(webpack@5.101.0): dependencies: - file-loader: 6.2.0(webpack@5.100.2) - webpack: 5.100.2(webpack-cli@6.0.1) + file-loader: 6.2.0(webpack@5.101.0) + webpack: 5.101.0(webpack-cli@6.0.1) svg2ttf@4.3.0: dependencies: @@ -47005,12 +47198,12 @@ snapshots: svgpath@2.6.0: {} - sw-precache-webpack-plugin@0.11.4(webpack@5.100.2): + sw-precache-webpack-plugin@0.11.4(webpack@5.101.0): dependencies: del: 2.2.2 sw-precache: 5.2.1 uglify-js: 3.19.3 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) sw-precache@5.2.1: dependencies: @@ -47032,7 +47225,7 @@ snapshots: swagger-client@3.35.6: dependencies: - '@babel/runtime-corejs3': 7.28.0 + '@babel/runtime-corejs3': 7.28.2 '@scarf/scarf': 1.4.0 '@swagger-api/apidom-core': 1.0.0-beta.44 '@swagger-api/apidom-error': 1.0.0-beta.44 @@ -47055,7 +47248,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.0 + '@babel/runtime-corejs3': 7.28.2 '@scarf/scarf': 1.4.0 base64-js: 1.5.1 classnames: 2.5.1 @@ -47096,7 +47289,7 @@ snapshots: swagger-ui-react@5.27.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.0 + '@babel/runtime-corejs3': 7.28.2 '@scarf/scarf': 1.4.0 base64-js: 1.5.1 classnames: 2.5.1 @@ -47135,11 +47328,23 @@ snapshots: - '@types/react' - debug - swc-loader@0.2.6(@swc/core@1.13.1(@swc/helpers@0.5.17))(webpack@5.100.2): + swc-loader@0.2.6(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0): dependencies: - '@swc/core': 1.13.1(@swc/helpers@0.5.17) + '@swc/core': 1.13.3(@swc/helpers@0.5.17) '@swc/counter': 0.1.3 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) + + swr@2.3.4(react@18.2.0): + dependencies: + dequal: 2.0.3 + react: 18.2.0 + use-sync-external-store: 1.5.0(react@18.2.0) + + swr@2.3.4(react@19.1.0): + dependencies: + dequal: 2.0.3 + react: 19.1.0 + use-sync-external-store: 1.5.0(react@19.1.0) symbol-tree@3.2.4: {} @@ -47307,7 +47512,7 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@4.2.3(webpack@5.100.2): + terser-webpack-plugin@4.2.3(webpack@5.101.0): dependencies: cacache: 15.3.0 find-cache-dir: 3.3.2 @@ -47317,28 +47522,28 @@ snapshots: serialize-javascript: 5.0.1 source-map: 0.6.1 terser: 5.43.1 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) webpack-sources: 1.4.3 - terser-webpack-plugin@5.3.14(@swc/core@1.13.1(@swc/helpers@0.5.17))(webpack@5.100.2): + terser-webpack-plugin@5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0): dependencies: '@jridgewell/trace-mapping': 0.3.29 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.43.1 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) optionalDependencies: - '@swc/core': 1.13.1(@swc/helpers@0.5.17) + '@swc/core': 1.13.3(@swc/helpers@0.5.17) - terser-webpack-plugin@5.3.14(webpack@5.100.2): + terser-webpack-plugin@5.3.14(webpack@5.101.0): dependencies: '@jridgewell/trace-mapping': 0.3.29 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.43.1 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) terser@4.8.1: dependencies: @@ -47397,6 +47602,8 @@ snapshots: throat@5.0.0: {} + throttleit@2.1.0: {} + through2@2.0.5: dependencies: readable-stream: 2.3.8 @@ -47450,7 +47657,7 @@ snapshots: dependencies: os-tmpdir: 1.0.2 - tmp@0.2.3: {} + tmp@0.2.4: {} tmpl@1.0.5: {} @@ -47649,15 +47856,15 @@ snapshots: loader-utils: 1.4.2 semver: 5.7.2 - ts-loader@9.5.2(typescript@5.8.3)(webpack@5.100.2): + ts-loader@9.5.2(typescript@5.8.3)(webpack@5.101.0): dependencies: chalk: 4.1.2 enhanced-resolve: 5.18.2 micromatch: 4.0.8 semver: 7.7.2 - source-map: 0.7.4 + source-map: 0.7.6 typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) ts-mixer@6.0.4: {} @@ -48051,7 +48258,7 @@ snapshots: commander: 2.19.0 source-map: 0.6.1 - uglifyjs-webpack-plugin@1.2.5(webpack@5.100.2): + uglifyjs-webpack-plugin@1.2.5(webpack@5.101.0): dependencies: cacache: 10.0.4 find-cache-dir: 1.0.0 @@ -48059,7 +48266,7 @@ snapshots: serialize-javascript: 1.9.1 source-map: 0.6.1 uglify-es: 3.3.9 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) webpack-sources: 1.4.3 worker-farm: 1.7.0 @@ -48322,21 +48529,21 @@ snapshots: url-join@4.0.1: {} - url-loader@0.6.2(file-loader@1.1.5(webpack@5.100.2)): + url-loader@0.6.2(file-loader@1.1.5(webpack@5.101.0)): dependencies: - file-loader: 1.1.5(webpack@5.100.2) + file-loader: 1.1.5(webpack@5.101.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.100.2))(webpack@5.100.2): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.101.0))(webpack@5.101.0): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) optionalDependencies: - file-loader: 6.2.0(webpack@5.100.2) + file-loader: 6.2.0(webpack@5.101.0) url-parse-lax@1.0.0: dependencies: @@ -48463,7 +48670,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 1.9.0 - source-map: 0.7.4 + source-map: 0.7.6 v8-to-istanbul@9.3.0: dependencies: @@ -48504,7 +48711,7 @@ snapshots: '@types/unist': 3.0.3 vfile: 6.0.3 - vfile-message@4.0.2: + vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 @@ -48512,20 +48719,20 @@ snapshots: vfile@6.0.3: dependencies: '@types/unist': 3.0.3 - vfile-message: 4.0.2 + vfile-message: 4.0.3 - vite@6.3.5(@types/node@22.15.35)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0): + vite@6.3.5(@types/node@22.15.35)(jiti@2.5.1)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0): dependencies: esbuild: 0.25.8 fdir: 6.4.6(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.45.1 + rollup: 4.46.1 tinyglobby: 0.2.14 optionalDependencies: '@types/node': 22.15.35 fsevents: 2.3.3 - jiti: 2.4.2 + jiti: 2.5.1 sass: 1.89.2 terser: 5.43.1 yaml: 2.8.0 @@ -48546,7 +48753,7 @@ snapshots: parse-semver: 1.1.1 read: 1.0.7 semver: 5.7.2 - tmp: 0.2.3 + tmp: 0.2.4 typed-rest-client: 1.8.11 url-join: 4.0.1 xml2js: 0.4.23 @@ -48767,10 +48974,10 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-cli@4.10.0(webpack-dev-server@5.2.2)(webpack@5.100.2): + webpack-cli@4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.100.2) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.101.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 @@ -48780,15 +48987,15 @@ snapshots: import-local: 3.2.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.100.2(webpack-cli@4.10.0) + webpack: 5.101.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.100.2) + webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.101.0) - webpack-cli@4.10.0(webpack@5.100.2): + webpack-cli@4.10.0(webpack@5.101.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.100.2) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.101.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 @@ -48798,15 +49005,15 @@ snapshots: import-local: 3.2.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.100.2(webpack-cli@4.10.0) + webpack: 5.101.0(webpack-cli@4.10.0) webpack-merge: 5.10.0 - webpack-cli@5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2): + webpack-cli@5.1.4(webpack-dev-server@5.2.2)(webpack@5.101.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.100.2) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.100.2) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack@5.100.2) + '@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) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.6 @@ -48815,17 +49022,17 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.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.100.2) + webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.101.0) - webpack-cli@6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2): + webpack-cli@6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0): dependencies: '@discoveryjs/json-ext': 0.6.3 - '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.100.2) - '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.100.2) - '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.100.2) + '@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) colorette: 2.0.20 commander: 12.1.0 cross-spawn: 7.0.6 @@ -48834,17 +49041,17 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) webpack-merge: 6.0.1 optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) + webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.0) - webpack-cli@6.0.1(webpack@5.100.2): + webpack-cli@6.0.1(webpack@5.101.0): dependencies: '@discoveryjs/json-ext': 0.6.3 - '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.100.2) - '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.100.2) - '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack@5.100.2) + '@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) colorette: 2.0.20 commander: 12.1.0 cross-spawn: 7.0.6 @@ -48853,19 +49060,19 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) webpack-merge: 6.0.1 - webpack-dev-middleware@3.7.3(webpack@5.100.2): + webpack-dev-middleware@3.7.3(webpack@5.101.0): dependencies: memory-fs: 0.4.1 mime: 2.6.0 mkdirp: 0.5.6 range-parser: 1.2.1 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) webpack-log: 2.0.0 - webpack-dev-middleware@4.3.0(webpack@5.100.2): + webpack-dev-middleware@4.3.0(webpack@5.101.0): dependencies: colorette: 1.4.0 mem: 8.1.1 @@ -48873,9 +49080,9 @@ snapshots: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 3.3.0 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - webpack-dev-middleware@6.1.3(webpack@5.100.2): + webpack-dev-middleware@6.1.3(webpack@5.101.0): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -48883,20 +49090,20 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.2 optionalDependencies: - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - webpack-dev-middleware@7.4.2(webpack@5.100.2): + webpack-dev-middleware@7.4.2(webpack@5.101.0): dependencies: colorette: 2.0.20 - memfs: 4.17.2 + memfs: 4.23.0 mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 schema-utils: 4.3.2 optionalDependencies: - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - webpack-dev-server@5.2.2(webpack-cli@4.10.0)(webpack@5.100.2): + webpack-dev-server@5.2.2(webpack-cli@4.10.0)(webpack@5.101.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -48916,7 +49123,7 @@ snapshots: graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.23) ipaddr.js: 2.2.0 - launch-editor: 2.10.0 + launch-editor: 2.11.0 open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.2 @@ -48924,11 +49131,11 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.100.2) + webpack-dev-middleware: 7.4.2(webpack@5.101.0) ws: 8.18.3 optionalDependencies: - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0) transitivePeerDependencies: - bufferutil - debug @@ -48936,7 +49143,7 @@ snapshots: - utf-8-validate optional: true - webpack-dev-server@5.2.2(webpack-cli@5.1.4)(webpack@5.100.2): + webpack-dev-server@5.2.2(webpack-cli@5.1.4)(webpack@5.101.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -48956,7 +49163,7 @@ snapshots: graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.23) ipaddr.js: 2.2.0 - launch-editor: 2.10.0 + launch-editor: 2.11.0 open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.2 @@ -48964,18 +49171,18 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.100.2) + webpack-dev-middleware: 7.4.2(webpack@5.101.0) ws: 8.18.3 optionalDependencies: - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.101.0) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate - webpack-dev-server@5.2.2(webpack-cli@6.0.1)(webpack@5.100.2): + webpack-dev-server@5.2.2(webpack-cli@6.0.1)(webpack@5.101.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -48995,7 +49202,7 @@ snapshots: graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.23) ipaddr.js: 2.2.0 - launch-editor: 2.10.0 + launch-editor: 2.11.0 open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.2 @@ -49003,18 +49210,18 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.100.2) + webpack-dev-middleware: 7.4.2(webpack@5.101.0) ws: 8.18.3 optionalDependencies: - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) + webpack: 5.101.0(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.101.0) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate - webpack-dev-server@5.2.2(webpack@5.100.2): + webpack-dev-server@5.2.2(webpack@5.101.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -49034,7 +49241,7 @@ snapshots: graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.23) ipaddr.js: 2.2.0 - launch-editor: 2.10.0 + launch-editor: 2.11.0 open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.2 @@ -49042,19 +49249,19 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.100.2) + webpack-dev-middleware: 7.4.2(webpack@5.101.0) ws: 8.18.3 optionalDependencies: - webpack: 5.100.2(webpack-cli@5.1.4) + webpack: 5.101.0(webpack-cli@5.1.4) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate - webpack-filter-warnings-plugin@1.2.1(webpack@5.100.2): + webpack-filter-warnings-plugin@1.2.1(webpack@5.101.0): dependencies: - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) webpack-hot-middleware@2.26.1: dependencies: @@ -49067,18 +49274,18 @@ snapshots: ansi-colors: 3.2.4 uuid: 3.4.0 - webpack-manifest-plugin@1.3.2(webpack@5.100.2): + webpack-manifest-plugin@1.3.2(webpack@5.101.0): dependencies: fs-extra: 0.30.0 lodash: 4.17.21 - webpack: 5.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) - webpack-merge-and-include-globally@2.3.4(webpack@5.100.2): + 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.100.2(webpack-cli@6.0.1) + webpack: 5.101.0(webpack-cli@6.0.1) webpack-merge@5.10.0: dependencies: @@ -49113,7 +49320,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.100.2(@swc/core@1.13.1(@swc/helpers@0.5.17)): + webpack@5.101.0(@swc/core@1.13.3(@swc/helpers@0.5.17)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -49137,7 +49344,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(@swc/core@1.13.1(@swc/helpers@0.5.17))(webpack@5.100.2) + terser-webpack-plugin: 5.3.14(@swc/core@1.13.3(@swc/helpers@0.5.17))(webpack@5.101.0) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -49145,7 +49352,7 @@ snapshots: - esbuild - uglify-js - webpack@5.100.2(webpack-cli@4.10.0): + webpack@5.101.0(webpack-cli@4.10.0): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -49169,17 +49376,17 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(webpack@5.100.2) + terser-webpack-plugin: 5.3.14(webpack@5.101.0) watchpack: 2.4.4 webpack-sources: 3.3.3 optionalDependencies: - webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.100.2) + webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.101.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.100.2(webpack-cli@5.1.4): + webpack@5.101.0(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -49203,17 +49410,17 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(webpack@5.100.2) + terser-webpack-plugin: 5.3.14(webpack@5.101.0) watchpack: 2.4.4 webpack-sources: 3.3.3 optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2) + webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.101.0) transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.100.2(webpack-cli@6.0.1): + webpack@5.101.0(webpack-cli@6.0.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -49237,11 +49444,11 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(webpack@5.100.2) + terser-webpack-plugin: 5.3.14(webpack@5.101.0) watchpack: 2.4.4 webpack-sources: 3.3.3 optionalDependencies: - webpack-cli: 6.0.1(webpack@5.100.2) + webpack-cli: 6.0.1(webpack@5.101.0) transitivePeerDependencies: - '@swc/core' - esbuild diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json index 663f3645412..845b7df44f6 100644 --- a/common/config/rush/repo-state.json +++ b/common/config/rush/repo-state.json @@ -1,4 +1,4 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "preferredVersionsHash": "c351cbadf9c7c5170fa3cda955a26147a9053fcd" + "preferredVersionsHash": "545aa5567807e638a49c81c678391b3af8a46865" } diff --git a/package.json b/package.json index 3cdf1ca4b8f..224a80c7e6e 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "micromatch": "^4.0.8", "esbuild": "^0.25.0", "xmldom": "npm:@xmldom/xmldom@^0.8.10", - "@eslint/plugin-kit": "^0.3.3", + "@eslint/plugin-kit": "^0.3.4", "on-headers": "^1.1.0", "form-data": "^4.0.4" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 14cfcd65e87..00000000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,50698 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -overrides: - brace-expansion: ^2.0.2 - http-proxy: ^1.18.1 - prismjs: ^1.30.0 - webpack: ^5.94.0 - webpack-dev-server: ^5.2.1 - braces: ^3.0.3 - micromatch: ^4.0.8 - esbuild: ^0.25.0 - xmldom: npm:@xmldom/xmldom@^0.8.10 - '@eslint/plugin-kit': ^0.3.3 - on-headers: ^1.1.0 - form-data: ^4.0.4 - -importers: - - .: {} - - workspaces/ballerina/ballerina-core: - dependencies: - '@types/mousetrap': - specifier: ~1.6.11 - version: 1.6.15 - '@types/vscode-webview': - specifier: ^1.57.3 - version: 1.57.5 - '@types/ws': - specifier: ^8.2.1 - version: 8.18.1 - '@wso2/syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - handlebars: - specifier: ~4.7.8 - version: 4.7.8 - isomorphic-ws: - specifier: ^5.0.0 - version: 5.0.0(ws@8.18.3) - mousetrap: - specifier: ^1.6.5 - version: 1.6.5 - react: - specifier: 18.2.0 - version: 18.2.0 - tree-kill: - specifier: ^1.2.2 - version: 1.2.2 - vscode-jsonrpc: - specifier: ^8.2.1 - version: 8.2.1 - vscode-languageserver-protocol: - specifier: ^3.17.5 - version: 3.17.5 - vscode-languageserver-types: - specifier: ^3.17.5 - version: 3.17.5 - vscode-messenger-common: - specifier: ^0.5.1 - version: 0.5.1 - vscode-uri: - specifier: ^3.0.8 - version: 3.1.0 - vscode-ws-jsonrpc: - specifier: ^3.4.0 - version: 3.4.0 - devDependencies: - '@types/node': - specifier: ^22.15.21 - version: 22.15.32 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/vscode': - specifier: ^1.83.1 - version: 1.101.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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': - specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - eslint: - specifier: ^9.26.0 - version: 9.27.0(jiti@2.4.2) - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/ballerina/ballerina-extension: - dependencies: - '@types/lodash': - specifier: ^4.14.200 - version: 4.17.17 - '@vscode/test-electron': - specifier: ^2.4.0 - version: 2.5.2 - '@vscode/vsce': - specifier: ^2.22.0 - version: 2.32.0 - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ballerina-visualizer': - specifier: workspace:* - version: link:../ballerina-visualizer - '@wso2/font-wso2-vscode': - specifier: workspace:* - version: link:../../common-libs/font-wso2-vscode - '@wso2/syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - '@wso2/wso2-platform-core': - specifier: workspace:* - version: link:../../wso2-platform/wso2-platform-core - cors-anywhere: - specifier: ^0.4.4 - version: 0.4.4 - del-cli: - specifier: ^5.1.0 - version: 5.1.0 - dotenv: - specifier: ~16.5.0 - version: 16.5.0 - file-uri-to-path: - specifier: ^2.0.0 - version: 2.0.0 - glob: - specifier: ^7.2.3 - version: 7.2.3 - handlebars: - specifier: ~4.7.8 - version: 4.7.8 - jwt-decode: - specifier: ^4.0.0 - version: 4.0.0 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - monaco-languageclient: - specifier: 0.13.1-next.9 - version: 0.13.1-next.9 - node-fetch: - specifier: ^3.3.2 - version: 3.3.2 - node-schedule: - specifier: ^2.1.1 - version: 2.1.1 - portfinder: - specifier: ^1.0.32 - version: 1.0.37 - source-map-support: - specifier: ^0.5.21 - version: 0.5.21 - toml: - specifier: ^3.0.0 - version: 3.0.0 - uuid: - specifier: ^11.1.0 - version: 11.1.0 - vscode-debugadapter: - specifier: ^1.51.0 - version: 1.51.0 - vscode-debugprotocol: - specifier: ^1.51.0 - version: 1.51.0 - vscode-extension-telemetry: - specifier: ^0.1.7 - version: 0.1.7 - vscode-languageclient: - specifier: ^8.1.0 - version: 8.1.0 - vscode-languageserver-protocol: - specifier: ^3.17.5 - version: 3.17.5 - vscode-languageserver-types: - specifier: ^3.17.5 - version: 3.17.5 - vscode-messenger: - specifier: ^0.4.5 - version: 0.4.5 - vscode-messenger-common: - specifier: ^0.4.5 - version: 0.4.5 - vscode-test: - specifier: ^1.6.1 - version: 1.6.1 - vscode-uri: - specifier: ^3.0.8 - version: 3.1.0 - xml-js: - specifier: ^1.6.11 - version: 1.6.11 - xstate: - specifier: ^4.38.3 - version: 4.38.3 - devDependencies: - '@sentry/webpack-plugin': - specifier: ^1.20.1 - version: 1.21.0(encoding@0.1.13) - '@types/chai': - specifier: ^4.3.9 - version: 4.3.20 - '@types/mocha': - specifier: ~10.0.3 - version: 10.0.10 - '@types/node': - specifier: ^18.18.7 - version: 18.19.112 - '@types/tcp-port-used': - specifier: ^1.0.3 - version: 1.0.4 - '@types/vscode': - specifier: ^1.83.1 - version: 1.101.0 - '@types/vscode-notebook-renderer': - specifier: ~1.72.2 - version: 1.72.3 - adm-zip: - specifier: ^0.5.16 - version: 0.5.16 - axios: - specifier: ^1.6.0 - version: 1.9.0 - chai: - specifier: ^4.3.10 - version: 4.5.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 - decache: - specifier: ^4.6.2 - version: 4.6.2 - express: - specifier: ^4.18.2 - version: 4.21.2 - istanbul: - specifier: ^0.4.5 - version: 0.4.5 - js-yaml: - specifier: ^4.1.0 - version: 4.1.0 - keytar: - specifier: ^7.9.0 - version: 7.9.0 - kill-port: - specifier: 2.0.1 - version: 2.0.1 - mocha: - specifier: ^10.2.0 - version: 10.8.2 - pako: - specifier: ^2.1.0 - version: 2.1.0 - pkce-challenge: - specifier: ^3.1.0 - version: 3.1.0 - remap-istanbul: - specifier: ^0.13.0 - version: 0.13.0 - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - tcp-port-used: - specifier: ^1.0.2 - version: 1.0.2 - ts-loader: - specifier: ^9.5.0 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - tslint: - specifier: ^6.1.3 - version: 6.1.3(typescript@5.8.3) - typescript: - specifier: 5.8.3 - version: 5.8.3 - vscode-debugadapter-testsupport: - specifier: ^1.51.0 - version: 1.51.0 - vscode-extension-tester: - specifier: ^5.10.0 - version: 5.10.0(mocha@10.8.2)(typescript@5.8.3) - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@5.1.4) - webpack-cli: - specifier: ^5.1.4 - version: 5.1.4(webpack@5.100.2) - webpack-merge-and-include-globally: - specifier: ^2.3.4 - version: 2.3.4(webpack@5.100.2) - yarn: - specifier: ^1.22.19 - version: 1.22.22 - - workspaces/ballerina/ballerina-low-code-diagram: - dependencies: - '@date-io/date-fns': - specifier: ^3.2.1 - version: 3.2.1(date-fns@4.1.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - classnames: - specifier: ^2.5.1 - version: 2.5.1 - clipboard-copy: - specifier: ^4.0.1 - version: 4.0.1 - clsx: - specifier: ^2.1.1 - version: 2.1.1 - cron-validator: - specifier: 1.3.1 - version: 1.3.1 - date-fns: - specifier: ^4.1.0 - version: 4.1.0 - date-fns-tz: - specifier: ^3.2.0 - version: 3.2.0(date-fns@4.1.0) - dexie: - specifier: ^4.0.11 - version: 4.0.11 - graphql: - specifier: ^16.11.0 - version: 16.11.0 - handlebars: - specifier: ^4.7.8 - version: 4.7.8 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.32)(babel-plugin-macros@3.1.0) - joi: - specifier: ^17.13.3 - version: 17.13.3 - lodash.camelcase: - specifier: ^4.3.0 - version: 4.3.0 - lodash.clonedeep: - specifier: ^4.5.0 - version: 4.5.0 - lodash.debounce: - specifier: ^4.0.8 - version: 4.0.8 - monaco-editor: - specifier: 0.52.2 - version: 0.52.2 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - 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) - react-lottie: - specifier: ^1.2.10 - version: 1.2.10(react@18.2.0) - react-zoom-pan-pinch: - specifier: ^3.7.0 - version: 3.7.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - uuid: - specifier: ^11.1.0 - version: 11.1.0 - vscode-languageserver-protocol: - specifier: ^3.17.5 - version: 3.17.5 - devDependencies: - '@babel/core': - specifier: ^7.27.1 - version: 7.27.4 - '@babel/preset-env': - specifier: ^7.27.2 - version: 7.27.2(@babel/core@7.27.4) - '@rollup/plugin-commonjs': - specifier: ^28.0.3 - version: 28.0.6(rollup@4.44.0) - '@rollup/plugin-json': - specifier: ^6.1.0 - version: 6.1.0(rollup@4.44.0) - '@rollup/plugin-node-resolve': - specifier: ^16.0.1 - version: 16.0.1(rollup@4.44.0) - '@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.4)(@storybook/builder-webpack5@6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.100.2) - '@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(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.4)(@storybook/builder-webpack5@6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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(esbuild@0.25.5)(webpack-cli@6.0.1))(encoding@0.1.13)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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 - '@types/handlebars': - specifier: ^4.1.0 - version: 4.1.0 - '@types/lodash.camelcase': - specifier: ^4.3.0 - version: 4.3.9 - '@types/lodash.clonedeep': - specifier: ^4.5.6 - version: 4.5.9 - '@types/lodash.debounce': - specifier: ^4.0.6 - version: 4.0.9 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-lottie': - specifier: ^1.2.10 - version: 1.2.10 - '@types/uuid': - specifier: ^10.0.0 - version: 10.0.0 - '@types/webpack': - specifier: ^5.28.5 - version: 5.28.5(esbuild@0.25.5)(webpack-cli@6.0.1) - babel-loader: - specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.27.4)(webpack@5.100.2) - copy-webpack-plugin: - specifier: ^13.0.0 - version: 13.0.0(webpack@5.100.2) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - css-loader: - specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) - express: - specifier: ^5.1.0 - version: 5.1.0 - file-loader: - specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) - fork-ts-checker-webpack-plugin: - specifier: ^9.1.0 - version: 9.1.0(typescript@5.8.3)(webpack@5.100.2) - glob: - specifier: ^11.0.2 - version: 11.0.3 - react-scripts-ts: - specifier: ^3.1.0 - version: 3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.27.4))(babel-runtime@6.26.0)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack-cli@6.0.1) - react-test-renderer: - specifier: ^19.1.0 - version: 19.1.0(react@18.2.0) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 - rollup: - specifier: ^4.41.0 - version: 4.44.0 - rollup-plugin-import-css: - specifier: ^3.5.8 - version: 3.5.8(rollup@4.44.0) - rollup-plugin-peer-deps-external: - specifier: ^2.2.4 - version: 2.2.4(rollup@4.44.0) - rollup-plugin-postcss: - specifier: ^4.0.2 - version: 4.0.2(postcss@8.5.6) - rollup-plugin-scss: - specifier: ^4.0.1 - version: 4.0.1 - rollup-plugin-svg: - specifier: ^2.0.0 - version: 2.0.0 - rollup-plugin-typescript2: - specifier: ^0.36.0 - version: 0.36.0(rollup@4.44.0)(typescript@5.8.3) - sass: - specifier: ^1.89.0 - version: 1.89.2 - sass-loader: - specifier: ^16.0.5 - version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2) - storybook: - specifier: ^8.6.14 - version: 8.6.14(prettier@3.6.2) - style-loader: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) - stylelint: - specifier: ^16.19.1 - version: 16.21.0(typescript@5.8.3) - stylelint-config-standard: - specifier: ^38.0.0 - version: 38.0.0(stylelint@16.21.0(typescript@5.8.3)) - svg-url-loader: - specifier: ^8.0.0 - version: 8.0.0(webpack@5.100.2) - ts-loader: - specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - tslib: - specifier: ^2.8.1 - version: 2.8.1 - tslint: - specifier: ^6.1.3 - version: 6.1.3(typescript@5.8.3) - tslint-react: - specifier: ^5.0.0 - version: 5.0.0(tslint@6.1.3(typescript@5.8.3))(typescript@5.8.3) - tslint-react-hooks: - specifier: ^2.2.2 - version: 2.2.2(tslint@6.1.3(typescript@5.8.3))(typescript@5.8.3) - typescript: - specifier: 5.8.3 - version: 5.8.3 - webpack: - specifier: ^5.94.0 - version: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-cli: - specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) - webpack-dev-server: - specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) - - workspaces/ballerina/ballerina-rpc-client: - dependencies: - '@types/vscode-webview': - specifier: ^1.57.3 - version: 1.57.5 - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - monaco-editor: - specifier: 0.44.0 - version: 0.44.0 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - vscode-languageserver-types: - specifier: ^3.17.5 - version: 3.17.5 - vscode-messenger-common: - specifier: ^0.4.5 - version: 0.4.5 - vscode-messenger-webview: - specifier: ^0.5.1 - version: 0.5.1 - devDependencies: - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - 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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': - specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - eslint: - specifier: ^9.27.0 - version: 9.27.0(jiti@2.4.2) - eslint-plugin-react-hooks: - specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) - eslint-plugin-react-refresh: - specifier: ^0.4.20 - version: 0.4.20(eslint@9.27.0(jiti@2.4.2)) - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/ballerina/ballerina-side-panel: - 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.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ballerina-rpc-client': - specifier: workspace:* - version: link:../ballerina-rpc-client - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - lodash: - specifier: ~4.17.21 - version: 4.17.21 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-hook-form: - specifier: 7.56.4 - version: 7.56.4(react@18.2.0) - react-markdown: - specifier: ~10.1.0 - version: 10.1.0(@types/react@18.2.0)(react@18.2.0) - devDependencies: - '@storybook/react': - specifier: ^6.5.16 - version: 6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1) - '@types/lodash': - specifier: ~4.17.16 - version: 4.17.17 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/ballerina/ballerina-visualizer: - dependencies: - '@emotion/css': - specifier: ^11.13.5 - version: 11.13.5 - '@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.0(@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.4(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.81.2 - '@tanstack/react-query': - specifier: 5.77.1 - version: 5.77.1(react@18.2.0) - '@types/lodash': - specifier: ~4.17.16 - version: 4.17.17 - '@vscode/webview-ui-toolkit': - specifier: ^1.4.0 - version: 1.4.0(react@18.2.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ballerina-graphql-design-diagram': - specifier: workspace:* - version: link:../graphql-design-diagram - '@wso2/ballerina-inline-data-mapper': - specifier: workspace:* - version: link:../inline-data-mapper - '@wso2/ballerina-low-code-diagram': - specifier: workspace:* - version: link:../ballerina-low-code-diagram - '@wso2/ballerina-rpc-client': - specifier: workspace:* - version: link:../ballerina-rpc-client - '@wso2/ballerina-side-panel': - specifier: workspace:* - version: link:../ballerina-side-panel - '@wso2/ballerina-statement-editor': - specifier: workspace:* - version: link:../statement-editor - '@wso2/bi-diagram': - specifier: workspace:* - version: link:../bi-diagram - '@wso2/component-diagram': - specifier: workspace:* - version: link:../../common-libs/component-diagram - '@wso2/data-mapper-view': - specifier: workspace:* - version: link:../data-mapper-view - '@wso2/overview-view': - specifier: workspace:* - version: link:../overview-view - '@wso2/persist-layer-diagram': - specifier: workspace:* - version: link:../persist-layer-diagram - '@wso2/record-creator': - specifier: workspace:* - version: link:../record-creator - '@wso2/sequence-diagram': - specifier: workspace:* - version: link:../sequence-diagram - '@wso2/syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - '@wso2/type-diagram': - specifier: workspace:* - version: link:../type-diagram - '@wso2/type-editor': - specifier: workspace:* - version: link:../type-editor - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - '@wso2/wso2-platform-core': - specifier: workspace:* - version: link:../../wso2-platform/wso2-platform-core - highlight.js: - specifier: ^11.11.1 - version: 11.11.1 - lodash: - specifier: ~4.17.21 - version: 4.17.21 - lodash.debounce: - specifier: ^4.0.8 - version: 4.0.8 - react: - specifier: 18.2.0 - version: 18.2.0 - react-collapse: - specifier: ~5.1.1 - version: 5.1.1(react@18.2.0) - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-hook-form: - specifier: 7.56.4 - version: 7.56.4(react@18.2.0) - react-lottie: - specifier: ^1.2.10 - version: 1.2.10(react@18.2.0) - react-markdown: - specifier: ~10.1.0 - 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) - rehype-raw: - specifier: ^7.0.0 - version: 7.0.0 - remark-breaks: - specifier: ~4.0.0 - version: 4.0.0 - vscode-uri: - specifier: ^3.1.0 - version: 3.1.0 - yup: - specifier: ~1.6.1 - version: 1.6.1 - devDependencies: - '@types/lodash.debounce': - specifier: ^4.0.6 - version: 4.0.9 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-collapse': - specifier: ~5.0.4 - version: 5.0.4 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-lottie': - specifier: ^1.2.5 - version: 1.2.10 - '@types/react-syntax-highlighter': - specifier: ~15.5.13 - version: 15.5.13 - '@types/vscode-webview': - specifier: ~1.57.5 - version: 1.57.5 - '@types/webpack': - specifier: ^5.28.5 - version: 5.28.5(webpack-cli@4.10.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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': - specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - 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.100.2) - eslint: - specifier: ^9.26.0 - version: 9.27.0(jiti@2.4.2) - eslint-plugin-react-hooks: - specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) - eslint-plugin-react-refresh: - specifier: ^0.4.20 - version: 0.4.20(eslint@9.27.0(jiti@2.4.2)) - sass-loader: - specifier: ^16.0.5 - version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2) - source-map-loader: - specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) - style-loader: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) - ts-loader: - specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - typescript: - specifier: 5.8.3 - version: 5.8.3 - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@4.10.0) - webpack-dev-server: - specifier: ^5.2.1 - version: 5.2.2(webpack-cli@4.10.0)(webpack@5.100.2) - - workspaces/ballerina/bi-diagram: - dependencies: - '@emotion/react': - specifier: ^11.9.3 - version: 11.14.0(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': - specifier: ^11.10.5 - version: 11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': - specifier: ^6.7.4 - version: 6.7.4 - '@projectstorm/react-canvas-core': - specifier: ^6.7.4 - version: 6.7.4(lodash@4.17.21)(react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^7.0.4 - version: 7.0.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-core': - specifier: ^7.0.3 - version: 7.0.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-defaults': - specifier: ^7.1.3 - version: 7.1.3(@types/react@18.2.0) - '@projectstorm/react-diagrams-routing': - specifier: ^7.1.3 - version: 7.1.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ballerina-rpc-client': - specifier: workspace:* - version: link:../ballerina-rpc-client - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - dagre: - specifier: ~0.8.5 - version: 0.8.5 - lodash: - specifier: ~4.17.21 - version: 4.17.21 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - devDependencies: - '@storybook/react': - specifier: ^6.3.7 - version: 6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1) - '@types/dagre': - specifier: ~0.7.52 - version: 0.7.52 - '@types/lodash': - specifier: ~4.17.16 - version: 4.17.17 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/ballerina/component-diagram: - 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.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': - specifier: ^7.0.3 - version: 7.0.3 - '@projectstorm/react-canvas-core': - specifier: ^7.0.3 - version: 7.0.3(@types/react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^7.0.4 - version: 7.0.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-core': - specifier: ^7.0.3 - version: 7.0.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-defaults': - specifier: ^7.1.3 - version: 7.1.3(@types/react@18.2.0) - '@projectstorm/react-diagrams-routing': - specifier: ^7.1.3 - version: 7.1.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/bi-diagram': - specifier: workspace:* - version: link:../bi-diagram - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - dagre: - specifier: ~0.8.5 - version: 0.8.5 - lodash: - specifier: ~4.17.21 - version: 4.17.21 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - devDependencies: - '@storybook/react': - specifier: ^6.5.16 - version: 6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1) - '@types/dagre': - specifier: ~0.7.52 - version: 0.7.52 - '@types/lodash': - specifier: ~4.17.16 - version: 4.17.17 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/ballerina/data-mapper-view: - dependencies: - '@emotion/css': - specifier: ~11.13.5 - version: 11.13.5 - '@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.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': - specifier: ^6.7.4 - version: 6.7.4 - '@projectstorm/react-canvas-core': - specifier: ^6.7.4 - version: 6.7.4(lodash@4.17.21)(react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^6.7.4 - version: 6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(dagre@0.8.5)(lodash@4.17.21)(pathfinding@0.4.18)(paths-js@0.4.11)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@projectstorm/react-diagrams-core': - specifier: ^6.7.4 - 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.81.2 - '@tanstack/react-query': - specifier: 5.77.1 - version: 5.77.1(react@18.2.0) - '@vscode/webview-ui-toolkit': - specifier: ^1.4.0 - version: 1.4.0(react@18.2.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ballerina-rpc-client': - specifier: workspace:* - version: link:../ballerina-rpc-client - '@wso2/ballerina-statement-editor': - specifier: workspace:* - version: link:../statement-editor - '@wso2/record-creator': - specifier: workspace:* - version: link:../record-creator - '@wso2/syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - blueimp-md5: - specifier: ^2.19.0 - version: 2.19.0 - classnames: - specifier: ^2.5.1 - version: 2.5.1 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - lodash.debounce: - specifier: ^4.0.8 - version: 4.0.8 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - 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) - react-lottie: - specifier: ^1.2.10 - version: 1.2.10(react@18.2.0) - reflect-metadata: - specifier: ^0.1.14 - version: 0.1.14 - resize-observer-polyfill: - specifier: ^1.5.1 - version: 1.5.1 - tsyringe: - specifier: ^4.10.0 - version: 4.10.0 - vscode-languageserver-types: - specifier: ^3.17.5 - version: 3.17.5 - zustand: - specifier: ^4.5.7 - version: 4.5.7(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0) - devDependencies: - '@babel/core': - specifier: ^7.27.1 - version: 7.27.4 - '@babel/preset-env': - specifier: ^7.27.2 - version: 7.27.2(@babel/core@7.27.4) - '@rollup/plugin-commonjs': - specifier: ^28.0.3 - version: 28.0.6(rollup@4.44.0) - '@rollup/plugin-json': - specifier: ^6.1.0 - version: 6.1.0(rollup@4.44.0) - '@rollup/plugin-node-resolve': - specifier: ^16.0.1 - version: 16.0.1(rollup@4.44.0) - '@storybook/addon-actions': - specifier: ^8.6.14 - version: 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-essentials': - specifier: ^8.6.14 - version: 8.6.14(@types/react@18.2.0)(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-links': - specifier: ^8.6.14 - version: 8.6.14(react@18.2.0)(storybook@8.6.14(prettier@3.6.2)) - '@storybook/builder-webpack5': - specifier: ^8.6.14 - version: 8.6.14(storybook@8.6.14(prettier@3.6.2))(typescript@5.8.3)(webpack-cli@6.0.1) - '@storybook/manager-webpack5': - specifier: ^6.5.16 - version: 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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: ^8.6.14 - version: 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2))(typescript@5.8.3) - '@types/blueimp-md5': - specifier: ^2.18.2 - version: 2.18.2 - '@types/classnames': - specifier: ^2.3.4 - version: 2.3.4 - '@types/handlebars': - specifier: ^4.1.0 - version: 4.1.0 - '@types/lodash': - specifier: 4.17.16 - version: 4.17.16 - '@types/lodash.debounce': - specifier: ^4.0.9 - version: 4.0.9 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-lottie': - specifier: ^1.2.10 - version: 1.2.10 - '@types/uuid': - specifier: ^10.0.0 - version: 10.0.0 - '@types/webpack': - specifier: ^5.28.5 - version: 5.28.5(webpack-cli@6.0.1) - '@typescript-eslint/eslint-plugin': - specifier: ~8.32.1 - version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': - specifier: ~8.32.1 - version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@vitejs/plugin-react': - specifier: ^4.4.1 - version: 4.5.2(vite@6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) - babel-loader: - specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.27.4)(webpack@5.100.2) - babel-plugin-transform-typescript-metadata: - specifier: ^0.3.2 - version: 0.3.2(@babel/core@7.27.4)(@babel/traverse@7.28.0) - copy-webpack-plugin: - specifier: ^13.0.0 - version: 13.0.0(webpack@5.100.2) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - css-loader: - specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) - dagre: - specifier: ^0.8.5 - version: 0.8.5 - eslint: - specifier: ^9.27.0 - version: 9.27.0(jiti@2.4.2) - eslint-plugin-react-hooks: - specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) - eslint-plugin-react-refresh: - specifier: ^0.4.20 - version: 0.4.20(eslint@9.27.0(jiti@2.4.2)) - file-loader: - specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) - fork-ts-checker-webpack-plugin: - specifier: ^9.1.0 - version: 9.1.0(typescript@5.8.3)(webpack@5.100.2) - monaco-editor-webpack-plugin: - specifier: ^7.1.0 - version: 7.1.0(monaco-editor@0.52.2)(webpack@5.100.2) - mousetrap: - specifier: ^1.6.5 - version: 1.6.5 - pathfinding: - specifier: ^0.4.18 - version: 0.4.18 - paths-js: - specifier: ^0.4.11 - version: 0.4.11 - react-scripts-ts: - specifier: ^3.1.0 - version: 3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.27.4))(babel-runtime@6.26.0)(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack-cli@6.0.1) - react-test-renderer: - specifier: ^19.1.0 - version: 19.1.0(react@18.2.0) - rimraf: - specifier: ^6.0.1 - version: 6.0.1 - rollup: - specifier: ^4.41.0 - version: 4.44.0 - rollup-plugin-import-css: - specifier: ^3.5.8 - version: 3.5.8(rollup@4.44.0) - rollup-plugin-peer-deps-external: - specifier: ^2.2.4 - version: 2.2.4(rollup@4.44.0) - rollup-plugin-postcss: - specifier: ^4.0.2 - version: 4.0.2(postcss@8.5.6) - rollup-plugin-scss: - specifier: ^4.0.1 - version: 4.0.1 - rollup-plugin-svg: - specifier: ^2.0.0 - version: 2.0.0 - rollup-plugin-typescript2: - specifier: ^0.36.0 - version: 0.36.0(rollup@4.44.0)(typescript@5.8.3) - sass: - specifier: ^1.89.0 - version: 1.89.2 - sass-loader: - specifier: ^16.0.5 - version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2) - storybook: - specifier: ^8.6.14 - version: 8.6.14(prettier@3.6.2) - style-loader: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) - stylelint: - specifier: ^16.19.1 - version: 16.21.0(typescript@5.8.3) - stylelint-config-standard: - specifier: ^38.0.0 - version: 38.0.0(stylelint@16.21.0(typescript@5.8.3)) - svg-url-loader: - specifier: ^8.0.0 - version: 8.0.0(webpack@5.100.2) - ts-loader: - specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - tslib: - specifier: ^2.8.1 - version: 2.8.1 - tslint: - specifier: ^6.1.3 - version: 6.1.3(typescript@5.8.3) - tslint-react: - specifier: ^5.0.0 - version: 5.0.0(tslint@6.1.3(typescript@5.8.3))(typescript@5.8.3) - tslint-react-hooks: - specifier: ^2.2.2 - version: 2.2.2(tslint@6.1.3(typescript@5.8.3))(typescript@5.8.3) - typescript: - specifier: 5.8.3 - version: 5.8.3 - vite: - specifier: ^6.3.5 - version: 6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) - vscode-uri: - specifier: ^3.1.0 - version: 3.1.0 - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) - webpack-cli: - specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) - webpack-dev-server: - specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) - - workspaces/ballerina/graphql: - dependencies: - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - graphiql: - specifier: 3.7.0 - version: 3.7.0(@codemirror/language@6.11.1)(@types/node@24.0.14)(@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-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) - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - devDependencies: - '@babel/core': - specifier: ^7.27.1 - version: 7.27.4 - '@storybook/addon-actions': - specifier: ^6.5.9 - 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.4)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.100.2) - '@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.4.2))(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.4.2))(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.4)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.4.2))(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 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - babel-loader: - specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.27.4)(webpack@5.100.2) - css-loader: - specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) - graphql: - specifier: ^16.11.0 - version: 16.11.0 - mini-css-extract-plugin: - specifier: ^2.9.2 - version: 2.9.2(webpack@5.100.2) - source-map-loader: - specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) - style-loader: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) - ts-loader: - specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - typescript: - specifier: 5.8.3 - version: 5.8.3 - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@4.10.0) - webpack-cli: - specifier: ^4.10.0 - version: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.100.2) - - workspaces/ballerina/graphql-design-diagram: - dependencies: - '@emotion/css': - specifier: ~11.13.5 - version: 11.13.5 - '@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.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': - specifier: ^6.7.4 - version: 6.7.4 - '@projectstorm/react-canvas-core': - specifier: ^6.7.4 - version: 6.7.4(lodash@4.17.21)(react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^6.7.4 - version: 6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(dagre@0.8.5)(lodash@4.17.21)(pathfinding@0.4.18)(paths-js@0.4.11)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@projectstorm/react-diagrams-core': - specifier: ^6.7.4 - version: 6.7.4(lodash@4.17.21)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - html-to-image: - specifier: ^1.10.8 - version: 1.11.13 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-monaco-editor: - specifier: 0.58.0 - version: 0.58.0(monaco-editor@0.52.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - resize-observer-polyfill: - specifier: ^1.5.1 - version: 1.5.1 - rimraf: - specifier: ^6.0.1 - version: 6.0.1 - tslint: - specifier: ^6.1.3 - version: 6.1.3(typescript@4.9.5) - tslint-react: - specifier: ^5.0.0 - version: 5.0.0(tslint@6.1.3(typescript@4.9.5))(typescript@4.9.5) - tslint-react-hooks: - specifier: ^2.2.2 - version: 2.2.2(tslint@6.1.3(typescript@4.9.5))(typescript@4.9.5) - typescript: - specifier: ^4.1.3 - version: 4.9.5 - vscode-uri: - specifier: ^3.1.0 - version: 3.1.0 - devDependencies: - '@types/lodash': - specifier: 4.17.16 - version: 4.17.16 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - - workspaces/ballerina/inline-data-mapper: - dependencies: - '@emotion/css': - specifier: ~11.13.5 - version: 11.13.5 - '@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.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': - specifier: ^6.7.4 - version: 6.7.4 - '@projectstorm/react-canvas-core': - specifier: ^6.7.4 - version: 6.7.4(lodash@4.17.21)(react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^6.7.4 - version: 6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(dagre@0.8.5)(lodash@4.17.21)(pathfinding@0.4.18)(paths-js@0.4.11)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@projectstorm/react-diagrams-core': - specifier: ^6.7.4 - 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.81.2 - '@tanstack/react-query': - specifier: 5.77.1 - version: 5.77.1(react@18.2.0) - '@types/mousetrap': - specifier: ~1.6.15 - version: 1.6.15 - '@vscode/webview-ui-toolkit': - specifier: ^1.2.0 - version: 1.4.0(react@18.2.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ballerina-rpc-client': - specifier: workspace:* - version: link:../ballerina-rpc-client - '@wso2/syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - blueimp-md5: - specifier: ^2.19.0 - version: 2.19.0 - classnames: - specifier: ^2.2.6 - version: 2.5.1 - lodash: - specifier: ^4.17.11 - version: 4.17.21 - lodash.debounce: - specifier: ^4.0.8 - version: 4.0.8 - mousetrap: - specifier: ^1.6.5 - version: 1.6.5 - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - resize-observer-polyfill: - specifier: ^1.5.1 - version: 1.5.1 - vscode-languageserver-types: - specifier: ^3.17.5 - version: 3.17.5 - zustand: - specifier: ^5.0.4 - version: 5.0.5(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0)(use-sync-external-store@1.5.0(react@18.2.0)) - devDependencies: - '@types/blueimp-md5': - specifier: ^2.18.2 - version: 2.18.2 - '@types/lodash': - specifier: 4.17.16 - version: 4.17.16 - '@types/lodash.debounce': - specifier: ^4.0.6 - version: 4.0.9 - '@types/react': - specifier: ^18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 17.0.26 - 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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': - specifier: ~8.32.1 - version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(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.100.2) - eslint: - specifier: ^9.26.0 - version: 9.27.0(jiti@2.4.2) - eslint-plugin-react-hooks: - specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) - eslint-plugin-react-refresh: - specifier: ^0.4.4 - version: 0.4.20(eslint@9.27.0(jiti@2.4.2)) - file-loader: - specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) - 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.100.2) - tslib: - specifier: ^2.8.1 - version: 2.8.1 - tslint: - specifier: ^6.1.3 - version: 6.1.3(typescript@5.8.3) - tslint-react: - specifier: ^5.0.0 - version: 5.0.0(tslint@6.1.3(typescript@5.8.3))(typescript@5.8.3) - tslint-react-hooks: - specifier: ^2.2.2 - version: 2.2.2(tslint@6.1.3(typescript@5.8.3))(typescript@5.8.3) - typescript: - specifier: ^5.8.3 - version: 5.8.3 - - workspaces/ballerina/overview-view: - dependencies: - '@emotion/react': - specifier: ^11.9.3 - version: 11.14.0(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': - specifier: ^11.10.5 - version: 11.14.0(@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.2.0 - version: 1.4.0(react@18.2.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ballerina-rpc-client': - specifier: workspace:* - version: link:../ballerina-rpc-client - '@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) - vscode-uri: - specifier: ^3.0.8 - version: 3.1.0 - devDependencies: - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - 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) - '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.1)(typescript@5.8.3) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - eslint: - specifier: ^8.57.1 - version: 8.57.1 - eslint-plugin-react-hooks: - specifier: ^5.2.0 - version: 5.2.0(eslint@8.57.1) - eslint-plugin-react-refresh: - specifier: ^0.4.20 - version: 0.4.20(eslint@8.57.1) - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/ballerina/persist-layer-diagram: - dependencies: - '@emotion/css': - specifier: ~11.13.5 - version: 11.13.5 - '@emotion/react': - specifier: ^11.9.3 - version: 11.14.0(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': - specifier: ^11.10.5 - version: 11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': - specifier: ^7.0.3 - version: 7.0.3 - '@projectstorm/react-canvas-core': - specifier: ^7.0.3 - version: 7.0.3(@types/react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^7.0.4 - version: 7.0.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-core': - specifier: ^7.0.3 - version: 7.0.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-defaults': - specifier: ^7.1.3 - version: 7.1.3(@types/react@18.2.0) - '@projectstorm/react-diagrams-routing': - specifier: ^7.1.3 - version: 7.1.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@types/lodash': - specifier: ^4.14.189 - version: 4.17.17 - '@types/node': - specifier: ^22.15.18 - version: 22.15.32 - closest: - specifier: ^0.0.1 - version: 0.0.1 - dagre: - specifier: ^0.8.5 - version: 0.8.5 - file-loader: - specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) - html-to-image: - specifier: ^1.10.8 - version: 1.11.13 - lodash: - specifier: ^4.17.11 - version: 4.17.21 - pathfinding: - specifier: ^0.4.18 - version: 0.4.18 - paths-js: - specifier: ^0.4.11 - version: 0.4.11 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - resize-observer-polyfill: - specifier: ^1.5.1 - version: 1.5.1 - typescript: - specifier: 5.8.3 - version: 5.8.3 - devDependencies: - '@babel/core': - specifier: ^7.27.1 - version: 7.27.4 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - babel-loader: - specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.27.4)(webpack@5.100.2) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - css-loader: - specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) - source-map-loader: - specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) - style-loader: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) - ts-loader: - specifier: ^9.4.1 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) - webpack-cli: - specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) - webpack-dev-server: - specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) - - workspaces/ballerina/record-creator: - dependencies: - '@emotion/css': - specifier: ~11.13.5 - version: 11.13.5 - '@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.0(@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: ~1.7.18 - version: 1.7.19(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@tanstack/react-query': - specifier: ~5.76.1 - version: 5.76.2(react@18.2.0) - '@types/lodash.debounce': - specifier: ~4.0.9 - version: 4.0.9 - '@types/react-lottie': - specifier: ~1.2.10 - version: 1.2.10 - '@vscode/webview-ui-toolkit': - specifier: ~1.4.0 - version: 1.4.0(react@18.2.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ballerina-rpc-client': - specifier: workspace:* - version: link:../ballerina-rpc-client - '@wso2/ballerina-statement-editor': - specifier: workspace:* - version: link:../statement-editor - '@wso2/syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - lodash.debounce: - specifier: ~4.0.8 - version: 4.0.8 - monaco-editor: - specifier: ~0.46.0 - version: 0.46.0 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - 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) - react-lottie: - specifier: ~1.2.4 - version: 1.2.10(react@18.2.0) - vscode-uri: - specifier: ~3.1.0 - version: 3.1.0 - devDependencies: - '@types/node': - specifier: ^22.15.18 - version: 22.15.32 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - copyfiles: - specifier: ~2.4.1 - version: 2.4.1 - eslint: - specifier: ~9.26.0 - version: 9.26.0(jiti@2.4.2) - react-scripts-ts: - specifier: 3.1.0 - version: 3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.28.0))(babel-runtime@6.26.0)(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/ballerina/sequence-diagram: - dependencies: - '@emotion/react': - specifier: ^11.9.3 - version: 11.14.0(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': - specifier: ^11.10.5 - version: 11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': - specifier: ^7.0.3 - version: 7.0.3 - '@projectstorm/react-canvas-core': - specifier: ^7.0.3 - version: 7.0.3(@types/react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^7.0.4 - version: 7.0.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-core': - specifier: ^7.0.3 - version: 7.0.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-defaults': - specifier: ^7.1.3 - version: 7.1.3(@types/react@18.2.0) - '@projectstorm/react-diagrams-routing': - specifier: ^7.1.3 - version: 7.1.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ballerina-rpc-client': - specifier: workspace:* - version: link:../ballerina-rpc-client - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - dagre: - specifier: ~0.8.5 - version: 0.8.5 - lodash: - specifier: ~4.17.21 - version: 4.17.21 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - devDependencies: - '@storybook/react': - specifier: ^6.3.7 - version: 6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.26.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1) - '@types/dagre': - specifier: ~0.7.52 - version: 0.7.52 - '@types/lodash': - specifier: ~4.17.16 - version: 4.17.17 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - 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.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - eslint: - specifier: ~9.26.0 - version: 9.26.0(jiti@2.4.2) - eslint-plugin-react-hooks: - specifier: ~5.2.0 - version: 5.2.0(eslint@9.26.0(jiti@2.4.2)) - 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.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)) - prettier: - specifier: ~3.5.3 - version: 3.5.3 - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/ballerina/statement-editor: - dependencies: - '@emotion/css': - specifier: ~11.13.5 - version: 11.13.5 - '@emotion/react': - specifier: ^11.9.3 - version: 11.14.0(@types/react@17.0.87)(react@19.1.0) - '@emotion/styled': - specifier: ^11.10.5 - version: 11.14.0(@emotion/react@11.14.0(@types/react@17.0.87)(react@19.1.0))(@types/react@17.0.87)(react@19.1.0) - '@tanstack/query-core': - specifier: ^4.0.0-beta.1 - version: 4.40.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) - '@vscode/webview-ui-toolkit': - specifier: ^1.2.0 - version: 1.4.0(react@19.1.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ballerina-rpc-client': - specifier: workspace:* - version: link:../ballerina-rpc-client - '@wso2/syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - classnames: - specifier: ^2.2.6 - version: 2.5.1 - lodash.debounce: - specifier: ^4.0.8 - version: 4.0.8 - react: - specifier: ^19.1.0 - version: 19.1.0 - react-dom: - specifier: ^19.1.0 - version: 19.1.0(react@19.1.0) - react-icons: - specifier: ^4.12.0 - 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) - react-lottie: - specifier: ^1.2.3 - version: 1.2.10(react@19.1.0) - vscode-languageserver-protocol: - specifier: ^3.16.0 - version: 3.17.5 - vscode-languageserver-types: - specifier: ^3.17.5 - version: 3.17.5 - vscode-uri: - specifier: ^3.0.8 - version: 3.1.0 - devDependencies: - '@storybook/react': - specifier: ^6.5.9 - version: 6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1) - '@types/classnames': - specifier: ^2.2.9 - version: 2.3.4 - '@types/lodash.camelcase': - specifier: ^4.3.0 - version: 4.3.9 - '@types/lodash.clonedeep': - specifier: ^4.5.6 - version: 4.5.9 - '@types/lodash.debounce': - specifier: ^4.0.6 - version: 4.0.9 - '@types/react': - specifier: ^17.0.37 - version: 17.0.87 - '@types/react-dom': - specifier: 17.0.14 - version: 17.0.14 - '@types/react-lottie': - specifier: ^1.2.5 - version: 1.2.10 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - storybook: - specifier: ^8.6.13 - version: 8.6.14(prettier@3.6.2) - tslib: - specifier: ^2.1.0 - version: 2.8.1 - tslint: - specifier: ^6.1.3 - version: 6.1.3(typescript@4.9.5) - tslint-react: - specifier: ^4.2.0 - version: 4.2.0(tslint@6.1.3(typescript@4.9.5))(typescript@4.9.5) - tslint-react-hooks: - specifier: ^2.2.2 - version: 2.2.2(tslint@6.1.3(typescript@4.9.5))(typescript@4.9.5) - typescript: - specifier: ^4.9.4 - version: 4.9.5 - - workspaces/ballerina/syntax-tree: - devDependencies: - husky: - specifier: ^9.1.7 - version: 9.1.7 - lint-staged: - specifier: ^16.0.0 - version: 16.1.2 - prettier: - specifier: ^3.5.3 - version: 3.5.3 - rimraf: - specifier: ^6.0.1 - version: 6.0.1 - tslint: - specifier: ^6.1.3 - version: 6.1.3(typescript@5.8.3) - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/ballerina/type-diagram: - dependencies: - '@emotion/css': - specifier: ~11.13.5 - version: 11.13.5 - '@emotion/react': - specifier: ^11.9.3 - version: 11.14.0(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': - specifier: ^11.14.0 - version: 11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': - specifier: ^7.0.3 - version: 7.0.3 - '@projectstorm/react-canvas-core': - specifier: ^7.0.3 - version: 7.0.3(@types/react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^7.0.4 - version: 7.0.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-core': - specifier: ^7.0.3 - version: 7.0.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-defaults': - specifier: ^7.1.3 - version: 7.1.3(@types/react@18.2.0) - '@projectstorm/react-diagrams-routing': - specifier: ^7.1.3 - version: 7.1.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@types/lodash': - specifier: ^4.17.16 - version: 4.17.17 - '@types/node': - specifier: ^22.15.19 - version: 22.15.32 - closest: - specifier: ^0.0.1 - version: 0.0.1 - dagre: - specifier: ^0.8.5 - version: 0.8.5 - file-loader: - specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) - html-to-image: - specifier: ^1.11.11 - version: 1.11.13 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - pathfinding: - specifier: ^0.4.18 - version: 0.4.18 - paths-js: - specifier: ^0.4.11 - version: 0.4.11 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - resize-observer-polyfill: - specifier: ^1.5.1 - version: 1.5.1 - typescript: - specifier: 5.8.3 - version: 5.8.3 - uuid: - specifier: ^11.1.0 - version: 11.1.0 - devDependencies: - '@babel/core': - specifier: ^7.27.1 - version: 7.27.4 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - '@types/uuid': - specifier: ^10.0.0 - version: 10.0.0 - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - babel-loader: - specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.27.4)(webpack@5.100.2) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - css-loader: - specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) - source-map-loader: - specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) - style-loader: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) - ts-loader: - specifier: ^9.4.1 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) - webpack-cli: - specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) - webpack-dev-server: - specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) - - workspaces/ballerina/type-editor: - dependencies: - '@emotion/css': - specifier: ~11.13.5 - version: 11.13.5 - '@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.0(@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: ~1.7.18 - version: 1.7.19(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@tanstack/react-query': - specifier: 5.76.1 - version: 5.76.1(react@18.2.0) - '@vscode/webview-ui-toolkit': - specifier: ~1.4.0 - version: 1.4.0(react@18.2.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../ballerina-core - '@wso2/ballerina-rpc-client': - specifier: workspace:* - version: link:../ballerina-rpc-client - '@wso2/ballerina-statement-editor': - specifier: workspace:* - version: link:../statement-editor - '@wso2/syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - lodash: - specifier: ~4.17.21 - version: 4.17.21 - lodash.debounce: - specifier: ^4.0.8 - version: 4.0.8 - monaco-editor: - specifier: ~0.52.2 - version: 0.52.2 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - 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) - react-lottie: - specifier: ^1.2.10 - version: 1.2.10(react@18.2.0) - vscode-uri: - specifier: ~3.1.0 - version: 3.1.0 - devDependencies: - '@types/lodash': - specifier: ~4.17.15 - version: 4.17.17 - '@types/lodash.debounce': - specifier: ^4.0.9 - version: 4.0.9 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-lottie': - specifier: ^1.2.10 - version: 1.2.10 - copyfiles: - specifier: ~2.4.1 - version: 2.4.1 - eslint: - specifier: ~9.26.0 - version: 9.26.0(jiti@2.4.2) - react-scripts-ts: - specifier: 3.1.0 - version: 3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.28.0))(babel-runtime@6.26.0)(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/bi/bi-extension: - dependencies: - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../../ballerina/ballerina-core - '@wso2/font-wso2-vscode': - specifier: workspace:* - version: link:../../common-libs/font-wso2-vscode - xstate: - specifier: ^4.38.3 - version: 4.38.3 - devDependencies: - '@playwright/test': - specifier: ~1.52.0 - version: 1.52.0 - '@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.101.0 - '@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.4.0 - version: 3.4.2 - '@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.100.2) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - eslint: - specifier: ^8.57.1 - version: 8.57.1 - glob: - specifier: ^11.0.2 - version: 11.0.3 - mocha: - specifier: ^11.2.2 - version: 11.7.0 - 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.100.2) - typescript: - specifier: 5.8.3 - version: 5.8.3 - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) - webpack-cli: - specifier: ^6.0.1 - version: 6.0.1(webpack@5.100.2) - webpack-permissions-plugin: - specifier: ^1.0.9 - version: 1.0.10 - - workspaces/choreo/choreo-core: - dependencies: - '@wso2/wso2-platform-core': - specifier: workspace:* - version: link:../../wso2-platform/wso2-platform-core - vscode-messenger-common: - specifier: ^0.5.1 - version: 0.5.1 - vscode-messenger-webview: - specifier: ^0.5.1 - version: 0.5.1 - devDependencies: - '@biomejs/biome': - specifier: ^1.8.3 - version: 1.9.4 - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/choreo/choreo-extension: - dependencies: - '@vscode-logging/logger': - specifier: ^2.0.0 - version: 2.0.0 - '@vscode-logging/types': - specifier: ^2.0.0 - version: 2.0.0 - '@vscode-logging/wrapper': - specifier: ^2.0.0 - version: 2.0.0 - '@vscode/extension-telemetry': - specifier: ~1.0.0 - version: 1.0.0(tslib@2.8.1) - '@vscode/iconv-lite-umd': - specifier: ^0.7.0 - version: 0.7.0 - '@vscode/webview-ui-toolkit': - specifier: ^1.2.0 - version: 1.4.0(react@19.1.0) - '@wso2/choreo-core': - specifier: workspace:* - version: link:../choreo-core - '@wso2/choreo-vscode-webviews': - specifier: workspace:* - version: link:../choreo-webviews - '@wso2/wso2-platform-core': - specifier: workspace:* - version: link:../../wso2-platform/wso2-platform-core - byline: - specifier: ^5.0.0 - version: 5.0.0 - dotenv: - specifier: ^16.0.3 - version: 16.3.2 - file-type: - specifier: ^18.2.1 - version: 18.7.0 - js-yaml: - specifier: ^4.1.0 - version: 4.1.0 - jschardet: - specifier: ^3.0.0 - version: 3.1.4 - vscode-jsonrpc: - specifier: ^8.2.1 - version: 8.2.1 - vscode-messenger: - specifier: ^0.5.1 - version: 0.5.1 - vscode-messenger-common: - specifier: ^0.5.1 - version: 0.5.1 - which: - specifier: ^5.0.0 - version: 5.0.0 - yaml: - specifier: ^2.6.0 - version: 2.8.0 - zustand: - specifier: ^5.0.5 - version: 5.0.5(@types/react@18.2.0)(immer@9.0.21)(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0)) - devDependencies: - '@biomejs/biome': - specifier: ^1.8.3 - version: 1.9.4 - '@playwright/test': - specifier: 1.52.0 - version: 1.52.0 - '@types/byline': - specifier: ^4.2.36 - version: 4.2.36 - '@types/js-yaml': - specifier: ^4.0.9 - version: 4.0.9 - '@types/mocha': - specifier: ~10.0.1 - version: 10.0.10 - '@types/node': - specifier: ^22.15.24 - version: 22.15.32 - '@types/vscode': - specifier: ^1.100.0 - version: 1.101.0 - '@types/which': - specifier: ^3.0.4 - version: 3.0.4 - '@vscode/vsce': - specifier: ^3.4.2 - version: 3.4.2 - '@wso2/playwright-vscode-tester': - specifier: workspace:* - version: link:../../common-libs/playwright-vscode-tester - axios: - specifier: ^1.9.0 - version: 1.9.0 - copy-webpack-plugin: - specifier: ^13.0.0 - version: 13.0.0(webpack@5.100.2) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - del-cli: - specifier: ^6.0.0 - version: 6.0.0 - mocha: - specifier: ^11.5.0 - version: 11.7.0 - terser-webpack-plugin: - specifier: ^5.3.10 - version: 5.3.14(webpack@5.100.2) - ts-loader: - specifier: ~9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - typescript: - specifier: 5.8.3 - version: 5.8.3 - vscode-extension-tester: - specifier: ^8.14.1 - version: 8.14.1(mocha@11.7.0)(typescript@5.8.3) - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) - webpack-cli: - specifier: ^6.0.1 - version: 6.0.1(webpack@5.100.2) - webpack-permissions-plugin: - specifier: ^1.0.9 - version: 1.0.10 - - workspaces/choreo/choreo-webviews: - dependencies: - '@biomejs/biome': - specifier: ^1.9.4 - version: 1.9.4 - '@formkit/auto-animate': - specifier: 0.8.2 - version: 0.8.2 - '@headlessui/react': - specifier: ^2.2.4 - version: 2.2.4(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/react-query': - specifier: ~4.28.0 - version: 4.28.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@tanstack/react-query-persist-client': - specifier: ~4.28.0 - version: 4.28.0(@tanstack/react-query@4.28.0(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) - '@wso2/choreo-core': - specifier: workspace:* - version: link:../choreo-core - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - '@wso2/wso2-platform-core': - specifier: workspace:* - version: link:../../wso2-platform/wso2-platform-core - classnames: - specifier: ~2.5.1 - version: 2.5.1 - clipboardy: - specifier: ^4.0.0 - version: 4.0.0 - js-yaml: - specifier: ^4.1.0 - version: 4.1.0 - lodash.debounce: - specifier: ~4.0.8 - version: 4.0.8 - prism-react-renderer: - specifier: ^2.4.1 - version: 2.4.1(react@18.2.0) - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-hook-form: - specifier: 7.56.4 - version: 7.56.4(react@18.2.0) - react-markdown: - specifier: ^7.1.0 - version: 7.1.2(@types/react@18.2.0)(react@18.2.0) - rehype-raw: - specifier: ^6.1.0 - version: 6.1.1 - remark-gfm: - specifier: ^4.0.1 - version: 4.0.1 - swagger-ui-react: - specifier: ^5.22.0 - version: 5.25.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 - vscode-messenger-common: - specifier: ^0.5.1 - version: 0.5.1 - vscode-messenger-webview: - specifier: ^0.5.1 - version: 0.5.1 - zod: - specifier: ^3.22.4 - version: 3.25.67 - devDependencies: - '@types/js-yaml': - specifier: ^4.0.5 - version: 4.0.9 - '@types/lodash.debounce': - specifier: ^4.0.9 - version: 4.0.9 - '@types/node': - specifier: ^22.15.24 - version: 22.15.32 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - '@types/swagger-ui-react': - specifier: ^5.18.0 - version: 5.18.0 - '@types/vscode-webview': - specifier: ^1.57.5 - version: 1.57.5 - autoprefixer: - specifier: ^10.4.21 - version: 10.4.21(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.100.2) - file-loader: - specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) - node-sass: - specifier: ^9.0.0 - version: 9.0.0 - path: - specifier: ^0.12.7 - version: 0.12.7 - postcss: - specifier: ^8.5.4 - version: 8.5.6 - postcss-loader: - specifier: ^8.1.1 - version: 8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.100.2) - sass-loader: - specifier: ^16.0.5 - version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2) - source-map-loader: - specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) - style-loader: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) - tailwindcss: - specifier: ^3.4.3 - version: 3.4.17 - ts-loader: - specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - typescript: - specifier: 5.8.3 - version: 5.8.3 - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) - webpack-cli: - specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) - webpack-dev-server: - specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) - - workspaces/common-libs/component-diagram: - dependencies: - '@emotion/react': - specifier: ^11.9.3 - version: 11.14.0(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': - specifier: ^11.10.5 - version: 11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': - specifier: ^6.7.4 - version: 6.7.4 - '@projectstorm/react-canvas-core': - specifier: ^7.0.3 - version: 7.0.3(@types/react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^7.0.4 - version: 7.0.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-core': - specifier: ^7.0.3 - version: 7.0.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-defaults': - specifier: ^7.1.3 - version: 7.1.3(@types/react@18.2.0) - '@projectstorm/react-diagrams-routing': - specifier: ^7.1.3 - version: 7.1.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@wso2/ballerina-core': - specifier: workspace:* - version: link:../../ballerina/ballerina-core - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../ui-toolkit - dagre: - specifier: ~0.8.5 - version: 0.8.5 - lodash: - specifier: ~4.17.21 - version: 4.17.21 - react: - specifier: ~18.2.0 - version: 18.2.0 - react-dom: - specifier: ~18.2.0 - version: 18.2.0(react@18.2.0) - devDependencies: - '@storybook/react': - specifier: ^9.0.0 - version: 9.0.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3) - '@types/dagre': - specifier: ~0.7.52 - version: 0.7.52 - '@types/lodash': - specifier: ~4.17.17 - version: 4.17.17 - '@types/react': - specifier: ^18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: ^18.2.0 - version: 18.2.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - typescript: - specifier: ^5.8.3 - version: 5.8.3 - - workspaces/common-libs/font-wso2-vscode: - devDependencies: - '@vscode/codicons': - specifier: 0.0.36 - version: 0.0.36 - fantasticon: - specifier: ^3.0.0 - version: 3.0.0 - icon-font-generator: - specifier: ^2.1.11 - version: 2.1.11 - jsonc-parser: - specifier: ^3.3.1 - version: 3.3.1 - - workspaces/common-libs/playwright-vscode-tester: - dependencies: - '@playwright/test': - specifier: 1.52.0 - version: 1.52.0 - '@vscode/vsce': - specifier: ~3.4.2 - version: 3.4.2 - compare-versions: - specifier: ~6.1.1 - version: 6.1.1 - fs-extra: - specifier: ~11.3.0 - version: 11.3.0 - got: - specifier: 14.4.7 - version: 14.4.7 - hpagent: - specifier: ~1.2.0 - version: 1.2.0 - playwright-core: - specifier: ~1.52.0 - version: 1.52.0 - targz: - specifier: ~1.0.1 - version: 1.0.1 - unzipper: - specifier: ~0.12.3 - version: 0.12.3 - devDependencies: - '@types/fs-extra': - specifier: ~11.0.1 - version: 11.0.4 - '@types/node': - specifier: ~22.15.24 - version: 22.15.32 - '@types/unzipper': - specifier: ~0.10.11 - 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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': - specifier: ~8.33.0 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/common-libs/rpc-generator: - dependencies: - '@ts-morph/common': - specifier: ^0.27.0 - version: 0.27.0 - ts-morph: - specifier: ^26.0.0 - version: 26.0.0 - devDependencies: - '@types/node': - specifier: ^22.15.24 - version: 22.15.32 - - workspaces/common-libs/service-designer: - dependencies: - '@emotion/css': - specifier: ^11.10.5 - version: 11.13.5 - '@emotion/react': - specifier: ^11.9.3 - version: 11.14.0(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': - specifier: ^11.10.5 - version: 11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@vscode/codicons': - specifier: 0.0.33 - version: 0.0.33 - '@vscode/webview-ui-toolkit': - specifier: ^1.2.0 - version: 1.4.0(react@18.2.0) - '@wso2/font-wso2-vscode': - specifier: workspace:* - version: link:../font-wso2-vscode - '@wso2/syntax-tree': - specifier: workspace:* - version: link:../../ballerina/syntax-tree - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../ui-toolkit - react: - specifier: '>=17.0.2' - version: 18.2.0 - react-dom: - specifier: '>=17.0.2' - version: 18.2.0(react@18.2.0) - devDependencies: - '@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) - '@storybook/addon-essentials': - specifier: ~7.4.0 - version: 7.4.6(@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) - '@storybook/addon-links': - specifier: ~7.4.0 - version: 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/cli': - specifier: ^7.6.10 - version: 7.6.20(encoding@0.1.13) - '@storybook/react': - specifier: ~7.4.0 - 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.4)(@swc/core@1.12.5(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(@types/react-dom@18.2.0)(@types/react@18.2.0)(@types/webpack@5.28.5(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6))(encoding@0.1.13)(esbuild@0.25.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)))(webpack-hot-middleware@2.26.1) - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - '@typescript-eslint/eslint-plugin': - specifier: ^6.9.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) - '@typescript-eslint/parser': - specifier: ^6.9.1 - version: 6.21.0(eslint@8.57.1)(typescript@5.8.3) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - eslint: - specifier: ^8.52.0 - version: 8.57.1 - eslint-plugin-react: - specifier: ^7.33.1 - version: 7.37.5(eslint@8.57.1) - eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.2(eslint@8.57.1) - eslint-plugin-react-refresh: - specifier: ^0.4.4 - version: 0.4.20(eslint@8.57.1) - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/common-libs/ui-toolkit: - dependencies: - '@emotion/css': - specifier: ^11.10.5 - version: 11.13.5 - '@emotion/react': - specifier: ^11.9.3 - version: 11.14.0(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': - specifier: ^11.10.5 - version: 11.14.0(@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: ~1.7.18 - version: 1.7.19(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@monaco-editor/react': - specifier: ~4.7.0 - version: 4.7.0(monaco-editor@0.52.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@projectstorm/geometry': - specifier: ^6.7.4 - version: 6.7.4 - '@projectstorm/react-canvas-core': - specifier: ^6.7.4 - version: 6.7.4(lodash@4.17.21)(react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^6.7.4 - version: 6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(dagre@0.8.5)(lodash@4.17.21)(pathfinding@0.4.18)(paths-js@0.4.11)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@projectstorm/react-diagrams-core': - specifier: ^7.0.3 - version: 7.0.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@vscode/codicons': - specifier: 0.0.36 - version: 0.0.36 - '@vscode/webview-ui-toolkit': - specifier: ~1.4.0 - version: 1.4.0(react@18.2.0) - '@wso2/font-wso2-vscode': - specifier: workspace:* - version: link:../font-wso2-vscode - classnames: - specifier: ^2.5.1 - version: 2.5.1 - lodash: - specifier: ~4.17.21 - version: 4.17.21 - monaco-editor: - specifier: ~0.52.2 - version: 0.52.2 - prismjs: - specifier: ^1.30.0 - version: 1.30.0 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-hook-form: - specifier: 7.56.3 - version: 7.56.3(react@18.2.0) - devDependencies: - '@storybook/addon-docs': - specifier: ^9.0.12 - version: 9.0.12(@types/react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-essentials': - specifier: ^8.6.14 - version: 8.6.14(@types/react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/cli': - specifier: ^9.0.12 - version: 9.0.17(@babel/preset-env@7.27.2(@babel/core@7.28.0))(@testing-library/dom@10.4.0)(prettier@3.6.2) - '@storybook/react': - specifier: ^9.0.12 - version: 9.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3) - '@storybook/react-vite': - specifier: ^9.0.12 - version: 9.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.44.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3)(vite@6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) - '@types/lodash': - specifier: ~4.17.16 - version: 4.17.17 - '@types/prismjs': - specifier: ^1.26.5 - version: 1.26.5 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - '@typescript-eslint/eslint-plugin': - specifier: ^7.18.0 - version: 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) - '@typescript-eslint/parser': - specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.1)(typescript@5.8.3) - copyfiles: - specifier: ~2.4.1 - version: 2.4.1 - eslint: - specifier: ^8.57.1 - version: 8.57.1 - eslint-plugin-react: - specifier: ^7.37.5 - version: 7.37.5(eslint@8.57.1) - eslint-plugin-react-hooks: - specifier: ^5.2.0 - version: 5.2.0(eslint@8.57.1) - eslint-plugin-storybook: - specifier: ^9.0.12 - version: 9.0.12(eslint@8.57.1)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3) - gh-pages: - specifier: ^6.3.0 - version: 6.3.0 - glob: - specifier: ^11.0.2 - version: 11.0.3 - http-server: - specifier: ^14.1.1 - version: 14.1.1 - react-error-boundary: - specifier: ^6.0.0 - version: 6.0.0(react@18.2.0) - storybook: - specifier: ^9.0.12 - version: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/mi/mi-component-diagram: - dependencies: - '@emotion/react': - specifier: ^11.9.3 - version: 11.14.0(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': - specifier: ^11.10.5 - version: 11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': - specifier: ^6.7.4 - version: 6.7.4 - '@projectstorm/react-canvas-core': - specifier: ^6.7.4 - version: 6.7.4(lodash@4.17.21)(react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^6.7.4 - version: 6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(dagre@0.8.5)(lodash@4.17.21)(pathfinding@0.4.18)(paths-js@0.4.11)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@projectstorm/react-diagrams-core': - specifier: ^6.7.4 - version: 6.7.4(lodash@4.17.21)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@projectstorm/react-diagrams-defaults': - specifier: ^6.7.4 - version: 6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(lodash@4.17.21)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@projectstorm/react-diagrams-routing': - specifier: ^6.7.4 - version: 6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(dagre@0.8.5)(lodash@4.17.21)(pathfinding@0.4.18)(paths-js@0.4.11)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - dagre: - specifier: ~0.8.5 - version: 0.8.5 - lodash: - specifier: ~4.17.21 - version: 4.17.21 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - devDependencies: - '@storybook/react': - specifier: ^6.3.7 - version: 6.5.16(@babel/core@7.28.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1) - '@types/dagre': - specifier: ~0.7.52 - version: 0.7.52 - '@types/lodash': - specifier: ~4.14.202 - version: 4.14.202 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/mi/mi-core: - dependencies: - '@types/vscode-webview': - specifier: ^1.57.5 - version: 1.57.5 - '@wso2/mi-syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - vscode-languageserver-types: - specifier: ~3.17.5 - version: 3.17.5 - vscode-messenger-common: - specifier: ^0.5.1 - version: 0.5.1 - devDependencies: - '@eslint/eslintrc': - specifier: ~3.3.1 - version: 3.3.1 - '@eslint/js': - specifier: ~9.27.0 - 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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': - specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - eslint: - specifier: ^9.27.0 - version: 9.27.0(jiti@2.4.2) - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/mi/mi-data-mapper: - dependencies: - '@emotion/css': - specifier: ~11.13.5 - version: 11.13.5 - '@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.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': - specifier: ^6.7.4 - version: 6.7.4 - '@projectstorm/react-canvas-core': - specifier: ^6.7.4 - version: 6.7.4(lodash@4.17.21)(react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^6.7.4 - version: 6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(dagre@0.8.5)(lodash@4.17.21)(pathfinding@0.4.18)(paths-js@0.4.11)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@projectstorm/react-diagrams-core': - specifier: ^6.7.4 - 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.81.2 - '@tanstack/react-query': - specifier: 5.76.2 - version: 5.76.2(react@18.2.0) - '@types/mousetrap': - specifier: ~1.6.15 - version: 1.6.15 - '@vscode/webview-ui-toolkit': - specifier: ^1.2.0 - version: 1.4.0(react@18.2.0) - '@wso2/mi-core': - specifier: workspace:* - version: link:../mi-core - '@wso2/mi-rpc-client': - specifier: workspace:* - version: link:../mi-rpc-client - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - ajv: - specifier: ~8.17.1 - version: 8.17.1 - ajv-formats: - specifier: ~3.0.1 - version: 3.0.1(ajv@8.17.1) - blueimp-md5: - specifier: ^2.19.0 - version: 2.19.0 - classnames: - specifier: ^2.5.1 - version: 2.5.1 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - lodash.debounce: - specifier: ^4.0.8 - version: 4.0.8 - mousetrap: - specifier: ^1.6.5 - version: 1.6.5 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - resize-observer-polyfill: - specifier: ^1.5.1 - version: 1.5.1 - vscode-languageserver-types: - specifier: ^3.17.5 - version: 3.17.5 - zustand: - specifier: ^5.0.5 - version: 5.0.5(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0)(use-sync-external-store@1.5.0(react@18.2.0)) - devDependencies: - '@types/blueimp-md5': - specifier: ^2.18.2 - version: 2.18.2 - '@types/lodash': - specifier: 4.17.17 - version: 4.17.17 - '@types/lodash.debounce': - specifier: ^4.0.9 - version: 4.0.9 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - 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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': - specifier: ~8.32.1 - version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(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.100.2) - eslint: - specifier: ^9.27.0 - version: 9.27.0(jiti@2.4.2) - eslint-plugin-react-hooks: - specifier: ^5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) - eslint-plugin-react-refresh: - specifier: ^0.4.20 - version: 0.4.20(eslint@9.27.0(jiti@2.4.2)) - file-loader: - specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) - 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.100.2) - ts-morph: - specifier: ^22.0.0 - version: 22.0.0 - tslib: - specifier: ^2.8.1 - version: 2.8.1 - tslint: - specifier: ^6.1.3 - version: 6.1.3(typescript@5.8.3) - tslint-react: - specifier: ^5.0.0 - version: 5.0.0(tslint@6.1.3(typescript@5.8.3))(typescript@5.8.3) - tslint-react-hooks: - specifier: ^2.2.2 - version: 2.2.2(tslint@6.1.3(typescript@5.8.3))(typescript@5.8.3) - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/mi/mi-data-mapper-utils: {} - - workspaces/mi/mi-diagram: - dependencies: - '@emotion/css': - specifier: ^11.13.5 - version: 11.13.5 - '@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.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@hookform/resolvers': - specifier: ^2.8.0 - version: 2.9.11(react-hook-form@7.56.4(react@18.2.0)) - '@projectstorm/geometry': - specifier: ^7.0.3 - version: 7.0.3 - '@projectstorm/react-canvas-core': - specifier: ^7.0.3 - version: 7.0.3(@types/react@18.2.0) - '@projectstorm/react-diagrams': - specifier: ^7.0.4 - version: 7.0.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-core': - specifier: ^7.0.3 - version: 7.0.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-defaults': - specifier: ^7.1.3 - version: 7.1.3(@types/react@18.2.0) - '@projectstorm/react-diagrams-routing': - specifier: ^7.1.3 - version: 7.1.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@types/lodash': - specifier: ~4.17.17 - version: 4.17.17 - '@types/mousetrap': - specifier: ~1.6.15 - version: 1.6.15 - '@types/mustache': - specifier: ~4.2.5 - version: 4.2.6 - '@types/node': - specifier: ~22.15.21 - version: 22.15.32 - '@vscode/webview-ui-toolkit': - specifier: ~1.4.0 - version: 1.4.0(react@18.2.0) - '@wso2/mi-core': - specifier: workspace:* - version: link:../mi-core - '@wso2/mi-rpc-client': - specifier: workspace:* - version: link:../mi-rpc-client - '@wso2/mi-syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - copyfiles: - specifier: ~2.4.1 - version: 2.4.1 - eslint-plugin-react-hooks: - specifier: ~5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) - 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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)) - html-to-image: - specifier: 1.11.11 - version: 1.11.11 - lodash: - specifier: ~4.17.21 - version: 4.17.21 - mousetrap: - specifier: ~1.6.5 - version: 1.6.5 - mustache: - specifier: ~4.2.0 - version: 4.2.0 - path: - specifier: ~0.12.7 - version: 0.12.7 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dnd: - specifier: 16.0.1 - version: 16.0.1(@types/hoist-non-react-statics@3.3.6)(@types/node@22.15.32)(@types/react@18.2.0)(react@18.2.0) - react-dnd-html5-backend: - specifier: 16.0.1 - version: 16.0.1 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-hook-form: - specifier: 7.56.4 - version: 7.56.4(react@18.2.0) - react-json-view: - specifier: latest - 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.1(react@18.2.0) - react-markdown: - specifier: ~10.1.0 - version: 10.1.0(@types/react@18.2.0)(react@18.2.0) - vscode-languageserver-types: - specifier: ~3.17.5 - version: 3.17.5 - xmlbuilder2: - specifier: ~3.1.1 - version: 3.1.1 - yup: - specifier: ~1.6.1 - version: 1.6.1 - devDependencies: - '@babel/core': - specifier: ~7.27.1 - version: 7.27.4 - '@babel/preset-env': - specifier: ~7.27.2 - version: 7.27.2(@babel/core@7.27.4) - '@storybook/addon-essentials': - specifier: ^8.6.14 - version: 8.6.14(@types/react@18.2.0)(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-interactions': - specifier: ^8.6.14 - version: 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-links': - specifier: ^8.6.14 - version: 8.6.14(react@18.2.0)(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-onboarding': - specifier: ^8.6.14 - version: 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/blocks': - specifier: ^8.6.14 - version: 8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2)) - '@storybook/react': - specifier: ^8.6.14 - version: 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2))(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.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2))(typescript@5.8.3) - '@storybook/test': - specifier: ^8.6.14 - version: 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@testing-library/dom': - specifier: ~10.4.0 - version: 10.4.0 - '@testing-library/jest-dom': - specifier: ~6.6.3 - version: 6.6.3 - '@testing-library/react': - specifier: ~16.3.0 - version: 16.3.0(@testing-library/dom@10.4.0)(@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/deep-equal': - specifier: ~1.0.4 - version: 1.0.4 - '@types/jest': - specifier: 29.5.14 - version: 29.5.14 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-test-renderer': - specifier: ~19.1.0 - version: 19.1.0 - '@types/xml2js': - specifier: ~0.4.14 - 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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - babel-jest: - specifier: 29.7.0 - version: 29.7.0(@babel/core@7.27.4) - deep-equal: - specifier: ~2.2.3 - version: 2.2.3 - identity-obj-proxy: - specifier: ~3.0.0 - version: 3.0.0 - jest: - specifier: 29.7.0 - version: 29.7.0(@types/node@22.15.32)(babel-plugin-macros@3.1.0) - jest-environment-jsdom: - specifier: 29.7.0 - version: 29.7.0 - pretty-format: - specifier: ~29.7.0 - version: 29.7.0 - react-test-renderer: - specifier: ~19.1.0 - version: 19.1.0(react@18.2.0) - storybook: - specifier: ^8.6.14 - version: 8.6.14(prettier@3.6.2) - ts-jest: - specifier: 29.3.4 - version: 29.3.4(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(jest@29.7.0(@types/node@22.15.32)(babel-plugin-macros@3.1.0))(typescript@5.8.3) - typescript: - specifier: 5.8.3 - version: 5.8.3 - vscode-jsonrpc: - specifier: ^8.2.1 - version: 8.2.1 - vscode-languageclient: - specifier: ^9.0.1 - version: 9.0.1 - vscode-languageserver-protocol: - specifier: ^3.17.5 - version: 3.17.5 - xml2js: - specifier: ~0.6.2 - version: 0.6.2 - - workspaces/mi/mi-extension: - dependencies: - '@apidevtools/json-schema-ref-parser': - specifier: 12.0.2 - version: 12.0.2 - '@babel/core': - specifier: ^7.27.1 - version: 7.27.4 - '@babel/plugin-transform-typescript': - specifier: ^7.27.1 - version: 7.27.1(@babel/core@7.27.4) - '@iarna/toml': - specifier: ^2.2.5 - version: 2.2.5 - '@types/fs-extra': - specifier: ~11.0.4 - version: 11.0.4 - '@types/json-schema': - specifier: 7.0.15 - version: 7.0.15 - '@types/lodash': - specifier: ~4.17.17 - version: 4.17.17 - '@types/mustache': - specifier: ~4.2.6 - version: 4.2.6 - '@types/tmp': - specifier: ~0.2.6 - version: 0.2.6 - '@types/xml2js': - specifier: ~0.4.12 - version: 0.4.14 - '@vscode/vsce': - specifier: ~3.4.2 - version: 3.4.2 - '@wso2/font-wso2-vscode': - specifier: workspace:* - version: link:../../common-libs/font-wso2-vscode - '@wso2/mi-core': - specifier: workspace:* - version: link:../mi-core - '@wso2/mi-diagram': - specifier: workspace:* - version: link:../mi-diagram - '@wso2/mi-rpc-client': - specifier: workspace:* - version: link:../mi-rpc-client - '@wso2/mi-syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - '@wso2/playwright-vscode-tester': - specifier: workspace:* - version: link:../../common-libs/playwright-vscode-tester - adm-zip: - specifier: ~0.5.16 - version: 0.5.16 - axios: - specifier: ~1.9.0 - version: 1.9.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - cors-anywhere: - specifier: ^0.4.4 - version: 0.4.4 - dotenv: - specifier: ~16.5.0 - version: 16.5.0 - fast-xml-parser: - specifier: ~5.2.3 - version: 5.2.5 - find-process: - specifier: ~1.4.10 - version: 1.4.10 - fs-extra: - specifier: ~11.3.0 - version: 11.3.0 - json-schema: - specifier: 0.4.0 - version: 0.4.0 - json-schema-to-ts: - specifier: 3.1.1 - version: 3.1.1 - jsonix: - specifier: ~3.0.0 - version: 3.0.0 - lodash: - specifier: ~4.17.21 - version: 4.17.21 - mustache: - specifier: ~4.2.0 - version: 4.2.0 - node-fetch: - specifier: ~3.3.2 - version: 3.3.2 - node-loader: - specifier: ~2.1.0 - version: 2.1.0(webpack@5.100.2) - portfinder: - specifier: ^1.0.37 - version: 1.0.37 - recast: - specifier: ^0.23.11 - version: 0.23.11 - tmp: - specifier: ~0.2.3 - version: 0.2.3 - to-json-schema: - specifier: 0.2.5 - version: 0.2.5 - tree-kill: - specifier: ~1.2.2 - version: 1.2.2 - unzipper: - specifier: ~0.12.3 - version: 0.12.3 - upath: - specifier: ~2.0.1 - version: 2.0.1 - uuid: - specifier: ~11.1.0 - version: 11.1.0 - vscode-debugadapter: - specifier: ^1.51.0 - version: 1.51.0 - vscode-debugprotocol: - specifier: ^1.51.0 - version: 1.51.0 - vscode-extension-tester: - specifier: ~8.14.1 - version: 8.14.1(mocha@11.7.0)(typescript@5.8.3) - vscode-languageclient: - specifier: ^9.0.1 - version: 9.0.1 - vscode-languageserver-protocol: - specifier: ^3.17.5 - version: 3.17.5 - vscode-messenger: - specifier: ^0.5.1 - version: 0.5.1 - vscode-messenger-common: - specifier: ^0.5.1 - version: 0.5.1 - xml2js: - specifier: 0.6.2 - version: 0.6.2 - xstate: - specifier: ^4.38.3 - version: 4.38.3 - devDependencies: - '@playwright/test': - specifier: ~1.52.0 - version: 1.52.0 - '@types/mocha': - specifier: ^10.0.1 - version: 10.0.10 - '@types/node': - specifier: 22.15.21 - version: 22.15.21 - '@types/vscode': - specifier: ^1.100.0 - version: 1.101.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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': - specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@vscode/test-electron': - specifier: ^2.5.2 - version: 2.5.2 - '@wso2/mi-data-mapper-utils': - specifier: workspace:* - version: link:../mi-data-mapper-utils - '@wso2/mi-visualizer': - specifier: workspace:* - version: link:../mi-visualizer - '@wso2/wso2-platform-core': - specifier: workspace:* - version: link:../../wso2-platform/wso2-platform-core - await-notify: - specifier: ^1.0.1 - version: 1.0.1 - eslint: - specifier: ^9.27.0 - version: 9.27.0(jiti@2.4.2) - glob: - specifier: ^11.0.2 - version: 11.0.3 - mocha: - specifier: ^11.4.0 - version: 11.7.0 - playwright-core: - specifier: ~1.52.0 - version: 1.52.0 - rimraf: - specifier: ~6.0.1 - version: 6.0.1 - ts-loader: - specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - ts-morph: - specifier: ^26.0.0 - version: 26.0.0 - typescript: - specifier: 5.8.3 - version: 5.8.3 - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@4.10.0) - webpack-cli: - specifier: ^4.10.0 - version: 4.10.0(webpack@5.100.2) - yaml: - specifier: ~2.8.0 - version: 2.8.0 - - workspaces/mi/mi-rpc-client: - dependencies: - '@types/vscode-webview': - specifier: ^1.57.5 - version: 1.57.5 - '@wso2/mi-core': - specifier: workspace:* - version: link:../mi-core - '@wso2/mi-syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - react: - specifier: 19.1.0 - version: 19.1.0 - react-dom: - specifier: 19.1.0 - version: 19.1.0(react@19.1.0) - vscode-messenger-common: - specifier: ^0.5.1 - version: 0.5.1 - vscode-messenger-webview: - specifier: ^0.5.1 - version: 0.5.1 - devDependencies: - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - 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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': - specifier: ^8.32.1 - version: 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - eslint: - specifier: ^9.27.0 - version: 9.27.0(jiti@2.4.2) - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/mi/mi-visualizer: - dependencies: - '@codemirror/lang-xml': - specifier: ~6.1.0 - version: 6.1.0 - '@codemirror/lint': - specifier: ~6.8.5 - version: 6.8.5 - '@codemirror/theme-one-dark': - specifier: ~6.1.2 - version: 6.1.3 - '@emotion/css': - specifier: ^11.13.5 - version: 11.13.5 - '@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.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@hookform/resolvers': - specifier: ^2.8.0 - version: 2.9.11(react-hook-form@7.56.4(react@18.2.0)) - '@playwright/test': - specifier: 1.52.0 - version: 1.52.0 - '@pmmmwh/react-refresh-webpack-plugin': - specifier: ~0.6.0 - version: 0.6.0(@types/webpack@5.28.5(webpack-cli@5.1.4))(react-refresh@0.17.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.100.2) - '@tanstack/query-core': - specifier: ^5.76.0 - version: 5.81.2 - '@tanstack/react-query': - specifier: 5.76.1 - version: 5.76.1(react@18.2.0) - '@types/react-collapse': - specifier: ~5.0.4 - version: 5.0.4 - '@types/react-split-pane': - specifier: ~0.1.67 - version: 0.1.67(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@types/react-syntax-highlighter': - specifier: ~15.5.13 - version: 15.5.13 - '@types/swagger-ui-react': - specifier: ^5.18.0 - version: 5.18.0 - '@types/uuid': - specifier: ~10.0.0 - version: 10.0.0 - '@types/vscode-webview': - specifier: ^1.57.5 - version: 1.57.5 - '@uiw/react-codemirror': - specifier: ~4.23.12 - version: 4.23.13(@babel/runtime@7.27.6)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.1)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.37.2)(codemirror@5.65.19)(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) - '@wso2/mi-component-diagram': - specifier: workspace:* - version: link:../mi-component-diagram - '@wso2/mi-core': - specifier: workspace:* - version: link:../mi-core - '@wso2/mi-data-mapper': - specifier: workspace:* - version: link:../mi-data-mapper - '@wso2/mi-diagram': - specifier: workspace:* - version: link:../mi-diagram - '@wso2/mi-rpc-client': - specifier: workspace:* - version: link:../mi-rpc-client - '@wso2/mi-syntax-tree': - specifier: workspace:* - version: link:../syntax-tree - '@wso2/service-designer': - specifier: workspace:* - version: link:../../common-libs/service-designer - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - '@wso2/wso2-platform-core': - specifier: workspace:* - version: link:../../wso2-platform/wso2-platform-core - cron-expression-validator: - specifier: ~1.0.20 - version: 1.0.20 - fast-xml-parser: - specifier: ~5.2.3 - version: 5.2.5 - lodash: - specifier: ~4.17.21 - version: 4.17.21 - mustache: - specifier: ~4.2.0 - version: 4.2.0 - path: - specifier: ~0.12.7 - version: 0.12.7 - process: - specifier: ~0.11.10 - version: 0.11.10 - react: - specifier: 18.2.0 - version: 18.2.0 - react-collapse: - specifier: ~5.1.1 - version: 5.1.1(react@18.2.0) - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-hook-form: - specifier: 7.56.4 - version: 7.56.4(react@18.2.0) - react-hot-loader: - specifier: ~4.13.1 - version: 4.13.1(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-markdown: - specifier: ~10.1.0 - version: 10.1.0(@types/react@18.2.0)(react@18.2.0) - react-split-pane: - specifier: ~0.1.92 - 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) - 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) - upath: - specifier: ~2.0.1 - version: 2.0.1 - uuid: - specifier: ~11.1.0 - version: 11.1.0 - xmlbuilder2: - specifier: ~3.1.1 - version: 3.1.1 - yup: - specifier: ~1.6.1 - version: 1.6.1 - devDependencies: - '@babel/plugin-syntax-flow': - specifier: ~7.27.1 - version: 7.27.1(@babel/core@7.28.0) - '@babel/preset-typescript': - specifier: ~7.27.1 - version: 7.27.1(@babel/core@7.28.0) - '@headlessui/react': - specifier: ~2.2.4 - version: 2.2.4(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.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-essentials': - specifier: ~8.6.14 - version: 8.6.14(@types/react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-links': - specifier: ~8.6.14 - version: 8.6.14(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/react-webpack5': - specifier: ~8.6.14 - version: 8.6.14(@storybook/test@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3)(webpack-cli@5.1.4) - '@types/lodash': - specifier: ~4.17.17 - version: 4.17.17 - '@types/mustache': - specifier: ~4.2.6 - version: 4.2.6 - '@types/node': - specifier: ^22.15.21 - version: 22.15.32 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - css-loader: - specifier: ^7.1.2 - version: 7.1.2(webpack@5.100.2) - sass-loader: - specifier: ^16.0.5 - version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2) - source-map-loader: - specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) - style-loader: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) - ts-loader: - specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - typescript: - specifier: 5.8.3 - version: 5.8.3 - vscode-languageserver-types: - specifier: ~3.17.5 - version: 3.17.5 - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@5.1.4) - webpack-cli: - specifier: ~5.1.4 - version: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2) - webpack-dev-server: - specifier: ^5.2.1 - version: 5.2.2(webpack-cli@5.1.4)(webpack@5.100.2) - yaml: - specifier: ~2.8.0 - version: 2.8.0 - - workspaces/mi/syntax-tree: - dependencies: - '@types/node': - specifier: ~22.15.21 - version: 22.15.32 - eslint: - specifier: ~9.27.0 - version: 9.27.0(jiti@2.4.2) - jsonix: - specifier: ~3.0.0 - version: 3.0.0 - tslint: - specifier: ~6.1.3 - version: 6.1.3(typescript@5.8.3) - vscode-languageserver-types: - specifier: ~3.17.5 - version: 3.17.5 - devDependencies: - '@size-limit/preset-small-lib': - specifier: ^11.2.0 - version: 11.2.0(size-limit@11.2.0) - '@typescript-eslint/eslint-plugin': - specifier: ~8.32.1 - version: 8.32.1(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-react-hooks: - specifier: ~5.2.0 - version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) - eslint-plugin-unused-imports: - specifier: ~4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)) - husky: - specifier: ^9.1.7 - version: 9.1.7 - rimraf: - specifier: ^6.0.1 - version: 6.0.1 - size-limit: - specifier: ^11.2.0 - version: 11.2.0 - tsdx: - specifier: ^0.14.1 - version: 0.14.1(@types/babel__core@7.20.5)(@types/node@22.15.32) - tslib: - specifier: ^2.5.0 - version: 2.8.1 - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/wso2-platform/wso2-platform-core: - dependencies: - vscode-messenger-common: - specifier: ^0.5.1 - version: 0.5.1 - vscode-messenger-webview: - specifier: ^0.5.1 - version: 0.5.1 - devDependencies: - '@biomejs/biome': - specifier: ^1.9.4 - version: 1.9.4 - typescript: - specifier: 5.8.3 - version: 5.8.3 - - workspaces/wso2-platform/wso2-platform-extension: - dependencies: - '@aws-sdk/client-s3': - specifier: ^3.817.0 - version: 3.832.0 - '@vscode-logging/logger': - specifier: ^2.0.0 - version: 2.0.0 - '@vscode-logging/types': - specifier: ^2.0.0 - version: 2.0.0 - '@vscode-logging/wrapper': - specifier: ^2.0.0 - version: 2.0.0 - '@vscode/extension-telemetry': - specifier: ~1.0.0 - version: 1.0.0(tslib@2.8.1) - '@vscode/iconv-lite-umd': - specifier: ^0.7.0 - version: 0.7.0 - '@vscode/webview-ui-toolkit': - specifier: ^1.4.0 - version: 1.4.0(react@19.1.0) - '@wso2/wso2-platform-core': - specifier: workspace:* - version: link:../wso2-platform-core - '@wso2/wso2-platform-vscode-webviews': - specifier: workspace:* - version: link:../wso2-platform-webviews - byline: - specifier: ^5.0.0 - version: 5.0.0 - dotenv: - specifier: ^16.0.3 - version: 16.3.2 - file-type: - specifier: ^18.2.1 - version: 18.7.0 - js-yaml: - specifier: ^4.1.0 - version: 4.1.0 - jschardet: - specifier: ^3.1.4 - version: 3.1.4 - vscode-jsonrpc: - specifier: ^8.2.1 - version: 8.2.1 - vscode-messenger: - specifier: ^0.5.1 - version: 0.5.1 - vscode-messenger-common: - specifier: ^0.5.1 - version: 0.5.1 - which: - specifier: ^5.0.0 - version: 5.0.0 - yaml: - specifier: ^2.8.0 - version: 2.8.0 - zod: - specifier: ^3.22.4 - version: 3.25.76 - zustand: - specifier: ^5.0.5 - version: 5.0.5(@types/react@18.2.0)(immer@9.0.21)(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0)) - devDependencies: - '@biomejs/biome': - specifier: ^1.9.4 - version: 1.9.4 - '@playwright/test': - specifier: 1.52.0 - version: 1.52.0 - '@types/byline': - specifier: ^4.2.36 - version: 4.2.36 - '@types/js-yaml': - specifier: ^4.0.9 - version: 4.0.9 - '@types/mocha': - specifier: ~10.0.1 - version: 10.0.10 - '@types/node': - specifier: ^22.15.21 - version: 22.15.32 - '@types/vscode': - specifier: ^1.100.0 - version: 1.101.0 - '@types/which': - specifier: ^3.0.4 - version: 3.0.4 - '@vscode/vsce': - specifier: ^3.4.2 - version: 3.4.2 - '@wso2/playwright-vscode-tester': - specifier: workspace:* - version: link:../../common-libs/playwright-vscode-tester - axios: - specifier: ^1.9.0 - version: 1.9.0 - copy-webpack-plugin: - specifier: ^13.0.0 - version: 13.0.0(webpack@5.100.2) - copyfiles: - specifier: ^2.4.1 - version: 2.4.1 - del-cli: - specifier: ^6.0.0 - version: 6.0.0 - mocha: - specifier: ^11.5.0 - version: 11.7.0 - terser-webpack-plugin: - specifier: ^5.3.14 - version: 5.3.14(webpack@5.100.2) - ts-loader: - specifier: ~9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - typescript: - specifier: ^5.8.3 - version: 5.8.3 - vscode-extension-tester: - specifier: ^8.14.1 - version: 8.14.1(mocha@11.7.0)(typescript@5.8.3) - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) - webpack-cli: - specifier: ^6.0.1 - version: 6.0.1(webpack@5.100.2) - webpack-permissions-plugin: - specifier: ^1.0.10 - version: 1.0.10 - - workspaces/wso2-platform/wso2-platform-webviews: - dependencies: - '@biomejs/biome': - specifier: ^1.9.4 - version: 1.9.4 - '@formkit/auto-animate': - specifier: 0.8.2 - version: 0.8.2 - '@headlessui/react': - specifier: ^2.1.2 - version: 2.2.4(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/react-query': - specifier: ~4.28.0 - version: 4.28.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@tanstack/react-query-persist-client': - specifier: ~4.28.0 - version: 4.28.0(@tanstack/react-query@4.28.0(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) - '@wso2/ui-toolkit': - specifier: workspace:* - version: link:../../common-libs/ui-toolkit - '@wso2/wso2-platform-core': - specifier: workspace:* - version: link:../wso2-platform-core - classnames: - specifier: ~2.5.1 - version: 2.5.1 - clipboardy: - specifier: ^4.0.0 - version: 4.0.0 - js-yaml: - specifier: ^4.1.0 - version: 4.1.0 - lodash.debounce: - specifier: ~4.0.8 - version: 4.0.8 - prism-react-renderer: - specifier: ^2.4.1 - version: 2.4.1(react@18.2.0) - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-hook-form: - specifier: 7.56.4 - version: 7.56.4(react@18.2.0) - react-markdown: - specifier: ^7.1.0 - version: 7.1.2(@types/react@18.2.0)(react@18.2.0) - rehype-raw: - specifier: ^6.1.0 - version: 6.1.1 - remark-gfm: - specifier: ^4.0.1 - version: 4.0.1 - swagger-ui-react: - specifier: ^5.22.0 - version: 5.25.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 - vscode-messenger-common: - specifier: ^0.5.1 - version: 0.5.1 - vscode-messenger-webview: - specifier: ^0.5.1 - version: 0.5.1 - zod: - specifier: ^3.22.4 - version: 3.25.67 - devDependencies: - '@types/js-yaml': - specifier: ^4.0.5 - version: 4.0.9 - '@types/lodash.debounce': - specifier: ^4.0.6 - version: 4.0.9 - '@types/node': - specifier: ^22.15.21 - version: 22.15.32 - '@types/react': - specifier: 18.2.0 - version: 18.2.0 - '@types/react-dom': - specifier: 18.2.0 - version: 18.2.0 - '@types/swagger-ui-react': - specifier: ^5.18.0 - version: 5.18.0 - '@types/vscode-webview': - specifier: ^1.57.5 - version: 1.57.5 - autoprefixer: - specifier: ^10.4.19 - version: 10.4.21(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.100.2) - file-loader: - specifier: ^6.2.0 - version: 6.2.0(webpack@5.100.2) - node-sass: - specifier: ^9.0.0 - version: 9.0.0 - path: - specifier: ^0.12.7 - version: 0.12.7 - postcss: - specifier: ^8.5.3 - version: 8.5.6 - postcss-loader: - specifier: ^8.1.1 - version: 8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.100.2) - sass-loader: - specifier: ^16.0.5 - version: 16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2) - source-map-loader: - specifier: ^5.0.0 - version: 5.0.0(webpack@5.100.2) - style-loader: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.100.2) - tailwindcss: - specifier: ^4.1.7 - version: 4.1.10 - ts-loader: - specifier: ^9.5.2 - version: 9.5.2(typescript@5.8.3)(webpack@5.100.2) - typescript: - specifier: 5.8.3 - version: 5.8.3 - webpack: - specifier: ^5.94.0 - version: 5.100.2(webpack-cli@6.0.1) - webpack-cli: - specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) - webpack-dev-server: - specifier: ^5.2.1 - version: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) - -packages: - - '@adobe/css-tools@4.4.3': - resolution: {integrity: sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==} - - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@apidevtools/json-schema-ref-parser@12.0.2': - resolution: {integrity: sha512-SoZWqQz4YMKdw4kEMfG5w6QAy+rntjsoAT1FtvZAnVEnCR4uy9YSuDBNoVAFHgzSz0dJbISLLCSrGR2Zd7bcvA==} - engines: {node: '>= 16'} - - '@aw-web-design/x-default-browser@1.4.126': - resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} - hasBin: true - - '@aws-crypto/crc32@5.2.0': - resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} - engines: {node: '>=16.0.0'} - - '@aws-crypto/crc32c@5.2.0': - resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} - - '@aws-crypto/sha1-browser@5.2.0': - resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} - - '@aws-crypto/sha256-browser@5.2.0': - resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} - - '@aws-crypto/sha256-js@5.2.0': - resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} - engines: {node: '>=16.0.0'} - - '@aws-crypto/supports-web-crypto@5.2.0': - resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} - - '@aws-crypto/util@5.2.0': - resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - - '@aws-sdk/client-s3@3.832.0': - resolution: {integrity: sha512-S+md1zCe71SEuaRDuLHq4mzhYYkVxR1ENa8NwrgInfYoC4xo8/pESoR6i0ZZpcLs0Jw4EyVInWYs4GgDHW70qQ==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/client-sso@3.830.0': - resolution: {integrity: sha512-5zCEpfI+zwX2SIa258L+TItNbBoAvQQ6w74qdFM6YJufQ1F9tvwjTX8T+eSTT9nsFIvfYnUaGalWwJVfmJUgVQ==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/core@3.826.0': - resolution: {integrity: sha512-BGbQYzWj3ps+dblq33FY5tz/SsgJCcXX0zjQlSC07tYvU1jHTUvsefphyig+fY38xZ4wdKjbTop+KUmXUYrOXw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-env@3.826.0': - resolution: {integrity: sha512-DK3pQY8+iKK3MGDdC3uOZQ2psU01obaKlTYhEwNu4VWzgwQL4Vi3sWj4xSWGEK41vqZxiRLq6fOq7ysRI+qEZA==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-http@3.826.0': - resolution: {integrity: sha512-N+IVZBh+yx/9GbMZTKO/gErBi/FYZQtcFRItoLbY+6WU+0cSWyZYfkoeOxHmQV3iX9k65oljERIWUmL9x6OSQg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-ini@3.830.0': - resolution: {integrity: sha512-zeQenzvh8JRY5nULd8izdjVGoCM1tgsVVsrLSwDkHxZTTW0hW/bmOmXfvdaE0wDdomXW7m2CkQDSmP7XdvNXZg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-node@3.830.0': - resolution: {integrity: sha512-X/2LrTgwtK1pkWrvofxQBI8VTi6QVLtSMpsKKPPnJQ0vgqC0e4czSIs3ZxiEsOkCBaQ2usXSiKyh0ccsQ6k2OA==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-process@3.826.0': - resolution: {integrity: sha512-kURrc4amu3NLtw1yZw7EoLNEVhmOMRUTs+chaNcmS+ERm3yK0nKjaJzmKahmwlTQTSl3wJ8jjK7x962VPo+zWw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-sso@3.830.0': - resolution: {integrity: sha512-+VdRpZmfekzpySqZikAKx6l5ndnLGluioIgUG4ZznrButgFD/iogzFtGmBDFB3ZLViX1l4pMXru0zFwJEZT21Q==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/credential-provider-web-identity@3.830.0': - resolution: {integrity: sha512-hPYrKsZeeOdLROJ59T6Y8yZ0iwC/60L3qhZXjapBFjbqBtMaQiMTI645K6xVXBioA6vxXq7B4aLOhYqk6Fy/Ww==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-bucket-endpoint@3.830.0': - resolution: {integrity: sha512-ElVeCReZSH5Ds+/pkL5ebneJjuo8f49e9JXV1cYizuH0OAOQfYaBU9+M+7+rn61pTttOFE8W//qKzrXBBJhfMg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-expect-continue@3.821.0': - resolution: {integrity: sha512-zAOoSZKe1njOrtynvK6ZORU57YGv5I7KP4+rwOvUN3ZhJbQ7QPf8gKtFUCYAPRMegaXCKF/ADPtDZBAmM+zZ9g==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-flexible-checksums@3.826.0': - resolution: {integrity: sha512-Fz9w8CFYPfSlHEB6feSsi06hdS+s+FB8k5pO4L7IV0tUa78mlhxF/VNlAJaVWYyOkZXl4HPH2K48aapACSQOXw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-host-header@3.821.0': - resolution: {integrity: sha512-xSMR+sopSeWGx5/4pAGhhfMvGBHioVBbqGvDs6pG64xfNwM5vq5s5v6D04e2i+uSTj4qGa71dLUs5I0UzAK3sw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-location-constraint@3.821.0': - resolution: {integrity: sha512-sKrm80k0t3R0on8aA/WhWFoMaAl4yvdk+riotmMElLUpcMcRXAd1+600uFVrxJqZdbrKQ0mjX0PjT68DlkYXLg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-logger@3.821.0': - resolution: {integrity: sha512-0cvI0ipf2tGx7fXYEEN5fBeZDz2RnHyb9xftSgUsEq7NBxjV0yTZfLJw6Za5rjE6snC80dRN8+bTNR1tuG89zA==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-recursion-detection@3.821.0': - resolution: {integrity: sha512-efmaifbhBoqKG3bAoEfDdcM8hn1psF+4qa7ykWuYmfmah59JBeqHLfz5W9m9JoTwoKPkFcVLWZxnyZzAnVBOIg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-sdk-s3@3.826.0': - resolution: {integrity: sha512-8F0qWaYKfvD/de1AKccXuigM+gb/IZSncCqxdnFWqd+TFzo9qI9Hh+TpUhWOMYSgxsMsYQ8ipmLzlD/lDhjrmA==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-ssec@3.821.0': - resolution: {integrity: sha512-YYi1Hhr2AYiU/24cQc8HIB+SWbQo6FBkMYojVuz/zgrtkFmALxENGF/21OPg7f/QWd+eadZJRxCjmRwh5F2Cxg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/middleware-user-agent@3.828.0': - resolution: {integrity: sha512-nixvI/SETXRdmrVab4D9LvXT3lrXkwAWGWk2GVvQvzlqN1/M/RfClj+o37Sn4FqRkGH9o9g7Fqb1YqZ4mqDAtA==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/nested-clients@3.830.0': - resolution: {integrity: sha512-5N5YTlBr1vtxf7+t+UaIQ625KEAmm7fY9o1e3MgGOi/paBoI0+axr3ud24qLIy0NSzFlAHEaxUSWxcERNjIoZw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/region-config-resolver@3.821.0': - resolution: {integrity: sha512-t8og+lRCIIy5nlId0bScNpCkif8sc0LhmtaKsbm0ZPm3sCa/WhCbSZibjbZ28FNjVCV+p0D9RYZx0VDDbtWyjw==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/signature-v4-multi-region@3.826.0': - resolution: {integrity: sha512-3fEi/zy6tpMzomYosksGtu7jZqGFcdBXoL7YRsG7OEeQzBbOW9B+fVaQZ4jnsViSjzA/yKydLahMrfPnt+iaxg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/token-providers@3.830.0': - resolution: {integrity: sha512-aJ4guFwj92nV9D+EgJPaCFKK0I3y2uMchiDfh69Zqnmwfxxxfxat6F79VA7PS0BdbjRfhLbn+Ghjftnomu2c1g==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/types@3.821.0': - resolution: {integrity: sha512-Znroqdai1a90TlxGaJ+FK1lwC0fHpo97Xjsp5UKGR5JODYm7f9+/fF17ebO1KdoBr/Rm0UIFiF5VmI8ts9F1eA==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/util-arn-parser@3.804.0': - resolution: {integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/util-endpoints@3.828.0': - resolution: {integrity: sha512-RvKch111SblqdkPzg3oCIdlGxlQs+k+P7Etory9FmxPHyPDvsP1j1c74PmgYqtzzMWmoXTjd+c9naUHh9xG8xg==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/util-locate-window@3.804.0': - resolution: {integrity: sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/util-user-agent-browser@3.821.0': - resolution: {integrity: sha512-irWZHyM0Jr1xhC+38OuZ7JB6OXMLPZlj48thElpsO1ZSLRkLZx5+I7VV6k3sp2yZ7BYbKz/G2ojSv4wdm7XTLw==} - - '@aws-sdk/util-user-agent-node@3.828.0': - resolution: {integrity: sha512-LdN6fTBzTlQmc8O8f1wiZN0qF3yBWVGis7NwpWK7FUEzP9bEZRxYfIkV9oV9zpt6iNRze1SedK3JQVB/udxBoA==} - engines: {node: '>=18.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - - '@aws-sdk/xml-builder@3.821.0': - resolution: {integrity: sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==} - engines: {node: '>=18.0.0'} - - '@azu/format-text@1.0.2': - resolution: {integrity: sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==} - - '@azu/style-format@1.0.1': - resolution: {integrity: sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==} - - '@azure/abort-controller@2.1.2': - resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} - engines: {node: '>=18.0.0'} - - '@azure/core-auth@1.9.0': - resolution: {integrity: sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==} - engines: {node: '>=18.0.0'} - - '@azure/core-client@1.9.4': - resolution: {integrity: sha512-f7IxTD15Qdux30s2qFARH+JxgwxWLG2Rlr4oSkPGuLWm+1p5y1+C04XGLA0vmX6EtqfutmjvpNmAfgwVIS5hpw==} - engines: {node: '>=18.0.0'} - - '@azure/core-rest-pipeline@1.21.0': - resolution: {integrity: sha512-a4MBwe/5WKbq9MIxikzgxLBbruC5qlkFYlBdI7Ev50Y7ib5Vo/Jvt5jnJo7NaWeJ908LCHL0S1Us4UMf1VoTfg==} - engines: {node: '>=18.0.0'} - - '@azure/core-tracing@1.2.0': - resolution: {integrity: sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==} - engines: {node: '>=18.0.0'} - - '@azure/core-util@1.12.0': - resolution: {integrity: sha512-13IyjTQgABPARvG90+N2dXpC+hwp466XCdQXPCRlbWHgd3SJd5Q1VvaBGv6k1BIa4MQm6hAF1UBU1m8QUxV8sQ==} - engines: {node: '>=18.0.0'} - - '@azure/identity@4.10.1': - resolution: {integrity: sha512-YM/z6RxRtFlXUH2egAYF/FDPes+MUE6ZoknjEdaq7ebJMMNUzn9zCJ3bd2ZZZlkP0r1xKa88kolhFH/FGV7JnA==} - engines: {node: '>=18.0.0'} - - '@azure/logger@1.2.0': - resolution: {integrity: sha512-0hKEzLhpw+ZTAfNJyRrn6s+V0nDWzXk9OjBr2TiGIu0OfMr5s2V4FpKLTAK3Ca5r5OKLbf4hkOGDPyiRjie/jA==} - engines: {node: '>=18.0.0'} - - '@azure/msal-browser@4.13.2': - resolution: {integrity: sha512-lS75bF6FYZRwsacKLXc8UYu/jb+gOB7dtZq5938chCvV/zKTFDnzuXxCXhsSUh0p8s/P8ztgbfdueD9lFARQlQ==} - engines: {node: '>=0.8.0'} - - '@azure/msal-common@15.7.1': - resolution: {integrity: sha512-a0eowoYfRfKZEjbiCoA5bPT3IlWRAdGSvi63OU23Hv+X6EI8gbvXCoeqokUceFMoT9NfRUWTJSx5FiuzruqT8g==} - engines: {node: '>=0.8.0'} - - '@azure/msal-node@3.6.1': - resolution: {integrity: sha512-ctcVz4xS+st5KxOlQqgpvA+uDFAa59CvkmumnuhlD2XmNczloKBdCiMQG7/TigSlaeHe01qoOlDjz3TyUAmKUg==} - 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.27.5': - resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.12.9': - resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.27.4': - resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.28.0': - resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.27.5': - resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.28.0': - resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.27.3': - resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.27.2': - 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==} - 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==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.0.3': - resolution: {integrity: sha512-dULDd/APiP4JowYDAMosecKOi/1v+UId99qhBGiO3myM29KtAVKS/R3x3OJJNBR0FeYB1BcYb2dCwkhqvxWXXQ==} - peerDependencies: - '@babel/core': ^7.4.0-0 - - '@babel/helper-define-polyfill-provider@0.1.5': - resolution: {integrity: sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==} - peerDependencies: - '@babel/core': ^7.4.0-0 - - '@babel/helper-define-polyfill-provider@0.6.4': - resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-globals@7.28.0': - 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==} - 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==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.27.1': - resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.10.4': - resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} - - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-remap-async-to-generator@7.27.1': - resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.27.1': - resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - 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==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.27.6': - resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.27.5': - resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.28.0': - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} - 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==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': - resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': - resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': - resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} - engines: {node: '>=6.9.0'} - 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==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-class-properties@7.18.6': - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-decorators@7.27.1': - resolution: {integrity: sha512-DTxe4LBPrtFdsWzgpmbBKevg3e9PBy+dXRt19kSbucbZvL2uqtdqwwpluL1jfxYE0wIDTFp1nTy/q6gNLsxXrg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-export-default-from@7.27.1': - resolution: {integrity: sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-object-rest-spread@7.12.1': - resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-object-rest-spread@7.20.7': - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-optional-chaining@7.21.0': - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-methods@7.18.6': - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-property-in-object@7.21.11': - resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-decorators@7.27.1': - resolution: {integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-flow@7.27.1': - resolution: {integrity: sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.27.1': - resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.27.1': - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.12.1': - resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.27.1': - resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.27.1': - resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-arrow-functions@7.27.1': - resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.27.1': - resolution: {integrity: sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.27.1': - resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.27.1': - resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.27.5': - resolution: {integrity: sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.27.1': - resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-static-block@7.27.1': - resolution: {integrity: sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-classes@7.27.1': - resolution: {integrity: sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.27.1': - resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.27.3': - resolution: {integrity: sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.27.1': - resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.27.1': - resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-dynamic-import@7.27.1': - resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.27.1': - resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.27.1': - resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-flow-strip-types@7.27.1': - resolution: {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.27.1': - resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.27.1': - resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.27.1': - resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.27.1': - resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.27.1': - resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.27.1': - resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.27.1': - resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.27.1': - resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.27.1': - resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.27.1': - resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.27.1': - resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': - resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.27.1': - resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.27.3': - resolution: {integrity: sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.27.1': - resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.27.1': - resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.27.1': - resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.27.1': - resolution: {integrity: sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.27.1': - resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.27.1': - resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.27.1': - resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-display-name@7.27.1': - resolution: {integrity: sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-development@7.27.1': - resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx@7.27.1': - resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-pure-annotations@7.27.1': - resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.27.5': - resolution: {integrity: sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regexp-modifiers@7.27.1': - resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-reserved-words@7.27.1': - resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.27.1': - resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.27.1': - resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.27.1': - resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.27.1': - resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.27.1': - resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.27.1': - resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.27.1': - resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.27.1': - resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.27.1': - resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.27.1': - resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.27.2': - resolution: {integrity: sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-flow@7.27.1': - resolution: {integrity: sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/preset-react@7.27.1': - resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-typescript@7.27.1': - resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/register@7.27.1': - resolution: {integrity: sha512-K13lQpoV54LATKkzBpBAEu1GGSIRzxR9f4IN4V8DCDgiUMo2UDGagEZr3lPeVNJPLkWUi5JE4hCHKneVTwQlYQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/runtime-corejs3@7.27.6': - resolution: {integrity: sha512-vDVrlmRAY8z9Ul/HxT+8ceAru95LQgkSKiXkSYZvqtbkPSfhZJgpRp45Cldbh1GJ1kxzQkI70AqyrTI58KpaWQ==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.27.6': - resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.27.4': - resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.28.0': - resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.27.6': - resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.1': - resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} - 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==} - - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - - '@bcoe/v8-coverage@1.0.2': - resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} - engines: {node: '>=18'} - - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} - engines: {node: '>=14.21.3'} - hasBin: true - - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [darwin] - - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] - - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] - - '@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/commands@6.8.1': - resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==} - - '@codemirror/lang-xml@6.1.0': - resolution: {integrity: sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==} - - '@codemirror/language@6.11.1': - resolution: {integrity: sha512-5kS1U7emOGV84vxC+ruBty5sUgcD0te6dyupyRVG2zaSjhTDM73LhVKUtVwiqSe6QwmEoA4SCiU8AKPFyumAWQ==} - - '@codemirror/lint@6.8.5': - resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==} - - '@codemirror/search@6.5.11': - resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==} - - '@codemirror/state@6.5.2': - resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==} - - '@codemirror/theme-one-dark@6.1.3': - resolution: {integrity: sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==} - - '@codemirror/view@6.37.2': - resolution: {integrity: sha512-XD3LdgQpxQs5jhOOZ2HRVT+Rj59O4Suc7g2ULvZ+Yi8eCkickrkZ5JFuoDhs2ST1mNI5zSsNYgR3NGa4OUrbnw==} - - '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - - '@colors/colors@1.6.0': - resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} - engines: {node: '>=0.1.90'} - - '@csstools/css-parser-algorithms@3.0.5': - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-tokenizer': ^3.0.4 - - '@csstools/css-tokenizer@3.0.4': - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} - engines: {node: '>=18'} - - '@csstools/media-query-list-parser@4.0.3': - resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 - - '@csstools/selector-specificity@5.0.0': - resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} - engines: {node: '>=18'} - peerDependencies: - postcss-selector-parser: ^7.0.0 - - '@dabh/diagnostics@2.0.3': - resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} - - '@date-io/core@3.2.0': - resolution: {integrity: sha512-hqwXvY8/YBsT9RwQITG868ZNb1MVFFkF7W1Ecv4P472j/ZWa7EFcgSmxy8PUElNVZfvhdvfv+a8j6NWJqOX5mA==} - - '@date-io/date-fns@3.2.1': - resolution: {integrity: sha512-CtXgTOAamkImI+CmbWRNdBi4ljj9xm/tdoPa+eeeiygduzubJTsXp18vYz+Vs/9yLho1zUOXlxpsfsF7PsXSWQ==} - peerDependencies: - date-fns: ^3.2.0 || ^4.1.0 - peerDependenciesMeta: - date-fns: - optional: true - - '@discoveryjs/json-ext@0.5.7': - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - - '@discoveryjs/json-ext@0.6.3': - 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==} - - '@emotion/babel-plugin@11.13.5': - resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} - - '@emotion/cache@11.14.0': - resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} - - '@emotion/css@11.13.5': - resolution: {integrity: sha512-wQdD0Xhkn3Qy2VNcIzbLP9MR8TafI0MJb7BEAXKp+w4+XqErksWR4OXomuDzPsN4InLdGhVe6EYcn2ZIUCpB8w==} - - '@emotion/hash@0.9.2': - resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - - '@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/memoize@0.7.4': - resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} - - '@emotion/memoize@0.9.0': - resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} - - '@emotion/react@11.14.0': - resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} - peerDependencies: - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/serialize@1.3.3': - resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} - - '@emotion/sheet@1.4.0': - resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} - - '@emotion/styled@11.14.0': - resolution: {integrity: sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==} - peerDependencies: - '@emotion/react': ^11.0.0-rc.0 - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/unitless@0.10.0': - resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} - - '@emotion/use-insertion-effect-with-fallbacks@1.2.0': - resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} - peerDependencies: - react: '>=16.8.0' - - '@emotion/utils@1.4.2': - resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} - - '@emotion/weak-memoize@0.4.0': - resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - - '@esbuild/aix-ppc64@0.25.5': - resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.25.6': - resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.5': - resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.25.6': - resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.5': - resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.25.6': - resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.5': - resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.25.6': - resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.5': - resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.25.6': - resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.5': - resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.6': - resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.5': - resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.25.6': - resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.5': - resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.6': - resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.5': - resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.25.6': - resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.5': - resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.25.6': - resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.5': - resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.25.6': - resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.5': - resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.25.6': - resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.5': - resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.25.6': - resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.5': - resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.25.6': - resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.5': - resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.6': - resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.5': - resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.25.6': - resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.5': - resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.25.6': - resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.5': - resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-arm64@0.25.6': - resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.5': - resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.6': - resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.5': - resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-arm64@0.25.6': - resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.5': - resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.6': - resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.6': - resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.25.5': - resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.25.6': - resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.5': - resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.25.6': - resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.5': - resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.25.6': - resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.5': - resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.25.6': - resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} - 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==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.20.1': - resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.2.3': - resolution: {integrity: sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.13.0': - resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.14.0': - 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==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/js@9.26.0': - resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.27.0': - 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==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.3.3': - resolution: {integrity: sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@fal-works/esbuild-plugin-global-externals@2.1.2': - resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} - - '@floating-ui/core@1.7.1': - resolution: {integrity: sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==} - - '@floating-ui/core@1.7.2': - resolution: {integrity: sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==} - - '@floating-ui/dom@1.7.1': - resolution: {integrity: sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==} - - '@floating-ui/dom@1.7.2': - resolution: {integrity: sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==} - - '@floating-ui/react-dom@2.1.3': - resolution: {integrity: sha512-huMBfiU9UnQ2oBwIhgzyIiSpVgvlDstU8CX0AF+wS+KzmYMs0J2a3GwuFHV1Lz+jlrQGeC1fF+Nv0QoumyV0bA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/react-dom@2.1.4': - resolution: {integrity: sha512-JbbpPhp38UmXDDAu60RJmbeme37Jbgsm7NrHGgzYYFKmblzRUh6Pa641dII6LsjwF4XlScDrde2UAzDo/b9KPw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/react@0.26.28': - resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/utils@0.2.10': - resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} - - '@floating-ui/utils@0.2.9': - resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} - - '@formatjs/ecma402-abstract@2.3.4': - resolution: {integrity: sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==} - - '@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-skeleton-parser@1.8.14': - resolution: {integrity: sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==} - - '@formatjs/intl-localematcher@0.6.1': - resolution: {integrity: sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==} - - '@formatjs/intl@3.1.6': - resolution: {integrity: sha512-tDkXnA4qpIFcDWac8CyVJq6oW8DR7W44QDUBsfXWIIJD/FYYen0QoH46W7XsVMFfPOVKkvbufjboZrrWbEfmww==} - peerDependencies: - typescript: ^5.6.0 - peerDependenciesMeta: - typescript: - optional: true - - '@formkit/auto-animate@0.8.2': - resolution: {integrity: sha512-SwPWfeRa5veb1hOIBMdzI+73te5puUBHmqqaF1Bu7FjvxlYSz/kJcZKSa9Cg60zL0uRNeJL2SbRxV6Jp6Q1nFQ==} - - '@gar/promisify@1.1.3': - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - - '@graphiql/react@0.26.2': - resolution: {integrity: sha512-aO4GWf/kJmqrjO+PORT/NPxwGvPGlg+mwye1v8xAlf8Q9j7P0hVtVBawYaSLUCCfJ/QnH7JAP+0VRamyooZZCw==} - peerDependencies: - graphql: ^15.5.0 || ^16.0.0 || ^17.0.0-alpha.2 - react: ^16.8.0 || ^17 || ^18 - react-dom: ^16.8.0 || ^17 || ^18 - - '@graphiql/toolkit@0.11.3': - resolution: {integrity: sha512-Glf0fK1cdHLNq52UWPzfSrYIJuNxy8h4451Pw1ZVpJ7dtU+tm7GVVC64UjEDQ/v2j3fnG4cX8jvR75IvfL6nzQ==} - peerDependencies: - graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 - graphql-ws: '>= 4.5.0' - peerDependenciesMeta: - graphql-ws: - optional: true - - '@hapi/hoek@9.3.0': - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - - '@hapi/topo@5.1.0': - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - - '@headlessui/react@1.7.19': - resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==} - engines: {node: '>=10'} - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - - '@headlessui/react@2.2.4': - resolution: {integrity: sha512-lz+OGcAH1dK93rgSMzXmm1qKOJkBUqZf1L4M8TWLNplftQD3IkoEDdUFNfAn4ylsN6WOTVtWaLmvmaHOUk1dTA==} - engines: {node: '>=10'} - peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc - react-dom: ^18 || ^19 || ^19.0.0-rc - - '@hookform/resolvers@2.9.11': - resolution: {integrity: sha512-bA3aZ79UgcHj7tFV7RlgThzwSSHZgvfbt2wprldRkYBcMopdMvHyO17Wwp/twcJasNFischFfS7oz8Katz8DdQ==} - peerDependencies: - react-hook-form: ^7.0.0 - - '@hookform/resolvers@5.0.1': - resolution: {integrity: sha512-u/+Jp83luQNx9AdyW2fIPGY6Y7NG68eN2ZW8FOJYL+M0i4s49+refdJdOp/A9n9HFQtQs3HIDHQvX3ZET2o7YA==} - peerDependencies: - react-hook-form: ^7.55.0 - - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/object-schema@2.0.3': - 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'} - - '@iarna/toml@2.2.5': - resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} - - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jest/console@25.5.0': - resolution: {integrity: sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==} - engines: {node: '>= 8.3'} - - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/core@25.5.4': - resolution: {integrity: sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA==} - engines: {node: '>= 8.3'} - - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/environment@25.5.0': - resolution: {integrity: sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA==} - engines: {node: '>= 8.3'} - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.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@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@25.5.0': - resolution: {integrity: sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==} - engines: {node: '>= 8.3'} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/globals@25.5.2': - resolution: {integrity: sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA==} - engines: {node: '>= 8.3'} - - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/reporters@25.5.1': - resolution: {integrity: sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw==} - engines: {node: '>= 8.3'} - - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.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/source-map@25.5.0': - resolution: {integrity: sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==} - engines: {node: '>= 8.3'} - - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-result@25.5.0': - resolution: {integrity: sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==} - engines: {node: '>= 8.3'} - - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-sequencer@25.5.4': - resolution: {integrity: sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==} - engines: {node: '>= 8.3'} - - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/transform@25.5.1': - resolution: {integrity: sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==} - engines: {node: '>= 8.3'} - - '@jest/transform@26.6.2': - resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} - engines: {node: '>= 10.14.2'} - - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@25.5.0': - resolution: {integrity: sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==} - engines: {node: '>= 8.3'} - - '@jest/types@26.6.2': - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1': - resolution: {integrity: sha512-J4BaTocTOYFkMHIra1JDWrMWpNmBl4EkplIwHEsV8aeUOtdWjwSnln9U7twjMFTAEB7mptNtSKyVi1Y2W9sDJw==} - peerDependencies: - typescript: '>= 4.3.x' - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - peerDependenciesMeta: - typescript: - optional: true - - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} - - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} - - '@jsdevtools/ono@7.1.3': - resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - - '@jsonjoy.com/base64@1.1.2': - resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/json-pack@1.2.0': - resolution: {integrity: sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/util@1.6.0': - resolution: {integrity: sha512-sw/RMbehRhN68WRtcKCpQOPfnH6lLP4GJfqzi3iYej8tnzpZUDr6UkZYJjcjjC0FWEJOJbyM3PTIwxucUmDG2A==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@juggle/resize-observer@3.4.0': - resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} - - '@keyv/serialize@1.0.3': - resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==} - - '@leichtgewicht/ip-codec@2.0.5': - resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - - '@lezer/common@1.2.3': - resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} - - '@lezer/highlight@1.2.1': - resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} - - '@lezer/lr@1.4.2': - resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} - - '@lezer/xml@1.0.6': - resolution: {integrity: sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww==} - - '@marijn/find-cluster-break@1.0.2': - resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} - - '@mdx-js/mdx@1.6.22': - resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} - - '@mdx-js/react@1.6.22': - resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} - peerDependencies: - react: ^16.13.1 || ^17.0.0 - - '@mdx-js/react@2.3.0': - resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} - peerDependencies: - react: '>=16' - - '@mdx-js/react@3.1.0': - resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' - - '@mdx-js/util@1.6.22': - resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} - - '@microsoft/1ds-core-js@4.3.8': - resolution: {integrity: sha512-5y7pmcqoYmh+461xyUog4aQAZ2ZIoYlAg7VkHU0G+dpOwAmwN3WECnsO/8RNagNiVwsFOBeN5e2OxKm3vruJWw==} - - '@microsoft/1ds-post-js@4.3.8': - resolution: {integrity: sha512-9Jq6PqEs/wImx246xhOU6WyrhBVMLZPp1MGCKKGexxOQKhHSbK6RzOguSYKT15nfO7JVDde3+nCGc6EPxAagaA==} - - '@microsoft/applicationinsights-channel-js@3.3.8': - resolution: {integrity: sha512-uj60YhHTxcHLjLUHRPe2Y9VVdDOcam4/pdBBCbJ6/hkBWh6KZznnM3vb6JRbBVwD69Iq6tdGNWJRSCWNpZhLaA==} - peerDependencies: - tslib: '>= 1.0.0' - - '@microsoft/applicationinsights-common@3.3.8': - resolution: {integrity: sha512-yfcU3g05Z36S3r4SDtV+LGkoubT3px6Yt4fwINIGDixbTJB6VZXQxLwkTAzWxKwxuvBX2L8PP9O1LY4D7gGrrA==} - peerDependencies: - tslib: '>= 1.0.0' - - '@microsoft/applicationinsights-core-js@3.3.8': - resolution: {integrity: sha512-k1uQCRSbV0aUF4DxgTFAbbk1IlsihLoldgQCMIVwHdnS3X80NjtSDWQPy0n+Hbw1XNlpky9p8jxNDJlZ9PoFDg==} - peerDependencies: - tslib: '>= 1.0.0' - - '@microsoft/applicationinsights-shims@3.0.1': - resolution: {integrity: sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==} - - '@microsoft/applicationinsights-web-basic@3.3.8': - resolution: {integrity: sha512-etHqbg6zwDxObY7GUF1CZZtoNIzzfjzvJyOEvixwnio4ehHyxZLQXBTavoUL424/A2MgWTBQjj6AV2ezayoz4A==} - peerDependencies: - tslib: '>= 1.0.0' - - '@microsoft/dynamicproto-js@2.0.3': - resolution: {integrity: sha512-JTWTU80rMy3mdxOjjpaiDQsTLZ6YSGGqsjURsY6AUQtIj0udlF/jYmhdLZu8693ZIC0T1IwYnFa0+QeiMnziBA==} - - '@microsoft/fast-element@1.14.0': - resolution: {integrity: sha512-zXvuSOzvsu8zDTy9eby8ix8VqLop2rwKRgp++ZN2kTCsoB3+QJVoaGD2T/Cyso2ViZQFXNpiNCVKfnmxBvmWkQ==} - - '@microsoft/fast-foundation@2.50.0': - resolution: {integrity: sha512-8mFYG88Xea1jZf2TI9Lm/jzZ6RWR8x29r24mGuLojNYqIR2Bl8+hnswoV6laApKdCbGMPKnsAL/O68Q0sRxeVg==} - - '@microsoft/fast-react-wrapper@0.3.25': - resolution: {integrity: sha512-jKzmk2xJV93RL/jEFXEZgBvXlKIY4N4kXy3qrjmBfFpqNi3VjY+oUTWyMnHRMC5EUhIFxD+Y1VD4u9uIPX3jQw==} - peerDependencies: - react: '>=16.9.0' - - '@microsoft/fast-web-utilities@5.4.1': - resolution: {integrity: sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==} - - '@modelcontextprotocol/sdk@1.13.0': - resolution: {integrity: sha512-P5FZsXU0kY881F6Hbk9GhsYx02/KgWK1DYf7/tyE/1lcFKhDYPQR9iYjhQXJn+Sg6hQleMo3DB7h7+p4wgp2Lw==} - engines: {node: '>=18'} - - '@monaco-editor/loader@1.5.0': - resolution: {integrity: sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw==} - - '@monaco-editor/react@4.7.0': - resolution: {integrity: sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==} - peerDependencies: - monaco-editor: '>= 0.25.0 < 1' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - '@motionone/animation@10.18.0': - resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} - - '@motionone/dom@10.12.0': - resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==} - - '@motionone/easing@10.18.0': - resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} - - '@motionone/generators@10.18.0': - resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} - - '@motionone/types@10.17.1': - resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} - - '@motionone/utils@10.18.0': - resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} - - '@mrmlnc/readdir-enhanced@2.2.1': - resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} - engines: {node: '>=4'} - - '@n1ru4l/push-pull-async-iterable-iterator@3.2.0': - resolution: {integrity: sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q==} - engines: {node: '>=12'} - - '@ndelangen/get-tarball@3.0.9': - resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} - - '@nevware21/ts-async@0.5.4': - resolution: {integrity: sha512-IBTyj29GwGlxfzXw2NPnzty+w0Adx61Eze1/lknH/XIVdxtF9UnOpk76tnrHXWa6j84a1RR9hsOcHQPFv9qJjA==} - - '@nevware21/ts-utils@0.12.5': - resolution: {integrity: sha512-JPQZWPKQJjj7kAftdEZL0XDFfbMgXCGiUAZe0d7EhLC3QlXTlZdSckGqqRIQ2QNl0VTEZyZUvRBw6Ednw089Fw==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@1.1.3': - resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} - engines: {node: '>= 6'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@npmcli/fs@1.1.1': - resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} - - '@npmcli/fs@2.1.2': - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - '@npmcli/move-file@1.1.2': - resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} - engines: {node: '>=10'} - deprecated: This functionality has been moved to @npmcli/fs - - '@npmcli/move-file@2.0.1': - resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This functionality has been moved to @npmcli/fs - - '@oozcitak/dom@1.15.10': - resolution: {integrity: sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==} - engines: {node: '>=8.0'} - - '@oozcitak/infra@1.0.8': - resolution: {integrity: sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==} - engines: {node: '>=6.0'} - - '@oozcitak/url@1.0.4': - resolution: {integrity: sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==} - engines: {node: '>=8.0'} - - '@oozcitak/util@8.3.8': - resolution: {integrity: sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==} - engines: {node: '>=8.0'} - - '@parcel/watcher-android-arm64@2.5.1': - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - - '@parcel/watcher-darwin-arm64@2.5.1': - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - - '@parcel/watcher-darwin-x64@2.5.1': - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - - '@parcel/watcher-freebsd-x64@2.5.1': - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - - '@parcel/watcher-linux-arm-glibc@2.5.1': - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm-musl@2.5.1': - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm64-glibc@2.5.1': - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-arm64-musl@2.5.1': - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-x64-glibc@2.5.1': - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-linux-x64-musl@2.5.1': - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-win32-arm64@2.5.1': - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - - '@parcel/watcher-win32-ia32@2.5.1': - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - - '@parcel/watcher-win32-x64@2.5.1': - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - - '@parcel/watcher@2.5.1': - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} - engines: {node: '>= 10.0.0'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@playwright/test@1.52.0': - resolution: {integrity: sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==} - engines: {node: '>=18'} - hasBin: true - - '@pmmmwh/react-refresh-webpack-plugin@0.5.16': - resolution: {integrity: sha512-kLQc9xz6QIqd2oIYyXRUiAp79kGpFBm3fEM9ahfG1HI0WI5gdZ2OVHWdmZYnwODt7ISck+QuQ6sBPrtvUBML7Q==} - engines: {node: '>= 10.13'} - peerDependencies: - '@types/webpack': 4.x || 5.x - react-refresh: '>=0.10.0 <1.0.0' - sockjs-client: ^1.4.0 - type-fest: '>=0.17.0 <5.0.0' - webpack: ^5.94.0 - webpack-dev-server: ^5.2.1 - webpack-hot-middleware: 2.x - webpack-plugin-serve: 0.x || 1.x - peerDependenciesMeta: - '@types/webpack': - optional: true - sockjs-client: - optional: true - type-fest: - optional: true - webpack-dev-server: - optional: true - webpack-hot-middleware: - optional: true - webpack-plugin-serve: - optional: true - - '@pmmmwh/react-refresh-webpack-plugin@0.6.0': - resolution: {integrity: sha512-AAc+QWfZ1KQ/e1C6OHWVlxU+ks6zFGOA44IJUlvju7RlDS8nsX6poPFOIlsg/rTofO9vKov12+WCjMhKkRKD5g==} - engines: {node: '>=18.12'} - peerDependencies: - '@types/webpack': 5.x - react-refresh: '>=0.10.0 <1.0.0' - sockjs-client: ^1.4.0 - type-fest: '>=0.17.0 <5.0.0' - webpack: ^5.94.0 - webpack-dev-server: ^5.2.1 - webpack-hot-middleware: 2.x - webpack-plugin-serve: 1.x - peerDependenciesMeta: - '@types/webpack': - optional: true - sockjs-client: - optional: true - type-fest: - optional: true - webpack-dev-server: - optional: true - webpack-hot-middleware: - optional: true - webpack-plugin-serve: - optional: true - - '@projectstorm/geometry@6.7.4': - resolution: {integrity: sha512-9jTcQPzg+qT9OUMCUGmpkyk0ChHMobFL5d542dY5sb54bki35cawvQj2gMsIdNJ4WGxnuM+DKSSzm4JX35lGtw==} - - '@projectstorm/geometry@7.0.3': - resolution: {integrity: sha512-cwQ9IiOcLhMwVh9NsX0srcACGkpasXY1NA6659Tc9PeSYtAGySH5XC8DfL/nvPMXEdrBYS0S5zAdPC3RPcewog==} - - '@projectstorm/react-canvas-core@6.7.4': - resolution: {integrity: sha512-sY32kT//gQe5aw6RHkmKrbzBq9iWyfwyvvfRTplGPE1ll3zOBVCjbf3tdfw6vATCden+WR0TmirtBo2j3exiBg==} - peerDependencies: - lodash: 4.* - react: 16.* || 17.* - - '@projectstorm/react-canvas-core@7.0.3': - resolution: {integrity: sha512-Vm19AprUGx3ea0uWSMPFfpTRclaEW/7s1/hbnRDFu9WSF1VScYhw2f/cVC95qfiedip/usn4YMsg3Av6M84d0g==} - - '@projectstorm/react-diagrams-core@6.7.4': - resolution: {integrity: sha512-AeqH1u58Ugk8mif/GgLEUeOMmTPaWDpl1isA1OJHCPGMbvAytRfv5mrGMvG2E+pYDB29BQ4Yo2z9/TbAy6/nvA==} - peerDependencies: - lodash: 4.* - react: 18.* - resize-observer-polyfill: ^1.5.1 - - '@projectstorm/react-diagrams-core@7.0.3': - resolution: {integrity: sha512-sbCy5Bk4OLfEvTtYrFK/qDc1WdgMhZzVY1rxmToVnCMP6bYiThHdopYNBX59fPHqKQebAHYER0vmlWyepqEZLQ==} - - '@projectstorm/react-diagrams-defaults@6.7.4': - resolution: {integrity: sha512-j3pRlZq1Z5yIGKpI7VtVkvNK/kXKB2abNMVXTSLUECA4iRubPKDn08w6q4jg1nBZXLGidrHsrELqW+53G9VvLA==} - peerDependencies: - '@emotion/react': ^11.* - '@emotion/styled': ^11.* - lodash: 4.* - react: 18.* - - '@projectstorm/react-diagrams-defaults@7.1.3': - resolution: {integrity: sha512-T4KGgKiy4sUiH4pIq8VjR7Q+iM5SMDnVWyiwzpVFsx3D98V6r2w9qzWt3+9St/uZOKLrXj8VSCy73lmmkfNomQ==} - - '@projectstorm/react-diagrams-routing@6.7.4': - resolution: {integrity: sha512-mB8YaRkNF6gdTlYvL0Cxc6m6XLwh7wvmjIsiEO6kW3j1uSvH7R7Gbl/iDYOdc0zUMqH9+pD+M064tWC4oAXa9A==} - peerDependencies: - dagre: ^0.8.5 - lodash: 4.* - pathfinding: ^0.4.18 - paths-js: ^0.4.11 - react: 18.* - - '@projectstorm/react-diagrams-routing@7.1.3': - resolution: {integrity: sha512-/Gbc7+8zoKQ3int6vVxoYMZ4hnqhIFwgulXUCuzYs21M7llnlaeOjOBEoifa3cNH6f8M4ht8xMhvEgg/gHiLiw==} - - '@projectstorm/react-diagrams@6.7.4': - resolution: {integrity: sha512-xK/bi7DqHKv15XZRESeSpvSmAVArJIXkV6E1mybSc/24toGmoE2imcS+puxG6wGS56NhR0gIrUiT5UYwBvyD5A==} - - '@projectstorm/react-diagrams@7.0.4': - resolution: {integrity: sha512-GJLpo3zhJzjcmx3PfztNDTS7jpePj9TPjXV2CgJmCDZAPHDU8q/f4AyXoJfqvoWlmVnjrzQgtcOU2KbUlNu3dQ==} - - '@radix-ui/number@1.0.1': - resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} - - '@radix-ui/primitive@1.0.1': - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - - '@radix-ui/primitive@1.1.2': - resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} - - '@radix-ui/react-arrow@1.0.3': - resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - 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-arrow@1.1.7': - resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} - 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: - '@types/react': '*' - '@types/react-dom': '*' - 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-collection@1.1.7': - resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} - 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-compose-refs@1.0.1': - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-compose-refs@1.1.2': - resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.0.1': - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.1.2': - resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dialog@1.1.14': - resolution: {integrity: sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==} - 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-direction@1.0.1': - resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-direction@1.1.1': - resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dismissable-layer@1.0.4': - resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - 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-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-dropdown-menu@2.1.15': - resolution: {integrity: sha512-mIBnOjgwo9AH3FyKaSWoSu/dYj6VdhJ7frEPiGTeXCdUFHjl9h3mFh2wwhEtINOmYXWhdpf1rY2minFsmaNgVQ==} - 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-focus-guards@1.0.1': - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@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-scope@1.0.3': - resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - 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-focus-scope@1.1.7': - resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} - 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-id@1.0.1': - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-id@1.1.1': - resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-menu@2.1.15': - resolution: {integrity: sha512-tVlmA3Vb9n8SZSd+YSbuFR66l87Wiy4du+YE+0hzKQEANA+7cWKH1WgqcEX4pXqxUFQKrWQGHdvEfw00TjFiew==} - 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-popper@1.1.2': - resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - 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-popper@1.2.7': - resolution: {integrity: sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==} - 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-portal@1.0.3': - resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - 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-portal@1.1.9': - resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} - 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-presence@1.1.4': - resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} - 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-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 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@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 || ^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-roving-focus@1.1.10': - resolution: {integrity: sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==} - 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-select@1.2.2': - resolution: {integrity: sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - 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-separator@1.1.7': - resolution: {integrity: sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==} - 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-slot@1.0.2': - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-slot@1.2.3': - resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-toggle-group@1.1.10': - resolution: {integrity: sha512-kiU694Km3WFLTC75DdqgM/3Jauf3rD9wxeS9XtyWFKsBUeZA337lC+6uUazT7I1DhanZ5gyD5Stf8uf2dbQxOQ==} - 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-toggle@1.1.9': - resolution: {integrity: sha512-ZoFkBBz9zv9GWer7wIjvdRxmh2wyc2oKWw6C6CseWd6/yq1DK/l5lJ+wnsmFwJZbBYqr02mrf8A2q/CVCuM3ZA==} - 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.10': - resolution: {integrity: sha512-jiwQsduEL++M4YBIurjSa+voD86OIytCod0/dbIxFZDLD8NfO1//keXYMfsW8BPcfqwoNjt+y06XcJqAb4KR7A==} - 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.7': - resolution: {integrity: sha512-Ap+fNYwKTYJ9pzqW+Xe2HtMRbQ/EeWkj2qykZ6SuEV4iS/o1bZI5ssJbk4D2r8XuDuOBVz/tIx2JObtuqU+5Zw==} - 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-use-callback-ref@1.0.1': - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-callback-ref@1.1.1': - resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.2.2': - resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-effect-event@0.0.2': - resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.1.1': - resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.1': - resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-previous@1.0.1': - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.0.1': - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.1.1': - resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.0.1': - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.1.1': - resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-visually-hidden@1.0.3': - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - 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-visually-hidden@1.2.3': - resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} - 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.20.5': - resolution: {integrity: sha512-JpFtXmWQ0Oca7FcvkqgjSyo6xEP7v3oQOLUId6o0xTvm4AD5W0mU2r3lYrbhsJ+XxdUUX4AVR5473sZZ85kU4A==} - 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.3': - resolution: {integrity: sha512-J1bhlrNtjPS/fe5uJQ+0c7/jiXniwa4RQlP+Emjfc/iuqpW2RhbF9ou5vROcLzWIyaW8tVMZ468J68rAs/aZ5A==} - 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/ssr@3.9.9': - resolution: {integrity: sha512-2P5thfjfPy/np18e5wD4WPt8ydNXhij1jwA8oehxZTFqlgVMGXzcWKxTb4RtJrLFsqPO7RUQTiY8QJk0M4Vy2g==} - engines: {node: '>= 12'} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - - '@react-aria/utils@3.29.1': - resolution: {integrity: sha512-yXMFVJ73rbQ/yYE/49n5Uidjw7kh192WNN9PNQGV0Xoc7EJUlSOxqhnpHmYTyO0EotJ8fdM1fMH8durHjUSI8g==} - 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-dnd/asap@5.0.2': - resolution: {integrity: sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==} - - '@react-dnd/invariant@4.0.2': - resolution: {integrity: sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==} - - '@react-dnd/shallowequal@4.0.2': - resolution: {integrity: sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==} - - '@react-stately/flags@3.1.2': - resolution: {integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==} - - '@react-stately/utils@3.10.7': - resolution: {integrity: sha512-cWvjGAocvy4abO9zbr6PW6taHgF24Mwy/LbQ4TC4Aq3tKdKDntxyD+sh7AkSRfJRT2ccMVaHVv2+FfHThd3PKQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - - '@react-types/shared@3.30.0': - resolution: {integrity: sha512-COIazDAx1ncDg046cTJ8SFYsX8aS3lB/08LDnbkH/SkdYrFPWDlXMrO/sUam8j1WWM+PJ+4d1mj7tODIKNiFog==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - - '@redhat-developer/locators@1.13.0': - resolution: {integrity: sha512-+v+FtxaPnCDguiwiU+UpWiNFaEyBXpRQMbf35SlJVAT5Yszb6qnDOFf9iTwtZNeeny4Cv+PVlYmoe/u9bRqByw==} - peerDependencies: - '@redhat-developer/page-objects': '>=1.0.0' - selenium-webdriver: '>=4.6.1' - - '@redhat-developer/page-objects@1.13.0': - resolution: {integrity: sha512-k53UVbw/5cD1dh1uagwGX48t7vtx9mqysaKEnx9hjuAaxHJ7aKF5KfF25mi31fvn6xvEdEvpBPrV2yoRgyD6Gg==} - peerDependencies: - selenium-webdriver: '>=4.6.1' - typescript: '>=4.6.2' - - '@rolldown/pluginutils@1.0.0-beta.11': - resolution: {integrity: sha512-L/gAA/hyCSuzTF1ftlzUSI/IKr2POHsv1Dd78GfqkR83KMNuswWD61JxGV2L7nRwBBBSDr6R1gCkdTmoN7W4ag==} - - '@rollup/plugin-babel@5.3.1': - resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} - engines: {node: '>= 10.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - - '@rollup/plugin-commonjs@11.1.0': - resolution: {integrity: sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - - '@rollup/plugin-commonjs@28.0.6': - resolution: {integrity: sha512-XSQB1K7FUU5QP+3lOQmVCE3I0FcbbNvmNT4VJSj93iUjayaARrTQeoRdiYQoftAJBLrR9t2agwAd3ekaTgHNlw==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@4.1.0': - resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} - peerDependencies: - rollup: ^1.20.0 || ^2.0.0 - - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@16.0.1': - resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@9.0.0': - resolution: {integrity: sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==} - engines: {node: '>= 10.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - - '@rollup/plugin-replace@2.4.2': - resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} - peerDependencies: - rollup: ^1.20.0 || ^2.0.0 - - '@rollup/pluginutils@3.1.0': - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - - '@rollup/pluginutils@5.2.0': - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.44.0': - resolution: {integrity: sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.44.0': - resolution: {integrity: sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.44.0': - resolution: {integrity: sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.44.0': - resolution: {integrity: sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.44.0': - resolution: {integrity: sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.44.0': - resolution: {integrity: sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.44.0': - resolution: {integrity: sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.44.0': - resolution: {integrity: sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.44.0': - resolution: {integrity: sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.44.0': - resolution: {integrity: sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loongarch64-gnu@4.44.0': - resolution: {integrity: sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.44.0': - resolution: {integrity: sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.44.0': - resolution: {integrity: sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-riscv64-musl@4.44.0': - resolution: {integrity: sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.44.0': - resolution: {integrity: sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.44.0': - resolution: {integrity: sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.44.0': - resolution: {integrity: sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.44.0': - resolution: {integrity: sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.44.0': - resolution: {integrity: sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.44.0': - resolution: {integrity: sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ==} - cpu: [x64] - os: [win32] - - '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - - '@scarf/scarf@1.4.0': - resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==} - - '@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-loader@9.3.4': - resolution: {integrity: sha512-sy+yWDWh4cbAbpQYLiO39DjwNGEK1EUhTqNamLLBo163BdJP10FIWhqpe8mtGQBSBXRtxr8Hg/gc3Xe4meIoww==} - engines: {node: ^14.13.1 || >=16.0.0} - - '@secretlint/core@9.3.4': - resolution: {integrity: sha512-ErIVHI6CJd191qdNKuMkH3bZQo9mWJsrSg++bQx64o0WFuG5nPvkYrDK0p/lebf+iQuOnzvl5HrZU6GU9a6o+Q==} - engines: {node: ^14.13.1 || >=16.0.0} - - '@secretlint/formatter@9.3.4': - resolution: {integrity: sha512-ARpoBOKz6WP3ocLITCFkR1/Lj636ugpBknylhlpc45r5aLdvmyvWAJqodlw5zmUCfgD6JXeAMf3Hi60aAiuqWQ==} - engines: {node: ^14.13.1 || >=16.0.0} - - '@secretlint/node@9.3.4': - resolution: {integrity: sha512-S0u8i+CnPmyAKtuccgot9L5cmw6DqJc0F+b3hhVIALd8kkeLt3RIXOOej15tU7N0V1ISph90Gz92V72ovsprgQ==} - engines: {node: ^14.13.1 || >=16.0.0} - - '@secretlint/profiler@9.3.4': - resolution: {integrity: sha512-99WmaHd4dClNIm5BFsG++E6frNIZ3qVwg6s804Ql/M19pDmtZOoVCl4/UuzWpwNniBqLIgn9rHQZ/iGlIW3wyw==} - - '@secretlint/resolver@9.3.4': - resolution: {integrity: sha512-L1lIrcjzqcspPzZttmOvMmOFDpJTYFyRBONg94TZBWrpv4x0w5G2SYR+K7EE1SbYQAiPxw1amoXT1YRP8cZF2A==} - - '@secretlint/secretlint-formatter-sarif@9.3.4': - resolution: {integrity: sha512-IpAl5gzKwpTRqoivKOTJB89l6b7uvBwjSNKzJb3oIGD9Jg3vXcQunSntvLv5XGynYtdi1NhANfEpbhavlmMSyA==} - - '@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-preset-recommend@9.3.4': - resolution: {integrity: sha512-RvzrLNN2A0B2bYQgRSRjh2dkdaIDuhXjj4SO5bElK1iBtJNiD6VBTxSSY1P3hXYaBeva7MEF+q1PZ3cCL8XYOA==} - engines: {node: ^14.13.1 || >=16.0.0} - - '@secretlint/source-creator@9.3.4': - resolution: {integrity: sha512-I9ZA1gm9HJNaAhZiQdInY9VM04VTAGDV4bappVbEJzMUDnK/LTbYqfQ88RPqgCGCqa6ee8c0/j5Bn7ypweouIw==} - engines: {node: ^14.13.1 || >=16.0.0} - - '@secretlint/types@9.3.4': - resolution: {integrity: sha512-z9rdKHNeL4xa48+367RQJVw1d7/Js9HIQ+gTs/angzteM9osfgs59ad3iwVRhCGYbeUoUUDe2yxJG2ylYLaH3Q==} - engines: {node: ^14.13.1 || >=16.0.0} - - '@sentry/cli@1.77.3': - resolution: {integrity: sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==} - engines: {node: '>= 8'} - hasBin: true - - '@sentry/webpack-plugin@1.21.0': - resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} - engines: {node: '>= 8'} - - '@sideway/address@4.1.5': - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - - '@sideway/formula@3.0.1': - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - - '@sideway/pinpoint@2.0.0': - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@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==} - engines: {node: '>=18'} - - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - - '@sinonjs/commons@1.8.6': - resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} - - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - - '@size-limit/esbuild@11.2.0': - resolution: {integrity: sha512-vSg9H0WxGQPRzDnBzeDyD9XT0Zdq0L+AI3+77/JhxznbSCMJMMr8ndaWVQRhOsixl97N0oD4pRFw2+R1Lcvi6A==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - size-limit: 11.2.0 - - '@size-limit/file@11.2.0': - resolution: {integrity: sha512-OZHE3putEkQ/fgzz3Tp/0hSmfVo3wyTpOJSRNm6AmcwX4Nm9YtTfbQQ/hZRwbBFR23S7x2Sd9EbqYzngKwbRoA==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - size-limit: 11.2.0 - - '@size-limit/preset-small-lib@11.2.0': - resolution: {integrity: sha512-RFbbIVfv8/QDgTPyXzjo5NKO6CYyK5Uq5xtNLHLbw5RgSKrgo8WpiB/fNivZuNd/5Wk0s91PtaJ9ThNcnFuI3g==} - peerDependencies: - size-limit: 11.2.0 - - '@smithy/abort-controller@4.0.4': - resolution: {integrity: sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==} - engines: {node: '>=18.0.0'} - - '@smithy/chunked-blob-reader-native@4.0.0': - resolution: {integrity: sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==} - engines: {node: '>=18.0.0'} - - '@smithy/chunked-blob-reader@5.0.0': - resolution: {integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==} - engines: {node: '>=18.0.0'} - - '@smithy/config-resolver@4.1.4': - resolution: {integrity: sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==} - engines: {node: '>=18.0.0'} - - '@smithy/core@3.5.3': - resolution: {integrity: sha512-xa5byV9fEguZNofCclv6v9ra0FYh5FATQW/da7FQUVTic94DfrN/NvmKZjrMyzbpqfot9ZjBaO8U1UeTbmSLuA==} - engines: {node: '>=18.0.0'} - - '@smithy/credential-provider-imds@4.0.6': - resolution: {integrity: sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-codec@4.0.4': - resolution: {integrity: sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-browser@4.0.4': - resolution: {integrity: sha512-3fb/9SYaYqbpy/z/H3yIi0bYKyAa89y6xPmIqwr2vQiUT2St+avRt8UKwsWt9fEdEasc5d/V+QjrviRaX1JRFA==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-config-resolver@4.1.2': - resolution: {integrity: sha512-JGtambizrWP50xHgbzZI04IWU7LdI0nh/wGbqH3sJesYToMi2j/DcoElqyOcqEIG/D4tNyxgRuaqBXWE3zOFhQ==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-node@4.0.4': - resolution: {integrity: sha512-RD6UwNZ5zISpOWPuhVgRz60GkSIp0dy1fuZmj4RYmqLVRtejFqQ16WmfYDdoSoAjlp1LX+FnZo+/hkdmyyGZ1w==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-universal@4.0.4': - resolution: {integrity: sha512-UeJpOmLGhq1SLox79QWw/0n2PFX+oPRE1ZyRMxPIaFEfCqWaqpB7BU9C8kpPOGEhLF7AwEqfFbtwNxGy4ReENA==} - engines: {node: '>=18.0.0'} - - '@smithy/fetch-http-handler@5.0.4': - resolution: {integrity: sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==} - engines: {node: '>=18.0.0'} - - '@smithy/hash-blob-browser@4.0.4': - resolution: {integrity: sha512-WszRiACJiQV3QG6XMV44i5YWlkrlsM5Yxgz4jvsksuu7LDXA6wAtypfPajtNTadzpJy3KyJPoWehYpmZGKUFIQ==} - engines: {node: '>=18.0.0'} - - '@smithy/hash-node@4.0.4': - resolution: {integrity: sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==} - engines: {node: '>=18.0.0'} - - '@smithy/hash-stream-node@4.0.4': - resolution: {integrity: sha512-wHo0d8GXyVmpmMh/qOR0R7Y46/G1y6OR8U+bSTB4ppEzRxd1xVAQ9xOE9hOc0bSjhz0ujCPAbfNLkLrpa6cevg==} - engines: {node: '>=18.0.0'} - - '@smithy/invalid-dependency@4.0.4': - resolution: {integrity: sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==} - 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==} - engines: {node: '>=18.0.0'} - - '@smithy/md5-js@4.0.4': - resolution: {integrity: sha512-uGLBVqcOwrLvGh/v/jw423yWHq/ofUGK1W31M2TNspLQbUV1Va0F5kTxtirkoHawODAZcjXTSGi7JwbnPcDPJg==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-content-length@4.0.4': - resolution: {integrity: sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-endpoint@4.1.11': - resolution: {integrity: sha512-zDogwtRLzKl58lVS8wPcARevFZNBOOqnmzWWxVe9XiaXU2CADFjvJ9XfNibgkOWs08sxLuSr81NrpY4mgp9OwQ==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-retry@4.1.12': - resolution: {integrity: sha512-wvIH70c4e91NtRxdaLZF+mbLZ/HcC6yg7ySKUiufL6ESp6zJUSnJucZ309AvG9nqCFHSRB5I6T3Ez1Q9wCh0Ww==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-serde@4.0.8': - resolution: {integrity: sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-stack@4.0.4': - resolution: {integrity: sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==} - engines: {node: '>=18.0.0'} - - '@smithy/node-config-provider@4.1.3': - resolution: {integrity: sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==} - engines: {node: '>=18.0.0'} - - '@smithy/node-http-handler@4.0.6': - resolution: {integrity: sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==} - engines: {node: '>=18.0.0'} - - '@smithy/property-provider@4.0.4': - resolution: {integrity: sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==} - engines: {node: '>=18.0.0'} - - '@smithy/protocol-http@5.1.2': - resolution: {integrity: sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==} - engines: {node: '>=18.0.0'} - - '@smithy/querystring-builder@4.0.4': - resolution: {integrity: sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==} - engines: {node: '>=18.0.0'} - - '@smithy/querystring-parser@4.0.4': - resolution: {integrity: sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==} - engines: {node: '>=18.0.0'} - - '@smithy/service-error-classification@4.0.5': - resolution: {integrity: sha512-LvcfhrnCBvCmTee81pRlh1F39yTS/+kYleVeLCwNtkY8wtGg8V/ca9rbZZvYIl8OjlMtL6KIjaiL/lgVqHD2nA==} - engines: {node: '>=18.0.0'} - - '@smithy/shared-ini-file-loader@4.0.4': - resolution: {integrity: sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==} - engines: {node: '>=18.0.0'} - - '@smithy/signature-v4@5.1.2': - resolution: {integrity: sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==} - engines: {node: '>=18.0.0'} - - '@smithy/smithy-client@4.4.3': - resolution: {integrity: sha512-xxzNYgA0HD6ETCe5QJubsxP0hQH3QK3kbpJz3QrosBCuIWyEXLR/CO5hFb2OeawEKUxMNhz3a1nuJNN2np2RMA==} - engines: {node: '>=18.0.0'} - - '@smithy/types@4.3.1': - resolution: {integrity: sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==} - engines: {node: '>=18.0.0'} - - '@smithy/url-parser@4.0.4': - resolution: {integrity: sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==} - engines: {node: '>=18.0.0'} - - '@smithy/util-base64@4.0.0': - resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} - engines: {node: '>=18.0.0'} - - '@smithy/util-body-length-browser@4.0.0': - resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} - engines: {node: '>=18.0.0'} - - '@smithy/util-body-length-node@4.0.0': - resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} - 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==} - engines: {node: '>=18.0.0'} - - '@smithy/util-config-provider@4.0.0': - resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} - engines: {node: '>=18.0.0'} - - '@smithy/util-defaults-mode-browser@4.0.19': - resolution: {integrity: sha512-mvLMh87xSmQrV5XqnUYEPoiFFeEGYeAKIDDKdhE2ahqitm8OHM3aSvhqL6rrK6wm1brIk90JhxDf5lf2hbrLbQ==} - engines: {node: '>=18.0.0'} - - '@smithy/util-defaults-mode-node@4.0.19': - resolution: {integrity: sha512-8tYnx+LUfj6m+zkUUIrIQJxPM1xVxfRBvoGHua7R/i6qAxOMjqR6CpEpDwKoIs1o0+hOjGvkKE23CafKL0vJ9w==} - engines: {node: '>=18.0.0'} - - '@smithy/util-endpoints@3.0.6': - resolution: {integrity: sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==} - engines: {node: '>=18.0.0'} - - '@smithy/util-hex-encoding@4.0.0': - resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} - engines: {node: '>=18.0.0'} - - '@smithy/util-middleware@4.0.4': - resolution: {integrity: sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==} - engines: {node: '>=18.0.0'} - - '@smithy/util-retry@4.0.5': - resolution: {integrity: sha512-V7MSjVDTlEt/plmOFBn1762Dyu5uqMrV2Pl2X0dYk4XvWfdWJNe9Bs5Bzb56wkCuiWjSfClVMGcsuKrGj7S/yg==} - engines: {node: '>=18.0.0'} - - '@smithy/util-stream@4.2.2': - resolution: {integrity: sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==} - engines: {node: '>=18.0.0'} - - '@smithy/util-uri-escape@4.0.0': - resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} - 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==} - engines: {node: '>=18.0.0'} - - '@smithy/util-waiter@4.0.5': - resolution: {integrity: sha512-4QvC49HTteI1gfemu0I1syWovJgPvGn7CVUoN9ZFkdvr/cCFkrEL7qNCdx/2eICqDWEGnnr68oMdSIPCLAriSQ==} - engines: {node: '>=18.0.0'} - - '@standard-schema/utils@0.3.0': - resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} - - '@storybook/addon-actions@6.5.16': - resolution: {integrity: sha512-aADjilFmuD6TNGz2CRPSupnyiA/IGkPJHDBTqMpsDXTUr8xnuD122xkIhg6UxmCM2y1c+ncwYXy3WPK2xXK57g==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-actions@7.4.6': - resolution: {integrity: sha512-SsqZr3js5NinKPnC8AeNI7Ij+Q6fIl9tRdRmSulEgjksjOg7E5S1/Wsn5Bb2CCgj7MaX6VxGyC7s3XskQtDiIQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-actions@8.6.14': - resolution: {integrity: sha512-mDQxylxGGCQSK7tJPkD144J8jWh9IU9ziJMHfB84PKpI/V5ZgqMDnpr2bssTrUaGDqU5e1/z8KcRF+Melhs9pQ==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-backgrounds@6.5.16': - resolution: {integrity: sha512-t7qooZ892BruhilFmzYPbysFwpULt/q4zYXNSmKVbAYta8UVvitjcU4F18p8FpWd9WvhiTr0SDlyhNZuzvDfug==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-backgrounds@7.4.6': - resolution: {integrity: sha512-+LHTZB/ZYMAzkyD5ZxSriBsqmsrvIaW/Nnd/BeuXGbkrVKKqM0qAKiFZAfjc2WchA1piVNy0/1Rsf+kuYCEiJw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-backgrounds@8.6.14': - resolution: {integrity: sha512-l9xS8qWe5n4tvMwth09QxH2PmJbCctEvBAc1tjjRasAfrd69f7/uFK4WhwJAstzBTNgTc8VXI4w8ZR97i1sFbg==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-controls@6.5.16': - resolution: {integrity: sha512-kShSGjq1MjmmyL3l8i+uPz6yddtf82mzys0l82VKtcuyjrr5944wYFJ5NTXMfZxrO/U6FeFsfuFZE/k6ex3EMg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-controls@7.4.6': - resolution: {integrity: sha512-4lq3sycEUIsK8SUWDYc60QgF4vV9FZZ3lDr6M7j2W9bOnvGw49d2fbdlnq+bX1ZprZZ9VgglQpBAorQB3BXZRw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-controls@8.6.14': - resolution: {integrity: sha512-IiQpkNJdiRyA4Mq9mzjZlvQugL/aE7hNgVxBBGPiIZG6wb6Ht9hNnBYpap5ZXXFKV9p2qVI0FZK445ONmAa+Cw==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-docs@6.5.16': - resolution: {integrity: sha512-QM9WDZG9P02UvbzLu947a8ZngOrQeAKAT8jCibQFM/+RJ39xBlfm8rm+cQy3dm94wgtjmVkA3mKGOV/yrrsddg==} - peerDependencies: - '@storybook/mdx2-csf': ^0.0.3 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@storybook/mdx2-csf': - optional: true - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-docs@7.4.6': - resolution: {integrity: sha512-dLaub+XWFq4hChw+xfuF9yYg0Txp77FUawKoAigccfjWXx+OOhRV3XTuAcknpXkYq94GWynHgUFXosXT9kbDNA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/addon-docs@8.6.14': - resolution: {integrity: sha512-Obpd0OhAF99JyU5pp5ci17YmpcQtMNgqW2pTXV8jAiiipWpwO++hNDeQmLmlSXB399XjtRDOcDVkoc7rc6JzdQ==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-docs@9.0.12': - resolution: {integrity: sha512-bAuFy4BWGEBIC0EAS4N+V8mHj7NZiSdDnJUSr4Al3znEVzNHLpQAMRznkga2Ok8x+gwcyBG7W47dLbDXVqLZDg==} - peerDependencies: - storybook: ^9.0.12 - - '@storybook/addon-essentials@6.5.16': - resolution: {integrity: sha512-TeoMr6tEit4Pe91GH6f8g/oar1P4M0JL9S6oMcFxxrhhtOGO7XkWD5EnfyCx272Ok2VYfE58FNBTGPNBVIqYKQ==} - peerDependencies: - '@babel/core': ^7.9.6 - '@storybook/angular': '*' - '@storybook/builder-manager4': '*' - '@storybook/builder-manager5': '*' - '@storybook/builder-webpack4': '*' - '@storybook/builder-webpack5': '*' - '@storybook/html': '*' - '@storybook/vue': '*' - '@storybook/vue3': '*' - '@storybook/web-components': '*' - lit: '*' - lit-html: '*' - react: '*' - react-dom: '*' - svelte: '*' - sveltedoc-parser: '*' - vue: '*' - webpack: '*' - peerDependenciesMeta: - '@storybook/angular': - optional: true - '@storybook/builder-manager4': - optional: true - '@storybook/builder-manager5': - optional: true - '@storybook/builder-webpack4': - optional: true - '@storybook/builder-webpack5': - optional: true - '@storybook/html': - optional: true - '@storybook/vue': - optional: true - '@storybook/vue3': - optional: true - '@storybook/web-components': - optional: true - lit: - optional: true - lit-html: - optional: true - react: - optional: true - react-dom: - optional: true - svelte: - optional: true - sveltedoc-parser: - optional: true - vue: - optional: true - webpack: - optional: true - - '@storybook/addon-essentials@7.4.6': - resolution: {integrity: sha512-dWodufrt71TK7ELkeIvVae/x4PzECUlbOm57Iqqt4yQCyR291CgvI4PjeB8un2HbpcXCGZ+N/Oj3YkytvzBi4A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/addon-essentials@8.6.14': - resolution: {integrity: sha512-5ZZSHNaW9mXMOFkoPyc3QkoNGdJHETZydI62/OASR0lmPlJ1065TNigEo5dJddmZNn0/3bkE8eKMAzLnO5eIdA==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-highlight@7.4.6': - resolution: {integrity: sha512-zCufxxD2KS5VwczxfkcBxe1oR/juTTn2H1Qm8kYvWCJQx3UxzX0+G9cwafbpV7eivqaufLweEwROkH+0KjAtkQ==} - - '@storybook/addon-highlight@8.6.14': - resolution: {integrity: sha512-4H19OJlapkofiE9tM6K/vsepf4ir9jMm9T+zw5L85blJZxhKZIbJ6FO0TCG9PDc4iPt3L6+aq5B0X29s9zicNQ==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-interactions@8.6.14': - resolution: {integrity: sha512-8VmElhm2XOjh22l/dO4UmXxNOolGhNiSpBcls2pqWSraVh4a670EyYBZsHpkXqfNHo2YgKyZN3C91+9zfH79qQ==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-links@6.5.16': - resolution: {integrity: sha512-P/mmqK57NGXnR0i3d/T5B0rIt0Lg8Yq+qionRr3LK3AwG/4yGnYt4GNomLEknn/eEwABYq1Q/Z1aOpgIhNdq5A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-links@7.4.6': - resolution: {integrity: sha512-BPygElZKX+CPI9Se6GJNk1dYc5oxuhA+vHigO1tBqhiM6VkHyFP3cvezJNQvpNYhkUnu3cxnZXb3UJnlRbPY3g==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-links@8.6.14': - resolution: {integrity: sha512-DRlXHIyZzOruAZkxmXfVgTF+4d6K27pFcH4cUsm3KT1AXuZbr23lb5iZHpUZoG6lmU85Sru4xCEgewSTXBIe1w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.14 - peerDependenciesMeta: - react: - optional: true - - '@storybook/addon-measure@6.5.16': - resolution: {integrity: sha512-DMwnXkmM2L6POTh4KaOWvOAtQ2p9Tr1UUNxz6VXiN5cKFohpCs6x0txdLU5WN8eWIq0VFsO7u5ZX34CGCc6gCg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-measure@7.4.6': - resolution: {integrity: sha512-nCymMLaHnxv8TE3yEM1A9Tulb1NuRXRNmtsdHTkjv7P1aWCxZo8A/GZaottKe/GLT8jSRjZ+dnpYWrbAhw6wTQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-measure@8.6.14': - resolution: {integrity: sha512-1Tlyb72NX8aAqm6I6OICsUuGOP6hgnXcuFlXucyhKomPa6j3Eu2vKu561t/f0oGtAK2nO93Z70kVaEh5X+vaGw==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-onboarding@8.6.14': - resolution: {integrity: sha512-bHdHiGJFigVcSzMIsNLHY5IODZHr+nKwyz5/QOZLMkLcGH2IaUbOJfm4RyGOaTTPsUtAKbdsVXNEG3Otf+qO9A==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-outline@6.5.16': - resolution: {integrity: sha512-0du96nha4qltexO0Xq1xB7LeRSbqjC9XqtZLflXG7/X3ABoPD2cXgOV97eeaXUodIyb2qYBbHUfftBeA75x0+w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-outline@7.4.6': - resolution: {integrity: sha512-errNUblRVDLpuEaHQPr/nsrnsUkD2ARmXawkRvizgDWLIDMDJYjTON3MUCaVx3x+hlZ3I6X//G5TVcma8tCc8A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-outline@8.6.14': - resolution: {integrity: sha512-CW857JvN6OxGWElqjlzJO2S69DHf+xO3WsEfT5mT3ZtIjmsvRDukdWfDU9bIYUFyA2lFvYjncBGjbK+I91XR7w==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-toolbars@6.5.16': - resolution: {integrity: sha512-y3PuUKiwOWrAvqx1YdUvArg0UaAwmboXFeR2bkrowk1xcT+xnRO3rML4npFeUl26OQ1FzwxX/cw6nknREBBLEA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-toolbars@7.4.6': - resolution: {integrity: sha512-L9m2FBcKeteGq7qIYsMJr0LEfiH7Wdrv5IDcldZTn68eZUJTh1p4GdJZcOmzX1P5IFRr76hpu03iWsNlWQjpbQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-toolbars@8.6.14': - resolution: {integrity: sha512-W/wEXT8h3VyZTVfWK/84BAcjAxTdtRiAkT2KAN0nbSHxxB5KEM1MjKpKu2upyzzMa3EywITqbfy4dP6lpkVTwQ==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-viewport@6.5.16': - resolution: {integrity: sha512-1Vyqf1U6Qng6TXlf4SdqUKyizlw1Wn6+qW8YeA2q1lbkJqn3UlnHXIp8Q0t/5q1dK5BFtREox3+jkGwbJrzkmA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-viewport@7.4.6': - resolution: {integrity: sha512-INDtk54j7bi7NgxMfd2ATmbA0J7nAd6X8itMkLIyPuPJtx8bYHPDORyemDOd0AojgmAdTOAyUtDYdI/PFeo4Cw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/addon-viewport@8.6.14': - resolution: {integrity: sha512-gNzVQbMqRC+/4uQTPI2ZrWuRHGquTMZpdgB9DrD88VTEjNudP+J6r8myLfr2VvGksBbUMHkGHMXHuIhrBEnXYA==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addons@6.5.16': - resolution: {integrity: sha512-p3DqQi+8QRL5k7jXhXmJZLsE/GqHqyY6PcoA1oNTJr0try48uhTGUOYkgzmqtDaa/qPFO5LP+xCPzZXckGtquQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/addons@7.4.6': - resolution: {integrity: sha512-c+4awrtwNlJayFdgLkEXa5H2Gj+KNlxuN+Z5oDAdZBLqXI8g0gn7eYO2F/eCSIDWdd/+zcU2uq57XPFKc8veHQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/api@6.5.16': - resolution: {integrity: sha512-HOsuT8iomqeTMQJrRx5U8nsC7lJTwRr1DhdD0SzlqL4c80S/7uuCy4IZvOt4sYQjOzW5fOo/kamcoBXyLproTA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/blocks@7.4.6': - resolution: {integrity: sha512-HxBSAeOiTZW2jbHQlo1upRWFgoMsaAyKijUFf5MwwMNIesXCuuTGZDJ3xTABwAVLK2qC9Ektfbo0CZCiPVuDRQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/blocks@8.6.14': - resolution: {integrity: sha512-rBMHAfA39AGHgkrDze4RmsnQTMw1ND5fGWobr9pDcJdnDKWQWNRD7Nrlxj0gFlN3n4D9lEZhWGdFrCbku7FVAQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^8.6.14 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/builder-manager@7.6.20': - resolution: {integrity: sha512-e2GzpjLaw6CM/XSmc4qJRzBF8GOoOyotyu3JrSPTYOt4RD8kjUsK4QlismQM1DQRu8i39aIexxmRbiJyD74xzQ==} - - '@storybook/builder-vite@9.0.17': - resolution: {integrity: sha512-lyuvgGhb0NaVk1tdB4xwzky6+YXQfxlxfNQqENYZ9uYQZdPfErMa4ZTXVQTV+CQHAa2NL+p/dG2JPAeu39e9UA==} - peerDependencies: - storybook: ^9.0.17 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - - '@storybook/builder-webpack4@6.5.16': - resolution: {integrity: sha512-YqDIrVNsUo8r9xc6AxsYDLxVYtMgl5Bxk+8/h1adsOko+jAFhdg6hOcAVxEmoSI0TMASOOVMFlT2hr23ppN2rQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/builder-webpack5@6.5.16': - resolution: {integrity: sha512-kh8Sofm1sbijaHDWtm0sXabqACHVFjikU/fIkkW786kpjoPIPIec1a+hrLgDsZxMU3I7XapSOaCFzWt6FjVXjg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/builder-webpack5@7.4.6': - resolution: {integrity: sha512-j7AyDPlUuO2GiH6riB8iGbT7blQpyVGB+rMHXPSm7v6/U7IITbNzxFwe+sSMLoFr8K1e2VXpgqQ9p3rHFey+nw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/builder-webpack5@8.6.14': - resolution: {integrity: sha512-YZYAqc6NBKoMTKZpjxnkMch6zDtMkBZdS/yaji1+wJX2QPFBwTbSh7SpeBxDp1S11gXSAJ4f1btUWeqSqo8nJA==} - peerDependencies: - storybook: ^8.6.14 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/channel-postmessage@6.5.16': - resolution: {integrity: sha512-fZZSN29dsUArWOx7e7lTdMA9+7zijVwCwbvi2Fo4fqhRLh1DsTb/VXfz1FKMCWAjNlcX7QQvV25tnxbqsD6lyw==} - - '@storybook/channel-websocket@6.5.16': - resolution: {integrity: sha512-wJg2lpBjmRC2GJFzmhB9kxlh109VE58r/0WhFtLbwKvPqsvGf82xkBEl6BtBCvIQ4stzYnj/XijjA8qSi2zpOg==} - - '@storybook/channels@6.5.16': - resolution: {integrity: sha512-VylzaWQZaMozEwZPJdyJoz+0jpDa8GRyaqu9TGG6QGv+KU5POoZaGLDkRE7TzWkyyP0KQLo80K99MssZCpgSeg==} - - '@storybook/channels@7.4.6': - resolution: {integrity: sha512-yPv/sfo2c18fM3fvG0i1xse63vG8l33Al/OU0k/dtovltPu001/HVa1QgBgsb/QrEfZtvGjGhmtdVeYb39fv3A==} - - '@storybook/channels@7.6.20': - resolution: {integrity: sha512-4hkgPSH6bJclB2OvLnkZOGZW1WptJs09mhQ6j6qLjgBZzL/ZdD6priWSd7iXrmPiN5TzUobkG4P4Dp7FjkiO7A==} - - '@storybook/cli@7.6.20': - resolution: {integrity: sha512-ZlP+BJyqg7HlnXf7ypjG2CKMI/KVOn03jFIiClItE/jQfgR6kRFgtjRU7uajh427HHfjv9DRiur8nBzuO7vapA==} - hasBin: true - - '@storybook/cli@9.0.17': - resolution: {integrity: sha512-e/eFng34IiEGtyqxtwgG+wQeQf3h41XIf5GKNI0mEUwSRRdqYg6m2MGolF41miZ681x35QnABfoh02R5M02OMQ==} - hasBin: true - - '@storybook/client-api@6.5.16': - resolution: {integrity: sha512-i3UwkzzUFw8I+E6fOcgB5sc4oU2fhvaKnqC1mpd9IYGJ9JN9MnGIaVl3Ko28DtFItu/QabC9JsLIJVripFLktQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/client-api@7.4.6': - resolution: {integrity: sha512-O8yA/xEzPW9Oe3s5VJAFor2d2KwXHjUZ1gvou3o14zu/TJLgXwol0qBBr+YLRO2rcNNJ51pAIGwAT5bgmpUaeg==} - - '@storybook/client-logger@6.5.16': - resolution: {integrity: sha512-pxcNaCj3ItDdicPTXTtmYJE3YC1SjxFrBmHcyrN+nffeNyiMuViJdOOZzzzucTUG0wcOOX8jaSyak+nnHg5H1Q==} - - '@storybook/client-logger@7.4.6': - resolution: {integrity: sha512-XDw31ZziU//86PKuMRnmc+L/G0VopaGKENQOGEpvAXCU9IZASwGKlKAtcyosjrpi+ZiUXlMgUXCpXM7x3b1Ehw==} - - '@storybook/client-logger@7.6.20': - resolution: {integrity: sha512-NwG0VIJQCmKrSaN5GBDFyQgTAHLNishUPLW1NrzqTDNAhfZUoef64rPQlinbopa0H4OXmlB+QxbQIb3ubeXmSQ==} - - '@storybook/codemod@7.6.20': - resolution: {integrity: sha512-8vmSsksO4XukNw0TmqylPmk7PxnfNfE21YsxFa7mnEBmEKQcZCQsNil4ZgWfG0IzdhTfhglAN4r++Ew0WE+PYA==} - - '@storybook/codemod@9.0.17': - resolution: {integrity: sha512-mTtj4avQS3Y5ROBbIs4srCBbu8Fqpq5oVLwzNvwXysAFpWX/FWccRQ7VM+2UQE906qk3SA59HjI8s9JlcmWvcg==} - - '@storybook/components@6.5.16': - resolution: {integrity: sha512-LzBOFJKITLtDcbW9jXl0/PaG+4xAz25PK8JxPZpIALbmOpYWOAPcO6V9C2heX6e6NgWFMUxjplkULEk9RCQMNA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/components@7.4.6': - resolution: {integrity: sha512-nIRBhewAgrJJVafyCzuaLx1l+YOfvvD5dOZ0JxZsxJsefOdw1jFpUqUZ5fIpQ2moyvrR0mAUFw378rBfMdHz5Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/components@8.6.14': - resolution: {integrity: sha512-HNR2mC5I4Z5ek8kTrVZlIY/B8gJGs5b3XdZPBPBopTIN6U/YHXiDyOjY3JlaS4fSG1fVhp/Qp1TpMn1w/9m1pw==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@storybook/core-client@6.5.16': - resolution: {integrity: sha512-14IRaDrVtKrQ+gNWC0wPwkCNfkZOKghYV/swCUnQX3rP99defsZK8Hc7xHIYoAiOP5+sc3sweRAxgmFiJeQ1Ig==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - webpack: ^5.94.0 - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/core-client@7.4.6': - resolution: {integrity: sha512-tfgxAHeCvMcs6DsVgtb4hQSDaCHeAPJOsoyhb47eDQfk4OmxzriM0qWucJV5DePSMi+KutX/rN2u0JxfOuN68g==} - - '@storybook/core-common@6.5.16': - resolution: {integrity: sha512-2qtnKP3TTOzt2cp6LXKRTh7XrI9z5VanMnMTgeoFcA5ebnndD4V6BExQUdYPClE/QooLx6blUWNgS9dFEpjSqQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/core-common@7.4.6': - resolution: {integrity: sha512-05MJFmOM86qvTLtgDskokIFz9txe0Lbhq4L3by1FtF0GwgH+p+W6I94KI7c6ANER+kVZkXQZhiRzwBFnVTW+Cg==} - - '@storybook/core-common@7.6.20': - resolution: {integrity: sha512-8H1zPWPjcmeD4HbDm4FDD0WLsfAKGVr566IZ4hG+h3iWVW57II9JW9MLBtiR2LPSd8u7o0kw64lwRGmtCO1qAw==} - - '@storybook/core-events@6.5.16': - resolution: {integrity: sha512-qMZQwmvzpH5F2uwNUllTPg6eZXr2OaYZQRRN8VZJiuorZzDNdAFmiVWMWdkThwmyLEJuQKXxqCL8lMj/7PPM+g==} - - '@storybook/core-events@7.4.6': - resolution: {integrity: sha512-r5vrE+32lwrJh1NGFr1a0mWjvxo7q8FXYShylcwRWpacmL5NTtLkrXOoJSeGvJ4yKNYkvxQFtOPId4lzDxa32w==} - - '@storybook/core-events@7.6.20': - resolution: {integrity: sha512-tlVDuVbDiNkvPDFAu+0ou3xBBYbx9zUURQz4G9fAq0ScgBOs/bpzcRrFb4mLpemUViBAd47tfZKdH4MAX45KVQ==} - - '@storybook/core-server@6.5.16': - resolution: {integrity: sha512-/3NPfmNyply395Dm0zaVZ8P9aruwO+tPx4D6/jpw8aqrRSwvAMndPMpoMCm0NXcpSm5rdX+Je4S3JW6JcggFkA==} - peerDependencies: - '@storybook/builder-webpack5': '*' - '@storybook/manager-webpack5': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - '@storybook/builder-webpack5': - optional: true - '@storybook/manager-webpack5': - optional: true - typescript: - optional: true - - '@storybook/core-server@7.6.20': - resolution: {integrity: sha512-qC5BdbqqwMLTdCwMKZ1Hbc3+3AaxHYWLiJaXL9e8s8nJw89xV8c8l30QpbJOGvcDmsgY6UTtXYaJ96OsTr7MrA==} - - '@storybook/core-webpack@7.4.6': - resolution: {integrity: sha512-EqQDmd+vKAWOAjoe539LsfP8WvQG9V9i1priMA53u1FOEged8o0NBtRiRy2+JDdUSiGUdpe/X5+V/TyyQw/KWw==} - - '@storybook/core-webpack@8.6.14': - resolution: {integrity: sha512-iG7r8osNKabSGBbuJuSeMWKbU+ilt5PvzTYkClcYaagla/DliXkXvfywA6jOugVk/Cpx+c6tVKlPfjLcaQHwmw==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/core@6.5.16': - resolution: {integrity: sha512-CEF3QFTsm/VMnMKtRNr4rRdLeIkIG0g1t26WcmxTdSThNPBd8CsWzQJ7Jqu7CKiut+MU4A1LMOwbwCE5F2gmyA==} - peerDependencies: - '@storybook/builder-webpack5': '*' - '@storybook/manager-webpack5': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - webpack: ^5.94.0 - peerDependenciesMeta: - '@storybook/builder-webpack5': - optional: true - '@storybook/manager-webpack5': - optional: true - typescript: - optional: true - - '@storybook/core@8.6.14': - resolution: {integrity: sha512-1P/w4FSNRqP8j3JQBOi3yGt8PVOgSRbP66Ok520T78eJBeqx9ukCfl912PQZ7SPbW3TIunBwLXMZOjZwBB/JmA==} - peerDependencies: - prettier: ^2 || ^3 - peerDependenciesMeta: - prettier: - optional: true - - '@storybook/csf-plugin@7.4.6': - resolution: {integrity: sha512-yi7Qa4NSqKOyiJTWCxlB0ih2ijXq6oY5qZKW6MuMMBP14xJNRGLbH5KabpfXgN2T7YECcOWG1uWaGj2veJb1KA==} - - '@storybook/csf-plugin@8.6.14': - resolution: {integrity: sha512-dErtc9teAuN+eelN8FojzFE635xlq9cNGGGEu0WEmMUQ4iJ8pingvBO1N8X3scz4Ry7KnxX++NNf3J3gpxS8qQ==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/csf-plugin@9.0.12': - resolution: {integrity: sha512-5EueJQJAu77Lh+EedG4Q/kEOZNlTY/g+fWsT7B5DTtLVy0ypnghsHY8X3KYT/0+NNgTtoO0if4F+ejVYaLnMzA==} - peerDependencies: - storybook: ^9.0.12 - - '@storybook/csf-plugin@9.0.17': - resolution: {integrity: sha512-6Q4eo1ObrLlsnB6bIt6T8+45XAb4to2pQGNrI7QPkLQRLrZinrJcNbLY7AGkyIoCOEsEbq08n09/nClQUbu8HA==} - peerDependencies: - storybook: ^9.0.17 - - '@storybook/csf-tools@6.5.16': - resolution: {integrity: sha512-+WD4sH/OwAfXZX3IN6/LOZ9D9iGEFcN+Vvgv9wOsLRgsAZ10DG/NK6c1unXKDM/ogJtJYccNI8Hd+qNE/GFV6A==} - peerDependencies: - '@storybook/mdx2-csf': ^0.0.3 - peerDependenciesMeta: - '@storybook/mdx2-csf': - optional: true - - '@storybook/csf-tools@7.4.6': - resolution: {integrity: sha512-ocKpcIUtTBy6hlLY34RUFQyX403cWpB2gGfqvkHbpGe2BQj7EyV0zpWnjsfVxvw+M9OWlCdxHWDOPUgXM33ELw==} - - '@storybook/csf-tools@7.6.20': - resolution: {integrity: sha512-rwcwzCsAYh/m/WYcxBiEtLpIW5OH1ingxNdF/rK9mtGWhJxXRDV8acPkFrF8rtFWIVKoOCXu5USJYmc3f2gdYQ==} - - '@storybook/csf@0.0.2--canary.4566f4d.1': - resolution: {integrity: sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==} - - '@storybook/csf@0.1.13': - resolution: {integrity: sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q==} - - '@storybook/docs-mdx@0.1.0': - resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} - - '@storybook/docs-tools@6.5.16': - resolution: {integrity: sha512-o+rAWPRGifjBF5xZzTKOqnHN3XQWkl0QFJYVDIiJYJrVll7ExCkpEq/PahOGzIBBV+tpMstJgmKM3lr/lu/jmg==} - - '@storybook/docs-tools@7.4.6': - resolution: {integrity: sha512-nZj1L/8WwKWWJ41FW4MaKGajZUtrhnr9UwflRCkQJaWhAKmDfOb5M5TqI93uCOULpFPOm5wpoMBz2IHInQ2Lrg==} - - '@storybook/global@5.0.0': - resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - - '@storybook/icons@1.4.0': - resolution: {integrity: sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==} - engines: {node: '>=14.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/instrumenter@8.6.14': - resolution: {integrity: sha512-iG4MlWCcz1L7Yu8AwgsnfVAmMbvyRSk700Mfy2g4c8y5O+Cv1ejshE1LBBsCwHgkuqU0H4R0qu4g23+6UnUemQ==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/manager-api@7.4.6': - resolution: {integrity: sha512-inrm3DIbCp8wjXSN/wK6e6i2ysQ/IEmtC7IN0OJ7vdrp+USCooPT448SQTUmVctUGCFmOU3fxXByq8g77oIi7w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/manager-api@8.6.14': - resolution: {integrity: sha512-ez0Zihuy17udLbfHZQXkGqwtep0mSGgHcNzGN7iZrMP1m+VmNo+7aGCJJdvXi7+iU3yq8weXSQFWg5DqWgLS7g==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@storybook/manager-webpack4@6.5.16': - resolution: {integrity: sha512-5VJZwmQU6AgdsBPsYdu886UKBHQ9SJEnFMaeUxKEclXk+iRsmbzlL4GHKyVd6oGX/ZaecZtcHPR6xrzmA4Ziew==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/manager-webpack5@6.5.16': - resolution: {integrity: sha512-OtxXv8JCe0r/0rE5HxaFicsNsXA+fqZxzokxquFFgrYf/1Jg4d7QX6/pG5wINF+5qInJfVkRG6xhPzv1s5bk9Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/manager@7.6.20': - resolution: {integrity: sha512-0Cf6WN0t7yEG2DR29tN5j+i7H/TH5EfPppg9h9/KiQSoFHk+6KLoy2p5do94acFU+Ro4+zzxvdCGbcYGKuArpg==} - - '@storybook/mdx1-csf@0.0.1': - resolution: {integrity: sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg==} - - '@storybook/mdx2-csf@1.1.0': - resolution: {integrity: sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==} - - '@storybook/node-logger@6.5.16': - resolution: {integrity: sha512-YjhBKrclQtjhqFNSO+BZK+RXOx6EQypAELJKoLFaawg331e8VUfvUuRCNB3fcEWp8G9oH13PQQte0OTjLyyOYg==} - - '@storybook/node-logger@7.4.6': - resolution: {integrity: sha512-djZb310Q27GviDug1XBv0jOEDLCiwr4hhDE0aifCEKZpfNCi/EaP31nbWimFzZwxu4hE/YAPWExzScruR1zw9Q==} - - '@storybook/node-logger@7.6.20': - resolution: {integrity: sha512-l2i4qF1bscJkOplNffcRTsgQWYR7J51ewmizj5YrTM8BK6rslWT1RntgVJWB1RgPqvx6VsCz1gyP3yW1oKxvYw==} - - '@storybook/postinstall@6.5.16': - resolution: {integrity: sha512-08K2q+qN6pqyPW7PHLCZ5G5Xa6Wosd6t0F16PQ4abX2ItlJLabVoJN5mZ0gm/aeLTjD8QYr8IDvacu4eXh0SVA==} - - '@storybook/postinstall@7.4.6': - resolution: {integrity: sha512-TqI5BucPAGRWrkh55BYiG2/gHLFtC0In4cuu0GsUzB/1jc4i51npLRorCwhmT7r7YliGl5F7JaP0Bni/qHN3Lg==} - - '@storybook/preset-react-webpack@7.4.6': - resolution: {integrity: sha512-FfJvlk3bJfg66t06YLiyu+1o/DZN3uNfFP37zv5cJux7TpdmJRV/4m9LKQPJOvcnWBQYem8xX8k5cRS29vdW5g==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@babel/core': ^7.22.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - '@babel/core': - optional: true - typescript: - optional: true - - '@storybook/preset-react-webpack@8.6.14': - resolution: {integrity: sha512-M7Q6ErNx7N2hQorTz0OLa3YV8nc8OcvkDlCxqqnkHPGQNEIWEpeDvq3wn2OvZlrHDpchyuiquGXZ8aztVtBP2g==} - engines: {node: '>=18.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: ^8.6.14 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/preview-api@7.4.6': - resolution: {integrity: sha512-byUS/Opt3ytWD4cWz3sNEKw5Yks8MkQgRN+GDSyIomaEAQkLAM0rchPC0MYjwCeUSecV7IIQweNX5RbV4a34BA==} - - '@storybook/preview-api@7.6.20': - resolution: {integrity: sha512-3ic2m9LDZEPwZk02wIhNc3n3rNvbi7VDKn52hDXfAxnL5EYm7yDICAkaWcVaTfblru2zn0EDJt7ROpthscTW5w==} - - '@storybook/preview-api@8.6.14': - resolution: {integrity: sha512-2GhcCd4dNMrnD7eooEfvbfL4I83qAqEyO0CO7JQAmIO6Rxb9BsOLLI/GD5HkvQB73ArTJ+PT50rfaO820IExOQ==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@storybook/preview-web@6.5.16': - resolution: {integrity: sha512-IJnvfe2sKCfk7apN9Fu9U8qibbarrPX5JB55ZzK1amSHVmSDuYk5MIMc/U3NnSQNnvd1DO5v/zMcGgj563hrtg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/preview@7.4.6': - resolution: {integrity: sha512-2RPXusJ4CTDrIipIKKvbotD7fP0+8VzoFjImunflIrzN9rni+2rq5eMjqlXAaB+77w064zIR4uDUzI9fxsMDeQ==} - - '@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0': - resolution: {integrity: sha512-eVg3BxlOm2P+chijHBTByr90IZVUtgRW56qEOLX7xlww2NBuKrcavBlcmn+HH7GIUktquWkMPtvy6e0W0NgA5w==} - peerDependencies: - typescript: '>= 3.x' - webpack: ^5.94.0 - - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0': - resolution: {integrity: sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==} - peerDependencies: - typescript: '>= 4.x' - webpack: ^5.94.0 - - '@storybook/react-dom-shim@7.4.6': - resolution: {integrity: sha512-DSq8l9FDocUF1ooVI+TF83pddj1LynE/Hv0/y8XZhc3IgJ/HkuOQuUmfz29ezgfAi9gFYUR8raTIBi3/xdoRmw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/react-dom-shim@8.6.14': - resolution: {integrity: sha512-0hixr3dOy3f3M+HBofp3jtMQMS+sqzjKNgl7Arfuj3fvjmyXOks/yGjDImySR4imPtEllvPZfhiQNlejheaInw==} - 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: ^8.6.14 - - '@storybook/react-dom-shim@9.0.12': - resolution: {integrity: sha512-OMBitzkJRga/UJF1ScSnaxgBSlAVePCK8wzPkGDn0MmsjZ4oDWuNZeKnVO1+tb6n2rZHws7RmKGxHzHAZTY+zQ==} - 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.0.12 - - '@storybook/react-dom-shim@9.0.17': - resolution: {integrity: sha512-ak/x/m6MDDxdE6rCDymTltaiQF3oiKrPHSwfM+YPgQR6MVmzTTs4+qaPfeev7FZEHq23IkfDMTmSTTJtX7Vs9A==} - 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.0.17 - - '@storybook/react-vite@9.0.17': - resolution: {integrity: sha512-wx1yKScni4ifOC/ccqpnnpceQbyF2xto+jHGsyua+M4UUCQdS2NYPDR8JFWp1YvBhVt2cQiD6SAltVGM9QLGnQ==} - 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.0.17 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - - '@storybook/react-webpack5@7.4.6': - resolution: {integrity: sha512-OSwf+E2tRcfBmzCH+WwM7JlfEYjg5Womi1yrtotfcjVXAU6ubHOk2G87zsrKLp/TeCOFM2aHohHBTyWUCejQKQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@babel/core': ^7.22.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - '@babel/core': - optional: true - typescript: - optional: true - - '@storybook/react-webpack5@8.6.14': - resolution: {integrity: sha512-ka0q9tQBLruhO38sybP/MkZzejqAltce7HJTJ2KKbUYUlbvuG7m56tBX7DVC5JaImbsO3b8fqOrKH7gRt4KYrQ==} - engines: {node: '>=18.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: ^8.6.14 - typescript: '>= 4.2.x' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/react@6.5.16': - resolution: {integrity: sha512-cBtNlOzf/MySpNLBK22lJ8wFU22HnfTB2xJyBk7W7Zi71Lm7Uxkhv1Pz8HdiQndJ0SlsAAQOWjQYsSZsGkZIaA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - '@babel/core': ^7.11.5 - '@storybook/builder-webpack4': '*' - '@storybook/builder-webpack5': '*' - '@storybook/manager-webpack4': '*' - '@storybook/manager-webpack5': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - require-from-string: ^2.0.2 - typescript: '*' - peerDependenciesMeta: - '@babel/core': - optional: true - '@storybook/builder-webpack4': - optional: true - '@storybook/builder-webpack5': - optional: true - '@storybook/manager-webpack4': - optional: true - '@storybook/manager-webpack5': - optional: true - typescript: - optional: true - - '@storybook/react@7.4.6': - resolution: {integrity: sha512-w0dVo64baFFPTGpUOWFqkKsu6pQincoymegSNgqaBd5DxEyMDRiRoTWSJHMKE9BwgE8SyWhRkP1ak1mkccSOhQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/react@8.6.14': - resolution: {integrity: sha512-BOepx5bBFwl/CPI+F+LnmMmsG1wQYmrX/UQXgUbHQUU9Tj7E2ndTnNbpIuSLc8IrM03ru+DfwSg1Co3cxWtT+g==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@storybook/test': 8.6.14 - 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: ^8.6.14 - typescript: '>= 4.2.x' - peerDependenciesMeta: - '@storybook/test': - optional: true - typescript: - optional: true - - '@storybook/react@9.0.12': - resolution: {integrity: sha512-rDrf5MDfsguNDTSOfGqhAjQDhp3jDMdzAoCqLjQ75M647C8nsv9i+fftO3k0rMxIJRrESpZWqVZ4tsjOX+J3DA==} - 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.0.12 - typescript: '>= 4.9.x' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/react@9.0.17': - resolution: {integrity: sha512-wssao+uXg72OHtEJdQmmQJGdX90x/aU/6avoP3fgVgepWdZXVgciS9mnqHjKRF/vP+vPOlNQcJjojF/zTtq5qg==} - 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.0.17 - typescript: '>= 4.9.x' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/router@6.5.16': - resolution: {integrity: sha512-ZgeP8a5YV/iuKbv31V8DjPxlV4AzorRiR8OuSt/KqaiYXNXlOoQDz/qMmiNcrshrfLpmkzoq7fSo4T8lWo2UwQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/router@7.4.6': - resolution: {integrity: sha512-Vl1esrHkcHxDKqc+HY7+6JQpBPW3zYvGk0cQ2rxVMhWdLZTAz1hss9DqzN9tFnPyfn0a1Q77EpMySkUrvWKKNQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/semver@7.3.2': - resolution: {integrity: sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==} - engines: {node: '>=10'} - hasBin: true - - '@storybook/source-loader@6.5.16': - resolution: {integrity: sha512-fyVl4jrM/5JLrb48aqXPu7sTsmySQaVGFp1zfeqvPPlJRFMastDrePm5XGPN7Qjv1wsKmpuBvuweFKOT1pru3g==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/store@6.5.16': - resolution: {integrity: sha512-g+bVL5hmMq/9cM51K04e37OviUPHT0rHHrRm5wj/hrf18Kd9120b3sxdQ5Dc+HZ292yuME0n+cyrQPTYx9Epmw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/store@7.4.6': - resolution: {integrity: sha512-tlm9rQ+djkYjEyCuEjaUv+c+jVgwnMEF9mZxnOoA6zrzU2g0S/1oE9/MdVLByGbH67U0NuuP0FcvsWLhAOQzjQ==} - - '@storybook/telemetry@6.5.16': - resolution: {integrity: sha512-CWr5Uko1l9jJW88yTXsZTj/3GTabPvw0o7pDPOXPp8JRZiJTxv1JFaFCafhK9UzYbgcRuGfCC8kEWPZims7iKA==} - - '@storybook/telemetry@7.6.20': - resolution: {integrity: sha512-dmAOCWmOscYN6aMbhCMmszQjoycg7tUPRVy2kTaWg6qX10wtMrvEtBV29W4eMvqdsoRj5kcvoNbzRdYcWBUOHQ==} - - '@storybook/test@8.6.14': - resolution: {integrity: sha512-GkPNBbbZmz+XRdrhMtkxPotCLOQ1BaGNp/gFZYdGDk2KmUWBKmvc5JxxOhtoXM2703IzNFlQHSSNnhrDZYuLlw==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/theming@6.5.16': - resolution: {integrity: sha512-hNLctkjaYLRdk1+xYTkC1mg4dYz2wSv6SqbLpcKMbkPHTE0ElhddGPHQqB362md/w9emYXNkt1LSMD8Xk9JzVQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/theming@7.4.6': - resolution: {integrity: sha512-HW77iJ9ptCMqhoBOYFjRQw7VBap+38fkJGHP5KylEJCyYCgIAm2dEcQmtWpMVYFssSGcb6djfbtAMhYU4TL4Iw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - - '@storybook/theming@8.6.14': - resolution: {integrity: sha512-r4y+LsiB37V5hzpQo+BM10PaCsp7YlZ0YcZzQP1OCkPlYXmUAFy2VvDKaFRpD8IeNPKug2u4iFm/laDEbs03dg==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@storybook/types@7.4.6': - resolution: {integrity: sha512-6QLXtMVsFZFpzPkdGWsu/iuc8na9dnS67AMOBKm5qCLPwtUJOYkwhMdFRSSeJthLRpzV7JLAL8Kwvl7MFP3QSw==} - - '@storybook/types@7.6.20': - resolution: {integrity: sha512-GncdY3x0LpbhmUAAJwXYtJDUQEwfF175gsjH0/fxPkxPoV7Sef9TM41jQLJW/5+6TnZoCZP/+aJZTJtq3ni23Q==} - - '@storybook/ui@6.5.16': - resolution: {integrity: sha512-rHn/n12WM8BaXtZ3IApNZCiS+C4Oc5+Lkl4MoctX8V7QSml0SxZBB5hsJ/AiWkgbRxjQpa/L/Nt7/Qw0FjTH/A==} - peerDependencies: - 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.43': - resolution: {integrity: sha512-4S/Reji9JFuFP3sEAjPpNHgoBV0Uck9FyOiCrlZgAqydvrsBfJ8VS5Xu2rP0aZNbOkY08whtSTeZMxjq/1chTw==} - - '@swagger-api/apidom-core@1.0.0-beta.43': - resolution: {integrity: sha512-NxBKA+gToSCWi9PUAeCyQg2WO/nmkqJ4XVGrUpSzqqJZL7UTtaTHqxBm9h8TdFvSxpeD/PmVijT+hcqVJhvTUA==} - - '@swagger-api/apidom-error@1.0.0-beta.43': - resolution: {integrity: sha512-3ycgT9wX+oWLNqRpLM44b7f38NEVqk+E6Ac67ybP6rVuxi9tiGTaDRsvMGoijbCsz8e6ebREbsLiwz0IvEXD1g==} - - '@swagger-api/apidom-json-pointer@1.0.0-beta.43': - resolution: {integrity: sha512-yUDfj/MFtUee/Pp24ubLMD/S1GuDk/vIkyKrCpNTXm9wmbs181G1tr9K3/7l7wFJknkvI6RRNXR6/9pTaITIXQ==} - - '@swagger-api/apidom-ns-api-design-systems@1.0.0-beta.43': - resolution: {integrity: sha512-Ad9SWEushiZ8G73R0g96RdV7pzW6eMuCCAnVpMjKPspLrRkQk+1wW0vQU2UOvJZXgxzob8Oq79YXWWnUDkwnLg==} - - '@swagger-api/apidom-ns-arazzo-1@1.0.0-beta.43': - resolution: {integrity: sha512-RQVAGmtS+0izlCnvGmRHWfZ0dvekZNRw/q+MhssNKTBA1dXcjqpHQ1+q6AUh7FsOg6+vO98iyRvF9K8EvRrLiw==} - - '@swagger-api/apidom-ns-asyncapi-2@1.0.0-beta.43': - resolution: {integrity: sha512-dp1PgbiwXLnU1XiTtzUPj4p/pbg4XEqNom8hWXORqph/539bRkZ8ce+HcjjE+aWZMDivRhO45IH9Qyrv5YnNvA==} - - '@swagger-api/apidom-ns-json-schema-2019-09@1.0.0-beta.43': - resolution: {integrity: sha512-m0jQXPhlAyUxn4A3Pn+SOmQY0U1wTAyPFx/Vb3EO0q0vYcvBF9YbGJ5rv9ey6c9PNmRX3p1A16oQhhCIGouq4w==} - - '@swagger-api/apidom-ns-json-schema-2020-12@1.0.0-beta.43': - resolution: {integrity: sha512-LdKzRytBqMF1Df9lqAPqm976u4L/E+La00UdJnd4Vj1bY4BrhKqToMwXZyLXMVCOCRKWbwK28Q62i2lAYE881A==} - - '@swagger-api/apidom-ns-json-schema-draft-4@1.0.0-beta.43': - resolution: {integrity: sha512-eQobpiECGLd0SwyJYNsnliIU33UcwubbIOl0HlWAM0kS/F7PUeA36beq4nZnpArTySBra4Ye+S9NW9nhQ8UHsw==} - - '@swagger-api/apidom-ns-json-schema-draft-6@1.0.0-beta.43': - resolution: {integrity: sha512-+cmcJ+lHtOdxlm/3a85cHjVp28C9WNUXHsBIUdaVUL2cEEue4d1CMZmBwBa6s4gUAEE+hluRxR+d6VZzIN8bPQ==} - - '@swagger-api/apidom-ns-json-schema-draft-7@1.0.0-beta.43': - resolution: {integrity: sha512-xkmILa+H8+3CNsYZXd1SGyHJQ854uJEO2k03QLtE+TiLvAd7yZAq68mqETTYeU1pyCV9Ksm+OByMHS3bF0GRGw==} - - '@swagger-api/apidom-ns-openapi-2@1.0.0-beta.43': - resolution: {integrity: sha512-+16xczQTr+C1GE3pa8TMDJbReLhIvwHS2VseADBQFgU+3zVSJhmfWTpI34zJ1v1bnTXZIB17PP9KUG2l/Q1/ww==} - - '@swagger-api/apidom-ns-openapi-3-0@1.0.0-beta.43': - resolution: {integrity: sha512-6T8O9C40yFHXASh00UV3AgVeClHPjfA3zKtAcgXpgI8ZvMZRbp5Z3lSuG35PYZmmmKgLuEclywjboIfUBA4dag==} - - '@swagger-api/apidom-ns-openapi-3-1@1.0.0-beta.43': - resolution: {integrity: sha512-9oqgKa1V6Zi1ezVh25GFw8Dty4kiScnnNyuULhYlIHspzkFSNaLKM75aonSAvL79YBEiF78q9cw6yfy0sy+CxQ==} - - '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.0.0-beta.43': - resolution: {integrity: sha512-AnPyqxa9mM2GlhSJ6/+FPG+tgfaHtxs3B5+NULAbXbZ+enkyhZOs3iF2wpIFO6JaW6litXrwKsJYV+ul7Igyew==} - - '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.0.0-beta.43': - resolution: {integrity: sha512-/G9T1y9rJl8d116iUWW99OznUVxjMVMA7iOCCHP7YppgLmFf/l8Eh5eHdaUXgsvlnYMwOqtflg+46lYi1oe7Uw==} - - '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.0.0-beta.43': - resolution: {integrity: sha512-aHOXZcNb6ciI6PUiYfW7LGCyWOcf2VTvl9k7Bnp78JCZ3S0BFOKiokH9E2MZSQuT6GkPkaEiUzKHsaYN0//Lhw==} - - '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.0.0-beta.43': - resolution: {integrity: sha512-ky9S4fNJSew6Z+LC3Kj/Fs4r0rKKFvbQhpsRnHau2m0Fg9GIKFB8XhNVy28vfJQ7V4YWHiSYm3Xf+0qla6h8+Q==} - - '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.0.0-beta.43': - resolution: {integrity: sha512-b1q2SK7t0EVU3TzmfX6/Qo9o3BtXbJLFqt9xihNeaNNzNx7gJmyvILNejWP/R9pv8GwWKZeDS3rKmrJMDrtloQ==} - - '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.0.0-beta.43': - resolution: {integrity: sha512-7MzYHLPzvuj+QGp4C5HwSpuWIZ+ywio0IUn6RJIboN0YLWcsUaapTL63uQ59nIsInM1yEh0mXg1aikt/BY58cA==} - - '@swagger-api/apidom-parser-adapter-json@1.0.0-beta.43': - resolution: {integrity: sha512-Jm14OxAVEiaNfXXxio/BVUr0Znf1OLRVMCHAalCYgc1745p2R0BBzbESVOQrEblgfPJxdR6NDst6gESKad32Tg==} - - '@swagger-api/apidom-parser-adapter-openapi-json-2@1.0.0-beta.43': - resolution: {integrity: sha512-ZRmXBVgAxqMST9Dj+3mzQl7yqW/KT8+OnS8IrNjuDETkC/SjZ8oqKpnrOPCMfK6f++y/XPtjCMbomL5kZw/ZDQ==} - - '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.0.0-beta.43': - resolution: {integrity: sha512-Kvg0Yz1CTo1vED4T1yGnQuZqgs0VEKLfE5VjDN1tXrgoPcc8f+9Ve2omapIXz7UZ+WyYva9V+RDYPrzPLRevCw==} - - '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.0.0-beta.43': - resolution: {integrity: sha512-EorhEnAnmCOCtjzaWkIFPzFwndG62wfDXUh/rqcsaX95d7wN9LOxRGHsPMIL5S3qBhDYkXS7DHMiWOrRzGW+Cw==} - - '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.0.0-beta.43': - resolution: {integrity: sha512-7mfyAu0gY4QmbhTKe6m1k1Uj9/W6X2Iq8RY/lsz9NU5PHj7Q4VgyN1xYbx37fWzpIk+HQ/vB1ddCWi0uc3DwsA==} - - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.0.0-beta.43': - resolution: {integrity: sha512-LD62C+Q6lINNHTJ28JfgrllqWr9wbdRChHLP+nH0Bj0VbR6DKSKfSTyPbkN7FHM0qMcXOpj9kcmFY+e3p+u+NQ==} - - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.0.0-beta.43': - resolution: {integrity: sha512-jMCbdIY93WNuhcLnUQEtrH5tvuaoBW4lnJLSJEwCO9gbCTc/Y5bAGiOls5bsZcUMX3INLG7hqgc0vPY662D76w==} - - '@swagger-api/apidom-parser-adapter-yaml-1-2@1.0.0-beta.43': - resolution: {integrity: sha512-1izTQNYBQoWQ3BDKDMdV07vx7fBtqIrIwsvu7474GGQ2z4J0hgV1XJXPcmj59A/2GX2NuRRmw24eB4ZN1YN99Q==} - - '@swagger-api/apidom-reference@1.0.0-beta.43': - resolution: {integrity: sha512-XKg9Wxg0hrLQL969DWJCdGRnPg6k7P0MnaaN0jPy1gacHftkcdoY9rrIzfgCDIUrGxs9Xpks4V2F4MTS/tKh8Q==} - - '@swaggerexpert/cookie@2.0.2': - resolution: {integrity: sha512-DPI8YJ0Vznk4CT+ekn3rcFNq1uQwvUHZhH6WvTSPD0YKBIlMS9ur2RYKghXuxxOiqOam/i4lHJH4xTIiTgs3Mg==} - engines: {node: '>=12.20.0'} - - '@swaggerexpert/json-pointer@2.10.2': - resolution: {integrity: sha512-qMx1nOrzoB+PF+pzb26Q4Tc2sOlrx9Ba2UBNX9hB31Omrq+QoZ2Gly0KLrQWw4Of1AQ4J9lnD+XOdwOdcdXqqw==} - engines: {node: '>=12.20.0'} - - '@swc/core-darwin-arm64@1.12.5': - resolution: {integrity: sha512-3WF+naP/qkt5flrTfJr+p07b522JcixKvIivM7FgvllA6LjJxf+pheoILrTS8IwrNAK/XtHfKWYcGY+3eaA4mA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.12.5': - resolution: {integrity: sha512-GCcD3dft8YN7unTBcW02Fx41jXp2MNQHCjx5ceWSEYOGvn7vBSUp7k7LkfTxGN5Ftxb9a1mxhPq8r4rD2u/aPw==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.12.5': - resolution: {integrity: sha512-jWlzP/Y4+wbE/EJM+WGIDQsklLFV3g5LmbYTBgrY4+5nb517P31mkBzf5y2knfNWPrL7HzNu0578j3Zi2E6Iig==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.12.5': - resolution: {integrity: sha512-GkzgIUz+2r6J6Tn3hb7/4ByaWHRrRZt4vuN9BLAd+y65m2Bt0vlEpPtWhrB/TVe4hEkFR+W5PDETLEbUT4i0tQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.12.5': - resolution: {integrity: sha512-g0AJ7QmZPj3Uw+C5pDa48LAUG7JBgQmB0mN5cW+s2mjaFKT0mTSxYALtx/MDZwJExDPo0yJV8kSbFO1tvFPyhg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.12.5': - resolution: {integrity: sha512-PeYoSziNy+iNiBHPtAsO84bzBne/mbCsG5ijYkAhS1GVsDgohClorUvRXXhcUZoX2gr8TfSI9WLHo30K+DKiHg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.12.5': - resolution: {integrity: sha512-EJrfCCIyuV5LLmYgKtIMwtgsnjVesdFe0IgQzEKs9OfB6cL6g7WO9conn8BkGX8jphVa7jChKxShDGkreWWDzA==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.12.5': - resolution: {integrity: sha512-FnwT7fxkJJMgsfiDoZKEVGyCzrPFbzpflFAAoTCUCu3MaHw6mW55o/MAAfofvJ1iIcEpec4o93OilsmKtpyO5Q==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.12.5': - resolution: {integrity: sha512-jW6l4KFt9mIXSpGseE6BQOEFmbIeXeShDuWgldEJXKeXf/uPs8wrqv80XBIUwVpK0ZbmJwPQ0waGVj8UM3th2Q==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.12.5': - resolution: {integrity: sha512-AZszwuEjlz1tSNLQRm3T5OZJ5eebxjJlDQnnzXJmg0B7DJMRoaAe1HTLOmejxjFK6yWr7fh+pSeCw2PgQLxgqA==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.12.5': - resolution: {integrity: sha512-KxA0PHHIuUBmQ/Oi+xFpVzILj2Oo37sTtftCbyowQlyx5YOknEOw1kLpas5hMcpznXgFyAWbpK71xQps4INPgA==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '>=0.5.17' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/helpers@0.5.17': - resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - - '@swc/types@0.1.23': - resolution: {integrity: sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw==} - - '@szmarczak/http-timer@5.0.1': - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} - engines: {node: '>=14.16'} - - '@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@5.76.0': - resolution: {integrity: sha512-FN375hb8ctzfNAlex5gHI6+WDXTNpe0nbxp/d2YJtnP+IBM6OUm7zcaoCW6T63BawGOYZBbKC0iPvr41TteNVg==} - - '@tanstack/query-core@5.76.2': - resolution: {integrity: sha512-PFGwWh5ss9cJQ67l6bZ7hqXbisX2gy13G2jP+VGY1bgdbCfOMWh6UBVnN62QbFXro6CCoX9hYzTnZHr6Rz00YQ==} - - '@tanstack/query-core@5.77.1': - resolution: {integrity: sha512-nfxVhy4UynChMFfN4NxwI8pktV9R3Zt/ROxOAe6pdOf8CigDLn26p+ex1YW5uien26BBICLmN0dTvIELHCs5vw==} - - '@tanstack/query-core@5.81.2': - resolution: {integrity: sha512-QLYkPdrudoMATDFa3MiLEwRhNnAlzHWDf0LKaXUqJd0/+QxN8uTPi7bahRlxoAyH0UbLMBdeDbYzWALj7THOtw==} - - '@tanstack/query-persist-client-core@4.27.0': - resolution: {integrity: sha512-A+dPA7zG0MJOMDeBc/2WcKXW4wV2JMkeBVydobPW9G02M4q0yAj7vI+7SmM2dFuXyIvxXp4KulCywN6abRKDSQ==} - - '@tanstack/react-query-persist-client@4.28.0': - resolution: {integrity: sha512-xNpi3YdPOQIyYkKhByYDqTlyCeqICWFhV5PWkoVxYfzlRK6HYX4s+9Int407jEvhBz9cGC4OaL7rd6bynCFrYg==} - peerDependencies: - '@tanstack/react-query': 4.28.0 - - '@tanstack/react-query@4.0.10': - resolution: {integrity: sha512-Wn5QhZUE5wvr6rGClV7KeQIUsdTmYR9mgmMZen7DSRWauHW2UTynFg3Kkf6pw+XlxxOLsyLWwz/Q6q1lSpM3TQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - - '@tanstack/react-query@4.28.0': - resolution: {integrity: sha512-8cGBV5300RHlvYdS4ea+G1JcZIt5CIuprXYFnsWggkmGoC0b5JaqG0fIX3qwDL9PTNkKvG76NGThIWbpXivMrQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - - '@tanstack/react-query@5.76.1': - resolution: {integrity: sha512-YxdLZVGN4QkT5YT1HKZQWiIlcgauIXEIsMOTSjvyD5wLYK8YVvKZUPAysMqossFJJfDpJW3pFn7WNZuPOqq+fw==} - peerDependencies: - react: ^18 || ^19 - - '@tanstack/react-query@5.76.2': - resolution: {integrity: sha512-rGkWberCrFdIxMdvSAJM/UOKeu0O/JVTbMmfhQoJpiU9Uq0EDx2EMCadnNuJWbXR4smDA2t7DY3NKkYFmDVS5A==} - peerDependencies: - react: ^18 || ^19 - - '@tanstack/react-query@5.77.1': - resolution: {integrity: sha512-qBwpxFg0+MZF0fICQwgvzwrVbcs7TdQlLyEd1f1dN83oeIALofCIAJHV7sPWu+BCS5tcXkG5CvOuf7yla8GYqQ==} - peerDependencies: - react: ^18 || ^19 - - '@tanstack/react-virtual@3.13.10': - resolution: {integrity: sha512-nvrzk4E9mWB4124YdJ7/yzwou7IfHxlSef6ugCFcBfRmsnsma3heciiiV97sBNxyc3VuwtZvmwXd0aB5BpucVw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - '@tanstack/virtual-core@3.13.10': - resolution: {integrity: sha512-sPEDhXREou5HyZYqSWIqdU580rsF6FGeN7vpzijmP3KTiOGjOMZASz4Y6+QKjiFQwhWrR58OP8izYaNGVxvViA==} - - '@testing-library/dom@10.4.0': - resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} - engines: {node: '>=18'} - - '@testing-library/jest-dom@6.5.0': - resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - - '@testing-library/jest-dom@6.6.3': - resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - - '@testing-library/react@16.3.0': - resolution: {integrity: sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==} - engines: {node: '>=18'} - peerDependencies: - '@testing-library/dom': ^10.0.0 - '@types/react': ^18.0.0 || ^19.0.0 - '@types/react-dom': ^18.0.0 || ^19.0.0 - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@testing-library/user-event@14.5.2': - resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' - - '@testing-library/user-event@14.6.1': - resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' - - '@textlint/ast-node-types@14.8.4': - resolution: {integrity: sha512-+fI7miec/r9VeniFV9ppL4jRCmHNsTxieulTUf/4tvGII3db5hGriKHC4p/diq1SkQ9Sgs7kg6UyydxZtpTz1Q==} - - '@textlint/linter-formatter@14.8.4': - resolution: {integrity: sha512-sZ0UfYRDBNHnfMVBqLqqYnqTB7Ec169ljlmo+SEHR1T+dHUPYy1/DZK4p7QREXlBSFL4cnkswETCbc9xRodm4Q==} - - '@textlint/module-interop@14.8.4': - resolution: {integrity: sha512-1LdPYLAVpa27NOt6EqvuFO99s4XLB0c19Hw9xKSG6xQ1K82nUEyuWhzTQKb3KJ5Qx7qj14JlXZLfnEuL6A16Bw==} - - '@textlint/resolver@14.8.4': - resolution: {integrity: sha512-nMDOgDAVwNU9ommh+Db0U+MCMNDPbQ/1HBNjbnHwxZkCpcT6hsAJwBe38CW/DtWVUv8yeR4R40IYNPT84srNwA==} - - '@textlint/types@14.8.4': - resolution: {integrity: sha512-9nyY8vVXlr8hHKxa6+37omJhXWCwovMQcgMteuldYd4dOxGm14AK2nXdkgtKEUQnzLGaXy46xwLCfhQy7V7/YA==} - - '@tokenizer/token@0.3.0': - resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - - '@tootallnate/once@1.1.2': - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} - - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - - '@tree-sitter-grammars/tree-sitter-yaml@0.7.1': - resolution: {integrity: sha512-AynBwkIoQCTgjDR33bDUp9Mqq+YTco0is3n5hRApMqG9of/6A4eQsfC1/uSEeHSUyMQSYawcAWamsexnVpIP4Q==} - peerDependencies: - tree-sitter: ^0.22.4 - peerDependenciesMeta: - tree-sitter: - optional: true - - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - - '@ts-morph/common@0.23.0': - resolution: {integrity: sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==} - - '@ts-morph/common@0.27.0': - resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==} - - '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.7': - resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} - - '@types/blueimp-md5@2.18.2': - resolution: {integrity: sha512-dJ9yRry9Olt5GAWlgCtE5dK9d/Dfhn/V7hna86eEO2Pn76+E8Y0S0n61iEUEGhWXXgtKtHxtZLVNwL8X+vLHzg==} - - '@types/body-parser@1.19.6': - resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} - - '@types/bonjour@3.5.13': - resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} - - '@types/byline@4.2.36': - resolution: {integrity: sha512-dO55KDSaOSE+3T8TwP66mzn0u/PM/aSedVMr1tby7WBNjfLIuS6IbYXi1mlau49sVSVB+gXKJscWE0JO3tlXDw==} - - '@types/chai@4.3.20': - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} - - '@types/classnames@2.3.4': - resolution: {integrity: sha512-dwmfrMMQb9ujX1uYGvB5ERDlOzBNywnZAZBtOe107/hORWP05ESgU4QyaanZMWYYfd2BzrG78y13/Bju8IQcMQ==} - deprecated: This is a stub types definition. classnames provides its own type definitions, so you do not need this installed. - - '@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/connect-history-api-fallback@1.5.4': - resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/cross-spawn@6.0.6': - resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} - - '@types/dagre@0.7.52': - resolution: {integrity: sha512-XKJdy+OClLk3hketHi9Qg6gTfe1F3y+UFnHxKA2rn9Dw+oXa4Gb378Ztz9HlMgZKSxpPmn4BNVh9wgkpvrK1uw==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - - '@types/deep-equal@1.0.4': - resolution: {integrity: sha512-tqdiS4otQP4KmY0PR3u6KbZ5EWvhNdUoS/jc93UuK23C220lOZ/9TvjfxdPcKvqwwDVtmtSCrnr0p/2dirAxkA==} - - '@types/detect-port@1.3.5': - resolution: {integrity: sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==} - - '@types/doctrine@0.0.3': - resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} - - '@types/doctrine@0.0.9': - resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} - - '@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/escodegen@0.0.6': - resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} - - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint-visitor-keys@1.0.0': - resolution: {integrity: sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - - '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - - '@types/estree@0.0.39': - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - - '@types/estree@0.0.51': - resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} - - '@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@5.0.6': - resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} - - '@types/express@4.17.23': - resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} - - '@types/find-cache-dir@3.2.1': - resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} - - '@types/fs-extra@11.0.4': - resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - - '@types/glob@7.2.0': - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - - '@types/glob@8.1.0': - resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} - - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - - '@types/handlebars@4.1.0': - resolution: {integrity: sha512-gq9YweFKNNB1uFK71eRqsd4niVkXrxHugqWFQkeLRJvGjnxsLr16bYtcsG4tOFwmYi0Bax+wCkbf1reUfdl4kA==} - deprecated: This is a stub types definition. handlebars provides its own type definitions, so you do not need this installed. - - '@types/hast@2.3.10': - resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} - - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - - '@types/hoist-non-react-statics@3.3.6': - resolution: {integrity: sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==} - - '@types/html-minifier-terser@5.1.2': - resolution: {integrity: sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==} - - '@types/html-minifier-terser@6.1.0': - resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} - - '@types/http-cache-semantics@4.0.4': - resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - - '@types/http-errors@2.0.5': - resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - - '@types/http-proxy@1.17.16': - resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} - - '@types/is-function@1.0.3': - resolution: {integrity: sha512-/CLhCW79JUeLKznI6mbVieGbl4QU5Hfn+6udw1YHZoofASjbQ5zaP5LzAUZYDpRYEjS4/P+DhEgyJ/PQmGGTWw==} - - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@1.1.2': - resolution: {integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - - '@types/jest@25.2.3': - resolution: {integrity: sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==} - - '@types/jest@29.5.14': - resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} - - '@types/js-yaml@4.0.9': - resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} - - '@types/jsdom@20.0.1': - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/jsonfile@6.1.4': - resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - - '@types/keyv@3.1.4': - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - - '@types/lodash.camelcase@4.3.9': - resolution: {integrity: sha512-ys9/hGBfsKxzmFI8hckII40V0ASQ83UM2pxfQRghHAwekhH4/jWtjz/3/9YDy7ZpUd/H0k2STSqmPR28dnj7Zg==} - - '@types/lodash.clonedeep@4.5.9': - resolution: {integrity: sha512-19429mWC+FyaAhOLzsS8kZUsI+/GmBAQ0HFiCPsKGU+7pBXOQWhyrY6xNNDwUSX8SMZMJvuFVMF9O5dQOlQK9Q==} - - '@types/lodash.debounce@4.0.9': - resolution: {integrity: sha512-Ma5JcgTREwpLRwMM+XwBR7DaWe96nC38uCBDFKZWbNKD+osjVzdpnUSwBcqCptrp16sSOLBAUb50Car5I0TCsQ==} - - '@types/lodash@4.14.202': - resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} - - '@types/lodash@4.17.16': - resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} - - '@types/lodash@4.17.17': - resolution: {integrity: sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==} - - '@types/mdast@3.0.15': - resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} - - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - - '@types/mdurl@1.0.5': - resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} - - '@types/mdx@2.0.13': - resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - - '@types/mime-types@2.1.4': - resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==} - - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - - '@types/minimatch@5.1.2': - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - - '@types/minimist@1.2.5': - resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - - '@types/mocha@10.0.10': - resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} - - '@types/mousetrap@1.6.15': - resolution: {integrity: sha512-qL0hyIMNPow317QWW/63RvL1x5MVMV+Ru3NaY9f/CuEpCqrmb7WeuK2071ZY5hczOnm38qExWM2i2WtkXLSqFw==} - - '@types/ms@2.1.0': - resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - - '@types/mustache@4.2.6': - resolution: {integrity: sha512-t+8/QWTAhOFlrF1IVZqKnMRJi84EgkIK5Kh0p2JV4OLywUvCwJPFxbJAl7XAow7DVIHsF+xW9f1MVzg0L6Szjw==} - - '@types/node-fetch@2.6.12': - resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} - - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - - '@types/node@16.18.126': - resolution: {integrity: sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==} - - '@types/node@18.19.112': - resolution: {integrity: sha512-i+Vukt9POdS/MBI7YrrkkI5fMfwFtOjphSmt4WXYLfwqsfr6z/HdCx7LqT9M7JktGob8WNgj8nFB4TbGNE4Cog==} - - '@types/node@22.15.18': - resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} - - '@types/node@22.15.21': - resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==} - - '@types/node@22.15.32': - resolution: {integrity: sha512-3jigKqgSjsH6gYZv2nEsqdXfZqIFGAV36XYYjf9KGZ3PSG+IhLecqPnI310RvjutyMwifE2hhhNEklOUrvx/wA==} - - '@types/node@24.0.14': - resolution: {integrity: sha512-4zXMWD91vBLGRtHK3YbIoFMia+1nqEz72coM42C5ETjnNCa/heoj7NT1G67iAfOqMmcfhuCZ4uNpyz8EjlAejw==} - - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - - '@types/npmlog@4.1.6': - resolution: {integrity: sha512-0l3z16vnlJGl2Mi/rgJFrdwfLZ4jfNYgE6ZShEpjqhHuGTqdEzNles03NpYHwUMVYZa+Tj46UxKIEpE78lQ3DQ==} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/parse5@5.0.3': - resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} - - '@types/parse5@6.0.3': - resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - - '@types/prettier@1.19.1': - resolution: {integrity: sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==} - - '@types/pretty-hrtime@1.0.3': - resolution: {integrity: sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==} - - '@types/prismjs@1.26.5': - resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} - - '@types/prop-types@15.7.15': - resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - - '@types/qs@6.14.0': - resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} - - '@types/ramda@0.30.2': - resolution: {integrity: sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - - '@types/react-collapse@5.0.4': - resolution: {integrity: sha512-tM5cVB6skGLneNYnRK2E3R56VOHguSeJQHslGPTIMC58ytL3oelT8L/l1onkwHGn5vSEs2BEq2Olzrur+YdliA==} - - '@types/react-dom@17.0.14': - resolution: {integrity: sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ==} - - '@types/react-dom@17.0.26': - resolution: {integrity: sha512-Z+2VcYXJwOqQ79HreLU/1fyQ88eXSSFh6I3JdrEHQIfYSI0kCQpTGvOrbE6jFGGYXKsHuwY9tBa/w5Uo6KzrEg==} - peerDependencies: - '@types/react': ^17.0.0 - - '@types/react-dom@18.2.0': - resolution: {integrity: sha512-8yQrvS6sMpSwIovhPOwfyNf2Wz6v/B62LFSVYQ85+Rq3tLsBIG7rP5geMxaijTUxSkrO6RzN/IRuIAADYQsleA==} - - '@types/react-lottie@1.2.10': - resolution: {integrity: sha512-rCd1p3US4ELKJlqwVnP0h5b24zt5p9OCvKUoNpYExLqwbFZMWEiJ6EGLMmH7nmq5V7KomBIbWO2X/XRFsL0vCA==} - - '@types/react-split-pane@0.1.67': - resolution: {integrity: sha512-2vq9mohqYZ7kR+XcedfjyI2M7/E8W5owr0KupGGP+TfFp/O9f6c/S06MCB3FKWiBwazA7+Zyj50OTxvYy1kGLA==} - deprecated: This is a stub types definition for react-split-pane (https://github.com/tomkp/react-split-pane). react-split-pane provides its own type definitions, so you don't need @types/react-split-pane installed! - - '@types/react-syntax-highlighter@15.5.13': - resolution: {integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==} - - '@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@18.2.0': - resolution: {integrity: sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==} - - '@types/resolve@1.17.1': - resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} - - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - - '@types/resolve@1.20.6': - resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} - - '@types/responselike@1.0.3': - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - - '@types/retry@0.12.2': - resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} - - '@types/sarif@2.1.7': - resolution: {integrity: sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==} - - '@types/scheduler@0.16.8': - resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - - '@types/scheduler@0.26.0': - resolution: {integrity: sha512-WFHp9YUJQ6CKshqoC37iOlHnQSmxNc795UhB26CyBBttrN9svdIrUjl/NjnNmfcwtncN0h/0PPAFWv9ovP8mLA==} - - '@types/selenium-webdriver@4.1.28': - resolution: {integrity: sha512-Au7CXegiS7oapbB16zxPToY4Cjzi9UQQMf3W2ZZM8PigMLTGR3iUAHjPUTddyE5g1SBjT/qpmvlsAQLBfNAdKg==} - - '@types/semver@7.7.0': - resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} - - '@types/send@0.17.5': - resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} - - '@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/sockjs@0.3.36': - resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - - '@types/source-list-map@0.1.6': - resolution: {integrity: sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==} - - '@types/stack-utils@1.0.1': - resolution: {integrity: sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==} - - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - - '@types/swagger-ui-react@5.18.0': - resolution: {integrity: sha512-c2M9adVG7t28t1pq19K9Jt20VLQf0P/fwJwnfcmsVVsdkwCWhRmbKDu+tIs0/NGwJ/7GY8lBx+iKZxuDI5gDbw==} - - '@types/tapable@1.0.12': - resolution: {integrity: sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==} - - '@types/tcp-port-used@1.0.4': - resolution: {integrity: sha512-0vQ4fz9TTM4bCdllYWEJ2JHBUXR9xqPtc70dJ7BMRDVfvZyYdrgey3nP5RRcVj+qAgnHJM8r9fvgrfnPMxdnhA==} - - '@types/tern@0.23.9': - resolution: {integrity: sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==} - - '@types/tmp@0.2.6': - resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} - - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - - '@types/triple-beam@1.3.5': - resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} - - '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - - '@types/uglify-js@3.17.5': - resolution: {integrity: sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==} - - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - - '@types/unzipper@0.10.11': - resolution: {integrity: sha512-D25im2zjyMCcgL9ag6N46+wbtJBnXIr7SI4zHf9eJD2Dw2tEB5e+p5MYkrxKIVRscs5QV0EhtU9rgXSPx90oJg==} - - '@types/use-sync-external-store@0.0.3': - resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} - - '@types/use-sync-external-store@0.0.6': - resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} - - '@types/uuid@10.0.0': - resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} - - '@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-webview@1.57.5': - resolution: {integrity: sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==} - - '@types/vscode@1.101.0': - resolution: {integrity: sha512-ZWf0IWa+NGegdW3iU42AcDTFHWW7fApLdkdnBqwYEtHVIBGbTu0ZNQKP/kX3Ds/uMJXIMQNAojHR4vexCEEz5Q==} - - '@types/webpack-env@1.18.8': - resolution: {integrity: sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A==} - - '@types/webpack-sources@3.2.3': - resolution: {integrity: sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==} - - '@types/webpack@4.41.40': - resolution: {integrity: sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==} - - '@types/webpack@5.28.5': - resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==} - - '@types/which@3.0.4': - resolution: {integrity: sha512-liyfuo/106JdlgSchJzXEQCVArk0CvevqPote8F8HgWgJ3dRCcTHgJIsLDuee0kxk/mhbInzIZk3QWSZJ8R+2w==} - - '@types/ws@8.18.1': - resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - - '@types/xml2js@0.4.14': - resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - - '@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@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - - '@typescript-eslint/eslint-plugin@2.34.0': - resolution: {integrity: sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - peerDependencies: - '@typescript-eslint/parser': ^2.0.0 - eslint: ^5.0.0 || ^6.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/eslint-plugin@6.21.0': - resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/eslint-plugin@7.18.0': - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/eslint-plugin@8.32.1': - resolution: {integrity: sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/eslint-plugin@8.33.1': - resolution: {integrity: sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.33.1 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/experimental-utils@2.34.0': - resolution: {integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - peerDependencies: - eslint: '*' - - '@typescript-eslint/parser@2.34.0': - resolution: {integrity: sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - peerDependencies: - eslint: ^5.0.0 || ^6.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@6.21.0': - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@7.18.0': - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@8.32.1': - resolution: {integrity: sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/parser@8.33.1': - resolution: {integrity: sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/project-service@8.33.1': - resolution: {integrity: sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/scope-manager@6.21.0': - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/scope-manager@8.32.1': - resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.33.1': - resolution: {integrity: sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.33.1': - resolution: {integrity: sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/type-utils@6.21.0': - resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/type-utils@7.18.0': - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/type-utils@8.32.1': - resolution: {integrity: sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/type-utils@8.33.1': - resolution: {integrity: sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/types@6.21.0': - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/types@8.32.1': - resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.33.1': - resolution: {integrity: sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@2.34.0': - resolution: {integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@6.21.0': - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@8.32.1': - resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/typescript-estree@8.33.1': - resolution: {integrity: sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/utils@6.21.0': - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/utils@8.32.1': - resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/utils@8.33.1': - resolution: {integrity: sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' - - '@typescript-eslint/visitor-keys@6.21.0': - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/visitor-keys@8.32.1': - resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.33.1': - resolution: {integrity: sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typespec/ts-http-runtime@0.2.3': - resolution: {integrity: sha512-oRhjSzcVjX8ExyaF8hC0zzTqxlVuRlgMHL/Bh4w3xB9+wjbm0FpXylVU/lBrn+kgphwYTrOk3tp+AVShGmlYCg==} - engines: {node: '>=18.0.0'} - - '@uiw/codemirror-extensions-basic-setup@4.23.13': - resolution: {integrity: sha512-U1CnDFpq6ydNqrRDS5Bdnvgso8ezwwbrmKvmAD3hmoVyRDsDU6HTtmcV+w0rZ3kElUCkKI5lY0DMvTTQ4+L3RQ==} - peerDependencies: - '@codemirror/autocomplete': '>=6.0.0' - '@codemirror/commands': '>=6.0.0' - '@codemirror/language': '>=6.0.0' - '@codemirror/lint': '>=6.0.0' - '@codemirror/search': '>=6.0.0' - '@codemirror/state': '>=6.0.0' - '@codemirror/view': '>=6.0.0' - - '@uiw/react-codemirror@4.23.13': - resolution: {integrity: sha512-y65ULzxOAfpxrA/8epoAOeCfmJXu9z0P62BbGOkITJTtU7WI59KfPbbwj35npSsMAkAmDE841qZo2I8jst/THg==} - peerDependencies: - '@babel/runtime': '>=7.11.0' - '@codemirror/state': '>=6.0.0' - '@codemirror/theme-one-dark': '>=6.0.0' - '@codemirror/view': '>=6.0.0' - codemirror: '>=6.0.0' - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - - '@vitejs/plugin-react@4.5.2': - resolution: {integrity: sha512-QNVT3/Lxx99nMQWJWF7K4N6apUEuT0KlZA3mx/mVaoGj3smm/8rc8ezz15J1pcbcjDK0V15rpHetVfya08r76Q==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 - - '@vitest/expect@2.0.5': - resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - - '@vitest/expect@3.0.9': - resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} - - '@vitest/expect@3.2.4': - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - - '@vitest/pretty-format@2.0.5': - resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - - '@vitest/pretty-format@2.1.9': - resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} - - '@vitest/pretty-format@3.0.9': - resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} - - '@vitest/pretty-format@3.2.4': - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - - '@vitest/spy@2.0.5': - resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - - '@vitest/spy@3.0.9': - resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} - - '@vitest/spy@3.2.4': - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - - '@vitest/utils@2.0.5': - resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - - '@vitest/utils@2.1.9': - resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} - - '@vitest/utils@3.0.9': - resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} - - '@vitest/utils@3.2.4': - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - - '@vscode-logging/logger@2.0.0': - resolution: {integrity: sha512-m5AsHLqNyC8OYmpXf4bA5Hm2gSrJcc2L7KUfA8wMH/GFDexeNSTi/O6rDdWFawxLZg3uQGETDx8xyMfMqCDp+w==} - - '@vscode-logging/types@2.0.0': - resolution: {integrity: sha512-P42r5SPYeJKgMDYb5Ez9rjPlpnGEZ1eDFVjT0azxueaJ65iE259hpROmvSPUd80HAALn9/59L+CgcGLmwZcCmg==} - - '@vscode-logging/wrapper@2.0.0': - resolution: {integrity: sha512-XA8T61WL3vsrfEMUog1km8USEgnD/3H2qXk7fizFzuEFqNRGpVq9AYjxSUuBMsffIdtwfAOFYZJ8HIwzy+cGjA==} - - '@vscode/codicons@0.0.33': - resolution: {integrity: sha512-VdgpnD75swH9hpXjd34VBgQ2w2quK63WljodlUcOoJDPKiV+rPjHrcUc2sjLCNKxhl6oKqmsZgwOWcDAY2GKKQ==} - - '@vscode/codicons@0.0.36': - resolution: {integrity: sha512-wsNOvNMMJ2BY8rC2N2MNBG7yOowV3ov8KlvUE/AiVUlHKTfWsw3OgAOQduX7h0Un6GssKD3aoTVH+TF3DSQwKQ==} - - '@vscode/extension-telemetry@1.0.0': - 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/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==} - cpu: [arm64] - os: [alpine] - - '@vscode/vsce-sign-alpine-x64@2.0.5': - resolution: {integrity: sha512-JuxY3xcquRsOezKq6PEHwCgd1rh1GnhyH6urVEWUzWn1c1PC4EOoyffMD+zLZtFuZF5qR1I0+cqDRNKyPvpK7Q==} - cpu: [x64] - os: [alpine] - - '@vscode/vsce-sign-darwin-arm64@2.0.5': - resolution: {integrity: sha512-z2Q62bk0ptADFz8a0vtPvnm6vxpyP3hIEYMU+i1AWz263Pj8Mc38cm/4sjzxu+LIsAfhe9HzvYNS49lV+KsatQ==} - cpu: [arm64] - os: [darwin] - - '@vscode/vsce-sign-darwin-x64@2.0.5': - resolution: {integrity: sha512-ma9JDC7FJ16SuPXlLKkvOD2qLsmW/cKfqK4zzM2iJE1PbckF3BlR08lYqHV89gmuoTpYB55+z8Y5Fz4wEJBVDA==} - cpu: [x64] - os: [darwin] - - '@vscode/vsce-sign-linux-arm64@2.0.5': - resolution: {integrity: sha512-Hr1o0veBymg9SmkCqYnfaiUnes5YK6k/lKFA5MhNmiEN5fNqxyPUCdRZMFs3Ajtx2OFW4q3KuYVRwGA7jdLo7Q==} - cpu: [arm64] - os: [linux] - - '@vscode/vsce-sign-linux-arm@2.0.5': - resolution: {integrity: sha512-cdCwtLGmvC1QVrkIsyzv01+o9eR+wodMJUZ9Ak3owhcGxPRB53/WvrDHAFYA6i8Oy232nuen1YqWeEohqBuSzA==} - cpu: [arm] - os: [linux] - - '@vscode/vsce-sign-linux-x64@2.0.5': - resolution: {integrity: sha512-XLT0gfGMcxk6CMRLDkgqEPTyG8Oa0OFe1tPv2RVbphSOjFWJwZgK3TYWx39i/7gqpDHlax0AP6cgMygNJrA6zg==} - cpu: [x64] - os: [linux] - - '@vscode/vsce-sign-win32-arm64@2.0.5': - resolution: {integrity: sha512-hco8eaoTcvtmuPhavyCZhrk5QIcLiyAUhEso87ApAWDllG7djIrWiOCtqn48k4pHz+L8oCQlE0nwNHfcYcxOPw==} - cpu: [arm64] - os: [win32] - - '@vscode/vsce-sign-win32-x64@2.0.5': - resolution: {integrity: sha512-1ixKFGM2FwM+6kQS2ojfY3aAelICxjiCzeg4nTHpkeU1Tfs4RC+lVLrgq5NwcBC7ZLr6UfY3Ct3D6suPeOf7BQ==} - cpu: [x64] - os: [win32] - - '@vscode/vsce-sign@2.0.6': - resolution: {integrity: sha512-j9Ashk+uOWCDHYDxgGsqzKq5FXW9b9MW7QqOIYZ8IYpneJclWTBeHZz2DJCSKQgo+JAqNcaRRE1hzIx0dswqAw==} - - '@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==} - engines: {node: '>= 20'} - hasBin: true - - '@vscode/webview-ui-toolkit@1.4.0': - resolution: {integrity: sha512-modXVHQkZLsxgmd5yoP3ptRC/G8NBDD+ob+ngPiWNQdlrH6H1xR/qgOBD85bfU3BhOB5sZzFWBwwhp9/SfoHww==} - deprecated: This package has been deprecated, https://github.com/microsoft/vscode-webview-ui-toolkit/issues/561 - peerDependencies: - react: '>=16.9.0' - - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - - '@webpack-cli/configtest@1.2.0': - resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==} - peerDependencies: - webpack: ^5.94.0 - webpack-cli: 4.x.x - - '@webpack-cli/configtest@2.1.1': - resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: ^5.94.0 - webpack-cli: 5.x.x - - '@webpack-cli/configtest@3.0.1': - resolution: {integrity: sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==} - engines: {node: '>=18.12.0'} - peerDependencies: - webpack: ^5.94.0 - webpack-cli: 6.x.x - - '@webpack-cli/info@1.5.0': - resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} - peerDependencies: - webpack-cli: 4.x.x - - '@webpack-cli/info@2.0.2': - resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: ^5.94.0 - webpack-cli: 5.x.x - - '@webpack-cli/info@3.0.1': - resolution: {integrity: sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==} - engines: {node: '>=18.12.0'} - peerDependencies: - webpack: ^5.94.0 - webpack-cli: 6.x.x - - '@webpack-cli/serve@1.7.0': - resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} - peerDependencies: - webpack-cli: 4.x.x - webpack-dev-server: '*' - peerDependenciesMeta: - webpack-dev-server: - optional: true - - '@webpack-cli/serve@2.0.5': - resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: ^5.94.0 - webpack-cli: 5.x.x - webpack-dev-server: '*' - peerDependenciesMeta: - webpack-dev-server: - optional: true - - '@webpack-cli/serve@3.0.1': - resolution: {integrity: sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==} - engines: {node: '>=18.12.0'} - peerDependencies: - webpack: ^5.94.0 - webpack-cli: 6.x.x - webpack-dev-server: '*' - peerDependenciesMeta: - webpack-dev-server: - optional: true - - '@xmldom/xmldom@0.7.13': - resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} - 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==} - engines: {node: '>=10.0.0'} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15': - resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} - engines: {node: '>=14.15.0'} - peerDependencies: - esbuild: ^0.25.0 - - '@yarnpkg/fslib@2.10.3': - resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} - - '@yarnpkg/libzip@2.3.0': - resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} - - abab@1.0.4: - resolution: {integrity: sha512-I+Wi+qiE2kUXyrRhNsWv6XsjUTBJjSoVSctKNBfLG5zG/Xe7Rjbxf13+vqYHNTwHaFU+FtSlVxOCTiMEVtPv0A==} - deprecated: Use your platform's native atob() and btoa() methods instead - - abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead - - abbrev@1.0.9: - resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} - - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - accepts@2.0.0: - resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} - engines: {node: '>= 0.6'} - - acorn-globals@3.1.0: - resolution: {integrity: sha512-uWttZCk96+7itPxK8xCzY86PnxKTMrReKDqrHzv42VQY0K30PUO8WY13WMOuI+cOdX4EIdzdvQ8k6jkuGRFMYw==} - - acorn-globals@4.3.4: - resolution: {integrity: sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==} - - acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - - acorn-import-phases@1.0.4: - resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} - engines: {node: '>=10.13.0'} - peerDependencies: - acorn: ^8.14.0 - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@6.2.0: - resolution: {integrity: sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==} - engines: {node: '>=0.4.0'} - - acorn-walk@7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - - acorn@4.0.13: - resolution: {integrity: sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@5.7.4: - resolution: {integrity: sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@6.4.2: - resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - - address@1.0.3: - resolution: {integrity: sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==} - engines: {node: '>= 0.12.0'} - - address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - - adm-zip@0.5.16: - resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} - engines: {node: '>=12.0'} - - agent-base@5.1.1: - resolution: {integrity: sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==} - engines: {node: '>= 6.0.0'} - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} - engines: {node: '>= 14'} - - agentkeepalive@4.6.0: - resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} - engines: {node: '>= 8.0.0'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - aggregate-error@4.0.1: - resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} - engines: {node: '>=12'} - - airbnb-js-shims@2.2.1: - resolution: {integrity: sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ==} - - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - - ajv@5.5.2: - resolution: {integrity: sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==} - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - - alphanum-sort@1.0.2: - resolution: {integrity: sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==} - - amdefine@0.1.1: - resolution: {integrity: sha512-cE/769sItEDt5sSdqmrWMsat+XaA5FJiEou+ZwlY7ef/Jf/517k6nYyUIRPR2o/QbpBg4FiYXj9GyRGNg5f/bg==} - engines: {node: '>=0.4.2'} - - amdefine@1.0.1: - resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} - engines: {node: '>=0.4.2'} - - anser@2.3.2: - resolution: {integrity: sha512-PMqBCBvrOVDRqLGooQb+z+t1Q0PiPyurUQeZRR5uHBOVZcW8B04KMmnT12USnhpNX2wCPagWzLVppQMUG3u0Dw==} - - ansi-align@2.0.0: - resolution: {integrity: sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==} - - ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - - ansi-colors@1.1.0: - resolution: {integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==} - engines: {node: '>=0.10.0'} - - ansi-colors@3.2.4: - resolution: {integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==} - engines: {node: '>=6'} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-escapes@1.4.0: - resolution: {integrity: sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==} - engines: {node: '>=0.10.0'} - - ansi-escapes@3.2.0: - resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} - engines: {node: '>=4'} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} - engines: {node: '>=18'} - - ansi-html-community@0.0.8: - resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} - hasBin: true - - ansi-html@0.0.9: - resolution: {integrity: sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==} - engines: {'0': node >= 0.8.0} - hasBin: true - - ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - - ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - - ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - ansi-to-html@0.6.15: - resolution: {integrity: sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==} - engines: {node: '>=8.0.0'} - hasBin: true - - ansi-wrap@0.1.0: - resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==} - engines: {node: '>=0.10.0'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@1.3.2: - resolution: {integrity: sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==} - - anymatch@2.0.0: - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - apg-lite@1.0.5: - resolution: {integrity: sha512-SlI+nLMQDzCZfS39ihzjGp3JNBQfJXyMi6cg9tkLOCPVErgFsUIAEdO9IezR7kbP5Xd0ozcPNQBkf9TO5cHgWw==} - - app-root-dir@1.0.2: - resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} - - append-transform@0.4.0: - resolution: {integrity: sha512-Yisb7ew0ZEyDtRYQ+b+26o9KbiYPFxwcsxKzbssigzRRMJ9LpExPVUg6Fos7eP7yP3q7///tzze4nm4lTptPBw==} - engines: {node: '>=0.10.0'} - - applicationinsights@1.7.4: - resolution: {integrity: sha512-XFLsNlcanpjFhHNvVWEfcm6hr7lu9znnb6Le1Lk5RE03YUV9X2B2n2MfM4kJZRrUdV+C0hdHxvWyv+vWoLfY7A==} - - aproba@1.2.0: - resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} - - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - are-we-there-yet@1.1.7: - resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} - deprecated: This package is no longer supported. - - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - - are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-hidden@1.2.6: - resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} - engines: {node: '>=10'} - - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} - - arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - - arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - - array-buffer-byte-length@1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} - - array-equal@1.0.2: - resolution: {integrity: sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==} - - array-filter@0.0.1: - resolution: {integrity: sha512-VW0FpCIhjZdarWjIz8Vpva7U95fl2Jn+b+mmFFMLn8PIVscOQcAgEznwUzTEuUHuqZqIxwzRlcaN/urTFFQoiw==} - - array-find-index@1.0.2: - resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} - engines: {node: '>=0.10.0'} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - array-includes@3.1.9: - resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} - engines: {node: '>= 0.4'} - - array-map@0.0.1: - resolution: {integrity: sha512-sxHIeJTGEsRC8/hYkZzdJNNPZ41EXHVys7pqMw1iwE/Kx8/hto0UbDuGQsSJ0ujPovj9qUZl6EOY/EiZ2g3d9Q==} - - array-reduce@0.0.0: - resolution: {integrity: sha512-8jR+StqaC636u7h3ye1co3lQRefgVVUQUhuAmRbDqIMeR2yuXzRvkCNQiQ5J/wbREmoBLNtp13dhaaVpZQDRUw==} - - array-union@1.0.2: - resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} - engines: {node: '>=0.10.0'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array-uniq@1.0.3: - resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} - engines: {node: '>=0.10.0'} - - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - - array.prototype.findlastindex@1.2.6: - resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} - - array.prototype.map@1.0.8: - resolution: {integrity: sha512-YocPM7bYYu2hXGxWpb5vwZ8cMeudNHYtYBcUDY4Z1GWa53qcnQMWSl25jeBHNzitjl9HW2AWW4ro/S/nftUaOQ==} - engines: {node: '>= 0.4'} - - array.prototype.reduce@1.0.8: - resolution: {integrity: sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==} - engines: {node: '>= 0.4'} - - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} - - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - - asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - - assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - - ast-types@0.14.2: - resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} - engines: {node: '>=4'} - - ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} - - astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - - astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - - async-each@1.0.6: - resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} - - async-foreach@0.1.3: - resolution: {integrity: sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==} - - async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} - - async-hook-jl@1.7.6: - resolution: {integrity: sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==} - engines: {node: ^4.7 || >=6.9 || >=7.3} - - async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - - async-listener@0.6.10: - resolution: {integrity: sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==} - engines: {node: <=0.11.8 || >0.11.10} - - async@1.5.2: - resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} - - async@2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - asyncro@3.0.0: - resolution: {integrity: sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg==} - - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - - atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - - autolinker@3.16.2: - resolution: {integrity: sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==} - - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - autoprefixer@6.7.7: - resolution: {integrity: sha512-WKExI/eSGgGAkWAO+wMVdFObZV7hQen54UpD1kCCTN3tvlL3W1jL4+lPP/M7MwoP7Q4RHzKtO3JQ4HxYEcd+xQ==} - - autoprefixer@7.1.6: - resolution: {integrity: sha512-C9yv/UF3X+eJTi/zvfxuyfxmLibYrntpF3qoJYrMeQwgUJOZrZvpJiMG2FMQ3qnhWtF/be4pYONBBw95ZGe3vA==} - - autoprefixer@9.8.8: - resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} - hasBin: true - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - await-notify@1.0.1: - resolution: {integrity: sha512-eT6XN2ycPKvuiffzUNmU0dnGmmLw+TexMW7UKOyf5utdVrWx14PR2acRIfy6ZfFWRAv8twt1X74VUgd9RnDmfQ==} - - aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - - aws4@1.13.2: - resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} - - axe-core@4.10.3: - resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} - engines: {node: '>=4'} - - axios@1.9.0: - resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} - - axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - - azure-devops-node-api@12.5.0: - resolution: {integrity: sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==} - - babel-code-frame@6.26.0: - resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} - - babel-core@6.26.3: - resolution: {integrity: sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==} - - babel-core@7.0.0-bridge.0: - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-eslint@10.1.0: - resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} - engines: {node: '>=6'} - deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. - peerDependencies: - eslint: '>= 4.12.1' - - babel-generator@6.26.1: - resolution: {integrity: sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==} - - babel-helper-builder-binary-assignment-operator-visitor@6.24.1: - resolution: {integrity: sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==} - - babel-helper-builder-react-jsx@6.26.0: - resolution: {integrity: sha512-02I9jDjnVEuGy2BR3LRm9nPRb/+Ja0pvZVLr1eI5TYAA/dB0Xoc+WBo50+aDfhGDLhlBY1+QURjn9uvcFd8gzg==} - - babel-helper-call-delegate@6.24.1: - resolution: {integrity: sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==} - - babel-helper-define-map@6.26.0: - resolution: {integrity: sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==} - - babel-helper-explode-assignable-expression@6.24.1: - resolution: {integrity: sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==} - - babel-helper-function-name@6.24.1: - resolution: {integrity: sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==} - - babel-helper-get-function-arity@6.24.1: - resolution: {integrity: sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==} - - babel-helper-hoist-variables@6.24.1: - resolution: {integrity: sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==} - - babel-helper-optimise-call-expression@6.24.1: - resolution: {integrity: sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==} - - babel-helper-regex@6.26.0: - resolution: {integrity: sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg==} - - babel-helper-remap-async-to-generator@6.24.1: - resolution: {integrity: sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==} - - babel-helper-replace-supers@6.24.1: - resolution: {integrity: sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==} - - babel-helpers@6.24.1: - resolution: {integrity: sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==} - - babel-jest@20.0.3: - resolution: {integrity: sha512-eAycDKZn+m6jMBv5KMXRKttDeoDUE7Y6eQpeiF4ip0lLaI4uwGNhJIdVK2RptHjO9N9RJ2gONMn2XE67wBdf8A==} - - babel-jest@25.5.1: - resolution: {integrity: sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==} - engines: {node: '>= 8.3'} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - - babel-loader@10.0.0: - resolution: {integrity: sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==} - engines: {node: ^18.20.0 || ^20.10.0 || >=22.0.0} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: ^5.94.0 - - babel-loader@7.1.2: - resolution: {integrity: sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==} - engines: {node: '>=4'} - peerDependencies: - babel-core: 6 || 7 || ^7.0.0-alpha || ^7.0.0-beta || ^7.0.0-rc - webpack: ^5.94.0 - - babel-loader@8.4.1: - resolution: {integrity: sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: ^5.94.0 - - babel-loader@9.2.1: - resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: ^5.94.0 - - babel-messages@6.23.0: - resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} - - babel-plugin-add-react-displayname@0.0.5: - resolution: {integrity: sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw==} - - babel-plugin-annotate-pure-calls@0.4.0: - resolution: {integrity: sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA==} - peerDependencies: - '@babel/core': ^6.0.0-0 || 7.x - - babel-plugin-apply-mdx-type-prop@1.6.22: - resolution: {integrity: sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==} - peerDependencies: - '@babel/core': ^7.11.6 - - babel-plugin-check-es2015-constants@6.22.0: - resolution: {integrity: sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==} - - babel-plugin-dev-expression@0.2.3: - resolution: {integrity: sha512-rP5LK9QQTzCW61nVVzw88En1oK8t8gTsIeC6E61oelxNsU842yMjF0G1MxhvUpCkxCEIj7sE8/e5ieTheT//uw==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-plugin-dynamic-import-node@1.1.0: - resolution: {integrity: sha512-tTfZbM9Ecwj3GK50mnPrUpinTwA4xXmDiQGCk/aBYbvl1+X8YqldK86wZ1owVJ4u3mrKbRlXMma80J18qwiaTQ==} - - babel-plugin-extract-import-names@1.6.22: - resolution: {integrity: sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==} - - babel-plugin-istanbul@4.1.6: - resolution: {integrity: sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==} - - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-jest-hoist@20.0.3: - resolution: {integrity: sha512-rnyXaCLaHX6BjzT9h4UI1xK7oobCwtLfhompk0qxbcQNhw8JEidggjO1KonVrpdd2+q3QAww3DwVdTYs0g373Q==} - - babel-plugin-jest-hoist@22.4.4: - resolution: {integrity: sha512-DUvGfYaAIlkdnygVIEl0O4Av69NtuQWcrjMOv6DODPuhuGLDnbsARz3AwiiI/EkIMMlxQDUcrZ9yoyJvTNjcVQ==} - - babel-plugin-jest-hoist@25.5.0: - resolution: {integrity: sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==} - engines: {node: '>= 8.3'} - - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - babel-plugin-macros@2.8.0: - resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} - - babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} - - babel-plugin-named-exports-order@0.0.2: - resolution: {integrity: sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw==} - - babel-plugin-polyfill-corejs2@0.4.13: - resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.1.7: - resolution: {integrity: sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-polyfill-corejs3@0.11.1: - resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.0.4: - resolution: {integrity: sha512-+/uCzO9JTYVZVGCpZpVAQkgPGt2zkR0VYiZvJ4aVoCe4ccgpKvNQqcjzAgQzSsjK64Jhc5hvrCR3l0087BevkA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-polyfill-regenerator@0.6.4: - resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-react-docgen@4.2.1: - resolution: {integrity: sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==} - - babel-plugin-syntax-async-functions@6.13.0: - resolution: {integrity: sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==} - - babel-plugin-syntax-class-properties@6.13.0: - resolution: {integrity: sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA==} - - babel-plugin-syntax-dynamic-import@6.18.0: - resolution: {integrity: sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA==} - - babel-plugin-syntax-exponentiation-operator@6.13.0: - resolution: {integrity: sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==} - - babel-plugin-syntax-flow@6.18.0: - resolution: {integrity: sha512-HbTDIoG1A1op7Tl/wIFQPULIBA61tsJ8Ntq2FAhLwuijrzosM/92kAfgU1Q3Kc7DH/cprJg5vDfuTY4QUL4rDA==} - - babel-plugin-syntax-jsx@6.18.0: - resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} - - babel-plugin-syntax-object-rest-spread@6.13.0: - resolution: {integrity: sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==} - - babel-plugin-syntax-trailing-function-commas@6.22.0: - resolution: {integrity: sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==} - - babel-plugin-transform-async-to-generator@6.24.1: - resolution: {integrity: sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==} - - babel-plugin-transform-class-properties@6.24.1: - resolution: {integrity: sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg==} - - babel-plugin-transform-es2015-arrow-functions@6.22.0: - resolution: {integrity: sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==} - - babel-plugin-transform-es2015-block-scoped-functions@6.22.0: - resolution: {integrity: sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A==} - - babel-plugin-transform-es2015-block-scoping@6.26.0: - resolution: {integrity: sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==} - - babel-plugin-transform-es2015-classes@6.24.1: - resolution: {integrity: sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==} - - babel-plugin-transform-es2015-computed-properties@6.24.1: - resolution: {integrity: sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==} - - babel-plugin-transform-es2015-destructuring@6.23.0: - resolution: {integrity: sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==} - - babel-plugin-transform-es2015-duplicate-keys@6.24.1: - resolution: {integrity: sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug==} - - babel-plugin-transform-es2015-for-of@6.23.0: - resolution: {integrity: sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==} - - babel-plugin-transform-es2015-function-name@6.24.1: - resolution: {integrity: sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==} - - babel-plugin-transform-es2015-literals@6.22.0: - resolution: {integrity: sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==} - - babel-plugin-transform-es2015-modules-amd@6.24.1: - resolution: {integrity: sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==} - - babel-plugin-transform-es2015-modules-commonjs@6.26.2: - resolution: {integrity: sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==} - - babel-plugin-transform-es2015-modules-systemjs@6.24.1: - resolution: {integrity: sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==} - - babel-plugin-transform-es2015-modules-umd@6.24.1: - resolution: {integrity: sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==} - - babel-plugin-transform-es2015-object-super@6.24.1: - resolution: {integrity: sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==} - - babel-plugin-transform-es2015-parameters@6.24.1: - resolution: {integrity: sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==} - - babel-plugin-transform-es2015-shorthand-properties@6.24.1: - resolution: {integrity: sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==} - - babel-plugin-transform-es2015-spread@6.22.0: - resolution: {integrity: sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==} - - babel-plugin-transform-es2015-sticky-regex@6.24.1: - resolution: {integrity: sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ==} - - babel-plugin-transform-es2015-template-literals@6.22.0: - resolution: {integrity: sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==} - - babel-plugin-transform-es2015-typeof-symbol@6.23.0: - resolution: {integrity: sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw==} - - babel-plugin-transform-es2015-unicode-regex@6.24.1: - resolution: {integrity: sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ==} - - babel-plugin-transform-exponentiation-operator@6.24.1: - resolution: {integrity: sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==} - - babel-plugin-transform-flow-strip-types@6.22.0: - resolution: {integrity: sha512-TxIM0ZWNw9oYsoTthL3lvAK3+eTujzktoXJg4ubGvICGbVuXVYv5hHv0XXpz8fbqlJaGYY4q5SVzaSmsg3t4Fg==} - - babel-plugin-transform-object-rest-spread@6.26.0: - resolution: {integrity: sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==} - - babel-plugin-transform-react-constant-elements@6.23.0: - resolution: {integrity: sha512-22TG15ONh0FWXj98Y5KOpMmEfDIMJa66rg58LzxssT0LUEFN8utkM1NmBEBx1WKkJFa6spK9aR4yLbDQntPxhg==} - - babel-plugin-transform-react-display-name@6.25.0: - resolution: {integrity: sha512-QLYkLiZeeED2PKd4LuXGg5y9fCgPB5ohF8olWUuETE2ryHNRqqnXlEVP7RPuef89+HTfd3syptMGVHeoAu0Wig==} - - babel-plugin-transform-react-jsx-self@6.22.0: - resolution: {integrity: sha512-Y3ZHP1nunv0U1+ysTNwLK39pabHj6cPVsfN4TRC7BDBfbgbyF4RifP5kd6LnbuMV9wcfedQMe7hn1fyKc7IzTQ==} - - babel-plugin-transform-react-jsx-source@6.22.0: - resolution: {integrity: sha512-pcDNDsZ9q/6LJmujQ/OhjeoIlp5Nl546HJ2yiFIJK3mYpgNXhI5/S9mXfVxu5yqWAi7HdI7e/q6a9xtzwL69Vw==} - - babel-plugin-transform-react-jsx@6.24.1: - resolution: {integrity: sha512-s+q/Y2u2OgDPHRuod3t6zyLoV8pUHc64i/O7ZNgIOEdYTq+ChPeybcKBi/xk9VI60VriILzFPW+dUxAEbTxh2w==} - - babel-plugin-transform-regenerator@6.26.0: - resolution: {integrity: sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==} - - babel-plugin-transform-rename-import@2.3.0: - resolution: {integrity: sha512-dPgJoT57XC0PqSnLgl2FwNvxFrWlspatX2dkk7yjKQj5HHGw071vAcOf+hqW8ClqcBDMvEbm6mevn5yHAD8mlQ==} - - babel-plugin-transform-runtime@6.23.0: - resolution: {integrity: sha512-cpGMVC1vt/772y3jx1gwSaTitQVZuFDlllgreMsZ+rTYC6jlYXRyf5FQOgSnckOiA5QmzbXTyBY2A5AmZXF1fA==} - - babel-plugin-transform-strict-mode@6.24.1: - resolution: {integrity: sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==} - - babel-plugin-transform-typescript-metadata@0.3.2: - resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} - peerDependencies: - '@babel/core': ^7 - '@babel/traverse': ^7 - peerDependenciesMeta: - '@babel/traverse': - optional: true - - babel-preset-current-node-syntax@0.1.4: - resolution: {integrity: sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-env@1.6.1: - resolution: {integrity: sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==} - - babel-preset-flow@6.23.0: - resolution: {integrity: sha512-PQZFJXnM3d80Vq4O67OE6EMVKIw2Vmzy8UXovqulNogCtblWU8rzP7Sm5YgHiCg4uejUxzCkHfNXQ4Z6GI+Dhw==} - - babel-preset-jest@20.0.3: - resolution: {integrity: sha512-qeYOCuriyIDRKDE/dByN/yCc/przV2LdHbxldeSsjOr1khQi2o2CzrHXUQM7dSWfmqwxTifznw+bNg59kkI18w==} - - babel-preset-jest@22.4.4: - resolution: {integrity: sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA==} - - babel-preset-jest@25.5.0: - resolution: {integrity: sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==} - engines: {node: '>= 8.3'} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-react-app@3.1.2: - resolution: {integrity: sha512-/sh5Qd5T08PYa6t4kuCdKh9tXp6/m/Jwyx7PJTqugsYMfsDUJMlBXOs5EwFODHprzjWrmQ0SydnMZu9FY4MZYg==} - peerDependencies: - babel-runtime: ^6.23.0 - - babel-preset-react@6.24.1: - resolution: {integrity: sha512-phQe3bElbgF887UM0Dhz55d22ob8czTL1kbhZFwpCE6+R/X9kHktfwmx9JZb+bBSVRGphP5tZ9oWhVhlgjrX3Q==} - - babel-register@6.26.0: - resolution: {integrity: sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==} - - babel-runtime@6.26.0: - resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} - - babel-template@6.26.0: - resolution: {integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==} - - babel-traverse@6.26.0: - resolution: {integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==} - - babel-types@6.26.0: - resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} - - babylon@6.18.0: - resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} - hasBin: true - - bail@1.0.5: - resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} - - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - - balanced-match@0.4.2: - resolution: {integrity: sha512-STw03mQKnGUYtoNjmowo4F2cRmIIxYEGiMsjjwla/u5P1lxadj/05WkNaFjNiKTgJkj8KiXbgAiRTmcQRwQNtg==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - balanced-match@2.0.0: - resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} - - base16@1.0.0: - resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - basic-auth@2.0.1: - resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} - engines: {node: '>= 0.8'} - - batch@0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - - bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - - better-opn@2.1.1: - resolution: {integrity: sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==} - engines: {node: '>8.0.0'} - - better-opn@3.0.2: - resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} - engines: {node: '>=12.0.0'} - - big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - - big.js@3.2.0: - resolution: {integrity: sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==} - - big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - - binary-extensions@1.13.1: - resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} - engines: {node: '>=0.10.0'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - binary@0.3.0: - resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} - - binaryextensions@6.11.0: - resolution: {integrity: sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==} - engines: {node: '>=4'} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bl@1.2.3: - resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - block-stream@0.0.9: - resolution: {integrity: sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==} - engines: {node: 0.4 || >=0.5.8} - - bluebird@3.4.7: - resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} - - bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - - blueimp-md5@2.19.0: - resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} - - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - body-parser@2.2.0: - resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} - engines: {node: '>=18'} - - bonjour-service@1.3.0: - resolution: {integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - boundary@2.0.0: - resolution: {integrity: sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==} - - bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - - boxen@1.3.0: - resolution: {integrity: sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==} - engines: {node: '>=4'} - - boxen@5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} - - bplist-parser@0.1.1: - resolution: {integrity: sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q==} - - bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-assert@1.2.1: - resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} - - browser-process-hrtime@1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - - browser-resolve@1.11.3: - resolution: {integrity: sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - browserify-zlib@0.1.4: - resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - - browserslist@1.7.7: - resolution: {integrity: sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==} - deprecated: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools. - hasBin: true - - browserslist@2.11.3: - resolution: {integrity: sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==} - deprecated: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools. - hasBin: true - - browserslist@4.25.0: - resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - browserslist@4.25.1: - resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - - bser@1.0.2: - resolution: {integrity: sha512-kKi2swDowbCsnwsYyJnMkz3N1utuJfnWcvzxVX45nWuumTNEkig97rvLVN60+8OWgAWuJdIyEfTPTZqyPoklwA==} - - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - - buffer-alloc-unsafe@1.1.0: - resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} - - buffer-alloc@1.2.0: - resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} - - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - - buffer-fill@1.0.0: - resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer-indexof-polyfill@1.0.2: - resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==} - engines: {node: '>=0.10'} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - buffers@0.1.1: - resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} - engines: {node: '>=0.2.0'} - - bufferstreams@1.1.3: - resolution: {integrity: sha512-HaJnVuslRF4g2kSDeyl++AaVizoitCpL9PglzCYwy0uHHyvWerfvEb8jWmYbF1z4kiVFolGomnxSGl+GUQp2jg==} - engines: {node: '>= 0.10.0'} - - bufferstreams@3.0.0: - resolution: {integrity: sha512-Qg0ggJUWJq90vtg4lDsGN9CDWvzBMQxhiEkSOD/sJfYt6BLect3eV1/S6K7SCSKJ34n60rf6U5eUPmQENVE4UA==} - engines: {node: '>=8.12.0'} - - builtin-modules@1.1.1: - resolution: {integrity: sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==} - engines: {node: '>=0.10.0'} - - builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - - bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} - engines: {node: '>=18'} - - byline@5.0.0: - resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==} - engines: {node: '>=0.10.0'} - - bytes-iec@3.1.1: - resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} - engines: {node: '>= 0.8'} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - c8@10.1.3: - resolution: {integrity: sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - monocart-coverage-reports: ^2 - peerDependenciesMeta: - monocart-coverage-reports: - optional: true - - c8@7.14.0: - resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==} - engines: {node: '>=10.12.0'} - hasBin: true - - cacache@10.0.4: - resolution: {integrity: sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==} - - cacache@15.3.0: - resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} - engines: {node: '>= 10'} - - cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - cacheable-lookup@7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} - engines: {node: '>=14.16'} - - cacheable-request@10.2.14: - resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} - engines: {node: '>=14.16'} - - cacheable-request@12.0.1: - resolution: {integrity: sha512-Yo9wGIQUaAfIbk+qY0X4cDQgCosecfBe3V9NSyeY4qPC2SAkbCS4Xj79VP8WOzitpJUZKc/wsRCYF5ariDIwkg==} - engines: {node: '>=18'} - - cacheable@1.10.0: - resolution: {integrity: sha512-SSgQTAnhd7WlJXnGlIi4jJJOiHzgnM5wRMEPaXAU4kECTAMpBoYKoZ9i5zHmclIEZbxcu3j7yY/CF8DTmwIsHg==} - - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} - - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - - call-me-maybe@1.0.2: - resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} - - callsite@1.0.0: - resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} - - callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camel-case@3.0.0: - resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} - - camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - camelcase-keys@2.1.0: - resolution: {integrity: sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==} - engines: {node: '>=0.10.0'} - - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - - camelcase-keys@7.0.2: - resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} - engines: {node: '>=12'} - - camelcase@2.1.1: - resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} - engines: {node: '>=0.10.0'} - - camelcase@3.0.0: - resolution: {integrity: sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==} - engines: {node: '>=0.10.0'} - - camelcase@4.1.0: - resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} - engines: {node: '>=4'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - caniuse-api@1.6.1: - resolution: {integrity: sha512-SBTl70K0PkDUIebbkXrxWqZlHNs0wRgRD6QZ8guctShjbh63gEPfF+Wj0Yw+75f5Y8tSzqAI/NcisYv/cCah2Q==} - - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - - caniuse-db@1.0.30001724: - resolution: {integrity: sha512-yNLeCTKQVuG1ZPknCQ9xhLIKTrGc5fWgadIf1PA8tqiS0ckZEcDfuacS/IQRO6kpv9KyoqJavrpQmosCAB+ccA==} - - caniuse-lite@1.0.30001724: - resolution: {integrity: sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==} - - caniuse-lite@1.0.30001727: - resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} - - capture-exit@2.0.0: - resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} - engines: {node: 6.* || 8.* || >= 10.*} - - capture-stack-trace@1.0.2: - resolution: {integrity: sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==} - engines: {node: '>=0.10.0'} - - case-sensitive-paths-webpack-plugin@2.1.1: - resolution: {integrity: sha512-Zg7Z9IuE0T+Ilg+o0IVpZXHAcN6VHO80BVxak3RIB1pmcbiITr06WlZ45Xa/KGQ7fQ/ar6C1KEkeI93tojBJPQ==} - engines: {node: '>4.0'} - - case-sensitive-paths-webpack-plugin@2.4.0: - 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==} - - ccount@1.1.0: - resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} - - chai@5.2.1: - resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==} - engines: {node: '>=18'} - - chainsaw@0.1.0: - resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} - - chalk@1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - - chardet@0.4.2: - resolution: {integrity: sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==} - - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@1.1.0: - resolution: {integrity: sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==} - engines: {node: '>=18.17'} - - chokidar@1.7.0: - resolution: {integrity: sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - - ci-info@1.6.0: - resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==} - - ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - 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==} - - clap@1.2.3: - resolution: {integrity: sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==} - engines: {node: '>=0.10.0'} - - classnames@2.5.1: - resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - - clean-css@4.2.4: - resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} - engines: {node: '>= 4.0'} - - clean-css@5.3.3: - resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} - engines: {node: '>= 10.0'} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - clean-stack@4.2.0: - resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} - engines: {node: '>=12'} - - cli-boxes@1.0.0: - resolution: {integrity: sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==} - engines: {node: '>=0.10.0'} - - cli-boxes@2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - - cli-color@2.0.4: - resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} - engines: {node: '>=0.10'} - - cli-cursor@2.1.0: - resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} - engines: {node: '>=4'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} - - cli-spinners@1.3.1: - resolution: {integrity: sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==} - engines: {node: '>=4'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cli-table3@0.6.5: - 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-width@2.2.1: - resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} - - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - - client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - - clipboard-copy@4.0.1: - resolution: {integrity: sha512-wOlqdqziE/NNTUJsfSgXmBMIrYmfd5V0HCGsR8uAKHcg+h9NENWINcfRjtWGU77wDHC8B8ijV4hMTGYbrKovng==} - - clipboardy@4.0.0: - resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} - engines: {node: '>=18'} - - cliui@3.2.0: - resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==} - - cliui@4.1.0: - resolution: {integrity: sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==} - - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - closest@0.0.1: - resolution: {integrity: sha512-HafRXTAiWp5nf6kxOy2EoIGSsJMn0zew9E5zp3Dy/8CXdp8GvVjZn1TSMEVdDxSP/acXZcWJWiIgF83Di7M1Ew==} - - cls-hooked@4.2.2: - resolution: {integrity: sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==} - engines: {node: ^4.7 || >=6.9 || >=7.3 || >=8.2.1} - - clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - coa@1.0.4: - resolution: {integrity: sha512-KAGck/eNAmCL0dcT3BiuYwLbExK6lduR8DxM3C1TyDzaXhZHyZ8ooX5I5+na2e3dPFuibfxrGdorr0/Lr7RYCQ==} - engines: {node: '>= 0.8.0'} - - cockatiel@3.2.1: - resolution: {integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==} - engines: {node: '>=16'} - - code-block-writer@13.0.3: - resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} - - code-point-at@1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - - codemirror-graphql@2.2.3: - resolution: {integrity: sha512-tblvRpDlys/Q87TIOXOBpHwGmc1m9r4lGr+F0+Px5G60ZBtyWcMQFyGCxJvri4KlpQldVujhTmjO5HGeR4s4BQ==} - peerDependencies: - '@codemirror/language': 6.0.0 - 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==} - - collapse-white-space@1.0.6: - resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} - - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - 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-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - - color@0.11.4: - resolution: {integrity: sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==} - - color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - - colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - - colormin@1.1.2: - resolution: {integrity: sha512-XSEQUUQUR/lXqGyddiNH3XYFUPYlYr1vXy9rTFMsSOw+J7Q6EQkdlQIrTlYn4TccpsOaUE1PYQNjBn20gwCdgQ==} - - colors@1.1.2: - resolution: {integrity: sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==} - engines: {node: '>=0.1.90'} - - colors@1.4.0: - 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'} - - comma-separated-tokens@1.0.8: - resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} - - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - - commander@13.1.0: - resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} - engines: {node: '>=18'} - - commander@14.0.0: - resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} - engines: {node: '>=20'} - - commander@2.13.0: - resolution: {integrity: sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==} - - commander@2.17.1: - resolution: {integrity: sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==} - - commander@2.19.0: - resolution: {integrity: sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - commander@8.3.0: - 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==} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - compare-versions@6.1.1: - resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} - - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - - compression@1.8.0: - resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} - engines: {node: '>= 0.8.0'} - - concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - - concat-with-sourcemaps@1.1.0: - resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} - - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - - configstore@3.1.5: - resolution: {integrity: sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==} - engines: {node: '>=4'} - - confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - - connect-history-api-fallback@2.0.0: - resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} - engines: {node: '>=0.8'} - - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} - - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - - constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - - 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-type-parser@1.0.2: - resolution: {integrity: sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==} - deprecated: Use whatwg-mimetype instead - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - - continuation-local-storage@3.2.1: - resolution: {integrity: sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==} - - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie-signature@1.2.2: - resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} - engines: {node: '>=6.6.0'} - - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} - - copy-concurrently@1.0.5: - resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} - deprecated: This package is no longer supported. - - copy-to-clipboard@3.3.3: - resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} - - copy-webpack-plugin@13.0.0: - resolution: {integrity: sha512-FgR/h5a6hzJqATDGd9YG41SeDViH+0bkHn6WNXCi5zKAZkeESeSxLySSsFLHqLEVCh0E+rITmCf0dusXWYukeQ==} - engines: {node: '>= 18.12.0'} - peerDependencies: - webpack: ^5.94.0 - - copyfiles@2.4.1: - resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} - hasBin: true - - core-js-compat@3.43.0: - resolution: {integrity: sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==} - - core-js-pure@3.43.0: - resolution: {integrity: sha512-i/AgxU2+A+BbJdMxh3v7/vxi2SbFqxiFmg6VsDwYB4jkucrd1BZNA9a9gphC0fYMG5IBSgQcbQnk865VCLe7xA==} - - 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.43.0: - resolution: {integrity: sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA==} - - core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cors-anywhere@0.4.4: - resolution: {integrity: sha512-8OBFwnzMgR4mNrAeAyOLB2EruS2z7u02of2bOu7i9kKYlZG+niS7CTHLPgEXKWW2NAOJWRry9RRCaL9lJRjNqg==} - engines: {node: '>=0.10.0'} - - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - - corser@2.0.1: - resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==} - engines: {node: '>= 0.4.0'} - - cosmiconfig@2.2.2: - resolution: {integrity: sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==} - engines: {node: '>=0.12'} - - cosmiconfig@6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} - - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - cp-file@7.0.0: - resolution: {integrity: sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==} - engines: {node: '>=8'} - - cpx@1.5.0: - resolution: {integrity: sha512-jHTjZhsbg9xWgsP2vuNW2jnnzBX+p4T+vNI9Lbjzs1n4KhOfa22bQppiFYLsWQKd8TzmL5aSP/Me3yfsCwXbDA==} - hasBin: true - - cpy@8.1.2: - resolution: {integrity: sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==} - engines: {node: '>=8'} - - create-error-class@3.0.2: - resolution: {integrity: sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==} - engines: {node: '>=0.10.0'} - - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - - create-storybook@9.0.17: - resolution: {integrity: sha512-ilnTYTiEA7Vw1+FCcGecwEgBUxYpsUnUmZkucV38JHUJDnE1MPKKvqi0qFG2x+zYiHA4X7j5IrYfKvh/X+H8+w==} - hasBin: true - - crelt@1.0.6: - resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} - - cron-expression-validator@1.0.20: - resolution: {integrity: sha512-g0osBTdp+1ryDw2vzlG6UpDPaa4fO94ZChF2R0lEnRurbuUEL74XEVX7xZJ13m4Mq/gb3ni6UQu8+Oqt+eocsw==} - - cron-parser@4.9.0: - resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} - engines: {node: '>=12.0.0'} - - cron-validator@1.3.1: - resolution: {integrity: sha512-C1HsxuPCY/5opR55G5/WNzyEGDWFVG+6GLrA+fW/sCTcP6A6NTjUP2AK7B8n2PyFs90kDG2qzwm8LMheADku6A==} - - cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - - cross-fetch@3.2.0: - resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} - - cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - - cross-spawn@6.0.6: - resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} - engines: {node: '>=4.8'} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - - crypto-random-string@1.0.0: - resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} - engines: {node: '>=4'} - - crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - - css-color-names@0.0.4: - resolution: {integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==} - - css-declaration-sorter@6.4.1: - resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} - engines: {node: ^10 || ^12 || >=14} - peerDependencies: - postcss: ^8.0.9 - - css-functions-list@3.2.3: - resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} - engines: {node: '>=12 || >=16'} - - css-loader@0.28.7: - resolution: {integrity: sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==} - engines: {node: '>=0.12.0 || >=4.3.0 <5.0.0 || >=5.10'} - - css-loader@3.6.0: - resolution: {integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==} - engines: {node: '>= 8.9.0'} - peerDependencies: - webpack: ^5.94.0 - - css-loader@5.2.7: - resolution: {integrity: sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^5.94.0 - - css-loader@6.11.0: - resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} - engines: {node: '>= 12.13.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.94.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - - css-loader@7.1.2: - resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.94.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - - css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-selector-tokenizer@0.7.3: - resolution: {integrity: sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==} - - css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - - css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - css.escape@1.5.1: - resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssnano-preset-default@5.2.14: - resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - cssnano-utils@3.1.0: - resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - cssnano@3.10.0: - resolution: {integrity: sha512-0o0IMQE0Ezo4b41Yrm8U6Rp9/Ag81vNXY1gZMnT1XhO4DpjEf2utKERqWJbOoz3g1Wdc1d3QSta/cIuJ1wSTEg==} - - cssnano@5.1.15: - resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - csso@2.3.2: - resolution: {integrity: sha512-FmCI/hmqDeHHLaIQckMhMZneS84yzUZdrWDAvJVVxOwcKE1P1LF9FGmzr1ktIQSxOw6fl3PaQsmfg+GN+VvR3w==} - engines: {node: '>=0.10.0'} - hasBin: true - - csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - - cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - - cssom@0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - - cssom@0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - - cssstyle@0.2.37: - resolution: {integrity: sha512-FUpKc+1FNBsHUr9IsfSGCovr8VuGOiiuzlgCyppKBjJi2jYTOFLN3oiiNRMIvYqbFzF38mqKj4BgcevzU5/kIA==} - - cssstyle@1.4.0: - resolution: {integrity: sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==} - - cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - cubic2quad@1.2.1: - resolution: {integrity: sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==} - - currently-unhandled@0.4.1: - resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} - engines: {node: '>=0.10.0'} - - cyclist@1.0.2: - resolution: {integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==} - - d@1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} - - dagre@0.8.5: - resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} - - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - - dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - - data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - - data-urls@1.1.0: - resolution: {integrity: sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==} - - data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} - - data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - - date-fns-tz@3.2.0: - resolution: {integrity: sha512-sg8HqoTEulcbbbVXeg84u5UnlsQa8GS5QXMqjjYIhS4abEVVKIUwe0/l/UhrZdKaL/W5eWZNlbTeEIiOXTcsBQ==} - peerDependencies: - date-fns: ^3.0.0 || ^4.0.0 - - date-fns@4.1.0: - resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} - - date-format@4.0.14: - resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} - engines: {node: '>=4.0'} - - debounce-promise@3.1.2: - resolution: {integrity: sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg==} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.1: - resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decache@4.6.2: - resolution: {integrity: sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==} - - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - - decamelize@5.0.1: - resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} - engines: {node: '>=10'} - - decimal.js@10.5.0: - resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} - - decode-named-character-reference@1.2.0: - resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} - - decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - - dedent@1.6.0: - resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - - deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - default-browser-id@1.0.4: - resolution: {integrity: sha512-qPy925qewwul9Hifs+3sx1ZYn14obHxpkX+mPD369w4Rzg+YkJBgi3SOvwUq81nWSjqGUegIgEPwD8u+HUnxlw==} - engines: {node: '>=0.10.0'} - hasBin: true - - default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} - engines: {node: '>=18'} - - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} - engines: {node: '>=18'} - - default-require-extensions@1.0.0: - resolution: {integrity: sha512-Dn2eAftOqXhNXs5f/Xjn7QTZ6kDYkx7u0EXQInN1oyYwsZysu11q7oTtaKcbzLxZRJiDHa8VmwpWmb4lY5FqgA==} - engines: {node: '>=0.10.0'} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - defined@1.0.1: - resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} - - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - - del-cli@5.1.0: - resolution: {integrity: sha512-xwMeh2acluWeccsfzE7VLsG3yTr7nWikbfw+xhMnpRrF15pGSkw+3/vJZWlGoE4I86UiLRNHicmKt4tkIX9Jtg==} - engines: {node: '>=14.16'} - hasBin: true - - del-cli@6.0.0: - resolution: {integrity: sha512-9nitGV2W6KLFyya4qYt4+9AKQFL+c0Ehj5K7V7IwlxTc6RMCfQUGY9E9pLG6e8TQjtwXpuiWIGGZb3mfVxyZkw==} - engines: {node: '>=18'} - hasBin: true - - del@2.2.2: - resolution: {integrity: sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==} - engines: {node: '>=0.10.0'} - - del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} - - del@7.1.0: - resolution: {integrity: sha512-v2KyNk7efxhlyHpjEvfyxaAihKKK0nWCuf6ZtqZcFFpQRG0bJ12Qsr0RpvsICMjAAZ8DOVCxrlqpxISlMHC4Kg==} - engines: {node: '>=14.16'} - - del@8.0.0: - resolution: {integrity: sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==} - engines: {node: '>=18'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - detab@2.0.4: - resolution: {integrity: sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==} - - detect-indent@4.0.0: - resolution: {integrity: sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==} - engines: {node: '>=0.10.0'} - - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} - engines: {node: '>=8'} - - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - - detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - - detect-package-manager@2.0.1: - resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} - engines: {node: '>=12'} - - detect-port-alt@1.1.6: - resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} - engines: {node: '>= 4.2.1'} - hasBin: true - - detect-port@1.6.1: - resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} - engines: {node: '>= 4.0.0'} - hasBin: true - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - dexie@4.0.11: - resolution: {integrity: sha512-SOKO002EqlvBYYKQSew3iymBoN2EQ4BDw/3yprjh7kAfFzjBYkaMNa/pZvcA7HSWlcKSQb9XhPe3wKyQ0x4A8A==} - - diagnostic-channel-publishers@0.3.5: - resolution: {integrity: sha512-AOIjw4T7Nxl0G2BoBPhkQ6i7T4bUd9+xvdYizwvG7vVAM1dvr+SDrcUudlmzwH0kbEwdR2V1EcnKT0wAeYLQNQ==} - peerDependencies: - diagnostic-channel: '*' - - diagnostic-channel@0.2.0: - resolution: {integrity: sha512-awkcaaNNi0RfUGJf7r2+K4oJs1OyiIG2m/Jwvyi0OeQxdw+UU/iwbiejTPa3tUeyXtBcp2fef0JOJNdD62r/zg==} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - diff-sequences@25.2.6: - resolution: {integrity: sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==} - engines: {node: '>= 8.3'} - - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - diff@3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - diff@7.0.0: - resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} - engines: {node: '>=0.3.1'} - - dir-glob@2.2.2: - resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} - engines: {node: '>=4'} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - dnd-core@16.0.1: - resolution: {integrity: sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==} - - dns-packet@5.6.1: - resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} - engines: {node: '>=6'} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - - dom-accessibility-api@0.6.3: - resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} - - dom-converter@0.2.0: - resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} - - dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - dom-urls@1.1.0: - resolution: {integrity: sha512-LNxCeExaNbczqMVfQUyLdd+r+smG7ixIa+doeyiJ7nTmL8aZRrJhHkEYBEYVGvYv7k2DOEBh2eKthoCmWpfICg==} - engines: {node: '>=0.8.0'} - - dom-walk@0.1.2: - resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domexception@1.0.1: - resolution: {integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==} - deprecated: Use your platform's native DOMException instead - - domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead - - domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - dompurify@3.2.4: - resolution: {integrity: sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==} - - domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - - dot-prop@4.2.1: - resolution: {integrity: sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==} - engines: {node: '>=4'} - - dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} - engines: {node: '>=12'} - - dotenv-expand@4.2.0: - resolution: {integrity: sha512-pHWVt6L/YkqbBCMb1hG6e7oO0WdMhlapDIibl+BZ9PncVE3i+G77uvNr8GUxW2ItSituOK8QOYC9oOJjwWD94A==} - - dotenv-expand@5.1.0: - resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} - - dotenv@16.3.2: - resolution: {integrity: sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==} - engines: {node: '>=12'} - - dotenv@16.5.0: - resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} - engines: {node: '>=12'} - - dotenv@16.6.1: - resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} - engines: {node: '>=12'} - - dotenv@4.0.0: - resolution: {integrity: sha512-XcaMACOr3JMVcEv0Y/iUM2XaOsATRZ3U1In41/1jjK6vJZ2PZbQ1bzCG8uvaByfaBpl9gqc9QWJovpUGBXLLYQ==} - engines: {node: '>=4.6.0'} - - dotenv@8.6.0: - resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} - engines: {node: '>=10'} - - drange@1.1.1: - resolution: {integrity: sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==} - engines: {node: '>=4'} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - duplexer2@0.1.4: - resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - - duplexer3@0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - - duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - - 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'} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - - electron-to-chromium@1.5.171: - resolution: {integrity: sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ==} - - electron-to-chromium@1.5.185: - resolution: {integrity: sha512-dYOZfUk57hSMPePoIQ1fZWl1Fkj+OshhEVuPacNKWzC1efe56OsHY3l/jCfiAgIICOU3VgOIdoq7ahg7r7n6MQ==} - - email-addresses@5.0.0: - resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==} - - emitter-listener@1.1.2: - resolution: {integrity: sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==} - - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} - - emoji-regex@7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - emojis-list@2.1.0: - resolution: {integrity: sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==} - engines: {node: '>= 0.10'} - - emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - - enabled@2.0.0: - resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - - encoding-sniffer@0.2.1: - resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} - - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - - end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - - endent@2.1.0: - resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} - - enhanced-resolve@3.4.1: - resolution: {integrity: sha512-ZaAux1rigq1e2nQrztHn4h2ugvpzZxs64qneNah+8Mh/K0CRqJFJc+UoXnUsq+1yX+DmQFPPdVqboKAJ89e0Iw==} - engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} - - enhanced-resolve@5.18.1: - resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} - engines: {node: '>=10.13.0'} - - enhanced-resolve@5.18.2: - resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} - engines: {node: '>=10.13.0'} - - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - - entities@2.1.0: - resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} - - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} - - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - - envinfo@7.14.0: - resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} - engines: {node: '>=4'} - hasBin: true - - environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} - engines: {node: '>=18'} - - err-code@1.1.2: - resolution: {integrity: sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==} - - err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - - errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - - es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} - engines: {node: '>= 0.4'} - - es-array-method-boxes-properly@1.0.0: - resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - - es-iterator-helpers@1.2.1: - resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.1.0: - resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} - engines: {node: '>= 0.4'} - - es-to-primitive@1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} - engines: {node: '>= 0.4'} - - es-toolkit@1.39.7: - resolution: {integrity: sha512-ek/wWryKouBrZIjkwW2BFf91CWOIMvoy2AE5YYgUrfWsJQM2Su1LoLtrw8uusEpN9RfqLlV/0FVNjT0WMv8Bxw==} - - es5-ext@0.10.64: - resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} - engines: {node: '>=0.10'} - - es5-shim@4.6.7: - resolution: {integrity: sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ==} - engines: {node: '>=0.4.0'} - - es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - - 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==} - - es6-symbol@3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} - - es6-weak-map@2.0.3: - resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} - - esbuild-plugin-alias@0.2.1: - resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} - - esbuild-register@3.6.0: - resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} - peerDependencies: - esbuild: ^0.25.0 - - esbuild@0.25.5: - resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} - engines: {node: '>=18'} - hasBin: true - - esbuild@0.25.6: - resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - escodegen@1.14.3: - resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} - engines: {node: '>=4.0'} - hasBin: true - - escodegen@1.8.1: - resolution: {integrity: sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==} - engines: {node: '>=0.12.0'} - hasBin: true - - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - - eslint-config-prettier@6.15.0: - resolution: {integrity: sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==} - hasBin: true - peerDependencies: - eslint: '>=3.14.1' - - eslint-config-react-app@5.2.1: - resolution: {integrity: sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==} - peerDependencies: - '@typescript-eslint/eslint-plugin': 2.x - '@typescript-eslint/parser': 2.x - babel-eslint: 10.x - eslint: 6.x - eslint-plugin-flowtype: 3.x || 4.x - eslint-plugin-import: 2.x - eslint-plugin-jsx-a11y: 6.x - eslint-plugin-react: 7.x - eslint-plugin-react-hooks: 1.x || 2.x - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-module-utils@2.12.1: - resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-flowtype@3.13.0: - resolution: {integrity: sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw==} - engines: {node: '>=4'} - peerDependencies: - eslint: '>=5.0.0' - - eslint-plugin-import@2.32.0: - resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-jsx-a11y@6.10.2: - resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-prettier@3.4.1: - resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} - engines: {node: '>=6.0.0'} - peerDependencies: - eslint: '>=5.0.0' - eslint-config-prettier: '*' - prettier: '>=1.13.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - - eslint-plugin-react-hooks@2.5.1: - resolution: {integrity: sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g==} - engines: {node: '>=7'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 - - eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react-hooks@5.2.0: - resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} - engines: {node: '>=10'} - 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==} - peerDependencies: - eslint: '>=8.40' - - eslint-plugin-react@7.37.5: - resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - - eslint-plugin-storybook@9.0.12: - resolution: {integrity: sha512-dSzcozoI7tQRqfMODWfxahrRmKWsK88yKSUcO0+s361oYcX7nf8nEu99TQ/wuDLRHh+Zi7E2j43cPMH8gFo8OA==} - engines: {node: '>=20.0.0'} - peerDependencies: - eslint: '>=8' - storybook: ^9.0.12 - - eslint-plugin-unused-imports@4.1.4: - resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 - eslint: ^9.0.0 || ^8.0.0 - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-utils@1.4.3: - resolution: {integrity: sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==} - engines: {node: '>=6'} - - eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} - - eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@6.8.0: - resolution: {integrity: sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - - eslint@9.26.0: - resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - eslint@9.27.0: - resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - esniff@2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} - - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - espree@6.2.1: - resolution: {integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==} - engines: {node: '>=6.0.0'} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@2.7.3: - resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==} - engines: {node: '>=0.10.0'} - hasBin: true - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@1.9.3: - resolution: {integrity: sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==} - engines: {node: '>=0.10.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-to-babel@3.2.1: - resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} - engines: {node: '>=8.3.0'} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-walker@0.2.1: - resolution: {integrity: sha512-6/I1dwNKk0N9iGOU3ydzAAurz4NPo/ttxZNCqgIVbWFvWyzWBSNonRrJ5CpjDuyBfmM7ENN7WCzUi9aT/UPXXQ==} - - estree-walker@0.6.1: - resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} - - estree-walker@1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - eventsource-parser@3.0.2: - resolution: {integrity: sha512-6RxOBZ/cYgd8usLwsEl+EC09Au/9BcmCKYF2/xbml6DNczf7nv0MQb+7BA2F+li6//I+28VNlQR37XfQtcAJuA==} - engines: {node: '>=18.0.0'} - - eventsource@0.1.6: - resolution: {integrity: sha512-bbB5tEuvC+SuRUG64X8ghvjgiRniuA4WlehWbFnoN4z6TxDXpyX+BMHF7rMgZAqoe+EbyNRUbHN0uuP9phy5jQ==} - engines: {node: '>=0.8.0'} - - eventsource@3.0.7: - resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} - engines: {node: '>=18.0.0'} - - exec-sh@0.2.2: - resolution: {integrity: sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==} - - exec-sh@0.3.6: - resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} - - execa@0.7.0: - resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} - engines: {node: '>=4'} - - execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - - execa@3.4.0: - resolution: {integrity: sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==} - engines: {node: ^8.12.0 || >=9.7.0} - - execa@4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} - engines: {node: '>=10'} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - exenv-es6@1.1.1: - resolution: {integrity: sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==} - - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - - expand-tilde@2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - - expect@22.4.3: - resolution: {integrity: sha512-XcNXEPehqn8b/jm8FYotdX0YrXn36qp4HWlrVT4ktwQas1l1LPxiVWncYnnL2eyMtKAmVIaG0XAp0QlrqJaxaA==} - - expect@25.5.0: - resolution: {integrity: sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA==} - engines: {node: '>= 8.3'} - - expect@29.7.0: - 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==} - - express-rate-limit@7.5.1: - resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==} - engines: {node: '>= 16'} - peerDependencies: - express: '>= 4.11' - - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} - engines: {node: '>= 0.10.0'} - - express@5.1.0: - resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} - engines: {node: '>= 18'} - - ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - - extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - external-editor@2.2.0: - resolution: {integrity: sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==} - engines: {node: '>=0.12'} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - - extract-text-webpack-plugin@3.0.2: - resolution: {integrity: sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==} - engines: {node: '>= 4.8 < 5.0.0 || >= 5.10'} - deprecated: Deprecated. Please use https://github.com/webpack-contrib/mini-css-extract-plugin - peerDependencies: - webpack: ^5.94.0 - - extract-zip@1.7.0: - resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} - hasBin: true - - extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - - fantasticon@3.0.0: - resolution: {integrity: sha512-PylulixZA8I0SeiUKtuyOhwrz/ojZTSA1KXddipvEyQXCVrpPMTnSXzaE9nXXK7nCjJWFkqoBAQ1aBdaxMltrg==} - engines: {node: '>= 16.0.0'} - hasBin: true - - fast-deep-equal@1.1.0: - resolution: {integrity: sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-glob@2.2.7: - resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} - engines: {node: '>=4.0.0'} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-json-parse@1.0.3: - resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} - - fast-json-patch@3.1.1: - resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} - - fast-xml-parser@4.4.1: - resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} - hasBin: true - - fast-xml-parser@5.2.5: - resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} - hasBin: true - - fastest-levenshtein@1.0.16: - resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} - engines: {node: '>= 4.9.1'} - - fastparse@1.1.2: - resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==} - - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - - fault@1.0.4: - resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} - - faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} - - fb-watchman@1.9.2: - resolution: {integrity: sha512-XgitQpaII7LkblC9X8HhfnfuDpyOYSB/Xw8h3Q/gXfMtyL7UICDS1axIlafhwfvKxPjrqnu7EfO7i3A1kH+Rfg==} - - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - fbemitter@3.0.0: - resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} - - fbjs-css-vars@1.0.2: - resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - - fbjs@3.0.5: - resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - - fdir@6.4.6: - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - fecha@4.2.3: - resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - - fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - - fetch-retry@5.0.6: - resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} - - figures@2.0.0: - resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} - engines: {node: '>=4'} - - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - - file-entry-cache@10.1.1: - resolution: {integrity: sha512-zcmsHjg2B2zjuBgjdnB+9q0+cWcgWfykIcsDkWDB4GTPtl1eXUA+gTI6sO0u01AqK3cliHryTU55/b2Ow1hfZg==} - - file-entry-cache@5.0.1: - resolution: {integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==} - engines: {node: '>=4'} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - file-js@0.3.0: - resolution: {integrity: sha512-nZlX1pxpV6Mt8BghM3Z150bpsCT1zqil97UryusstZLSs9caYAe0Wph2UKPC3awfM2Dq4ri1Sv99KuK4EIImlA==} - - file-loader@1.1.5: - resolution: {integrity: sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==} - engines: {node: '>= 4.3 < 5.0.0 || >= 5.10'} - peerDependencies: - webpack: ^5.94.0 - - file-loader@6.2.0: - resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^5.94.0 - - file-system-cache@1.1.0: - resolution: {integrity: sha512-IzF5MBq+5CR0jXx5RxPe4BICl/oEhBSXKaL9fLhAXrIfIUS77Hr4vzrYyqYMHN6uTt+BOqi3fDCTjjEBCjERKw==} - - file-system-cache@2.3.0: - resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} - - file-type@18.7.0: - resolution: {integrity: sha512-ihHtXRzXEziMrQ56VSgU7wkxh55iNchFkosu7Y9/S+tXHdKyrGjVK0ujbqNnsxzea+78MaLhN6PGmfYSAv1ACw==} - engines: {node: '>=14.16'} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - file-uri-to-path@2.0.0: - resolution: {integrity: sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==} - engines: {node: '>= 6'} - - filehound@1.17.6: - resolution: {integrity: sha512-5q4zjFkI8W2zLmvbvyvI//K882IpEj6sMNXPUQlk5H6W4Wh3OSSylEAIEmMLELP9G7ileYjTKPXOn0YzzS55Lg==} - - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - - filename-reserved-regex@2.0.0: - resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} - engines: {node: '>=4'} - - filenamify@4.3.0: - resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} - engines: {node: '>=8'} - - fileset@2.0.3: - resolution: {integrity: sha512-UxowFKnAFIwtmSxgKjWAVgjE3Fk7MQJT0ZIyl0NwIFZTrx4913rLaonGJ84V+x/2+w/pe4ULHRns+GZPs1TVuw==} - - filesize@3.5.11: - resolution: {integrity: sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==} - engines: {node: '>= 0.4.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - - finalhandler@2.1.0: - resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} - engines: {node: '>= 0.8'} - - find-cache-dir@1.0.0: - resolution: {integrity: sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg==} - engines: {node: '>=4'} - - find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - - find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - - find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} - - find-index@0.1.1: - resolution: {integrity: sha512-uJ5vWrfBKMcE6y2Z8834dwEZj9mNGxYa3t3I53OwFeuZ8D9oc2E5zcsrkuhX6h4iYrjhiv0T3szQmxlAV9uxDg==} - - find-process@1.4.10: - resolution: {integrity: sha512-ncYFnWEIwL7PzmrK1yZtaccN8GhethD37RzBHG6iOZoFYB4vSmLLXfeWJjeN5nMvCJMjOtBvBBF8OgxEcikiZg==} - hasBin: true - - find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - - find-up@1.1.2: - resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} - engines: {node: '>=0.10.0'} - - find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - find-up@7.0.0: - resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} - engines: {node: '>=18'} - - flat-cache@2.0.1: - resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} - engines: {node: '>=4'} - - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flat-cache@6.1.10: - resolution: {integrity: sha512-B6/v1f0NwjxzmeOhzfXPGWpKBVA207LS7lehaVKQnFrVktcFRfkzjZZ2gwj2i1TkEUMQht7ZMJbABUT5N+V1Nw==} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - flatted@2.0.2: - resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} - - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - - flatten@1.0.3: - resolution: {integrity: sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==} - deprecated: flatten is deprecated in favor of utility frameworks such as lodash. - - flow-parser@0.275.0: - resolution: {integrity: sha512-fHNwawoA2LM7FsxhU/1lTRGq9n6/Q8k861eHgN7GKtamYt9Qrxpg/ZSrev8o1WX7fQ2D3Gg3+uvYN15PmsG7Yw==} - engines: {node: '>=0.4.0'} - - flush-write-stream@1.1.1: - resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} - - flux@4.0.4: - resolution: {integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==} - peerDependencies: - react: ^15.0.2 || ^16.0.0 || ^17.0.0 - - fn.name@1.1.0: - resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - for-each@0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} - engines: {node: '>= 0.4'} - - foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} - - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - - forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - - fork-ts-checker-webpack-plugin@0.2.10: - resolution: {integrity: sha512-L7mhhCLDyvh2koCgj7Bvovyh/Ryg/DcktoHP3kEwBljNbjxUE4YK1aVMa9doe8T37JJWRQy9iP+0Qq3nBNb39g==} - peerDependencies: - eslint: '>= 6' - typescript: ^2.1.0 - vue-template-compiler: '*' - webpack: ^5.94.0 - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - - fork-ts-checker-webpack-plugin@4.1.6: - resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} - engines: {node: '>=6.11.5', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: ^5.94.0 - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - - fork-ts-checker-webpack-plugin@6.5.3: - resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} - engines: {node: '>=10', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: ^5.94.0 - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - - fork-ts-checker-webpack-plugin@8.0.0: - resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} - engines: {node: '>=12.13.0', yarn: '>=1.0.0'} - peerDependencies: - typescript: '>3.6.0' - webpack: ^5.94.0 - - fork-ts-checker-webpack-plugin@9.1.0: - resolution: {integrity: sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==} - engines: {node: '>=14.21.3'} - peerDependencies: - typescript: '>3.6.0' - webpack: ^5.94.0 - - form-data-encoder@2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} - - form-data-encoder@4.1.0: - resolution: {integrity: sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==} - engines: {node: '>= 18'} - - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} - engines: {node: '>= 6'} - - format@0.2.2: - resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} - engines: {node: '>=0.4.x'} - - formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - framer-motion@6.5.1: - resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} - peerDependencies: - react: '>=16.8 || ^17.0.0 || ^18.0.0' - react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' - - framesync@6.0.1: - resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - fresh@2.0.0: - resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} - engines: {node: '>= 0.8'} - - from2@2.3.0: - resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - - fs-extra@0.30.0: - resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} - - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - - fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - - fs-extra@11.3.0: - resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} - engines: {node: '>=14.14'} - - fs-extra@3.0.1: - resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==} - - fs-extra@4.0.3: - resolution: {integrity: sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==} - - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs-monkey@1.0.6: - resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} - - fs-write-stream-atomic@1.0.10: - resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} - deprecated: This package is no longer supported. - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@1.2.13: - resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} - engines: {node: '>= 4.0'} - os: [darwin] - deprecated: Upgrade to fsevents v2 to mitigate potential security issues - - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fstream@1.0.12: - resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} - engines: {node: '>=0.6'} - deprecated: This package is no longer supported. - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} - engines: {node: '>= 0.4'} - - functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - gauge@2.7.4: - resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==} - deprecated: This package is no longer supported. - - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - - gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - - gaze@1.1.3: - resolution: {integrity: sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==} - engines: {node: '>= 4.0.0'} - - generic-names@4.0.0: - resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@1.0.3: - resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==} - - get-caller-file@2.0.5: - 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==} - engines: {node: '>=18'} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - - get-npm-tarball-url@2.1.0: - resolution: {integrity: sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==} - engines: {node: '>=12.17'} - - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - - get-port@5.1.1: - resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} - engines: {node: '>=8'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - get-stdin@4.0.1: - resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==} - engines: {node: '>=0.10.0'} - - get-stdin@6.0.0: - resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} - engines: {node: '>=4'} - - get-stream@3.0.0: - resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} - engines: {node: '>=4'} - - get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - get-stream@9.0.1: - resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} - engines: {node: '>=18'} - - get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - - get-them-args@1.3.2: - resolution: {integrity: sha512-LRn8Jlk+DwZE4GTlDbT3Hikd1wSHgLMme/+7ddlqKd7ldwR6LjJgTVWzBnR01wnYGe4KgrXjg287RaI22UHmAw==} - - get-value@3.0.1: - resolution: {integrity: sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA==} - engines: {node: '>=6.0'} - - getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - - gh-pages@6.3.0: - resolution: {integrity: sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==} - engines: {node: '>=10'} - hasBin: true - - giget@1.2.5: - resolution: {integrity: sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==} - hasBin: true - - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - - github-slugger@1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} - - glob-parent@2.0.0: - resolution: {integrity: sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==} - - glob-parent@3.1.0: - resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob-promise@3.4.0: - resolution: {integrity: sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==} - engines: {node: '>=4'} - peerDependencies: - glob: '*' - - glob-to-regexp@0.3.0: - resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob2base@0.0.12: - resolution: {integrity: sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==} - engines: {node: '>= 0.10'} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - glob@11.0.3: - resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} - engines: {node: 20 || >=22} - hasBin: true - - glob@5.0.15: - resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - global-dirs@0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} - - global-modules@1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} - - global-modules@2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} - - global-prefix@1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} - - global-prefix@3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} - - global@4.4.0: - resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@12.4.0: - resolution: {integrity: sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==} - engines: {node: '>=8'} - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@9.18.0: - resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==} - engines: {node: '>=0.10.0'} - - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - - globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - globby@14.1.0: - resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} - engines: {node: '>=18'} - - globby@5.0.0: - resolution: {integrity: sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==} - engines: {node: '>=0.10.0'} - - globby@9.2.0: - resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==} - engines: {node: '>=6'} - - globjoin@0.1.4: - resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} - - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - - globule@1.3.4: - resolution: {integrity: sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==} - engines: {node: '>= 0.10'} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - got@13.0.0: - resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==} - engines: {node: '>=16'} - - got@14.4.7: - resolution: {integrity: sha512-DI8zV1231tqiGzOiOzQWDhsBmncFW7oQDH6Zgy6pDPrqJuVZMtoSgPLLsBZQj8Jg4JFfwoOsDA8NGtLQLnIx2g==} - engines: {node: '>=20'} - - got@6.7.1: - resolution: {integrity: sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==} - engines: {node: '>=4'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - graphiql-explorer@0.9.0: - resolution: {integrity: sha512-fZC/wsuatqiQDO2otchxriFO0LaWIo/ovF/CQJ1yOudmY0P7pzDiP+l9CEHUiWbizk3e99x6DQG4XG1VxA+d6A==} - peerDependencies: - graphql: ^0.6.0 || ^0.7.0 || ^0.8.0-b || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - react: ^15.6.0 || ^16.0.0 - react-dom: ^15.6.0 || ^16.0.0 - - graphiql@3.7.0: - resolution: {integrity: sha512-M38uOeD8y0M85VnrifhpXtcgGshQG2dtQGJ6fPZB9c659sA6y2Yh9aDnE055/n2ricidwSLrKmsiDXrvDuoU1A==} - peerDependencies: - graphql: ^15.5.0 || ^16.0.0 || ^17.0.0-alpha.2 - react: ^16.8.0 || ^17 || ^18 - react-dom: ^16.8.0 || ^17 || ^18 - - graphlib@2.1.8: - resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} - - graphql-language-service@5.4.0: - resolution: {integrity: sha512-g4N5PKh4Dxow9zuHrzX6PHuWWL/aQPYgzZvZst1KkWYFW1H1rmOA/p0/eEJ2WVuoCCfy1tyAR91iG92MAKCILA==} - hasBin: true - peerDependencies: - graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 - - graphql@16.11.0: - resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - - growly@1.3.0: - resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} - - gunzip-maybe@1.4.2: - resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} - hasBin: true - - gzip-size@3.0.0: - resolution: {integrity: sha512-6s8trQiK+OMzSaCSVXX+iqIcLV9tC+E73jrJrJTyS4h/AJhlxHvzFKqM1YLDJWRGgHX8uLkBeXkA0njNj39L4w==} - engines: {node: '>=0.12.0'} - - handle-thing@2.0.1: - resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true - - har-schema@2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} - - har-validator@5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} - deprecated: this library is no longer supported - - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - - harmony-reflect@1.6.2: - resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} - - has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - - has-bigints@1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} - - has-flag@1.0.0: - resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} - engines: {node: '>=0.10.0'} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-glob@1.0.0: - resolution: {integrity: sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g==} - engines: {node: '>=0.10.0'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - - has@1.0.4: - resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} - engines: {node: '>= 0.4.0'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hast-to-hyperscript@9.0.1: - resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} - - hast-util-from-parse5@6.0.1: - resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} - - hast-util-from-parse5@7.1.2: - resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} - - hast-util-from-parse5@8.0.3: - resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} - - hast-util-parse-selector@2.2.5: - resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} - - hast-util-parse-selector@3.1.1: - resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} - - hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - - hast-util-raw@6.0.1: - resolution: {integrity: sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==} - - hast-util-raw@7.2.3: - resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} - - hast-util-raw@9.1.0: - resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} - - hast-util-to-jsx-runtime@2.3.6: - resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} - - hast-util-to-parse5@6.0.0: - resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==} - - hast-util-to-parse5@7.1.0: - resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} - - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} - - hast-util-whitespace@2.0.1: - resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hastscript@6.0.0: - resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} - - hastscript@7.2.0: - resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} - - hastscript@9.0.1: - resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - heap@0.2.5: - resolution: {integrity: sha512-G7HLD+WKcrOyJP5VQwYZNC3Z6FcQ7YYjEFiFoIj8PfEr73mu421o8B1N5DKUcc8K37EsJ2XXWA8DtrDz/2dReg==} - - hey-listen@1.0.8: - resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - - highlight.js@10.7.3: - resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} - - highlight.js@11.11.1: - resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} - engines: {node: '>=12.0.0'} - - highlightjs-vue@1.0.0: - resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==} - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - - home-or-tmp@2.0.0: - resolution: {integrity: sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==} - engines: {node: '>=0.10.0'} - - homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - - hookified@1.9.1: - resolution: {integrity: sha512-u3pxtGhKjcSXnGm1CX6aXS9xew535j3lkOCegbA6jdyh0BaAjTbXI4aslKstCr6zUNtoCxFGFKwjbSHdGrMB8g==} - - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - - hosted-git-info@7.0.2: - resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} - engines: {node: ^16.14.0 || >=18.0.0} - - hpack.js@2.1.6: - resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - - hpagent@1.2.0: - resolution: {integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==} - engines: {node: '>=14'} - - html-comment-regex@1.1.2: - resolution: {integrity: sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==} - - html-encoding-sniffer@1.0.2: - resolution: {integrity: sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==} - - html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - - html-entities@2.6.0: - resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - html-minifier-terser@5.1.1: - resolution: {integrity: sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==} - engines: {node: '>=6'} - hasBin: true - - html-minifier-terser@6.1.0: - resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} - engines: {node: '>=12'} - hasBin: true - - html-minifier@3.5.21: - resolution: {integrity: sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==} - engines: {node: '>=4'} - hasBin: true - - html-tags@3.3.1: - resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} - engines: {node: '>=8'} - - html-to-image@1.11.11: - resolution: {integrity: sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==} - - html-to-image@1.11.13: - resolution: {integrity: sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==} - - html-url-attributes@3.0.1: - resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} - - html-void-elements@1.0.5: - resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==} - - html-void-elements@2.0.1: - resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - html-webpack-plugin@2.29.0: - resolution: {integrity: sha512-XgOxN8H7nDeLQzD9FQOWWQLVL0GDq5reeREx8jpLZcEZND7kM5j3o/mFhjOcSfZ89HwU3+yBqSQyK7ZvvYFZ/w==} - deprecated: out of support - peerDependencies: - webpack: ^5.94.0 - - html-webpack-plugin@4.5.2: - resolution: {integrity: sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==} - engines: {node: '>=6.9'} - peerDependencies: - webpack: ^5.94.0 - - html-webpack-plugin@5.6.3: - resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} - engines: {node: '>=10.13.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.94.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - - htmlparser2@10.0.0: - resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} - - htmlparser2@6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - - http-cache-semantics@4.2.0: - resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} - - http-deceiver@1.2.7: - resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - - http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-parser-js@0.5.10: - resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} - - http-proxy-agent@4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - - http-proxy-middleware@2.0.9: - resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true - - http-proxy@1.18.1: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} - - http-server@14.1.1: - resolution: {integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==} - engines: {node: '>=12'} - hasBin: true - - http-signature@1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} - - http2-wrapper@2.2.1: - resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} - engines: {node: '>=10.19.0'} - - https-proxy-agent@4.0.0: - resolution: {integrity: sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==} - engines: {node: '>= 6.0.0'} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - - human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - humanize-duration@3.33.0: - resolution: {integrity: sha512-vYJX7BSzn7EQ4SaP2lPYVy+icHDppB6k7myNeI3wrSRfwMS5+BHyGgzpHR0ptqJ2AQ6UuIKrclSg5ve6Ci4IAQ==} - - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - - husky@9.1.7: - resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} - engines: {node: '>=18'} - hasBin: true - - hyperdyperid@1.2.0: - resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} - engines: {node: '>=10.18'} - - icon-font-generator@2.1.11: - resolution: {integrity: sha512-nCIPePQlnj2w2ptcZ6C+OMK0G4FMs6dgxT6g2LuFq2n2v2svNFDjKytB0LIX+chlTEgt5wDccnZEPmOk3cp1Kg==} - engines: {node: '>=v8.1.0'} - hasBin: true - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - icss-replace-symbols@1.1.0: - resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} - - icss-utils@2.1.0: - resolution: {integrity: sha512-bsVoyn/1V4R1kYYjLcWLedozAM4FClZUdjE9nIr8uWY7xs78y9DATgwz2wGU7M+7z55KenmmTkN2DVJ7bqzjAA==} - - icss-utils@4.1.1: - resolution: {integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==} - engines: {node: '>= 6'} - - icss-utils@5.1.0: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - identity-obj-proxy@3.0.0: - resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} - engines: {node: '>=4'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - iferr@0.1.5: - resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} - - ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} - - immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - - immer@9.0.21: - resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} - - immutable@3.8.2: - resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} - engines: {node: '>=0.10.0'} - - immutable@5.1.3: - resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} - - import-cwd@3.0.0: - resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} - engines: {node: '>=8'} - - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - - import-from@3.0.0: - resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} - engines: {node: '>=8'} - - import-lazy@2.1.0: - resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} - engines: {node: '>=4'} - - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@2.1.0: - resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==} - engines: {node: '>=0.10.0'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - - indexes-of@1.0.1: - resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} - - infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - - inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - - inquirer@3.3.0: - resolution: {integrity: sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==} - - inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - - internal-slot@1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} - - interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - - interpret@2.2.0: - resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} - engines: {node: '>= 0.10'} - - interpret@3.1.1: - resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} - engines: {node: '>=10.13.0'} - - intl-messageformat@10.7.16: - resolution: {integrity: sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - invert-kv@1.0.0: - resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} - engines: {node: '>=0.10.0'} - - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - - ip-regex@2.1.0: - resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} - engines: {node: '>=4'} - - ip-regex@4.3.0: - resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} - engines: {node: '>=8'} - - ip@2.0.1: - resolution: {integrity: sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} - - is-absolute-url@2.1.0: - resolution: {integrity: sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==} - engines: {node: '>=0.10.0'} - - is-absolute-url@3.0.3: - resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} - engines: {node: '>=8'} - - is-alphabetical@1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - - is-arguments@1.2.0: - resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} - engines: {node: '>= 0.4'} - - is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} - - 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'} - - is-bigint@1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} - - is-binary-path@1.0.1: - resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} - engines: {node: '>=0.10.0'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} - engines: {node: '>= 0.4'} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - is-builtin-module@1.0.0: - resolution: {integrity: sha512-C2wz7Juo5pUZTFQVer9c+9b4qw3I5T/CHQxQyhVu7BJel6C22FmsLIWsdseYyOw6xz9Pqy9eJWSkQ7+3iN1HVw==} - engines: {node: '>=0.10.0'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-ci@1.2.1: - resolution: {integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==} - hasBin: true - - is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - - is-date-object@1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} - - is-decimal@1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - is-deflate@1.0.0: - resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} - - is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - - is-dom@1.1.0: - resolution: {integrity: sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==} - - is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - - is-extglob@1.0.0: - resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - - is-finite@1.1.0: - resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - - is-fullwidth-code-point@3.0.0: - 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==} - engines: {node: '>=18'} - - is-function@1.0.2: - resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} - - is-generator-fn@1.0.0: - resolution: {integrity: sha512-95jJZX6O/gdekidH2usRBr9WdRw4LU56CttPstXFxvG0r3QUE9eaIdz2p2Y7zrm6jxz7SjByAo1AtzwGlRvfOg==} - engines: {node: '>=0.10.0'} - - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} - engines: {node: '>= 0.4'} - - is-glob@2.0.1: - resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} - engines: {node: '>=0.10.0'} - - is-glob@3.1.0: - resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} - engines: {node: '>=0.10.0'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-gzip@1.0.0: - resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} - engines: {node: '>=0.10.0'} - - is-hexadecimal@1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - - is-installed-globally@0.1.0: - resolution: {integrity: sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==} - engines: {node: '>=4'} - - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - - is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-network-error@1.1.0: - resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} - engines: {node: '>=16'} - - is-npm@1.0.0: - resolution: {integrity: sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg==} - engines: {node: '>=0.10.0'} - - is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-obj@1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - - is-object@1.0.2: - resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} - - is-path-cwd@1.0.0: - resolution: {integrity: sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==} - engines: {node: '>=0.10.0'} - - is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - - is-path-cwd@3.0.0: - resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-path-in-cwd@1.0.1: - resolution: {integrity: sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==} - engines: {node: '>=0.10.0'} - - is-path-inside@1.0.1: - resolution: {integrity: sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==} - engines: {node: '>=0.10.0'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-path-inside@4.0.0: - resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} - engines: {node: '>=12'} - - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - - is-plain-obj@3.0.0: - resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} - engines: {node: '>=10'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - - is-primitive@3.0.1: - resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} - engines: {node: '>=0.10.0'} - - is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - - is-promise@4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - - is-redirect@1.0.0: - resolution: {integrity: sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==} - engines: {node: '>=0.10.0'} - - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - - is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-retry-allowed@1.2.0: - resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} - engines: {node: '>=0.10.0'} - - is-root@1.0.0: - resolution: {integrity: sha512-1d50EJ7ipFxb9bIx213o6KPaJmHN8f+nR48UZWxWVzDx+NA3kpscxi02oQX3rGkEaLBi9m3ZayHngQc3+bBX9w==} - engines: {node: '>=0.10.0'} - - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} - - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-stream@4.0.1: - resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} - engines: {node: '>=18'} - - is-string@1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} - - is-svg@2.1.0: - resolution: {integrity: sha512-Ya1giYJUkcL/94quj0+XGcmts6cETPBW1MiFz1ReJrnDJ680F52qpAEGAEGU0nq96FRGIGPx6Yo1CyPXcOoyGw==} - engines: {node: '>=0.10.0'} - - is-symbol@1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - - is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - - is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} - - is-url@1.2.4: - resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - - is-utf8@0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - - is-weakref@1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} - - is-weakset@2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} - - is-whitespace-character@1.0.4: - resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} - - is-window@1.0.2: - resolution: {integrity: sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - is-word-character@1.0.4: - resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} - - is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} - - is2@2.0.9: - resolution: {integrity: sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==} - engines: {node: '>=v0.10.0'} - - is64bit@2.0.0: - resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} - engines: {node: '>=18'} - - isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - - isobject@4.0.0: - resolution: {integrity: sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==} - engines: {node: '>=0.10.0'} - - isomorphic-unfetch@3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} - - isomorphic-ws@5.0.0: - resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} - peerDependencies: - ws: '*' - - isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - - istanbul-api@1.3.7: - resolution: {integrity: sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==} - - istanbul-lib-coverage@1.2.1: - resolution: {integrity: sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==} - - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-hook@1.2.2: - resolution: {integrity: sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==} - - istanbul-lib-instrument@1.10.2: - resolution: {integrity: sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==} - - istanbul-lib-instrument@4.0.3: - resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} - engines: {node: '>=8'} - - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - - istanbul-lib-report@1.1.5: - resolution: {integrity: sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@1.2.6: - resolution: {integrity: sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==} - - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - 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==} - engines: {node: '>=8'} - - istanbul@0.4.5: - resolution: {integrity: sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg==} - deprecated: |- - This module is no longer maintained, try this instead: - npm i nyc - Visit https://istanbul.js.org/integrations for other alternatives. - hasBin: true - - istextorbinary@9.5.0: - resolution: {integrity: sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==} - engines: {node: '>=4'} - - iterate-iterator@1.0.2: - resolution: {integrity: sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==} - - iterate-value@1.0.2: - resolution: {integrity: sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==} - - iterator.prototype@1.1.5: - resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} - engines: {node: '>= 0.4'} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jackspeak@4.1.1: - resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} - engines: {node: 20 || >=22} - - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} - engines: {node: '>=10'} - hasBin: true - - jest-changed-files@20.0.3: - resolution: {integrity: sha512-3o76mBdqPXN5zrak+U9ldALWgYlQQgKh8vQL3nsQO/seybjPqsp2Qp0pGGvVeMOaiwCbOZCrOvb3D8QhG/9Ccw==} - - jest-changed-files@25.5.0: - resolution: {integrity: sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw==} - engines: {node: '>= 8.3'} - - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.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-cli@20.0.4: - resolution: {integrity: sha512-OfQTkV6T5+V+c3hbzGVJl1SqTOmIw7dBIZYl6XDdSNOmhoyCmwNh/dsEs0lgqIMZkF+AeLbRswkH91XBVXyKqg==} - engines: {node: '>= 4'} - hasBin: true - - jest-cli@25.5.4: - resolution: {integrity: sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw==} - engines: {node: '>= 8.3'} - hasBin: true - - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.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==} - - jest-config@22.4.4: - resolution: {integrity: sha512-9CKfo1GC4zrXSoMLcNeDvQBfgtqGTB1uP8iDIZ97oB26RCUb886KkKWhVcpyxVDOUxbhN+uzcBCeFe7w+Iem4A==} - - jest-config@25.5.4: - resolution: {integrity: sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg==} - engines: {node: '>= 8.3'} - - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - - jest-diff@20.0.3: - resolution: {integrity: sha512-DITOXlTg0HDL9QKiVpf82vDu/nva60/V9xp056zjnAYpHVTZlJgfLMIHJmgPCoSu0+7n7QUAfxyFUHUGyHLFSw==} - - jest-diff@22.4.3: - resolution: {integrity: sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==} - - jest-diff@25.5.0: - resolution: {integrity: sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==} - engines: {node: '>= 8.3'} - - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-docblock@20.0.3: - resolution: {integrity: sha512-lHwefzd+CB38Awy4yiWb8he+ovUXjNeuN4tNQ1sa6/vBh6P7XwpiuSDIs4GH6/yE1uDBUaYiaf/msD7cWMTL7g==} - - jest-docblock@25.3.0: - resolution: {integrity: sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==} - engines: {node: '>= 8.3'} - - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-each@25.5.0: - resolution: {integrity: sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA==} - engines: {node: '>= 8.3'} - - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-jsdom@20.0.3: - resolution: {integrity: sha512-SSm2oCtH0kBYdXhEMzZDFM4GU/auz4x7yv8AGduAZSZP5loKYHLNoKfVlyN1iFQ+vCJ+1QSS+sVnUARSwaBqbw==} - - jest-environment-jsdom@22.4.3: - resolution: {integrity: sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w==} - - jest-environment-jsdom@25.5.0: - resolution: {integrity: sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A==} - engines: {node: '>= 8.3'} - - jest-environment-jsdom@29.7.0: - resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jest-environment-node@20.0.3: - resolution: {integrity: sha512-kVwkLhrGd1toaMHHtVIM2qleNTBDrFUZ6Qjv0GEfd75DK2P0H24xVVMA83H0PEkNbGl2EbjF/CeAIJSN3LagBw==} - - jest-environment-node@22.4.3: - resolution: {integrity: sha512-reZl8XF6t/lMEuPWwo9OLfttyC26A5AMgDyEQ6DBgZuyfyeNUzYT8BFo6uxCCP/Av/b7eb9fTi3sIHFPBzmlRA==} - - jest-environment-node@25.5.0: - resolution: {integrity: sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA==} - engines: {node: '>= 8.3'} - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@22.4.3: - resolution: {integrity: sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==} - - jest-get-type@25.2.6: - resolution: {integrity: sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==} - engines: {node: '>= 8.3'} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-haste-map@20.0.5: - resolution: {integrity: sha512-0IKAQjUvuZjMCNi/0VNQQF74/H9KB67hsHJqGiwTWQC6XO5Azs7kLWm+6Q/dwuhvDUvABDOBMFK2/FwZ3sZ07Q==} - - jest-haste-map@25.5.1: - resolution: {integrity: sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==} - engines: {node: '>= 8.3'} - - jest-haste-map@26.6.2: - resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} - engines: {node: '>= 10.14.2'} - - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-jasmine2@20.0.4: - resolution: {integrity: sha512-XNHvFt9iljOaSSZU5t5dC9kJtrcM+KnVbw0Qa/BpGZlrorqS+m0iWiAJO2xXcGMimCmhT4NLZAS1v/JBGWR8Cg==} - - jest-jasmine2@22.4.4: - resolution: {integrity: sha512-nK3vdUl50MuH7vj/8at7EQVjPGWCi3d5+6aCi7Gxy/XMWdOdbH1qtO/LjKbqD8+8dUAEH+BVVh7HkjpCWC1CSw==} - - jest-jasmine2@25.5.4: - resolution: {integrity: sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ==} - engines: {node: '>= 8.3'} - - jest-leak-detector@25.5.0: - resolution: {integrity: sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA==} - engines: {node: '>= 8.3'} - - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@20.0.3: - resolution: {integrity: sha512-eSNh2n3aXULZUbherq5+lZVdpUau8sniowi1tcc1ZueBk/97avAwwoDwBVvxI9JINVrPTsCI51SiQtrjBkVvPw==} - - jest-matcher-utils@22.4.3: - resolution: {integrity: sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==} - - jest-matcher-utils@25.5.0: - resolution: {integrity: sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==} - engines: {node: '>= 8.3'} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matchers@20.0.3: - resolution: {integrity: sha512-aDlp50L8qPJ+Y+tifrlKewT0ZU1uC9OP7GJ5T0UKSw/wB73wf6jKEAZUqyA67BocW8BZD7qVVWHasm7u2D1CMQ==} - - jest-message-util@20.0.3: - resolution: {integrity: sha512-p4UQLFjZmXw9Optr6c0aAIDN622+tdVW9XjaCODww/Y8MRGo1S60CICl0Jb4XdJWmMkmD07osWc6aElLxo0mDg==} - - jest-message-util@22.4.3: - resolution: {integrity: sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==} - - jest-message-util@25.5.0: - resolution: {integrity: sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==} - engines: {node: '>= 8.3'} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@20.0.3: - resolution: {integrity: sha512-Edmuskld6ImmUuqxhbwwX5fDXQlFC/fe3XcZKVwK9SnbetIFyivTaub71ZbL5uuWdkvr4VggcyxlhdnpsIlRvg==} - - jest-mock@22.4.3: - resolution: {integrity: sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==} - - jest-mock@25.5.0: - resolution: {integrity: sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==} - engines: {node: '>= 8.3'} - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-regex-util@20.0.3: - resolution: {integrity: sha512-WVFSnROOYgYA+AyTytpZA93EEv16DfPkkR8V8okVQjirXLfRs9n451BPgiiUJSHIyJv+OQ4El0+q16hyY1dEdA==} - - jest-regex-util@22.4.3: - resolution: {integrity: sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==} - - jest-regex-util@25.2.6: - resolution: {integrity: sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==} - engines: {node: '>= 8.3'} - - jest-regex-util@26.0.0: - resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} - engines: {node: '>= 10.14.2'} - - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve-dependencies@20.0.3: - resolution: {integrity: sha512-k0DK242umC88ih4KKH1jVlXBulQJfOmMXV/nMMfqRgeFKbBYfUROLZkz0zr8TON5WfnuiHV5GotqE0pXoqg08A==} - - jest-resolve-dependencies@25.5.4: - resolution: {integrity: sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw==} - engines: {node: '>= 8.3'} - - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve@20.0.4: - resolution: {integrity: sha512-n/u93CugulXmQ8FcHHGv1kUEFagsbXsJgKLK2G4eAdmawHObAc6DgJtOVp9hgNJOGRU6c6ozdB5nzMO02Fecig==} - - jest-resolve@22.4.3: - resolution: {integrity: sha512-u3BkD/MQBmwrOJDzDIaxpyqTxYH+XqAXzVJP51gt29H8jpj3QgKof5GGO2uPGKGeA1yTMlpbMs1gIQ6U4vcRhw==} - - jest-resolve@25.5.1: - resolution: {integrity: sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ==} - engines: {node: '>= 8.3'} - - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runner@25.5.4: - resolution: {integrity: sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg==} - engines: {node: '>= 8.3'} - - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runtime@20.0.4: - resolution: {integrity: sha512-NTGhGRKhfM19w0egxges3hhIO8gPXB2H6Txaie3+AZIHF+VZCItH27uEFzU6cQTdwzcWaiieYgCAfGKNeUUf7g==} - hasBin: true - - jest-runtime@25.5.4: - resolution: {integrity: sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ==} - engines: {node: '>= 8.3'} - hasBin: true - - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-serializer@25.5.0: - resolution: {integrity: sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==} - engines: {node: '>= 8.3'} - - jest-serializer@26.6.2: - resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} - engines: {node: '>= 10.14.2'} - - jest-snapshot@20.0.3: - resolution: {integrity: sha512-oapnAnOloz9Lv2r44TtiAQiPT2f6NdLFvK6mW3hnGStfDjstnbHAxG0f/tUhXr81BcmZvz03hsMMInKi9bHG0Q==} - - jest-snapshot@22.4.3: - resolution: {integrity: sha512-JXA0gVs5YL0HtLDCGa9YxcmmV2LZbwJ+0MfyXBBc5qpgkEYITQFJP7XNhcHFbUvRiniRpRbGVfJrOoYhhGE0RQ==} - - jest-snapshot@25.5.1: - resolution: {integrity: sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ==} - engines: {node: '>= 8.3'} - - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@20.0.3: - resolution: {integrity: sha512-Ig/4sAywd/7YJe3jUOIyj+NaX7NCQnxMc/lfRezvbkceZDye0mch126UfIzqyBdS2gjxQl7S8yERvcZDMvK1NA==} - - jest-util@22.4.3: - resolution: {integrity: sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ==} - - jest-util@25.5.0: - resolution: {integrity: sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==} - engines: {node: '>= 8.3'} - - jest-util@26.6.2: - resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} - engines: {node: '>= 10.14.2'} - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@20.0.3: - resolution: {integrity: sha512-yIpGo3le6q+ZPID2UCl58FRM4ZVGZK9qu1RaWSbEnZFUcj08XznJWd6g2HbPqsWCY9abBO3hq2aP5GZveEfGUg==} - - jest-validate@22.4.4: - resolution: {integrity: sha512-dmlf4CIZRGvkaVg3fa0uetepcua44DHtktHm6rcoNVtYlpwe6fEJRkMFsaUVcFHLzbuBJ2cPw9Gl9TKfnzMVwg==} - - jest-validate@25.5.0: - resolution: {integrity: sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==} - engines: {node: '>= 8.3'} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-watch-typeahead@0.5.0: - resolution: {integrity: sha512-4r36w9vU8+rdg48hj0Z7TvcSqVP6Ao8dk04grlHQNgduyCB0SqrI0xWIl85ZhXrzYvxQ0N5H+rRLAejkQzEHeQ==} - - jest-watcher@25.5.0: - resolution: {integrity: sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q==} - engines: {node: '>= 8.3'} - - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@24.9.0: - resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} - engines: {node: '>= 6'} - - jest-worker@25.5.0: - resolution: {integrity: sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==} - engines: {node: '>= 8.3'} - - jest-worker@26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} - engines: {node: '>= 10.13.0'} - - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest@20.0.4: - resolution: {integrity: sha512-MU1kGBtzhDHwasL1BbuFmlIlwseDXy18p/M3hB7ehifac8FCbj6nJf8ihGtBA594tlUcktotHHd8z42V47ZB1g==} - engines: {node: '>= 4'} - hasBin: true - - jest@25.5.4: - resolution: {integrity: sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ==} - engines: {node: '>= 8.3'} - hasBin: true - - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.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.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - - joi@17.13.3: - resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - - jpjs@1.2.1: - resolution: {integrity: sha512-GxJWybWU4NV0RNKi6EIqk6IRPOTqd/h+U7sbtyuD7yUISUzV78LdHnq2xkevJsTlz/EImux4sWj+wfMiwKLkiw==} - - js-base64@2.6.4: - resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} - - js-file-download@0.4.12: - resolution: {integrity: sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg==} - - js-string-escape@1.0.1: - resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} - engines: {node: '>= 0.8'} - - js-tokens@3.0.2: - resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} - - 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==} - 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'} - - jscodeshift@0.15.2: - resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - peerDependenciesMeta: - '@babel/preset-env': - optional: true - - jsdoc-type-pratt-parser@4.1.0: - resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} - engines: {node: '>=12.0.0'} - - jsdom@11.12.0: - resolution: {integrity: sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==} - - jsdom@15.2.1: - resolution: {integrity: sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==} - engines: {node: '>=8'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jsdom@9.12.0: - resolution: {integrity: sha512-Qw4oqNxo4LyzkSqVIyCnEltTc4xV3g1GBaI88AvYTesWzmWHUSoMNmhBjUBa+6ldXIBJS9xoeLNJPfUAykTyxw==} - - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - - jsesc@1.3.0: - 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'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - 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'} - - json-schema-traverse@0.3.1: - resolution: {integrity: sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json-stable-stringify@1.3.0: - resolution: {integrity: sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==} - engines: {node: '>= 0.4'} - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json3@3.3.3: - resolution: {integrity: sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==} - - json5@0.5.1: - resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} - hasBin: true - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - - jsonfile@2.4.0: - resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} - - jsonfile@3.0.1: - resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonify@0.0.1: - resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} - - jsonix@3.0.0: - resolution: {integrity: sha512-3I3CwAR5YRLGEApVjTYIDVzjryfvQq1sdEu8FLLCirGYBA9j0qDhIFHjtxEEyV0UApRgdAG8l4Za0VllZENHyA==} - engines: {'0': node >= 0.8.0} - - jsonwebtoken@9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} - engines: {node: '>=12', npm: '>=6'} - - jsprim@1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - - jszip@3.10.1: - resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - - junk@3.1.0: - resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==} - engines: {node: '>=8'} - - jwa@1.4.2: - resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} - - jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - - jwt-decode@4.0.0: - resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} - engines: {node: '>=18'} - - keytar@7.9.0: - resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - keyv@5.3.4: - resolution: {integrity: sha512-ypEvQvInNpUe+u+w8BIcPkQvEqXquyyibWE/1NB5T2BTzIpS5cGEV1LZskDzPSTvNAaT4+5FutvzlvnkxOSKlw==} - - kill-port@2.0.1: - resolution: {integrity: sha512-e0SVOV5jFo0mx8r7bS29maVWp17qGqLBZ5ricNSajON6//kmb7qqqNnml4twNE8Dtj97UQD+gNFOaipS/q1zzQ==} - hasBin: true - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - klaw@1.3.1: - resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - - klona@2.0.6: - resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} - engines: {node: '>= 8'} - - known-css-properties@0.37.0: - resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} - - kuler@2.0.0: - resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - - latest-version@3.1.0: - resolution: {integrity: sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==} - engines: {node: '>=4'} - - launch-editor@2.10.0: - resolution: {integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==} - - lazy-universal-dotenv@3.0.1: - resolution: {integrity: sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==} - engines: {node: '>=6.0.0', npm: '>=6.0.0', yarn: '>=1.0.0'} - - lazy-universal-dotenv@4.0.0: - resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} - engines: {node: '>=14.0.0'} - - lcid@1.0.0: - resolution: {integrity: sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==} - engines: {node: '>=0.10.0'} - - left-pad@1.3.0: - resolution: {integrity: sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==} - deprecated: use String.prototype.padStart() - - leven@2.1.0: - resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==} - engines: {node: '>=0.10.0'} - - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lie@3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - - 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.2: - resolution: {integrity: sha512-sQKw2Si2g9KUZNY3XNvRuDq4UJqpHwF0/FQzZR2M7I5MvtpWvibikCjUVJzZdGE0ByurEl3KQNvsGetd1ty1/Q==} - engines: {node: '>=20.17'} - hasBin: true - - listenercount@1.0.1: - resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==} - - listr2@8.3.3: - resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} - engines: {node: '>=18.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==} - engines: {node: '>=6.11.5'} - - loader-utils@0.2.17: - resolution: {integrity: sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==} - - loader-utils@1.4.2: - resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} - engines: {node: '>=4.0.0'} - - loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - - loader-utils@3.3.1: - resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} - engines: {node: '>= 12.13.0'} - - locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lodash._reinterpolate@3.0.0: - resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.clonedeep@4.5.0: - resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - - lodash.curry@4.1.1: - resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - - lodash.endswith@4.2.1: - resolution: {integrity: sha512-pegckn1D2ohyUKt7OHrp7GpJVNnndjE+FpzULQ0pjQvbjdktdWGmKVth5wdSYWHzQSZA7OSGbIo0/AuwTeX1pA==} - - lodash.flow@3.5.0: - resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} - - lodash.includes@4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - - lodash.isboolean@3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. - - lodash.isfunction@3.0.9: - resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} - - lodash.isinteger@4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - - lodash.isnumber@3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - - lodash.keys@4.2.0: - resolution: {integrity: sha512-J79MkJcp7Df5mizHiVNpjoHXLi4HLjh9VLS/M7lQSGoQ+0oQ+lWEigREkqKyizPB1IawvQLLKY8mzEcm1tkyxQ==} - - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.omit@4.5.0: - resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==} - deprecated: This package is deprecated. Use destructuring assignment syntax instead. - - lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - - lodash.startswith@4.2.1: - resolution: {integrity: sha512-XClYR1h4/fJ7H+mmCKppbiBmljN/nGs73iq2SjCT9SF4CBPoUHzLvWmH1GtZMhMBZSiRkHXfeA2RY1eIlJ75ww==} - - lodash.template@4.5.0: - resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} - deprecated: This package is deprecated. Use https://socket.dev/npm/package/eta instead. - - lodash.templatesettings@4.2.0: - resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} - - lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - lodash.without@4.4.0: - resolution: {integrity: sha512-M3MefBwfDhgKgINVuBJCO1YR3+gf6s9HNJsIiZ/Ru77Ws6uTb9eBuvrkpzO+9iLoAaRodGuq7tyrPCx+74QYGQ==} - - lodash.xor@4.5.0: - resolution: {integrity: sha512-sVN2zimthq7aZ5sPGXnSz32rZPuqcparVW50chJQe+mzTYV+IsxSsl/2gnkWWE2Of7K3myBQBqtLKOUEHJKRsQ==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@3.0.0: - resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} - engines: {node: '>=8'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} - - log-update@2.3.0: - resolution: {integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==} - engines: {node: '>=4'} - - log-update@6.1.0: - resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} - engines: {node: '>=18'} - - logform@2.7.0: - resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} - engines: {node: '>= 12.0.0'} - - loglevel@1.9.2: - resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} - engines: {node: '>= 0.6.0'} - - lolex@5.1.2: - resolution: {integrity: sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==} - - long-timeout@0.1.1: - resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lottie-web@5.13.0: - resolution: {integrity: sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ==} - - loud-rejection@1.6.0: - resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} - engines: {node: '>=0.10.0'} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - loupe@3.1.4: - resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} - - lower-case@1.1.4: - resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} - - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - - lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - - lowercase-keys@3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lowlight@1.20.0: - resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - lru-cache@11.1.0: - resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} - engines: {node: 20 || >=22} - - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - - lru-queue@0.1.0: - resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} - - luxon@3.6.1: - resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==} - engines: {node: '>=12'} - - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - - magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - - make-dir@1.3.0: - resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} - engines: {node: '>=4'} - - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - make-fetch-happen@10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - make-fetch-happen@9.1.0: - resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} - engines: {node: '>= 10'} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - - map-age-cleaner@0.1.3: - resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} - engines: {node: '>=6'} - - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - - map-or-similar@1.5.0: - resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - - markdown-escapes@1.0.4: - resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} - - markdown-it@12.3.2: - resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} - hasBin: true - - markdown-it@14.1.0: - resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} - hasBin: true - - markdown-table@3.0.4: - resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - - markdown-to-jsx@7.7.8: - resolution: {integrity: sha512-e+5bQJ30iIyJUV4tH/3wuBjpE5muLXsuBBi30N9t3B9O+UomC1Ocdqu7uD3X4YqtPrNLz+6QwHJaD7CXURBi+w==} - engines: {node: '>= 10'} - peerDependencies: - react: '>= 0.14.0' - - matches-selector@0.0.1: - resolution: {integrity: sha512-Bm8wuvuNGPY3j1Mo23PxieRQAmQQe2qVcqgmpHOp1BEBNgb4dqzn2Dcgu5bYltMosjGi6LD7GPW72zboSdyJQg==} - - math-expression-evaluator@1.4.0: - resolution: {integrity: sha512-4vRUvPyxdO8cWULGTh9dZWL2tZK6LDBvj+OGHBER7poH9Qdt7kXEoj20wiz4lQUbUXQZFjPbe5mVDo9nutizCw==} - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - mathml-tag-names@2.1.3: - resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} - - mdast-squeeze-paragraphs@4.0.0: - resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==} - - mdast-util-definitions@4.0.0: - resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} - - mdast-util-definitions@5.1.2: - resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} - - mdast-util-find-and-replace@3.0.2: - resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - - mdast-util-from-markdown@1.3.1: - resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} - - mdast-util-from-markdown@2.0.2: - resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} - - mdast-util-gfm-autolink-literal@2.0.1: - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - - mdast-util-gfm-footnote@2.1.0: - resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.1.0: - resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} - - mdast-util-mdx-expression@2.0.1: - resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - - mdast-util-mdx-jsx@3.2.0: - resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - - mdast-util-newline-to-break@2.0.0: - resolution: {integrity: sha512-MbgeFca0hLYIEx/2zGsszCSEJJ1JSCdiY5xQxRcLDDGa8EPvlLPupJ4DSajbMPAnC0je8jfb9TiUATnxxrHUog==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-hast@10.0.1: - resolution: {integrity: sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==} - - mdast-util-to-hast@11.3.0: - resolution: {integrity: sha512-4o3Cli3hXPmm1LhB+6rqhfsIUBjnKFlIUZvudaermXB+4/KONdd/W4saWWkC+LBLbPMqhFSSTSRgafHsT5fVJw==} - - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} - - mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - - mdast-util-to-string@1.1.0: - resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==} - - mdast-util-to-string@3.2.0: - resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - - mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} - - mdurl@1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - - mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - media-typer@1.1.0: - resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} - engines: {node: '>= 0.8'} - - mem@1.1.0: - resolution: {integrity: sha512-nOBDrc/wgpkd3X/JOhMqYR+/eLqlfLP4oQfoBA6QExIxEl+GU01oyEkwWyueyO8110pUKijtiHGhEmYoOn88oQ==} - engines: {node: '>=4'} - - mem@8.1.1: - resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} - engines: {node: '>=10'} - - memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} - - memfs@4.17.2: - resolution: {integrity: sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==} - engines: {node: '>= 4.0.0'} - - memoizee@0.4.17: - resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} - engines: {node: '>=0.12'} - - memoizerific@1.11.3: - resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} - - memory-fs@0.4.1: - resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==} - - meow@10.1.5: - resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - meow@13.2.0: - resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} - engines: {node: '>=18'} - - meow@3.7.0: - resolution: {integrity: sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==} - engines: {node: '>=0.10.0'} - - meow@9.0.0: - resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} - engines: {node: '>=10'} - - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - - merge-descriptors@2.0.0: - resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} - engines: {node: '>=18'} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - merge@1.2.1: - resolution: {integrity: sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==} - - meros@1.3.1: - resolution: {integrity: sha512-eV7dRObfTrckdmAz4/n7pT1njIsIJXRIZkgCiX43xEsPNy4gjXQzOYYxmGcolAMtF7HyfqRuDBh3Lgs4hmhVEw==} - engines: {node: '>=13'} - peerDependencies: - '@types/node': '>=13' - peerDependenciesMeta: - '@types/node': - optional: true - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - microbuffer@1.0.0: - resolution: {integrity: sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA==} - - microevent.ts@0.1.1: - resolution: {integrity: sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==} - - micromark-core-commonmark@1.1.0: - resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} - - micromark-core-commonmark@2.0.3: - resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - - micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - - micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - - micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - - micromark-extension-gfm-table@2.1.1: - resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-factory-destination@1.1.0: - resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} - - micromark-factory-destination@2.0.1: - resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - - micromark-factory-label@1.1.0: - resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} - - micromark-factory-label@2.0.1: - resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - - micromark-factory-space@1.1.0: - resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} - - micromark-factory-space@2.0.1: - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - - micromark-factory-title@1.1.0: - resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} - - micromark-factory-title@2.0.1: - resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - - micromark-factory-whitespace@1.1.0: - resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} - - micromark-factory-whitespace@2.0.1: - resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - - micromark-util-character@1.2.0: - resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - - micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - - micromark-util-chunked@1.1.0: - resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} - - micromark-util-chunked@2.0.1: - resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - - micromark-util-classify-character@1.1.0: - resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} - - micromark-util-classify-character@2.0.1: - resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - - micromark-util-combine-extensions@1.1.0: - resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} - - micromark-util-combine-extensions@2.0.1: - resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - - micromark-util-decode-numeric-character-reference@1.1.0: - resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} - - micromark-util-decode-numeric-character-reference@2.0.2: - resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - - micromark-util-decode-string@1.1.0: - resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} - - micromark-util-decode-string@2.0.1: - resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - - micromark-util-encode@1.1.0: - resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} - - micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - - micromark-util-html-tag-name@1.2.0: - resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} - - micromark-util-html-tag-name@2.0.1: - resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - - micromark-util-normalize-identifier@1.1.0: - resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} - - micromark-util-normalize-identifier@2.0.1: - resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - - micromark-util-resolve-all@1.1.0: - resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} - - micromark-util-resolve-all@2.0.1: - resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - - micromark-util-sanitize-uri@1.2.0: - resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} - - micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - - micromark-util-subtokenize@1.1.0: - resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} - - micromark-util-subtokenize@2.1.0: - resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} - - micromark-util-symbol@1.1.0: - resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - - micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - - micromark-util-types@1.1.0: - resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - - micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - - micromark@3.2.0: - resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} - - micromark@4.0.2: - resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime-types@3.0.1: - resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - - mimic-fn@1.2.0: - resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} - engines: {node: '>=4'} - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@3.1.0: - resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} - engines: {node: '>=8'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - mimic-response@4.0.0: - 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-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - mini-css-extract-plugin@2.9.2: - resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.94.0 - - minim@0.23.8: - resolution: {integrity: sha512-bjdr2xW1dBCMsMGGsUeqM4eFI60m94+szhxWys+B1ztIt6gWSfeGBdSVCIawezeHYLYn0j6zrsXdQS/JllBzww==} - engines: {node: '>=6'} - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimatch@10.0.3: - resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} - engines: {node: 20 || >=22} - - minimatch@3.0.3: - resolution: {integrity: sha512-NyXjqu1IwcqH6nv5vmMtaG3iw7kdV3g6MwlUBZkc3Vn5b5AMIWYKfptvzipoyFfhlfOgBQ9zoTxQMravF1QTnw==} - - minimatch@3.0.8: - resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - - minipass-fetch@1.4.1: - resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} - engines: {node: '>=8'} - - minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mississippi@2.0.0: - resolution: {integrity: sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==} - engines: {node: '>=4.0.0'} - - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - - mocha@10.8.2: - resolution: {integrity: sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==} - engines: {node: '>= 14.0.0'} - hasBin: true - - mocha@11.7.0: - resolution: {integrity: sha512-bXfLy/mI8n4QICg+pWj1G8VduX5vC0SHRwFpiR5/Fxc8S2G906pSfkyMmHVsdJNQJQNh3LE67koad9GzEvkV6g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - - moment-timezone@0.5.39: - resolution: {integrity: sha512-hoB6suq4ISDj7BDgctiOy6zljBsdYT0++0ZzZm9rtxIvJhIbQ3nmbgSWe7dNFGurl6/7b1OUkHlmN9JWgXVz7w==} - - moment@2.30.1: - resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - - monaco-editor-webpack-plugin@7.1.0: - resolution: {integrity: sha512-ZjnGINHN963JQkFqjjcBtn1XBtUATDZBMgNQhDQwd78w2ukRhFXAPNgWuacaQiDZsUr4h1rWv5Mv6eriKuOSzA==} - peerDependencies: - monaco-editor: '>= 0.31.0' - webpack: ^5.94.0 - - monaco-editor@0.44.0: - resolution: {integrity: sha512-5SmjNStN6bSuSE5WPT2ZV+iYn1/yI9sd4Igtk23ChvqB7kDk9lZbB9F5frsuvpB+2njdIeGGFf2G4gbE6rCC9Q==} - - monaco-editor@0.46.0: - resolution: {integrity: sha512-ADwtLIIww+9FKybWscd7OCfm9odsFYHImBRI1v9AviGce55QY8raT+9ihH8jX/E/e6QVSGM+pKj4jSUSRmALNQ==} - - monaco-editor@0.52.2: - resolution: {integrity: sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==} - - monaco-languageclient@0.13.1-next.9: - resolution: {integrity: sha512-VXzrrlB7RbpvrsgDJw8jmgGqSoFnAWQTOgwwIop7D25O9GB4A0HriyiyTumeOd7JJAQRLyserzSbfrRlBDD+aQ==} - engines: {vscode: ^1.50.0} - - monaco-page-objects@3.14.1: - resolution: {integrity: sha512-+inJ9rwxYraQFCA+YpjyYcoxmNHcEsxPH7bPhmeaZ09eRh0o3RQqFRZDkibFOraDpKiC5miqEDYR9pJx+hau4Q==} - deprecated: Deprecated - This package was replaced by @redhat-developer/page-objects - peerDependencies: - selenium-webdriver: '>=4.6.1' - typescript: '>=4.6.2' - - mousetrap@1.6.5: - resolution: {integrity: sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==} - - move-concurrently@1.0.1: - resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} - deprecated: This package is no longer supported. - - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - multicast-dns@7.2.5: - resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} - hasBin: true - - mustache@4.2.0: - resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} - hasBin: true - - mute-stream@0.0.7: - resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} - - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nan@2.22.2: - resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} - - nano-spawn@1.0.2: - resolution: {integrity: sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==} - engines: {node: '>=20.17'} - - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - nanoid@5.1.5: - resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} - engines: {node: ^18 || >=20} - hasBin: true - - nanospinner@1.2.2: - resolution: {integrity: sha512-Zt/AmG6qRU3e+WnzGGLuMCEAO/dAu45stNbHY223tUxldaDAeE+FxSPsd9Q+j+paejmm0ZbrNVs5Sraqy3dRxA==} - - napi-build-utils@2.0.0: - resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - neatequal@1.0.0: - resolution: {integrity: sha512-sVt5awO4a4w24QmAthdrCPiVRW3naB8FGLdyadin01BH+6BzNPEBwGrpwCczQvPlULS6uXTItTe1PJ5P0kYm7A==} - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} - - negotiator@1.0.0: - resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - neotraverse@0.6.18: - resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} - engines: {node: '>= 10'} - - nested-error-stacks@2.1.1: - resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} - - next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - - no-case@2.3.2: - resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} - - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - - node-abi@3.75.0: - resolution: {integrity: sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==} - engines: {node: '>=10'} - - node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - - node-addon-api@4.3.0: - resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} - - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - - node-addon-api@8.4.0: - resolution: {integrity: sha512-D9DI/gXHvVmjHS08SVch0Em8G5S1P+QWtU31appcKT/8wFSPRcdHadIFSAntdMMVM5zz+/DL+bL/gz3UDppqtg==} - engines: {node: ^18 || ^20 || >= 21} - - node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} - - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - deprecated: Use your platform's native DOMException instead - - node-fetch-commonjs@3.3.2: - resolution: {integrity: sha512-VBlAiynj3VMLrotgwOS3OyECFxas5y7ltLcK4t41lMUZeaK15Ym4QRkqN0EQKAFL42q9i21EPKjzLUPfltR72A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - node-fetch-native@1.6.6: - resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - - node-gyp-build@4.8.4: - resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} - hasBin: true - - node-gyp@3.8.0: - resolution: {integrity: sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==} - engines: {node: '>= 0.8.0'} - hasBin: true - - node-gyp@8.4.1: - resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} - engines: {node: '>= 10.12.0'} - hasBin: true - - node-gyp@9.4.1: - resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} - engines: {node: ^12.13 || ^14.13 || >=16} - hasBin: true - - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - node-loader@2.1.0: - resolution: {integrity: sha512-OwjPkyh8+7jW8DMd/iq71uU1Sspufr/C2+c3t0p08J3CrM9ApZ4U53xuisNrDXOHyGi5OYHgtfmmh+aK9zJA6g==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^5.94.0 - - node-notifier@5.4.5: - resolution: {integrity: sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==} - - 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-sarif-builder@2.0.3: - resolution: {integrity: sha512-Pzr3rol8fvhG/oJjIq2NTVB0vmdNNlz22FENhhPojYRZ4/ee08CfK4YuKmuL54V9MLhI1kpzxfOJ/63LzmZzDg==} - engines: {node: '>=14'} - - node-sass@9.0.0: - resolution: {integrity: sha512-yltEuuLrfH6M7Pq2gAj5B6Zm7m+gdZoG66wTqG6mIZV/zijq3M2OO2HswtT6oBspPyFhHDcaxWpsBm0fRNDHPg==} - engines: {node: '>=16'} - deprecated: Node Sass is no longer supported. Please use `sass` or `sass-embedded` instead. - hasBin: true - - node-schedule@2.1.1: - resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} - engines: {node: '>=6'} - - noms@0.0.0: - resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} - - nopt@3.0.6: - resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} - hasBin: true - - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - - nopt@6.0.0: - resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - - normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - - normalize-package-data@6.0.2: - resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} - engines: {node: ^16.14.0 || >=18.0.0} - - normalize-path@2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} - engines: {node: '>=0.10.0'} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - normalize-url@1.9.1: - resolution: {integrity: sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==} - engines: {node: '>=4'} - - normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - - normalize-url@8.0.2: - resolution: {integrity: sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==} - engines: {node: '>=14.16'} - - npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - npmlog@4.1.2: - resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} - deprecated: This package is no longer supported. - - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - - npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - - num2fraction@1.2.2: - resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} - - number-is-nan@1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - - nwmatcher@1.4.4: - resolution: {integrity: sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==} - - nwsapi@2.2.20: - resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} - - nypm@0.5.4: - resolution: {integrity: sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true - - oauth-sign@0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} - - object.entries@1.1.9: - resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.getownpropertydescriptors@2.1.8: - resolution: {integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==} - engines: {node: '>= 0.8'} - - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - - object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} - - objectorarray@1.0.5: - resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} - - obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - on-headers@1.1.0: - resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} - engines: {node: '>= 0.8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - one-time@1.0.0: - resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} - - onetime@2.0.1: - resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} - engines: {node: '>=4'} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} - - open@10.1.2: - resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} - engines: {node: '>=18'} - - open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} - - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - - openapi-path-templating@2.2.1: - resolution: {integrity: sha512-eN14VrDvl/YyGxxrkGOHkVkWEoPyhyeydOUrbvjoz8K5eIGgELASwN1eqFOJ2CTQMGCy2EntOK1KdtJ8ZMekcg==} - engines: {node: '>=12.20.0'} - - openapi-server-url-templating@1.3.0: - resolution: {integrity: sha512-DPlCms3KKEbjVQb0spV6Awfn6UWNheuG/+folQPzh/wUaKwuqvj8zt5gagD7qoyxtE03cIiKPgLFS3Q8Bz00uQ==} - engines: {node: '>=12.20.0'} - - opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - - opn@5.2.0: - resolution: {integrity: sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==} - engines: {node: '>=4'} - - optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - ora@4.1.1: - resolution: {integrity: sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==} - engines: {node: '>=8'} - - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - - ora@8.2.0: - resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} - engines: {node: '>=18'} - - original@1.0.2: - resolution: {integrity: sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==} - - os-homedir@1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - - os-locale@1.4.0: - resolution: {integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==} - engines: {node: '>=0.10.0'} - - os-locale@2.1.0: - resolution: {integrity: sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==} - engines: {node: '>=4'} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - osenv@0.1.5: - resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} - deprecated: This package is no longer supported. - - own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} - - p-all@2.1.0: - resolution: {integrity: sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==} - engines: {node: '>=6'} - - p-cancelable@3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} - engines: {node: '>=12.20'} - - p-cancelable@4.0.1: - resolution: {integrity: sha512-wBowNApzd45EIKdO1LaU+LrMBwAcjfPaYtVzV3lmfM3gf8Z4CHZsiIqlM8TZZ8okYvh5A1cP6gTfCRQtwUpaUg==} - engines: {node: '>=14.16'} - - p-defer@1.0.0: - resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} - engines: {node: '>=4'} - - p-each-series@2.2.0: - resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} - engines: {node: '>=8'} - - p-event@4.2.0: - resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} - engines: {node: '>=8'} - - p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-finally@2.0.1: - resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==} - engines: {node: '>=8'} - - p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-map@1.2.0: - resolution: {integrity: sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==} - engines: {node: '>=4'} - - p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - - p-map@3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-map@5.5.0: - resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} - engines: {node: '>=12'} - - p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} - engines: {node: '>=18'} - - p-queue@6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} - - p-retry@6.2.1: - resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} - engines: {node: '>=16.17'} - - p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} - - p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - package-json@4.0.1: - resolution: {integrity: sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==} - engines: {node: '>=4'} - - pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - - pako@2.1.0: - resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - - parallel-transform@1.2.0: - resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} - - param-case@2.1.1: - resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} - - param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-entities@2.0.0: - resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} - - parse-entities@4.0.2: - resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - - parse-json@2.2.0: - resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} - engines: {node: '>=0.10.0'} - - parse-json@5.2.0: - 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-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - - parse-semver@1.1.1: - resolution: {integrity: sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==} - - parse5-htmlparser2-tree-adapter@7.1.0: - resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} - - parse5-parser-stream@7.1.2: - resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} - - parse5@1.5.1: - resolution: {integrity: sha512-w2jx/0tJzvgKwZa58sj2vAYq/S/K1QJfIB3cWYea/Iu1scFPDQQ3IQiVZTHWtRBwAjv2Yd7S/xeZf3XqLDb3bA==} - - parse5@4.0.0: - resolution: {integrity: sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==} - - parse5@5.1.0: - resolution: {integrity: sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==} - - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - path-dirname@1.0.2: - resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} - - path-exists@2.1.0: - resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} - engines: {node: '>=0.10.0'} - - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-is-inside@1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} - engines: {node: 20 || >=22} - - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - - 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-type@1.1.0: - resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} - engines: {node: '>=0.10.0'} - - path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - path-type@6.0.0: - resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} - engines: {node: '>=18'} - - path@0.12.7: - resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} - - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - - pathfinding@0.4.18: - resolution: {integrity: sha512-R0TGEQ9GRcFCDvAWlJAWC+KGJ9SLbW4c0nuZRcioVlXVTlw+F5RvXQ8SQgSqI9KXWC1ew95vgmIiyaWTlCe9Ag==} - - paths-js@0.4.11: - resolution: {integrity: sha512-3mqcLomDBXOo7Fo+UlaenG6f71bk1ZezPQy2JCmYHy2W2k5VKpP+Jbin9H0bjXynelTbglCqdFhSEkeIkKTYUA==} - engines: {node: '>=0.11.0'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} - engines: {node: '>= 14.16'} - - peek-readable@5.4.2: - resolution: {integrity: sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==} - engines: {node: '>=14.16'} - - peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} - - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - - performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - - picocolors@0.2.1: - resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} - - pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - - pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - - pirates@4.0.7: - resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} - engines: {node: '>= 6'} - - pkce-challenge@3.1.0: - resolution: {integrity: sha512-bQ/0XPZZ7eX+cdAkd61uYWpfMhakH3NeteUF1R8GNa+LMqX8QFAkbCLqq+AYAns1/ueACBu/BMWhrlKGrdvGZg==} - - pkce-challenge@5.0.0: - resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} - engines: {node: '>=16.20.0'} - - pkg-dir@2.0.0: - resolution: {integrity: sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==} - engines: {node: '>=4'} - - pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - - pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} - - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - - playwright-core@1.52.0: - resolution: {integrity: sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==} - engines: {node: '>=18'} - hasBin: true - - playwright@1.52.0: - resolution: {integrity: sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==} - engines: {node: '>=18'} - hasBin: true - - plugin-error@1.0.1: - resolution: {integrity: sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==} - engines: {node: '>= 0.10'} - - pluralize@2.0.0: - resolution: {integrity: sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==} - - pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - - pn@1.1.0: - resolution: {integrity: sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==} - - pnp-webpack-plugin@1.6.4: - resolution: {integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==} - engines: {node: '>=6'} - - polished@4.3.1: - resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} - engines: {node: '>=10'} - - popmotion@11.0.3: - resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} - - portfinder@1.0.37: - resolution: {integrity: sha512-yuGIEjDAYnnOex9ddMnKZEMFE0CcGo6zbfzDklkmT1m5z734ss6JMzN9rNB3+RR7iS+F10D4/BVIaXOyh8PQKw==} - engines: {node: '>= 10.12'} - - possible-typed-array-names@1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} - engines: {node: '>= 0.4'} - - postcss-calc@5.3.1: - resolution: {integrity: sha512-iBcptYFq+QUh9gzP7ta2btw50o40s4uLI4UDVgd5yRAZtUDWc5APdl5yQDd2h/TyiZNbJrv0HiYhT102CMgN7Q==} - - postcss-calc@8.2.4: - resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} - peerDependencies: - postcss: ^8.2.2 - - postcss-colormin@2.2.2: - resolution: {integrity: sha512-XXitQe+jNNPf+vxvQXIQ1+pvdQKWKgkx8zlJNltcMEmLma1ypDRDQwlLt+6cP26fBreihNhZxohh1rcgCH2W5w==} - - postcss-colormin@5.3.1: - resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-convert-values@2.6.1: - resolution: {integrity: sha512-SE7mf25D3ORUEXpu3WUqQqy0nCbMuM5BEny+ULE/FXdS/0UMA58OdzwvzuHJRpIFlk1uojt16JhaEogtP6W2oA==} - - postcss-convert-values@5.1.3: - resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-comments@2.0.4: - resolution: {integrity: sha512-yGbyBDo5FxsImE90LD8C87vgnNlweQkODMkUZlDVM/CBgLr9C5RasLGJxxh9GjVOBeG8NcCMatoqI1pXg8JNXg==} - - postcss-discard-comments@5.1.2: - resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-duplicates@2.1.0: - resolution: {integrity: sha512-+lk5W1uqO8qIUTET+UETgj9GWykLC3LOldr7EehmymV0Wu36kyoHimC4cILrAAYpHQ+fr4ypKcWcVNaGzm0reA==} - - postcss-discard-duplicates@5.1.0: - resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-empty@2.1.0: - resolution: {integrity: sha512-IBFoyrwk52dhF+5z/ZAbzq5Jy7Wq0aLUsOn69JNS+7YeuyHaNzJwBIYE0QlUH/p5d3L+OON72Fsexyb7OK/3og==} - - postcss-discard-empty@5.1.1: - resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-overridden@0.1.1: - resolution: {integrity: sha512-IyKoDL8QNObOiUc6eBw8kMxBHCfxUaERYTUe2QF8k7j/xiirayDzzkmlR6lMQjrAM1p1DDRTvWrS7Aa8lp6/uA==} - - postcss-discard-overridden@5.1.0: - resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-unused@2.2.3: - resolution: {integrity: sha512-nCbFNfqYAbKCw9J6PSJubpN9asnrwVLkRDFc4KCwyUEdOtM5XDE/eTW3OpqHrYY1L4fZxgan7LLRAAYYBzwzrg==} - - postcss-filter-plugins@2.0.3: - resolution: {integrity: sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==} - - postcss-flexbugs-fixes@3.2.0: - resolution: {integrity: sha512-0AuD9HG1Ey3/3nqPWu9yqf7rL0KCPu5VgjDsjf5mzEcuo9H/z8nco/fljKgjsOUrZypa95MI0kS4xBZeBzz2lw==} - - postcss-flexbugs-fixes@4.2.1: - resolution: {integrity: sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@1.2.0: - resolution: {integrity: sha512-3fpCfnXo9Qd/O/q/XL4cJUhRsqjVD2V1Vhy3wOEcLE5kz0TGtdDXJSoiTdH4e847KphbEac4+EZSH4qLRYIgLw==} - engines: {node: '>=0.12'} - - postcss-load-config@3.1.4: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-load-options@1.2.0: - resolution: {integrity: sha512-WKS5LJMZLWGwtfhs5ahb2ycpoYF3m0kK4QEaM+elr5EpiMt0H296P/9ETa13WXzjPwB0DDTBiUBBWSHoApQIJg==} - engines: {node: '>=0.12'} - - postcss-load-plugins@2.3.0: - resolution: {integrity: sha512-/WGUMYhKiryWjYO6c7kAcqMuD7DVkaQ8HcbQenDme/d3OBOmrYMFObOKgUWyUy1uih5U2Dakq8H6VcJi5C9wHQ==} - engines: {node: '>=0.12'} - - postcss-loader@2.0.8: - resolution: {integrity: sha512-KtXBiQ/r/WYW8LxTSJK7h8wLqvCMSub/BqmRnud/Mu8RzwflW9cmXxwsMwbn15TNv287Hcufdb3ZSs7xHKnG8Q==} - engines: {node: '>= 4'} - - postcss-loader@4.3.0: - resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==} - engines: {node: '>= 10.13.0'} - peerDependencies: - postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.94.0 - - postcss-loader@8.1.1: - resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} - engines: {node: '>= 18.12.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.94.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - - postcss-merge-idents@2.1.7: - resolution: {integrity: sha512-9DHmfCZ7/hNHhIKnNkz4CU0ejtGen5BbTRJc13Z2uHfCedeCUsK2WEQoAJRBL+phs68iWK6Qf8Jze71anuysWA==} - - postcss-merge-longhand@2.0.2: - resolution: {integrity: sha512-ma7YvxjdLQdifnc1HFsW/AW6fVfubGyR+X4bE3FOSdBVMY9bZjKVdklHT+odknKBB7FSCfKIHC3yHK7RUAqRPg==} - - postcss-merge-longhand@5.1.7: - resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-merge-rules@2.1.2: - resolution: {integrity: sha512-Wgg2FS6W3AYBl+5L9poL6ZUISi5YzL+sDCJfM7zNw/Q1qsyVQXXZ2cbVui6mu2cYJpt1hOKCGj1xA4mq/obz/Q==} - - postcss-merge-rules@5.1.4: - resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-message-helpers@2.0.0: - resolution: {integrity: sha512-tPLZzVAiIJp46TBbpXtrUAKqedXSyW5xDEo1sikrfEfnTs+49SBZR/xDdqCiJvSSbtr615xDsaMF3RrxS2jZlA==} - - postcss-minify-font-values@1.0.5: - resolution: {integrity: sha512-vFSPzrJhNe6/8McOLU13XIsERohBJiIFFuC1PolgajOZdRWqRgKITP/A4Z/n4GQhEmtbxmO9NDw3QLaFfE1dFQ==} - - postcss-minify-font-values@5.1.0: - resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-gradients@1.0.5: - resolution: {integrity: sha512-DZhT0OE+RbVqVyGsTIKx84rU/5cury1jmwPa19bViqYPQu499ZU831yMzzsyC8EhiZVd73+h5Z9xb/DdaBpw7Q==} - - postcss-minify-gradients@5.1.1: - resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-params@1.2.2: - resolution: {integrity: sha512-hhJdMVgP8vasrHbkKAk+ab28vEmPYgyuDzRl31V3BEB3QOR3L5TTIVEWLDNnZZ3+fiTi9d6Ker8GM8S1h8p2Ow==} - - postcss-minify-params@5.1.4: - resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-selectors@2.1.1: - resolution: {integrity: sha512-e13vxPBSo3ZaPne43KVgM+UETkx3Bs4/Qvm6yXI9HQpQp4nyb7HZ0gKpkF+Wn2x+/dbQ+swNpCdZSbMOT7+TIA==} - - postcss-minify-selectors@5.2.1: - resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-modules-extract-imports@1.2.1: - resolution: {integrity: sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==} - - postcss-modules-extract-imports@2.0.0: - resolution: {integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==} - engines: {node: '>= 6'} - - postcss-modules-extract-imports@3.1.0: - resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-local-by-default@1.2.0: - resolution: {integrity: sha512-X4cquUPIaAd86raVrBwO8fwRfkIdbwFu7CTfEOjiZQHVQwlHRSkTgH5NLDmMm5+1hQO8u6dZ+TOOJDbay1hYpA==} - - postcss-modules-local-by-default@3.0.3: - resolution: {integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==} - engines: {node: '>= 6'} - - postcss-modules-local-by-default@4.2.0: - resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-scope@1.1.0: - resolution: {integrity: sha512-LTYwnA4C1He1BKZXIx1CYiHixdSe9LWYVKadq9lK5aCCMkoOkFyZ7aigt+srfjlRplJY3gIol6KUNefdMQJdlw==} - - postcss-modules-scope@2.2.0: - resolution: {integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==} - engines: {node: '>= 6'} - - postcss-modules-scope@3.2.1: - resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-values@1.3.0: - resolution: {integrity: sha512-i7IFaR9hlQ6/0UgFuqM6YWaCfA1Ej8WMg8A5DggnH1UGKJvTV/ugqq/KaULixzzOi3T/tF6ClBXcHGCzdd5unA==} - - postcss-modules-values@3.0.0: - resolution: {integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==} - - postcss-modules-values@4.0.0: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules@4.3.1: - resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} - peerDependencies: - postcss: ^8.0.0 - - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-normalize-charset@1.1.1: - resolution: {integrity: sha512-RKgjEks83l8w4yEhztOwNZ+nLSrJ+NvPNhpS+mVDzoaiRHZQVoG7NF2TP5qjwnaN9YswUhj6m1E0S0Z+WDCgEQ==} - - postcss-normalize-charset@5.1.0: - resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-display-values@5.1.0: - resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-positions@5.1.1: - resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-repeat-style@5.1.1: - resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-string@5.1.0: - resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-timing-functions@5.1.0: - resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-unicode@5.1.1: - resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-url@3.0.8: - resolution: {integrity: sha512-WqtWG6GV2nELsQEFES0RzfL2ebVwmGl/M8VmMbshKto/UClBo+mznX8Zi4/hkThdqx7ijwv+O8HWPdpK7nH/Ig==} - - postcss-normalize-url@5.1.0: - resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-whitespace@5.1.1: - resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-ordered-values@2.2.3: - resolution: {integrity: sha512-5RB1IUZhkxDCfa5fx/ogp/A82mtq+r7USqS+7zt0e428HJ7+BHCxyeY39ClmkkUtxdOd3mk8gD6d9bjH2BECMg==} - - postcss-ordered-values@5.1.3: - resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-reduce-idents@2.4.0: - resolution: {integrity: sha512-0+Ow9e8JLtffjumJJFPqvN4qAvokVbdQPnijUDSOX8tfTwrILLP4ETvrZcXZxAtpFLh/U0c+q8oRMJLr1Kiu4w==} - - postcss-reduce-initial@1.0.1: - resolution: {integrity: sha512-jJFrV1vWOPCQsIVitawGesRgMgunbclERQ/IRGW7r93uHrVzNQQmHQ7znsOIjJPZ4yWMzs5A8NFhp3AkPHPbDA==} - - postcss-reduce-initial@5.1.2: - resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-reduce-transforms@1.0.4: - resolution: {integrity: sha512-lGgRqnSuAR5i5uUg1TA33r9UngfTadWxOyL2qx1KuPoCQzfmtaHjp9PuwX7yVyRxG3BWBzeFUaS5uV9eVgnEgQ==} - - postcss-reduce-transforms@5.1.0: - resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-resolve-nested-selector@0.1.6: - resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} - - postcss-safe-parser@7.0.1: - resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} - engines: {node: '>=18.0'} - peerDependencies: - postcss: ^8.4.31 - - postcss-selector-parser@2.2.3: - resolution: {integrity: sha512-3pqyakeGhrO0BQ5+/tGTfvi5IAUAhHRayGK8WFSu06aEv2BmHoXw/Mhb+w7VY5HERIuC+QoUI7wgrCcq2hqCVA==} - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} - engines: {node: '>=4'} - - postcss-svgo@2.1.6: - resolution: {integrity: sha512-y5AdQdgBoF4rbpdbeWAJuxE953g/ylRfVNp6mvAi61VCN/Y25Tu9p5mh3CyI42WbTRIiwR9a1GdFtmDnNPeskQ==} - - postcss-svgo@5.1.0: - resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-unique-selectors@2.0.2: - resolution: {integrity: sha512-WZX8r1M0+IyljoJOJleg3kYm10hxNYF9scqAT7v/xeSX1IdehutOM85SNO0gP9K+bgs86XERr7Ud5u3ch4+D8g==} - - postcss-unique-selectors@5.1.1: - resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-value-parser@3.3.1: - resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss-zindex@2.2.0: - resolution: {integrity: sha512-uhRZ2hRgj0lorxm9cr62B01YzpUe63h0RXMXQ4gWW3oa2rpJh+FJAiEAytaFCPU/VgaBS+uW2SJ1XKyDNz1h4w==} - - postcss@5.2.18: - resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==} - engines: {node: '>=0.12'} - - postcss@6.0.23: - resolution: {integrity: sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==} - engines: {node: '>=4.0.0'} - - postcss@7.0.39: - resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} - engines: {node: '>=6.0.0'} - - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} - engines: {node: ^10 || ^12 || >=14} - - prebuild-install@7.1.3: - resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} - engines: {node: '>=10'} - hasBin: true - - prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prepend-http@1.0.4: - resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} - engines: {node: '>=0.10.0'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier@1.19.1: - resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} - engines: {node: '>=4'} - hasBin: true - - prettier@2.3.0: - resolution: {integrity: sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@3.5.3: - resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} - engines: {node: '>=14'} - hasBin: true - - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} - engines: {node: '>=14'} - hasBin: true - - pretty-bytes@4.0.2: - resolution: {integrity: sha512-yJAF+AjbHKlxQ8eezMd/34Mnj/YTQ3i6kLzvVsH4l/BfIFtp444n0wVbnsn66JimZ9uBofv815aRp1zCppxlWw==} - engines: {node: '>=4'} - - pretty-error@2.1.2: - resolution: {integrity: sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==} - - pretty-error@4.0.0: - resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - - pretty-format@20.0.3: - resolution: {integrity: sha512-dSW/15bmtC3vuheyzWUveowskTAUAWKE08+x06rgYzvSoDzg6cVg/MPKgNvh87jRJvOQ/qaQZLLWml2jrukk6w==} - - pretty-format@22.4.3: - resolution: {integrity: sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==} - - pretty-format@25.5.0: - resolution: {integrity: sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==} - engines: {node: '>= 8.3'} - - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - pretty-hrtime@1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - - prism-react-renderer@2.4.1: - resolution: {integrity: sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==} - peerDependencies: - react: '>=16.0.0' - - prismjs@1.30.0: - resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} - engines: {node: '>=6'} - - private@0.1.8: - resolution: {integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==} - engines: {node: '>= 0.6'} - - process-nextick-args@1.0.7: - resolution: {integrity: sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - progress-estimator@0.2.2: - resolution: {integrity: sha512-GF76Ac02MTJD6o2nMNtmtOFjwWCnHcvXyn5HOWPQnEMO8OTLw7LAvNmrwe8LmdsB+eZhwUu9fX/c9iQnBxWaFA==} - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - - promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - - promise.allsettled@1.0.7: - resolution: {integrity: sha512-hezvKvQQmsFkOdrZfYxUxkyxl8mgFQeT259Ajj9PXdbg9VzBCWrItOev72JyWxkCD5VSSqAeHmlN3tWx4DlmsA==} - engines: {node: '>= 0.4'} - - promise.prototype.finally@3.1.8: - resolution: {integrity: sha512-aVDtsXOml9iuMJzUco9J1je/UrIT3oMYfWkCTiUhkt+AvZw72q4dUZnR/R/eB3h5GeAagQVXvM1ApoYniJiwoA==} - engines: {node: '>= 0.4'} - - promise.series@0.2.0: - resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} - engines: {node: '>=0.12'} - - promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - - promise@8.0.1: - resolution: {integrity: sha512-6NO4VAynZF2J958bGr+U5mPDwK5n7Vi/S0mCW7bke3bJmcALGjCywH8sl6a2eN+xIX6Q1exH2lmqyjR9PKTiwg==} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - proper-lockfile@1.2.0: - resolution: {integrity: sha512-YNjxtCoY3A+lohlLXWCYrHDhUdfU3MMnuC+ADhloDvJo586LKW23dPrjxGvRGuus05Amcf0cQy6vrjjtbJhWpw==} - - property-expr@2.0.6: - resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} - - property-information@5.6.0: - resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} - - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - - property-information@7.1.0: - resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} - - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - proxy-from-env@0.0.1: - resolution: {integrity: sha512-B9Hnta3CATuMS0q6kt5hEezOPM+V3dgaRewkFtFoaRQYTVNsHqUvFXmndH06z3QO1ZdDnRELv5vfY6zAj/gG7A==} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - - psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - - pump@1.0.3: - resolution: {integrity: sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==} - - pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - - pump@3.0.3: - resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} - - pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} - - punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} - engines: {node: '>=6'} - - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - puppeteer-core@2.1.1: - resolution: {integrity: sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==} - engines: {node: '>=8.16.0'} - - pure-color@1.3.0: - resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} - - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - - q@1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - deprecated: |- - You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. - - (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) - - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} - engines: {node: '>=0.6'} - - qs@6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} - engines: {node: '>=0.6'} - - query-string@4.3.4: - resolution: {integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==} - engines: {node: '>=0.10.0'} - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - - quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - - raf@3.4.0: - resolution: {integrity: sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==} - - ramda-adjunct@5.1.0: - resolution: {integrity: sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==} - engines: {node: '>=0.10.3'} - peerDependencies: - ramda: '>= 0.30.0' - - ramda@0.28.0: - resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} - - ramda@0.29.0: - resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} - - ramda@0.30.1: - resolution: {integrity: sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==} - - randexp@0.5.3: - resolution: {integrity: sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==} - engines: {node: '>=4'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.2: - 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-loader@4.0.2: - resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^5.94.0 - - rc-config-loader@4.1.3: - resolution: {integrity: sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==} - - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - - react-base16-styling@0.6.0: - resolution: {integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==} - - react-collapse@5.1.1: - resolution: {integrity: sha512-k6cd7csF1o9LBhQ4AGBIdxB60SUEUMQDAnL2z1YvYNr9KoKr+nDkhN6FK7uGaBd/rYrYfrMpzpmJEIeHRYogBw==} - peerDependencies: - react: '>=16.3.0' - - react-colorful@5.6.1: - resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - react-copy-to-clipboard@5.1.0: - resolution: {integrity: sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==} - peerDependencies: - react: ^15.3.0 || 16 || 17 || 18 - - react-debounce-input@3.3.0: - resolution: {integrity: sha512-VEqkvs8JvY/IIZvh71Z0TC+mdbxERvYF33RcebnodlsUZ8RSgyKe2VWaHXv4+/8aoOgXLxWrdsYs2hDhcwbUgA==} - peerDependencies: - react: ^15.3.0 || 16 || 17 || 18 - - react-dev-utils@5.0.3: - resolution: {integrity: sha512-Mvs6ofsc2xTjeZIrMaIfbXfsPVrbdVy/cVqq6SAacnqfMlcBpDuivhWZ1ODGeJ8HgmyWTLH971PYjj/EPCDVAw==} - engines: {node: '>=6'} - peerDependencies: - typescript: '>=2.7' - webpack: ^5.94.0 - peerDependenciesMeta: - typescript: - optional: true - - react-dnd-html5-backend@16.0.1: - resolution: {integrity: sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==} - - react-dnd@16.0.1: - resolution: {integrity: sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==} - peerDependencies: - '@types/hoist-non-react-statics': '>= 3.3.1' - '@types/node': '>= 12' - '@types/react': '>= 16' - react: '>= 16.14' - peerDependenciesMeta: - '@types/hoist-non-react-statics': - optional: true - '@types/node': - optional: true - '@types/react': - optional: true - - react-docgen-typescript@2.4.0: - resolution: {integrity: sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==} - peerDependencies: - typescript: '>= 4.3.x' - - react-docgen@5.4.3: - resolution: {integrity: sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA==} - engines: {node: '>=8.10.0'} - hasBin: true - - react-docgen@7.1.1: - resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==} - engines: {node: '>=16.14.0'} - - react-docgen@8.0.0: - resolution: {integrity: sha512-kmob/FOTwep7DUWf9KjuenKX0vyvChr3oTdvvPt09V60Iz75FJp+T/0ZeHMbAfJj2WaVWqAPP5Hmm3PYzSPPKg==} - engines: {node: ^20.9.0 || >=22} - - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - - react-dom@19.1.0: - resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} - peerDependencies: - react: ^19.1.0 - - react-element-to-jsx-string@14.3.4: - resolution: {integrity: sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==} - peerDependencies: - react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 - react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 - - react-element-to-jsx-string@15.0.0: - resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==} - peerDependencies: - react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - - react-error-boundary@6.0.0: - resolution: {integrity: sha512-gdlJjD7NWr0IfkPlaREN2d9uUZUlksrfOx7SX62VRerwXbMY6ftGCIZua1VG1aXFNOimhISsTq+Owp725b9SiA==} - peerDependencies: - react: '>=16.13.1' - - react-error-overlay@4.0.1: - resolution: {integrity: sha512-xXUbDAZkU08aAkjtUvldqbvI04ogv+a1XdHxvYuHPYKIVk/42BIOD0zSKTHAWV4+gDy3yGm283z2072rA2gdtw==} - - react-hook-form@7.56.3: - resolution: {integrity: sha512-IK18V6GVbab4TAo1/cz3kqajxbDPGofdF0w7VHdCo0Nt8PrPlOZcuuDq9YYIV1BtjcX78x0XsldbQRQnQXWXmw==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 || ^19 - - react-hook-form@7.56.4: - resolution: {integrity: sha512-Rob7Ftz2vyZ/ZGsQZPaRdIefkgOSrQSPXfqBdvOPwJfoGnjwRJUs7EM7Kc1mcoDv3NOtqBzPGbcMB8CGn9CKgw==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 || ^19 - - react-hot-loader@4.13.1: - resolution: {integrity: sha512-ZlqCfVRqDJmMXTulUGic4lN7Ic1SXgHAFw7y/Jb7t25GBgTR0fYAJ8uY4mrpxjRyWGWmqw77qJQGnYbzCvBU7g==} - engines: {node: '>= 6'} - peerDependencies: - '@types/react': ^15.0.0 || ^16.0.0 || ^17.0.0 - react: ^15.0.0 || ^16.0.0 || ^17.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-icons@4.12.0: - resolution: {integrity: sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==} - peerDependencies: - react: '*' - - react-immutable-proptypes@2.2.0: - resolution: {integrity: sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ==} - peerDependencies: - immutable: '>=3.6.2' - - react-immutable-pure-component@2.2.2: - resolution: {integrity: sha512-vkgoMJUDqHZfXXnjVlG3keCxSO/U6WeDQ5/Sl0GK2cH8TOxEzQ5jXqDXHEL/jqk6fsNxV05oH5kD7VNMUE2k+A==} - peerDependencies: - immutable: '>= 2 || >= 4.0.0-rc' - react: '>= 16.6' - react-dom: '>= 16.6' - - react-inspector@5.1.1: - resolution: {integrity: sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - - react-inspector@6.0.2: - resolution: {integrity: sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==} - peerDependencies: - react: ^16.8.4 || ^17.0.0 || ^18.0.0 - - react-intl@7.1.11: - resolution: {integrity: sha512-tnVoRCWvW5Ie2ikYSdPF7z3+880yCe/9xPmitFeRPw3RYDcCfR4m8ZYa4MBq19W4adt9Z+PQA4FaMBCJ7E+HCQ==} - peerDependencies: - react: 16 || 17 || 18 || 19 - typescript: ^5.6.0 - peerDependenciesMeta: - typescript: - optional: true - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - react-is@18.1.0: - resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} - - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - - react-is@19.1.0: - resolution: {integrity: sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==} - - react-json-view-lite@2.4.1: - resolution: {integrity: sha512-fwFYknRIBxjbFm0kBDrzgBy1xa5tDg2LyXXBepC5f1b+MY3BUClMCsvanMPn089JbV1Eg3nZcrp0VCuH43aXnA==} - engines: {node: '>=18'} - peerDependencies: - react: ^18.0.0 || ^19.0.0 - - react-json-view@1.21.3: - resolution: {integrity: sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==} - peerDependencies: - react: ^17.0.0 || ^16.3.0 || ^15.5.4 - react-dom: ^17.0.0 || ^16.3.0 || ^15.5.4 - - react-lifecycles-compat@3.0.4: - resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} - - react-lottie@1.2.10: - resolution: {integrity: sha512-x0eWX3Z6zSx1XM5QSjnLupc6D22LlMCB0PH06O/N/epR2hsLaj1Vxd9RtMnbbEHjJ/qlsgHJ6bpN3vnZI92hjw==} - peerDependencies: - react: '>=15.0.0' - - react-markdown@10.1.0: - resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} - peerDependencies: - '@types/react': '>=18' - react: '>=18' - - react-markdown@7.1.2: - resolution: {integrity: sha512-ibMcc0EbfmbwApqJD8AUr0yls8BSrKzIbHaUsPidQljxToCqFh34nwtu3CXNEItcVJNzpjDHrhK8A+MAh2JW3A==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' - - react-monaco-editor@0.58.0: - resolution: {integrity: sha512-e8JH0TQEzO96Wd/EXgzc9M9tQK1pxBECD+8GNob9slMURcCM36TiVrgc4topWCDGYxRuMj8IEkaX+s3eQcUUqw==} - peerDependencies: - monaco-editor: ^0.52.0 - react: '>=16.8.0 <20.0.0' - react-dom: '>=16.8.0 <20.0.0' - - react-redux@9.2.0: - resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==} - peerDependencies: - '@types/react': ^18.2.25 || ^19 - react: ^18.0 || ^19 - redux: ^5.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - redux: - optional: true - - react-refresh@0.11.0: - resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==} - engines: {node: '>=0.10.0'} - - react-refresh@0.17.0: - resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} - engines: {node: '>=0.10.0'} - - react-remove-scroll-bar@2.3.8: - resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.7.1: - resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - react-scripts-ts@3.1.0: - resolution: {integrity: sha512-D5MobGSGswNH3e8RVa8M50jIsazNIqizO5qwWYqfo/tMYSvG0ENotzD3SYMUWYb1E5fIcM+D9a0XEJgo3VgtCQ==} - engines: {node: '>=6'} - hasBin: true - peerDependencies: - typescript: 3.x.x - - react-split-pane@0.1.92: - resolution: {integrity: sha512-GfXP1xSzLMcLJI5BM36Vh7GgZBpy+U/X0no+VM3fxayv+p1Jly5HpMofZJraeaMl73b3hvlr+N9zJKvLB/uz9w==} - peerDependencies: - react: ^16.0.0-0 - react-dom: ^16.0.0-0 - - react-style-proptype@3.2.2: - resolution: {integrity: sha512-ywYLSjNkxKHiZOqNlso9PZByNEY+FTyh3C+7uuziK0xFXu9xzdyfHwg4S9iyiRRoPCR4k2LqaBBsWVmSBwCWYQ==} - - react-style-singleton@2.2.3: - resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - react-syntax-highlighter@15.6.1: - resolution: {integrity: sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==} - peerDependencies: - react: '>= 0.14.0' - - react-test-renderer@19.1.0: - resolution: {integrity: sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==} - peerDependencies: - react: ^19.1.0 - - react-textarea-autosize@8.5.9: - resolution: {integrity: sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==} - engines: {node: '>=10'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - react-zoom-pan-pinch@3.7.0: - resolution: {integrity: sha512-UmReVZ0TxlKzxSbYiAj+LeGRW8s8LraAFTXRAxzMYnNRgGPsxCudwZKVkjvGmjtx7SW/hZamt69NUmGf4xrkXA==} - engines: {node: '>=8', npm: '>=5'} - peerDependencies: - react: '*' - react-dom: '*' - - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - - react@19.1.0: - resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - read-pkg-up@1.0.1: - resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} - engines: {node: '>=0.10.0'} - - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg-up@8.0.0: - resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} - engines: {node: '>=12'} - - read-pkg@1.1.0: - resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} - engines: {node: '>=0.10.0'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - - read-pkg@6.0.0: - 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@1.0.7: - resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} - engines: {node: '>=0.8'} - - readable-stream@1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} - - readable-stream@1.1.14: - resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} - - readable-stream@2.0.6: - resolution: {integrity: sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readable-stream@4.7.0: - resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - readable-web-to-node-stream@3.0.4: - resolution: {integrity: sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==} - engines: {node: '>=8'} - - readdirp@2.2.1: - resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} - engines: {node: '>=0.10'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - - realpath-native@2.0.0: - resolution: {integrity: sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==} - engines: {node: '>=8'} - - recast@0.23.11: - resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} - engines: {node: '>= 4'} - - rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - - rechoir@0.7.1: - resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} - engines: {node: '>= 0.10'} - - rechoir@0.8.0: - resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} - engines: {node: '>= 10.13.0'} - - recursive-readdir@2.2.1: - resolution: {integrity: sha512-BKWLxPZb4B07G/4LzyzsHaw24fC41/tL7LrECr1//X9ykRhmxlYgyl7G7X+6A7nvJyOGE/ED7refqmSGORVYqQ==} - engines: {node: '>=0.10.0'} - - redent@1.0.0: - resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==} - engines: {node: '>=0.10.0'} - - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - - redent@4.0.0: - resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} - engines: {node: '>=12'} - - reduce-css-calc@1.3.0: - resolution: {integrity: sha512-0dVfwYVOlf/LBA2ec4OwQ6p3X9mYxn/wOl2xTcLwjnPYrkgEfPx3VI4eGCH3rQLlPISG5v9I9bkZosKsNRTRKA==} - - reduce-function-call@1.0.3: - resolution: {integrity: sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==} - - redux-immutable@4.0.0: - resolution: {integrity: sha512-SchSn/DWfGb3oAejd+1hhHx01xUoxY+V7TeK0BKqpkLKiQPVFf7DYzEaKmrEVxsWxielKfSK9/Xq66YyxgR1cg==} - peerDependencies: - immutable: ^3.8.1 || ^4.0.0-rc.1 - - redux@4.2.1: - resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} - - redux@5.0.1: - resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} - - reflect-metadata@0.1.14: - resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} - - reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - - refractor@3.6.0: - resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} - - regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regenerator-runtime@0.11.1: - resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} - - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - - regenerator-transform@0.10.1: - resolution: {integrity: sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==} - - regexp.prototype.flags@1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - - regexpp@2.0.1: - resolution: {integrity: sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==} - engines: {node: '>=6.5.0'} - - regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - - regexpu-core@2.0.0: - resolution: {integrity: sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==} - - regexpu-core@6.2.0: - resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} - engines: {node: '>=4'} - - registry-auth-token@3.4.0: - resolution: {integrity: sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==} - - registry-url@3.1.0: - resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} - engines: {node: '>=0.10.0'} - - regjsgen@0.2.0: - resolution: {integrity: sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==} - - regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - - regjsparser@0.1.5: - resolution: {integrity: sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==} - hasBin: true - - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} - hasBin: true - - rehype-raw@6.1.1: - resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} - - rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - - relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} - - remap-istanbul@0.13.0: - resolution: {integrity: sha512-rS5ZpVAx3fGtKZkiBe1esXg5mKYbgW9iz8kkADFt3p6lo3NsBBUX1q6SwdhwUtYCGnr7nK6gRlbYK3i8R0jbRA==} - hasBin: true - - remark-breaks@4.0.0: - resolution: {integrity: sha512-IjEjJOkH4FuJvHZVIW0QCDWxcG96kCq7An/KVH2NfJe6rKZU2AsHeB3OEjPNRxi4QC34Xdx7I2KGYn6IpT7gxQ==} - - remark-external-links@8.0.0: - resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==} - - remark-footnotes@2.0.0: - resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==} - - remark-gfm@4.0.1: - resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} - - remark-mdx@1.6.22: - resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==} - - remark-parse@10.0.2: - resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-parse@8.0.3: - resolution: {integrity: sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==} - - remark-rehype@11.1.2: - resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} - - remark-rehype@9.1.0: - resolution: {integrity: sha512-oLa6YmgAYg19zb0ZrBACh40hpBLteYROaPLhBXzLgjqyHQrN+gVP9N/FJvfzuNNuzCutktkroXEZBrxAxKhh7Q==} - - remark-slug@6.1.0: - resolution: {integrity: sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==} - - remark-squeeze-paragraphs@4.0.0: - resolution: {integrity: sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==} - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - - remarkable@2.0.1: - resolution: {integrity: sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==} - engines: {node: '>= 6.0.0'} - hasBin: true - - remove-trailing-separator@1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - - renderkid@2.0.7: - resolution: {integrity: sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==} - - renderkid@3.0.0: - resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - - repeating@2.0.1: - resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} - engines: {node: '>=0.10.0'} - - request-promise-core@1.1.4: - resolution: {integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==} - engines: {node: '>=0.10.0'} - peerDependencies: - request: ^2.34 - - request-promise-native@1.0.9: - resolution: {integrity: sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==} - engines: {node: '>=0.12.0'} - deprecated: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 - peerDependencies: - request: ^2.34 - - request@2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@1.2.1: - resolution: {integrity: sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - require-main-filename@1.0.1: - resolution: {integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==} - - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - reselect@5.1.1: - resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} - - resize-observer-polyfill@1.5.1: - resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} - - resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - - resolve-dir@1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} - engines: {node: '>=0.10.0'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - - resolve@1.1.7: - resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} - - resolve@1.17.0: - resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} - - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - resolve@1.6.0: - resolution: {integrity: sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==} - - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - - responselike@3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} - engines: {node: '>=14.16'} - - restore-cursor@2.0.0: - resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} - engines: {node: '>=4'} - - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} - - ret@0.2.2: - resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} - engines: {node: '>=4'} - - retry@0.10.1: - resolution: {integrity: sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==} - - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - - reusify@1.1.0: - 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==} - - rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@6.0.1: - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} - engines: {node: 20 || >=22} - hasBin: true - - rollup-plugin-import-css@3.5.8: - resolution: {integrity: sha512-a3YsZnwHz66mRHCKHjaPCSfWczczvS/HTkgDc+Eogn0mt/0JZXz0WjK0fzM5WwBpVtOqHB4/gHdmEY40ILsaVg==} - engines: {node: '>=16'} - peerDependencies: - rollup: ^2.x.x || ^3.x.x || ^4.x.x - - rollup-plugin-peer-deps-external@2.2.4: - resolution: {integrity: sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==} - peerDependencies: - rollup: '*' - - rollup-plugin-postcss@4.0.2: - resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} - engines: {node: '>=10'} - peerDependencies: - postcss: 8.x - - rollup-plugin-scss@4.0.1: - resolution: {integrity: sha512-3W3+3OzR+shkDl3hJ1XTAuGkP4AfiLgIjie2GtcoZ9pHfRiNqeDbtCu1EUnkjZ98EPIM6nnMIXkKlc7Sx5bRvA==} - - rollup-plugin-sourcemaps@0.6.3: - resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} - engines: {node: '>=10.0.0'} - peerDependencies: - '@types/node': '>=10.0.0' - rollup: '>=0.31.2' - peerDependenciesMeta: - '@types/node': - optional: true - - rollup-plugin-svg@2.0.0: - resolution: {integrity: sha512-DmE7dSQHo1SC5L2uH2qul3Mjyd5oV6U1aVVkyvTLX/mUsRink7f1b1zaIm+32GEBA6EHu8H/JJi3DdWqM53ySQ==} - - rollup-plugin-terser@5.3.1: - resolution: {integrity: sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser - peerDependencies: - rollup: '>=0.66.0 <3' - - rollup-plugin-typescript2@0.27.3: - resolution: {integrity: sha512-gmYPIFmALj9D3Ga1ZbTZAKTXq1JKlTQBtj299DXhqYz9cL3g/AQfUvbb2UhH+Nf++cCq941W2Mv7UcrcgLzJJg==} - peerDependencies: - rollup: '>=1.26.3' - typescript: '>=2.4.0' - - rollup-plugin-typescript2@0.36.0: - resolution: {integrity: sha512-NB2CSQDxSe9+Oe2ahZbf+B4bh7pHwjV5L+RSYpCu7Q5ROuN94F9b6ioWwKfz3ueL3KTtmX4o2MUH2cgHDIEUsw==} - peerDependencies: - rollup: '>=1.26.3' - typescript: '>=2.4.0' - - rollup-pluginutils@1.5.2: - resolution: {integrity: sha512-SjdWWWO/CUoMpDy8RUbZ/pSpG68YHmhk5ROKNIoi2En9bJ8bTt3IhYi254RWiTclQmL7Awmrq+rZFOhZkJAHmQ==} - - rollup-pluginutils@2.8.2: - resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - - rollup@1.32.1: - resolution: {integrity: sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==} - hasBin: true - - rollup@4.44.0: - resolution: {integrity: sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - router@2.2.0: - resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} - engines: {node: '>= 18'} - - rsvp@4.8.5: - resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} - engines: {node: 6.* || >= 7.*} - - run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} - engines: {node: '>=18'} - - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - run-queue@1.0.3: - resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} - - rx-lite-aggregates@4.0.8: - resolution: {integrity: sha512-3xPNZGW93oCjiO7PtKxRK6iOVYBWBvtf9QHDfU23Oc+dLIQmAV//UnyXV/yihv81VS/UqoQPk4NegS8EFi55Hg==} - - rx-lite@4.0.8: - resolution: {integrity: sha512-Cun9QucwK6MIrp3mry/Y7hqD1oFqTYLQ4pGxaHTjIdaFDWRGGLikqp6u8LcWJnzpoALg9hap+JGk8sFIUuEGNA==} - - rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - - safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} - engines: {node: '>=0.4'} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-identifier@0.4.2: - resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} - - safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - - safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - - safe-stable-stringify@2.5.0: - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} - engines: {node: '>=10'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sane@1.6.0: - resolution: {integrity: sha512-r9zOMa72GMYfOja8DZvDrKQjKE7vxQD2AHFVV/cg05JmAhKoumAjrW/0QbKw6kGebgcG6HV/3u+EI8ZqrAPT3Q==} - engines: {node: '>=0.6.0'} - deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added - hasBin: true - - sane@4.1.0: - resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} - engines: {node: 6.* || 8.* || >= 10.*} - deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added - hasBin: true - - sanitize-filename@1.6.3: - resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} - - sass-graph@4.0.1: - resolution: {integrity: sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==} - engines: {node: '>=12'} - hasBin: true - - sass-loader@16.0.5: - resolution: {integrity: sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==} - engines: {node: '>= 18.12.0'} - peerDependencies: - '@rspack/core': 0.x || 1.x - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - sass: ^1.3.0 - sass-embedded: '*' - webpack: ^5.94.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - node-sass: - optional: true - sass: - optional: true - sass-embedded: - optional: true - webpack: - optional: true - - sass@1.89.2: - resolution: {integrity: sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==} - 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==} - - saxes@3.1.11: - resolution: {integrity: sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==} - engines: {node: '>=8'} - - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - scheduler@0.26.0: - resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} - - schema-utils@0.3.0: - resolution: {integrity: sha512-QaVYBaD9U8scJw2EBWnCBY+LJ0AD+/2edTaigDs0XLDLBfJmSUK9KGqktg1rb32U3z4j/XwvFwHHH1YfbYFd7Q==} - engines: {node: '>= 4.3 < 5.0.0 || >= 5.10'} - - schema-utils@0.4.7: - resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} - engines: {node: '>= 4'} - - schema-utils@2.7.0: - resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} - engines: {node: '>= 8.9.0'} - - schema-utils@2.7.1: - resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} - engines: {node: '>= 8.9.0'} - - schema-utils@3.3.0: - 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==} - engines: {node: '>= 10.13.0'} - - scss-tokenizer@0.4.3: - resolution: {integrity: sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==} - - secretlint@9.3.4: - resolution: {integrity: sha512-iNOzgMX/+W1SQNW/TW6eikGChyaPiazr2AEXjzjpoB0R6QJEulvlwhn0KLT1/xjPfdYrk3yiXZM40csUqET8uQ==} - engines: {node: ^14.13.1 || >=16.0.0} - hasBin: true - - secure-compare@3.0.1: - resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} - - select-hose@2.0.0: - resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - - selenium-webdriver@4.33.0: - resolution: {integrity: sha512-5vRhk4iI0B9nYbEitfnCjPDXBfG6o9DNhj5DG2355eQo8idETknhj1tigqqlkHsGephSZwLZqEm/d+3e1stGUA==} - engines: {node: '>= 18.20.5'} - - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - - semver-diff@2.1.0: - resolution: {integrity: sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw==} - engines: {node: '>=0.10.0'} - - semver@5.3.0: - resolution: {integrity: sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==} - hasBin: true - - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} - engines: {node: '>=10'} - hasBin: true - - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - - send@1.2.0: - resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} - engines: {node: '>= 18'} - - serialize-error@8.1.0: - resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} - engines: {node: '>=10'} - - serialize-javascript@1.9.1: - resolution: {integrity: sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==} - - serialize-javascript@4.0.0: - resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} - - serialize-javascript@5.0.1: - resolution: {integrity: sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - serve-favicon@2.5.1: - resolution: {integrity: sha512-JndLBslCLA/ebr7rS3d+/EKkzTsTi1jI2T9l+vHfAaGJ7A7NhtDpSZ0lx81HCNWnnE0yHncG+SSnVf9IMxOwXQ==} - engines: {node: '>= 0.8.0'} - - serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} - engines: {node: '>= 0.8.0'} - - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - - serve-static@2.2.0: - resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} - engines: {node: '>= 18'} - - serviceworker-cache-polyfill@4.0.0: - resolution: {integrity: sha512-VMl1n99TbtKdO7DYNX0J9FQt1doo69V6fBniKC7o+CoJerbmFlQbsoxDa7P+b4b0tmpsdRIuzzS9sSJI7vFY2g==} - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - - set-value@4.1.0: - resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==} - engines: {node: '>=11.0'} - - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - - shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shell-exec@1.0.2: - resolution: {integrity: sha512-jyVd+kU2X+mWKMmGhx4fpWbPsjvD53k9ivqetutVW/BQ+WIZoDoP4d8vUMGezV6saZsiNoW2f9GIhg9Dondohg==} - - shell-quote@1.6.1: - resolution: {integrity: sha512-V0iQEZ/uoem3NmD91rD8XiuozJnq9/ZJnbHVXHnWqP1ucAhS3yJ7sLIIzEi57wFFcK3oi3kFUC46uSyWr35mxg==} - - shell-quote@1.8.3: - resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} - engines: {node: '>= 0.4'} - - shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - - shellwords@0.1.1: - resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} - - shimmer@1.2.1: - resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} - - short-unique-id@5.3.2: - resolution: {integrity: sha512-KRT/hufMSxXKEDSQujfVE0Faa/kZ51ihUcZQAcmP04t00DvPj7Ox5anHke1sJYUtzSuiT/Y5uyzg/W7bBEGhCg==} - hasBin: true - - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - 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==} - - size-limit@11.2.0: - resolution: {integrity: sha512-2kpQq2DD/pRpx3Tal/qRW1SYwcIeQ0iq8li5CJHQgOC+FtPn2BVmuDtzUCgNnpCrbgtfEHqh+iWzxK+Tq6C+RQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - slash@1.0.0: - resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} - engines: {node: '>=0.10.0'} - - slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - - slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} - - slice-ansi@4.0.0: - 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==} - engines: {node: '>=18'} - - slugify@1.6.6: - resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} - engines: {node: '>=8.0.0'} - - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - - sockjs-client@1.1.5: - resolution: {integrity: sha512-PmPRkAYIeuRgX+ZSieViT4Z3Q23bLS2Itm/ck1tSf5P0/yVuFDiI5q9mcnpXoMdToaPSRS9MEyUx/aaBxrFzyw==} - - sockjs@0.3.24: - resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - - socks-proxy-agent@6.2.1: - resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} - engines: {node: '>= 10'} - - socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - - socks@2.8.5: - resolution: {integrity: sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - - sort-keys@1.1.2: - resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} - engines: {node: '>=0.10.0'} - - sorted-array-functions@1.3.0: - resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} - - source-list-map@2.0.1: - resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-loader@0.2.4: - resolution: {integrity: sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==} - engines: {node: '>= 6'} - - source-map-loader@5.0.0: - resolution: {integrity: sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - webpack: ^5.94.0 - - source-map-resolve@0.6.0: - resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - - source-map-support@0.4.18: - resolution: {integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==} - - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.2.0: - resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==} - engines: {node: '>=0.8.0'} - - source-map@0.5.6: - resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} - engines: {node: '>=0.10.0'} - - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - - sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - - space-separated-tokens@1.1.5: - resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.21: - resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} - - spdy-transport@3.0.0: - resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} - - spdy@4.0.2: - resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} - engines: {node: '>=6.0.0'} - - 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'} - hasBin: true - - ssri@5.3.0: - resolution: {integrity: sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==} - - ssri@8.0.1: - resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} - engines: {node: '>= 8'} - - ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - - stack-chain@1.3.7: - resolution: {integrity: sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==} - - stack-generator@2.0.10: - resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} - - stack-trace@0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - - stack-utils@1.0.5: - resolution: {integrity: sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==} - engines: {node: '>=8'} - - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - - stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - - stacktrace-gps@3.1.2: - resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} - - stacktrace-js@2.0.2: - resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} - - state-local@1.0.7: - resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} - - state-toggle@1.0.3: - resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} - - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - statuses@2.0.2: - resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} - engines: {node: '>= 0.8'} - - stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} - engines: {node: '>=18'} - - stdout-stream@1.4.1: - resolution: {integrity: sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==} - - stealthy-require@1.1.1: - resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} - engines: {node: '>=0.10.0'} - - stop-iteration-iterator@1.1.0: - resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} - engines: {node: '>= 0.4'} - - store2@2.14.4: - resolution: {integrity: sha512-srTItn1GOvyvOycgxjAnPA63FZNwy0PTyUBFMHRM+hVFltAeoh0LmNBz9SZqUS9mMqGk8rfyWyXn3GH5ReJ8Zw==} - - storybook@8.6.14: - resolution: {integrity: sha512-sVKbCj/OTx67jhmauhxc2dcr1P+yOgz/x3h0krwjyMgdc5Oubvxyg4NYDZmzAw+ym36g/lzH8N0Ccp4dwtdfxw==} - hasBin: true - peerDependencies: - prettier: ^2 || ^3 - peerDependenciesMeta: - prettier: - optional: true - - storybook@9.0.12: - resolution: {integrity: sha512-mpACe6BMd/M5sqcOiA8NmWIm2zdx0t4ujnA4NTcq4aErdK/KKuU255UM4pO3DIf5zWR5VrDfNV5UaMi/VgE2mA==} - hasBin: true - peerDependencies: - prettier: ^2 || ^3 - peerDependenciesMeta: - prettier: - optional: true - - storybook@9.0.17: - resolution: {integrity: sha512-O+9jgJ+Trlq9VGD1uY4OBLKQWHHDKM/A/pA8vMW6PVehhGHNvpzcIC1bngr6mL5gGHZP2nBv+9XG8pTMcggMmg==} - hasBin: true - peerDependencies: - prettier: ^2 || ^3 - peerDependenciesMeta: - prettier: - optional: true - - stream-each@1.2.3: - resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} - - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - - streamroller@3.1.5: - resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} - engines: {node: '>=8.0'} - - strict-uri-encode@1.1.0: - resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} - engines: {node: '>=0.10.0'} - - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - - string-hash@1.1.3: - resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} - - string-length@1.0.1: - resolution: {integrity: sha512-MNCACnufWUf3pQ57O5WTBMkKhzYIaKEcUioO0XHrTMafrbBaNk4IyDOLHBv5xbXO0jLLdsYWeFjpjG2hVHRDtw==} - engines: {node: '>=0.10.0'} - - string-length@3.1.0: - resolution: {integrity: sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==} - engines: {node: '>=8'} - - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - - string-width@1.0.2: - resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} - engines: {node: '>=0.10.0'} - - string-width@2.1.1: - resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} - engines: {node: '>=4'} - - string-width@3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} - - string.fromcodepoint@0.2.1: - resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==} - - string.prototype.codepointat@0.2.1: - resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} - - string.prototype.includes@2.0.1: - resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} - engines: {node: '>= 0.4'} - - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - - string.prototype.padend@3.1.6: - resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==} - engines: {node: '>= 0.4'} - - string.prototype.padstart@3.1.7: - resolution: {integrity: sha512-hc5ZFzw8H2Bl4AeHxE5s+CniFg+bPcr7lRRS189GCM6KhJQBACNRhtMsdcnpBNbjc1XisnUOqbP0c94RZU4GCw==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - - string.prototype.trim@1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} - engines: {node: '>= 0.4'} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - - strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - - strip-ansi@4.0.0: - resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} - engines: {node: '>=4'} - - strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom@2.0.0: - resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} - engines: {node: '>=0.10.0'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - - strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-indent@1.0.1: - resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==} - engines: {node: '>=0.10.0'} - hasBin: true - - strip-indent@3.0.0: - 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==} - engines: {node: '>=12'} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strip-outer@1.0.1: - resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} - engines: {node: '>=0.10.0'} - - strnum@1.1.2: - resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} - - strnum@2.1.1: - resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} - - strtok3@7.1.1: - resolution: {integrity: sha512-mKX8HA/cdBqMKUr0MMZAFssCkIGoZeSCMXgnt79yKxNFguMLVFgRe6wB+fsL0NmoHDbeyZXczy7vEPSoo3rkzg==} - engines: {node: '>=16'} - - structured-source@4.0.0: - resolution: {integrity: sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==} - - style-inject@0.3.0: - resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} - - style-loader@0.19.0: - resolution: {integrity: sha512-9mx9sC9nX1dgP96MZOODpGC6l1RzQBITI2D5WJhu+wnbrSYVKLGuy14XJSLVQih/0GFrPpjelt+s//VcZQ2Evw==} - engines: {node: '>= 0.12.0'} - - style-loader@1.3.0: - resolution: {integrity: sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==} - engines: {node: '>= 8.9.0'} - peerDependencies: - webpack: ^5.94.0 - - style-loader@2.0.0: - resolution: {integrity: sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^5.94.0 - - style-loader@3.3.4: - resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.94.0 - - style-loader@4.0.0: - resolution: {integrity: sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - webpack: ^5.94.0 - - style-mod@4.1.2: - resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} - - style-to-js@1.1.17: - resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} - - 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-value-types@5.0.0: - resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} - - stylehacks@5.1.1: - resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - stylelint-config-recommended@16.0.0: - resolution: {integrity: sha512-4RSmPjQegF34wNcK1e1O3Uz91HN8P1aFdFzio90wNK9mjgAI19u5vsU868cVZboKzCaa5XbpvtTzAAGQAxpcXA==} - engines: {node: '>=18.12.0'} - peerDependencies: - stylelint: ^16.16.0 - - stylelint-config-standard@38.0.0: - resolution: {integrity: sha512-uj3JIX+dpFseqd/DJx8Gy3PcRAJhlEZ2IrlFOc4LUxBX/PNMEQ198x7LCOE2Q5oT9Vw8nyc4CIL78xSqPr6iag==} - engines: {node: '>=18.12.0'} - peerDependencies: - stylelint: ^16.18.0 - - stylelint@16.21.0: - resolution: {integrity: sha512-ki3PpJGG7xhm3WtINoWGnlvqAmbqSexoRMbEMJzlwewSIOqPRKPlq452c22xAdEJISVi80r+I7KL9GPUiwFgbg==} - engines: {node: '>=18.12.0'} - hasBin: true - - stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - - subarg@1.0.0: - resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - - supports-color@3.2.3: - resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} - engines: {node: '>=0.8.0'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@6.1.0: - resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} - engines: {node: '>=6'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} - - supports-hyperlinks@3.2.0: - resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} - engines: {node: '>=14.18'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - svg-pathdata@1.0.4: - resolution: {integrity: sha512-afGVCE1xFbmI/uV6XiToTwnHZZtSiW9u8EBxZqRE25pPGk2Z9eEvT5nhAPRUnvUWs9FqwjdJeElkqoWKeW3JGA==} - engines: {node: '>= 0.10.0'} - - svg-pathdata@6.0.3: - resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==} - engines: {node: '>=12.0.0'} - - svg-tags@1.0.0: - resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} - - svg-url-loader@8.0.0: - resolution: {integrity: sha512-5doSXvl18hY1fGsRLdhWAU5jgzgxJ06/gc/26cpuDnN0xOz1HmmfhkpL29SSrdIvhtxQ1UwGzmk7wTT/l48mKw==} - engines: {node: '>=14'} - peerDependencies: - webpack: ^5.94.0 - - svg2ttf@4.3.0: - resolution: {integrity: sha512-LZ0B7zzHWLWbzLzwaKGHQvPOuxCXLReIb3LSxFSGUy1gMw2Utk6KGNbTmbmRL6Rk1qDSmTixnDrQgnXaL9n0CA==} - hasBin: true - - svg2ttf@6.0.3: - resolution: {integrity: sha512-CgqMyZrbOPpc+WqH7aga4JWkDPso23EgypLsbQ6gN3uoPWwwiLjXvzgrwGADBExvCRJrWFzAeK1bSoSpE7ixSQ==} - hasBin: true - - svgicons2svgfont@12.0.0: - resolution: {integrity: sha512-fjyDkhiG0M1TPBtZzD12QV3yDcG2fUgiqHPOCYzf7hHE40Hl3GhnE6P1njsJCCByhwM7MiufyDW3L7IOR5dg9w==} - engines: {node: '>=16.15.0'} - hasBin: true - - svgicons2svgfont@5.0.2: - resolution: {integrity: sha512-N9GG8atI7eKksJpLLDYXHzKcNy698FL+Bdu0sXgwURgVzNmeD35iSCnZhNuPMs4Ve2tg8vqHXI1ZNEWU6vhwjw==} - engines: {node: '>= 0.10.0'} - hasBin: true - - svgo@0.7.2: - resolution: {integrity: sha512-jT/g9FFMoe9lu2IT6HtAxTA7RR2XOrmcrmCtGnyB/+GQnV6ZjNn+KOHZbZ35yL81+1F/aB6OeEsJztzBQ2EEwA==} - engines: {node: '>=0.10.0'} - deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. - hasBin: true - - svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} - hasBin: true - - svgpath@2.6.0: - resolution: {integrity: sha512-OIWR6bKzXvdXYyO4DK/UWa1VA1JeKq8E+0ug2DG98Y/vOmMpfZNj+TIG988HjfYSqtcy/hFOtZq/n/j5GSESNg==} - - sw-precache-webpack-plugin@0.11.4: - resolution: {integrity: sha512-czvYwc8cy3K2F62PYuuja1p5NTqI3suFuUy8fDhcgS9cV5gO8jDlewQhhyUctcsA2T1Nb39W16nzSx8RwqkAvQ==} - engines: {node: '>=4.0.0'} - peerDependencies: - webpack: ^5.94.0 - - sw-precache@5.2.1: - resolution: {integrity: sha512-8FAy+BP/FXE+ILfiVTt+GQJ6UEf4CVHD9OfhzH0JX+3zoy2uFk7Vn9EfXASOtVmmIVbL3jE/W8Z66VgPSZcMhw==} - engines: {node: '>=4.0.0'} - deprecated: 'Please migrate to Workbox: https://developers.google.com/web/tools/workbox/guides/migrations/migrate-from-sw' - hasBin: true - - sw-toolbox@3.6.0: - 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.5: - resolution: {integrity: sha512-ayCrpDAgm5jIdq1kmcVWJRfp27cqU9tSRiAfKg3BKeplOmvu3+lKTPPtz4x1uI8v5l5/92Aopvq0EzRkXEr7Rw==} - - swagger-ui-react@5.21.0: - resolution: {integrity: sha512-lS5paITM1kkcBb/BTTSMHKelh8elHfcuUP4T3R3mO80tDR0AYJL2HR5UdQD6nV1LwdvekzRM8gKjJA6hVayi0A==} - peerDependencies: - react: '>=16.8.0 <19' - react-dom: '>=16.8.0 <19' - - swagger-ui-react@5.25.2: - resolution: {integrity: sha512-derGtL7NKvF0w4XIULgiWmS1y3EMEVQAJwLVLTAzVo6/ilLhwP9HCz2yjkVVHzK58gvOzrhO3DKk/Effpr5LJw==} - peerDependencies: - react: '>=16.8.0 <19' - react-dom: '>=16.8.0 <19' - - swc-loader@0.2.6: - resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==} - peerDependencies: - '@swc/core': ^1.2.147 - webpack: ^5.94.0 - - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - - symbol.prototype.description@1.0.7: - resolution: {integrity: sha512-HHGLabwmDRorfrwBGt3dD6iakQ1gNxbNK1jRb3rvr8XVsHmbAzaMdZGJtzL2W8IXdwfm3GEdw27qG86CWpuqOQ==} - engines: {node: '>= 0.4'} - - synchronous-promise@2.0.17: - resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} - - system-architecture@0.1.0: - resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} - engines: {node: '>=18'} - - tabbable@5.3.3: - resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} - - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - - table@5.4.6: - resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} - engines: {node: '>=6.0.0'} - - table@6.9.0: - resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} - engines: {node: '>=10.0.0'} - - tailwindcss@3.4.17: - resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} - engines: {node: '>=14.0.0'} - hasBin: true - - tailwindcss@4.1.10: - resolution: {integrity: sha512-P3nr6WkvKV/ONsTzj6Gb57sWPMX29EPNPopo7+FcpkQaNsrNpZ1pv8QmrYI2RqEKD7mlGqLnGovlcYnBK0IqUA==} - - tapable@0.2.9: - resolution: {integrity: sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==} - engines: {node: '>=0.6'} - - tapable@1.1.3: - resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} - engines: {node: '>=6'} - - tapable@2.2.2: - resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} - engines: {node: '>=6'} - - tar-fs@1.16.5: - resolution: {integrity: sha512-1ergVCCysmwHQNrOS+Pjm4DQ4nrGp43+Xnu4MRGjCnQu/m3hEgLNS78d5z+B8OJ1hN5EejJdCSFZE1oM6AQXAQ==} - - tar-fs@2.1.3: - resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==} - - tar-stream@1.6.2: - resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} - engines: {node: '>= 0.8.0'} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - - tar@2.2.2: - resolution: {integrity: sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==} - deprecated: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap. - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - - targz@1.0.1: - resolution: {integrity: sha512-6q4tP9U55mZnRuMTBqnqc3nwYQY3kv+QthCFZuMk+Tn1qYUnMPmL/JZ/mzgXINzFpSqfU+242IFmFU9VPvqaQw==} - - tcp-port-used@1.0.2: - resolution: {integrity: sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==} - - telejson@6.0.8: - resolution: {integrity: sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==} - - telejson@7.2.0: - resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} - - temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} - - temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} - - tempy@1.0.1: - resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} - engines: {node: '>=10'} - - term-size@1.2.0: - resolution: {integrity: sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==} - engines: {node: '>=4'} - - terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - - terser-webpack-plugin@4.2.3: - resolution: {integrity: sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^5.94.0 - - terser-webpack-plugin@5.3.14: - resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.94.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@4.8.1: - resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} - engines: {node: '>=6.0.0'} - hasBin: true - - terser@5.43.1: - resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} - engines: {node: '>=10'} - hasBin: true - - test-exclude@4.2.3: - resolution: {integrity: sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==} - - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - - test-exclude@7.0.1: - resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} - engines: {node: '>=18'} - - text-hex@1.0.0: - resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - textextensions@6.11.0: - resolution: {integrity: sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==} - engines: {node: '>=4'} - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - thingies@1.21.0: - resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} - engines: {node: '>=10.18'} - peerDependencies: - tslib: ^2 - - throat@3.2.0: - resolution: {integrity: sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==} - - throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - - through2@3.0.0: - resolution: {integrity: sha512-8B+sevlqP4OiCjonI1Zw03Sf8PuV1eRsYQgLad5eonILOdyeRsY27A/2Ze8IlvlMvq31OH+3fz/styI7Ya62yQ==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - thunky@1.1.0: - resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - - timed-out@4.0.1: - resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} - engines: {node: '>=0.10.0'} - - timers-ext@0.1.8: - resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} - engines: {node: '>=0.12'} - - timezone-support@3.1.0: - resolution: {integrity: sha512-N04dOzxt7Bw3PZ5ts8ofkQx6RsqWDo8cUQ/a8fdtywB58NIctmdbUUDWZSrgtI7c2jzA6MZ1Z6jY6OtBvc+CUQ==} - engines: {node: '>=14.8'} - hasBin: true - - tiny-case@1.0.3: - resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} - - tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} - engines: {node: '>=12.0.0'} - - tinyrainbow@1.2.0: - resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} - engines: {node: '>=14.0.0'} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} - engines: {node: '>=14.0.0'} - - tinyspy@4.0.3: - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} - engines: {node: '>=14.0.0'} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} - 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==} - engines: {node: '>= 0.4'} - - to-fast-properties@1.0.3: - resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} - engines: {node: '>=0.10.0'} - - to-json-schema@0.2.5: - resolution: {integrity: sha512-jP1ievOee8pec3tV9ncxLSS48Bnw7DIybgy112rhMCEhf3K4uyVNZZHr03iQQBzbV5v5Hos+dlZRRyk6YSMNDw==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tocbot@4.36.4: - resolution: {integrity: sha512-ffznkKnZ1NdghwR1y8hN6W7kjn4FwcXq32Z1mn35gA7jd8dt2cTVAwL3d0BXXZGPu0Hd0evverUvcYAb/7vn0g==} - - toggle-selection@1.0.6: - resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - token-types@5.0.1: - resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} - engines: {node: '>=14.16'} - - toml@3.0.0: - resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} - - toposort@1.0.7: - resolution: {integrity: sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==} - - toposort@2.0.2: - resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} - - tough-cookie@2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} - - tough-cookie@3.0.1: - resolution: {integrity: sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==} - engines: {node: '>=6'} - - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - - tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - - traverse@0.3.9: - resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} - - tree-dump@1.0.3: - resolution: {integrity: sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - - tree-sitter-json@0.24.8: - resolution: {integrity: sha512-Tc9ZZYwHyWZ3Tt1VEw7Pa2scu1YO7/d2BCBbKTx5hXwig3UfdQjsOPkPyLpDJOn/m1UBEWYAtSdGAwCSyagBqQ==} - peerDependencies: - tree-sitter: ^0.21.1 - peerDependenciesMeta: - tree-sitter: - optional: true - - tree-sitter@0.21.1: - resolution: {integrity: sha512-7dxoA6kYvtgWw80265MyqJlkRl4yawIjO7S5MigytjELkX43fV2WsAXzsNfO7sBpPPCF5Gp0+XzHk0DwLCq3xQ==} - - tree-sitter@0.22.4: - resolution: {integrity: sha512-usbHZP9/oxNsUY65MQUsduGRqDHQOou1cagUSwjhoSYAmSahjQDAVsh9s+SlZkn8X8+O1FULRGwHu7AFP3kjzg==} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trim-newlines@1.0.0: - resolution: {integrity: sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==} - engines: {node: '>=0.10.0'} - - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - - trim-newlines@4.1.1: - resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} - engines: {node: '>=12'} - - trim-repeated@1.0.0: - resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} - engines: {node: '>=0.10.0'} - - trim-right@1.0.1: - resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==} - engines: {node: '>=0.10.0'} - - trim-trailing-lines@1.1.4: - resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} - - trim@0.0.1: - resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} - deprecated: Use String.prototype.trim() instead - - triple-beam@1.3.0: - resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==} - - triple-beam@1.4.1: - resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} - engines: {node: '>= 14.0.0'} - - trough@1.0.5: - resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} - - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - - true-case-path@2.2.1: - resolution: {integrity: sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==} - - truncate-utf8-bytes@1.0.2: - resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} - - ts-algebra@2.0.0: - resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} - - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - - ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - ts-jest@22.0.1: - resolution: {integrity: sha512-bc781gViU95lRZF0kzkHiincwmVu96jbC8MFk2SXUCrSj3Zx8sMC6c6gJnIluVQkm8yYaBl5ucqLnwHNRl5l0Q==} - peerDependencies: - jest: ^22.0.1 || ^22.1.0-alpha.1 || ^23.0.0-alpha.1 - typescript: 2.x - - ts-jest@25.5.1: - resolution: {integrity: sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw==} - engines: {node: '>= 8'} - hasBin: true - peerDependencies: - jest: '>=25 <26' - typescript: '>=3.4 <4.0' - - ts-jest@29.3.4: - resolution: {integrity: sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA==} - engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/transform': ^29.0.0 - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/transform': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - - ts-loader@2.3.7: - 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==} - engines: {node: '>=12.0.0'} - peerDependencies: - typescript: '*' - webpack: ^5.94.0 - - ts-mixer@6.0.4: - resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} - - ts-morph@22.0.0: - resolution: {integrity: sha512-M9MqFGZREyeb5fTl6gNHKZLqBQA0TjA1lea+CR48R8EBTDuWrNqW6ccC5QvjNR4s6wDumD3LTCjOFSp9iwlzaw==} - - ts-morph@26.0.0: - resolution: {integrity: sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==} - - ts-pnp@1.2.0: - resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} - engines: {node: '>=6'} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - ts-toolbelt@9.6.0: - resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} - - tsconfig-paths-webpack-plugin@2.0.0: - resolution: {integrity: sha512-reAnVEGP7mNwOcXXYxQpsH7uY8blNJM/xgN2KYttVX+qkwfqA+nhRPpA7Fnomnlhm5Jz0EoSVwk4rtQu8hC54g==} - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} - - tsdx@0.14.1: - resolution: {integrity: sha512-keHmFdCL2kx5nYFlBdbE3639HQ2v9iGedAFAajobrUTH2wfX0nLPdDhbHv+GHLQZqf0c5ur1XteE8ek/+Eyj5w==} - engines: {node: '>=10'} - hasBin: true - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.0.1: - resolution: {integrity: sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - tslint-config-prettier@1.18.0: - resolution: {integrity: sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==} - engines: {node: '>=4.0.0'} - hasBin: true - - tslint-react-hooks@2.2.2: - resolution: {integrity: sha512-gtwA14+WevNUtlBhvAD5Ukpxt2qMegYI7IDD8zN/3JXLksdLdEuU/T/oqlI1CtZhMJffqyNn+aqq2oUqUFXiNA==} - peerDependencies: - tslint: 5 - 6 - typescript: '>=2.1.0' - - tslint-react@3.6.0: - resolution: {integrity: sha512-AIv1QcsSnj7e9pFir6cJ6vIncTqxfqeFF3Lzh8SuuBljueYzEAtByuB6zMaD27BL0xhMEqsZ9s5eHuCONydjBw==} - peerDependencies: - tslint: ^5.1.0 - typescript: '>=2.1.0 || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev' - - tslint-react@4.2.0: - resolution: {integrity: sha512-lO22+FKr9ZZGueGiuALzvZE/8ANoDoCHGCknX1Ge3ALrfcLQHQ1VGdyb1scZXQFdEQEfwBTIU40r5BUlJpn0JA==} - deprecated: TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint-react/issues/210 for more information. - peerDependencies: - tslint: ^5.1.0 - typescript: '>=2.8.0' - - tslint-react@5.0.0: - resolution: {integrity: sha512-/IbcSmoBPlFic8kQaRfQ4knTY4mivwo5LVzvozvX6Dyu2ynEnrh1dIcR2ujjyp/IodXqY/H5GbxFxSMo/Kf2Hg==} - deprecated: tslint-react is deprecated along with TSLint - peerDependencies: - tslint: ^6.0.0 - typescript: '>=3.4.1' - - tslint@5.20.1: - resolution: {integrity: sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==} - engines: {node: '>=4.8.0'} - hasBin: true - peerDependencies: - typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' - - tslint@6.1.3: - resolution: {integrity: sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==} - engines: {node: '>=4.8.0'} - deprecated: TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information. - hasBin: true - peerDependencies: - typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev' - - tsutils@2.29.0: - resolution: {integrity: sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==} - peerDependencies: - typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' - - tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - - tsyringe@4.10.0: - resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} - engines: {node: '>= 6.0.0'} - - ttf2eot@2.0.0: - 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@5.0.0: - resolution: {integrity: sha512-FplhShJd3rT8JGa8N04YWQuP7xRvwr9AIq+9/z5O/5ubqNiCADshKl8v51zJDFkhDVcYpdUqUpm7T4M53Z2JoQ==} - engines: {node: '>=14'} - hasBin: true - - ttf2woff@2.0.2: - resolution: {integrity: sha512-X68badwBjAy/+itU49scLjXUL094up+rHuYk+YAOTTBYSUMOmLZ7VyhZJuqQESj1gnyLAC2/5V8Euv+mExmyPA==} - hasBin: true - - ttf2woff@3.0.0: - resolution: {integrity: sha512-OvmFcj70PhmAsVQKfC15XoKH55cRWuaRzvr2fpTNhTNer6JBpG8n6vOhRrIgxMjcikyYt88xqYXMMVapJ4Rjvg==} - hasBin: true - - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - - tunnel@0.0.6: - resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} - engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - - tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - - type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - type-fest@0.16.0: - resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} - engines: {node: '>=10'} - - type-fest@0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - - type-fest@2.19.0: - 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'} - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - type-is@2.0.1: - resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} - engines: {node: '>= 0.6'} - - type@2.7.3: - resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} - - typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} - engines: {node: '>= 0.4'} - - typed-rest-client@1.8.11: - resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==} - - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - - typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - - types-ramda@0.30.1: - resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - - typescript@3.9.10: - resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} - engines: {node: '>=4.2.0'} - hasBin: true - - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} - engines: {node: '>=14.17'} - hasBin: true - - ua-parser-js@1.0.40: - resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} - hasBin: true - - uc.micro@1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - - uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - - uglify-es@3.3.9: - resolution: {integrity: sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==} - engines: {node: '>=0.8.0'} - deprecated: support for ECMAScript is superseded by `uglify-js` as of v3.13.0 - hasBin: true - - uglify-js@3.19.3: - resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} - engines: {node: '>=0.8.0'} - hasBin: true - - uglify-js@3.4.10: - resolution: {integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==} - engines: {node: '>=0.8.0'} - hasBin: true - - uglifyjs-webpack-plugin@1.2.5: - resolution: {integrity: sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==} - engines: {node: '>= 4.8 < 5.0.0 || >= 5.10'} - peerDependencies: - webpack: ^5.94.0 - - unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - - underscore@1.13.7: - resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - - undici-types@7.8.0: - resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} - - undici@7.10.0: - resolution: {integrity: sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==} - engines: {node: '>=20.18.1'} - - unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} - - unherit@1.1.3: - resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} - - unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} - - unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - - unified@9.2.0: - resolution: {integrity: sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==} - - union@0.5.0: - resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} - engines: {node: '>= 0.8.0'} - - uniq@1.0.1: - resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} - - uniqs@2.0.0: - resolution: {integrity: sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==} - - unique-filename@1.1.1: - resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} - - unique-filename@2.0.1: - resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - unique-slug@2.0.2: - resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - - unique-slug@3.0.0: - resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - unique-string@1.0.0: - resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} - engines: {node: '>=4'} - - unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} - - unist-builder@2.0.3: - resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} - - unist-builder@3.0.1: - resolution: {integrity: sha512-gnpOw7DIpCA0vpr6NqdPvTWnlPTApCTRzr+38E6hCWx3rz/cjo83SsKIlS1Z+L5ttScQ2AwutNnb8+tAvpb6qQ==} - - unist-util-generated@1.1.6: - resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} - - unist-util-generated@2.0.1: - resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} - - unist-util-is@4.1.0: - resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} - - 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-position@3.1.0: - resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} - - unist-util-position@4.0.4: - resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-remove-position@2.0.1: - resolution: {integrity: sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==} - - unist-util-remove@2.1.0: - resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==} - - unist-util-stringify-position@2.0.3: - resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} - - unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@3.1.1: - resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} - - 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@2.0.3: - resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} - - unist-util-visit@4.1.2: - resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - - unit-compare@1.0.1: - resolution: {integrity: sha512-AeLMQr8gcen2WOTwV0Gvi1nKKbY4Mms79MoltZ6hrZV/VANgE/YQly3jtWZJA/fa9m4ajhynq3XMqh5rOyZclA==} - - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - unplugin@1.16.1: - resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} - engines: {node: '>=14.0.0'} - - unraw@3.0.0: - resolution: {integrity: sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==} - - untildify@2.1.0: - resolution: {integrity: sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig==} - engines: {node: '>=0.10.0'} - - untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - - unzip-response@2.0.1: - resolution: {integrity: sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==} - engines: {node: '>=4'} - - unzipper@0.10.14: - resolution: {integrity: sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==} - - unzipper@0.12.3: - resolution: {integrity: sha512-PZ8hTS+AqcGxsaQntl3IRBw65QrBI6lxzqDEL7IAo/XCEqRTKGfOX56Vea5TH9SZczRVxuzk1re04z/YjuYCJA==} - - upath@2.0.1: - resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} - engines: {node: '>=4'} - - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - update-notifier@2.5.0: - resolution: {integrity: sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==} - engines: {node: '>=4'} - - upper-case@1.1.3: - resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - urijs@1.19.11: - resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} - - url-join@1.1.0: - resolution: {integrity: sha512-zz1wZk4Lb5PTVwZ3HWDmm8XnlPvmOof6/fjdDPA5yBrUcbtV64U6bV832Zf1BtU2WkBBWaUT46wCs+l0HP5nhg==} - - url-join@4.0.1: - resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} - - url-loader@0.6.2: - resolution: {integrity: sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==} - peerDependencies: - file-loader: '*' - - url-loader@4.1.1: - resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - file-loader: '*' - webpack: ^5.94.0 - peerDependenciesMeta: - file-loader: - optional: true - - url-parse-lax@1.0.0: - resolution: {integrity: sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==} - engines: {node: '>=0.10.0'} - - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - - url@0.11.4: - resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} - engines: {node: '>= 0.4'} - - use-callback-ref@1.3.3: - resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - use-composed-ref@1.4.0: - resolution: {integrity: sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-isomorphic-layout-effect@1.2.1: - resolution: {integrity: sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-latest@1.3.0: - resolution: {integrity: sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-resize-observer@9.1.0: - resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} - peerDependencies: - react: 16.8.0 - 18 - react-dom: 16.8.0 - 18 - - use-sidecar@1.1.3: - resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - use-sync-external-store@1.5.0: - resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - utf8-byte-length@1.0.5: - resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util.promisify@1.0.0: - resolution: {integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==} - - util@0.10.4: - resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - utila@0.4.0: - resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - - uuid-browser@3.1.0: - resolution: {integrity: sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==} - deprecated: Package no longer supported and required. Use the uuid package or crypto.randomUUID instead - - uuid@11.1.0: - resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} - hasBin: true - - uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true - - v8-compile-cache@2.4.0: - resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} - - v8-to-istanbul@4.1.4: - resolution: {integrity: sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==} - engines: {node: 8.x.x || >=10.10.0} - - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - varstream@0.3.2: - resolution: {integrity: sha512-OpR3Usr9dGZZbDttlTxdviGdxiURI0prX68+DuaN/JfIDbK9ZOmREKM6PgmelsejMnhgjXmEEEgf+E4NbsSqMg==} - engines: {node: '>=0.10.*'} - hasBin: true - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - vendors@1.0.4: - resolution: {integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==} - - verror@1.10.0: - 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==} - engines: {node: '>=4'} - - vfile-location@3.2.0: - resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} - - vfile-location@4.1.0: - resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} - - vfile-location@5.0.3: - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - - vfile-message@2.0.4: - resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} - - vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@4.2.1: - resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} - - vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - - vite@6.3.5: - resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: 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 - - vscode-debugadapter@1.51.0: - resolution: {integrity: sha512-mObaXD5/FH/z6aL2GDuyCLbnwLsYRCAJWgFid01vKW9Y5Si8OvINK+Tn+Yl/lRUbetjNuZW3j1euMEz6z8Yzqg==} - deprecated: This package has been renamed to @vscode/debugadapter, please update to the new name - - vscode-debugprotocol@1.51.0: - resolution: {integrity: sha512-dzKWTMMyebIMPF1VYMuuQj7gGFq7guR8AFya0mKacu+ayptJfaRuM0mdHCqiOth4FnRP8mPhEroFPx6Ift8wHA==} - deprecated: This package has been renamed to @vscode/debugprotocol, please update to the new name - - vscode-extension-telemetry@0.1.7: - resolution: {integrity: sha512-pZuZTHO9OpsrwlerOKotWBRLRYJ53DobYb7aWiRAXjlqkuqE+YJJaP+2WEy8GrLIF1EnitXTDMaTAKsmLQ5ORQ==} - engines: {vscode: ^1.5.0} - deprecated: This package has been renamed to @vscode/extension-telemetry, please update to the new name - - vscode-extension-tester-locators@3.12.2: - resolution: {integrity: sha512-RMN+AMGhK4dSPauJoAQ1Os4Kju9br7HvcwflkgWn7M81HEo2lt/wEsLKtEm0igSc3u4iKDH3R1D/kqbxW8A/UQ==} - deprecated: Deprecated - This package was replaced by @redhat-developer/locators - peerDependencies: - monaco-page-objects: ^3.14.1 - selenium-webdriver: '>=4.6.1' - - vscode-extension-tester@5.10.0: - resolution: {integrity: sha512-9tltf+hlwNTvi7XXjA7oH1kcTrIDOLqGB/5d+W6CSwTRMXHwxeIw4JUgKlriuy65elr06YB5IVpSBgn+fs4X5A==} - hasBin: true - peerDependencies: - mocha: '>=5.2.0' - typescript: '>=4.6.2' - - vscode-extension-tester@8.14.1: - resolution: {integrity: sha512-yu5nvQBI69Nwy7OZyNNmYcTMfcMbFy4jX2XjQc+jqenzifjOYLmr4iB427fA0A+fycl1S3ynbDlu9wKygcpdcA==} - hasBin: true - peerDependencies: - mocha: '>=5.2.0' - typescript: '>=4.6.2' - - vscode-jsonrpc@6.0.0: - resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} - engines: {node: '>=8.0.0 || >=10.0.0'} - - vscode-jsonrpc@8.1.0: - resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==} - engines: {node: '>=14.0.0'} - - vscode-jsonrpc@8.2.0: - resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} - engines: {node: '>=14.0.0'} - - vscode-jsonrpc@8.2.1: - resolution: {integrity: sha512-kdjOSJ2lLIn7r1rtrMbbNCHjyMPfRnowdKjBQ+mGq6NAW5QY2bEZC/khaC5OR8svbbjvLEaIXkOq45e2X9BIbQ==} - engines: {node: '>=14.0.0'} - - vscode-languageclient@7.0.0: - resolution: {integrity: sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==} - engines: {vscode: ^1.52.0} - - vscode-languageclient@8.1.0: - resolution: {integrity: sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==} - engines: {vscode: ^1.67.0} - - vscode-languageclient@9.0.1: - resolution: {integrity: sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==} - engines: {vscode: ^1.82.0} - - vscode-languageserver-protocol@3.16.0: - resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==} - - vscode-languageserver-protocol@3.17.3: - resolution: {integrity: sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==} - - vscode-languageserver-protocol@3.17.5: - resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} - - vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} - - vscode-languageserver-types@3.16.0: - resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} - - vscode-languageserver-types@3.17.3: - resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==} - - vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - - vscode-messenger-common@0.4.5: - resolution: {integrity: sha512-opA+BEYTWdy1fFC3oOw30b0zc/KEuMtw+1pOiH5fEp+BGeA5xff7omSQTZeZJSDJszM471Vi+YY/ipRdRglAlQ==} - - vscode-messenger-common@0.5.1: - resolution: {integrity: sha512-YJRUdK278/K7vNyhVoePINOHmz3xjQFQbSiuNXCm3+GfQ6NSmjjWTpumAYAzNs05HKAeF9glU532livdwc3W0A==} - - vscode-messenger-webview@0.5.1: - resolution: {integrity: sha512-3IXFORcjD3c9khECdqRUeBh05mt0AZA/86FhY/MlCRB2YHGzqpJeD/5rRX92fO2M42rUjXLi5bnzmXSvVGXadw==} - - vscode-messenger@0.4.5: - resolution: {integrity: sha512-a6e54dpPRi/ITmVex49LGU6YXlqcuxGPlDPauvZig20G1D1/QD2E8GfhtvlTj3ml5aU/QV3LHghyepq3riy7sw==} - - vscode-messenger@0.5.1: - resolution: {integrity: sha512-pHexyKLr6FgVkdXi9NcCgygikVkFsbpk9PoObT4JXSQfnosNLTWS2NTdGJ+nv/xhUw5OodmVId/oJwNU7HxoQw==} - - vscode-test@1.6.1: - resolution: {integrity: sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==} - engines: {node: '>=8.9.3'} - deprecated: This package has been renamed to @vscode/test-electron, please update to the new name - - 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'} - - w3c-hr-time@1.0.2: - resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} - deprecated: Use your platform's native performance.now() and performance.timeOrigin. - - w3c-keyname@2.2.8: - resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} - - w3c-xmlserializer@1.1.2: - resolution: {integrity: sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==} - - w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} - - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - watch@0.10.0: - resolution: {integrity: sha512-FAk18nzhYggg939xgRRLJjvqmAKZciO24wr8neoxNPl87w8J3m784wxL4zFBwME+0gNQ2Sv/vfsCrUxPxU2Dmg==} - engines: {'0': node >=0.1.95} - - watchpack@2.4.4: - resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} - engines: {node: '>=10.13.0'} - - wbuf@1.7.3: - resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - web-namespaces@1.1.4: - resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} - - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - - web-tree-sitter@0.24.5: - resolution: {integrity: sha512-+J/2VSHN8J47gQUAvF8KDadrfz6uFYVjxoxbKWDoXVsH2u7yLdarCnIURnrMA6uSRkgX3SdmqM5BOoQjPdSh5w==} - - webfonts-generator@0.4.0: - resolution: {integrity: sha512-2tz14d9lDYkNopbogp3cCEo0oQj6tHYo17v6nYlJQT57CwzQy/7Y6a1UzleNK9jSshez2qau6MHcHy/gbDwssQ==} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - webpack-cli@4.10.0: - resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - '@webpack-cli/generators': '*' - '@webpack-cli/migrate': '*' - webpack: ^5.94.0 - webpack-bundle-analyzer: '*' - webpack-dev-server: '*' - peerDependenciesMeta: - '@webpack-cli/generators': - optional: true - '@webpack-cli/migrate': - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true - - webpack-cli@5.1.4: - resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} - engines: {node: '>=14.15.0'} - hasBin: true - peerDependencies: - '@webpack-cli/generators': '*' - webpack: ^5.94.0 - webpack-bundle-analyzer: '*' - webpack-dev-server: '*' - peerDependenciesMeta: - '@webpack-cli/generators': - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true - - webpack-cli@6.0.1: - resolution: {integrity: sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==} - engines: {node: '>=18.12.0'} - hasBin: true - peerDependencies: - webpack: ^5.94.0 - webpack-bundle-analyzer: '*' - webpack-dev-server: '*' - peerDependenciesMeta: - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true - - webpack-dev-middleware@3.7.3: - resolution: {integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==} - engines: {node: '>= 6'} - peerDependencies: - webpack: ^5.94.0 - - webpack-dev-middleware@4.3.0: - resolution: {integrity: sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w==} - engines: {node: '>= v10.23.3'} - peerDependencies: - webpack: ^5.94.0 - - webpack-dev-middleware@6.1.3: - resolution: {integrity: sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==} - engines: {node: '>= 14.15.0'} - peerDependencies: - webpack: ^5.94.0 - peerDependenciesMeta: - webpack: - optional: true - - webpack-dev-middleware@7.4.2: - resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} - engines: {node: '>= 18.12.0'} - peerDependencies: - webpack: ^5.94.0 - peerDependenciesMeta: - webpack: - optional: true - - webpack-dev-server@5.2.2: - resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==} - engines: {node: '>= 18.12.0'} - hasBin: true - peerDependencies: - webpack: ^5.94.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - - webpack-filter-warnings-plugin@1.2.1: - resolution: {integrity: sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==} - engines: {node: '>= 4.3 < 5.0.0 || >= 5.10'} - peerDependencies: - webpack: ^5.94.0 - - webpack-hot-middleware@2.26.1: - resolution: {integrity: sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==} - - webpack-log@2.0.0: - resolution: {integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==} - engines: {node: '>= 6'} - - webpack-manifest-plugin@1.3.2: - resolution: {integrity: sha512-MX60Bv2G83Zks9pi3oLOmRgnPAnwrlMn+lftMrWBm199VQjk46/xgzBi9lPfpZldw2+EI2S+OevuLIaDuxCWRw==} - engines: {node: '>=0.10'} - peerDependencies: - webpack: ^5.94.0 - - webpack-merge-and-include-globally@2.3.4: - resolution: {integrity: sha512-s5dd7m3ycVBlC7C6GAx91JQzbjhxC/NJRuT2sCkg8WCcF8CE1x/7xwVXqgmt0Fr/H/0sX5C5HE2RdU6+vCY5yg==} - peerDependencies: - webpack: ^5.94.0 - - webpack-merge@5.10.0: - resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} - engines: {node: '>=10.0.0'} - - webpack-merge@6.0.1: - resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} - engines: {node: '>=18.0.0'} - - webpack-permissions-plugin@1.0.10: - resolution: {integrity: sha512-5b99jU4IEYYzQbHK8vPRVax7D0dNJl9Ns47IPbpDl8hcRp/geA/U0RmNO/WuXEVTObh3stT/0kC7mC1b575zHA==} - - webpack-sources@1.4.3: - resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} - - webpack-sources@3.3.3: - resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} - engines: {node: '>=10.13.0'} - - webpack-virtual-modules@0.2.2: - resolution: {integrity: sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==} - - webpack-virtual-modules@0.4.6: - resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==} - - webpack-virtual-modules@0.5.0: - resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} - - webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - - webpack@5.100.2: - resolution: {integrity: sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - - websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - - whatwg-encoding@1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - - whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} - - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - - whatwg-fetch@2.0.3: - resolution: {integrity: sha512-SA2KdOXATOroD3EBUYvcdugsusXS5YiQFqwskSbsp5b1gK8HpNi/YP0jcy/BDpdllp305HMnrsVf9K7Be9GiEQ==} - - whatwg-mimetype@2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - - whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} - - whatwg-url@4.8.0: - resolution: {integrity: sha512-nUvUPuenPFtPfy/X+dAYh/TfRbTBlnXTM5iIfLseJFkkQewmpG9pGR6i87E9qL+lZaJzv+99kkQWoGOtLfkZQQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - whatwg-url@6.5.0: - resolution: {integrity: sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==} - - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - - whet.extend@0.9.9: - resolution: {integrity: sha512-mmIPAft2vTgEILgPeZFqE/wWh24SEsR/k+N9fJ3Jxrz44iDFy9aemCxdksfURSHYFCLmvs/d/7Iso5XjPpNfrA==} - engines: {node: '>=0.6.0'} - - which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} - - which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - - which-module@1.0.0: - resolution: {integrity: sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==} - - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - - which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} - engines: {node: '>= 0.4'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - which@5.0.0: - resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - - widest-line@2.0.1: - resolution: {integrity: sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==} - engines: {node: '>=4'} - - widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - - wildcard@2.0.1: - resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - - winston-transport@4.6.0: - resolution: {integrity: sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==} - engines: {node: '>= 12.0.0'} - - winston@3.11.0: - resolution: {integrity: sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==} - engines: {node: '>= 12.0.0'} - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - - worker-farm@1.7.0: - resolution: {integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==} - - worker-rpc@0.1.1: - resolution: {integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==} - - workerpool@6.5.1: - resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} - - workerpool@9.3.2: - resolution: {integrity: sha512-Xz4Nm9c+LiBHhDR5bDLnNzmj6+5F+cyEAWPMkbs2awq/dYazR/efelZzUAjB/y3kNHL+uzkHvxVVpaOfGCPV7A==} - - wrap-ansi@2.1.0: - resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} - engines: {node: '>=0.10.0'} - - wrap-ansi@3.0.1: - resolution: {integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==} - engines: {node: '>=4'} - - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} - engines: {node: '>=18'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - - write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - write-file-atomic@5.0.1: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - write@1.0.3: - resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} - engines: {node: '>=4'} - - ws@5.2.4: - resolution: {integrity: sha512-fFCejsuC8f9kOSu9FYaOw8CdO68O3h5v0lg4p74o8JqWpwTf9tniOD+nOB78aWoVSS6WptVUmDrp/KPsMVBWFQ==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@6.2.3: - resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.2: - resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - x-default-browser@0.4.0: - resolution: {integrity: sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw==} - hasBin: true - - xdg-basedir@3.0.0: - resolution: {integrity: sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==} - engines: {node: '>=4'} - - xml-but-prettier@1.0.1: - resolution: {integrity: sha512-C2CJaadHrZTqESlH03WOyw0oZTtoy2uEg6dSDF6YRg+9GnYNub53RRemLpnvtbHDFelxMx4LajiFsYeR6XJHgQ==} - - xml-js@1.6.11: - resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} - hasBin: true - - xml-name-validator@2.0.1: - resolution: {integrity: sha512-jRKe/iQYMyVJpzPH+3HL97Lgu5HrCfii+qSo+TfjKHtOnvbnvdVfMYrn9Q34YV81M2e5sviJlI6Ko9y+nByzvA==} - - xml-name-validator@3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - - xml2js@0.5.0: - resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} - engines: {node: '>=4.0.0'} - - xml2js@0.6.2: - resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} - engines: {node: '>=4.0.0'} - - xml@1.0.1: - resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==} - - xmlbuilder2@3.1.1: - resolution: {integrity: sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==} - engines: {node: '>=12.0'} - - xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - - xmlhttprequest@1.8.0: - resolution: {integrity: sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==} - engines: {node: '>=0.4.0'} - - xstate@4.38.3: - resolution: {integrity: sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw==} - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y18n@3.2.2: - resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} - - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yaml@2.8.0: - resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} - engines: {node: '>= 14.6'} - hasBin: true - - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs-parser@5.0.1: - resolution: {integrity: sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==} - - yargs-parser@8.1.0: - resolution: {integrity: sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==} - - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - - yargs@10.1.2: - resolution: {integrity: sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==} - - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yargs@7.1.2: - resolution: {integrity: sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==} - - yarn@1.22.22: - resolution: {integrity: sha512-prL3kGtyG7o9Z9Sv8IPfBNrWTDmXB4Qbes8A9rEzt6wkJV8mUvoirjU0Mp3GGAU06Y0XQyA3/2/RQFVuK7MTfg==} - engines: {node: '>=4.0.0'} - hasBin: true - - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - - yazl@2.5.1: - resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==} - - 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==} - engines: {node: '>=12.20'} - - yup@1.6.1: - resolution: {integrity: sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==} - - zenscroll@4.0.2: - resolution: {integrity: sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg==} - - zod-to-json-schema@3.24.5: - resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} - peerDependencies: - zod: ^3.24.1 - - zod@3.25.67: - resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==} - - zod@3.25.76: - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - - zustand@4.5.7: - resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0.6' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - - zustand@5.0.5: - resolution: {integrity: sha512-mILtRfKW9xM47hqxGIxCv12gXusoY/xTSHBYApXozR0HmQv299whhBeeAcRy+KrPPybzosvJBCOmVjq6x12fCg==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=18.0.0' - immer: '>=9.0.6' - react: '>=18.0.0' - use-sync-external-store: '>=1.2.0' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - use-sync-external-store: - optional: true - - zwitch@1.0.5: - resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@adobe/css-tools@4.4.3': {} - - '@alloc/quick-lru@5.2.0': {} - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@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 - - '@aw-web-design/x-default-browser@1.4.126': - dependencies: - default-browser-id: 3.0.0 - - '@aws-crypto/crc32@5.2.0': - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.821.0 - tslib: 2.8.1 - - '@aws-crypto/crc32c@5.2.0': - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.821.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.821.0 - '@aws-sdk/util-locate-window': 3.804.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.8.1 - - '@aws-crypto/sha256-browser@5.2.0': - dependencies: - '@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.821.0 - '@aws-sdk/util-locate-window': 3.804.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.821.0 - tslib: 2.8.1 - - '@aws-crypto/supports-web-crypto@5.2.0': - dependencies: - tslib: 2.8.1 - - '@aws-crypto/util@5.2.0': - dependencies: - '@aws-sdk/types': 3.821.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.8.1 - - '@aws-sdk/client-s3@3.832.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.826.0 - '@aws-sdk/credential-provider-node': 3.830.0 - '@aws-sdk/middleware-bucket-endpoint': 3.830.0 - '@aws-sdk/middleware-expect-continue': 3.821.0 - '@aws-sdk/middleware-flexible-checksums': 3.826.0 - '@aws-sdk/middleware-host-header': 3.821.0 - '@aws-sdk/middleware-location-constraint': 3.821.0 - '@aws-sdk/middleware-logger': 3.821.0 - '@aws-sdk/middleware-recursion-detection': 3.821.0 - '@aws-sdk/middleware-sdk-s3': 3.826.0 - '@aws-sdk/middleware-ssec': 3.821.0 - '@aws-sdk/middleware-user-agent': 3.828.0 - '@aws-sdk/region-config-resolver': 3.821.0 - '@aws-sdk/signature-v4-multi-region': 3.826.0 - '@aws-sdk/types': 3.821.0 - '@aws-sdk/util-endpoints': 3.828.0 - '@aws-sdk/util-user-agent-browser': 3.821.0 - '@aws-sdk/util-user-agent-node': 3.828.0 - '@aws-sdk/xml-builder': 3.821.0 - '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.5.3 - '@smithy/eventstream-serde-browser': 4.0.4 - '@smithy/eventstream-serde-config-resolver': 4.1.2 - '@smithy/eventstream-serde-node': 4.0.4 - '@smithy/fetch-http-handler': 5.0.4 - '@smithy/hash-blob-browser': 4.0.4 - '@smithy/hash-node': 4.0.4 - '@smithy/hash-stream-node': 4.0.4 - '@smithy/invalid-dependency': 4.0.4 - '@smithy/md5-js': 4.0.4 - '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.1.11 - '@smithy/middleware-retry': 4.1.12 - '@smithy/middleware-serde': 4.0.8 - '@smithy/middleware-stack': 4.0.4 - '@smithy/node-config-provider': 4.1.3 - '@smithy/node-http-handler': 4.0.6 - '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.3 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 - '@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.19 - '@smithy/util-defaults-mode-node': 4.0.19 - '@smithy/util-endpoints': 3.0.6 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-retry': 4.0.5 - '@smithy/util-stream': 4.2.2 - '@smithy/util-utf8': 4.0.0 - '@smithy/util-waiter': 4.0.5 - '@types/uuid': 9.0.8 - tslib: 2.8.1 - uuid: 9.0.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/client-sso@3.830.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.826.0 - '@aws-sdk/middleware-host-header': 3.821.0 - '@aws-sdk/middleware-logger': 3.821.0 - '@aws-sdk/middleware-recursion-detection': 3.821.0 - '@aws-sdk/middleware-user-agent': 3.828.0 - '@aws-sdk/region-config-resolver': 3.821.0 - '@aws-sdk/types': 3.821.0 - '@aws-sdk/util-endpoints': 3.828.0 - '@aws-sdk/util-user-agent-browser': 3.821.0 - '@aws-sdk/util-user-agent-node': 3.828.0 - '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.5.3 - '@smithy/fetch-http-handler': 5.0.4 - '@smithy/hash-node': 4.0.4 - '@smithy/invalid-dependency': 4.0.4 - '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.1.11 - '@smithy/middleware-retry': 4.1.12 - '@smithy/middleware-serde': 4.0.8 - '@smithy/middleware-stack': 4.0.4 - '@smithy/node-config-provider': 4.1.3 - '@smithy/node-http-handler': 4.0.6 - '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.3 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 - '@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.19 - '@smithy/util-defaults-mode-node': 4.0.19 - '@smithy/util-endpoints': 3.0.6 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-retry': 4.0.5 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/core@3.826.0': - dependencies: - '@aws-sdk/types': 3.821.0 - '@aws-sdk/xml-builder': 3.821.0 - '@smithy/core': 3.5.3 - '@smithy/node-config-provider': 4.1.3 - '@smithy/property-provider': 4.0.4 - '@smithy/protocol-http': 5.1.2 - '@smithy/signature-v4': 5.1.2 - '@smithy/smithy-client': 4.4.3 - '@smithy/types': 4.3.1 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-utf8': 4.0.0 - fast-xml-parser: 4.4.1 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-env@3.826.0': - dependencies: - '@aws-sdk/core': 3.826.0 - '@aws-sdk/types': 3.821.0 - '@smithy/property-provider': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-http@3.826.0': - dependencies: - '@aws-sdk/core': 3.826.0 - '@aws-sdk/types': 3.821.0 - '@smithy/fetch-http-handler': 5.0.4 - '@smithy/node-http-handler': 4.0.6 - '@smithy/property-provider': 4.0.4 - '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.3 - '@smithy/types': 4.3.1 - '@smithy/util-stream': 4.2.2 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-ini@3.830.0': - dependencies: - '@aws-sdk/core': 3.826.0 - '@aws-sdk/credential-provider-env': 3.826.0 - '@aws-sdk/credential-provider-http': 3.826.0 - '@aws-sdk/credential-provider-process': 3.826.0 - '@aws-sdk/credential-provider-sso': 3.830.0 - '@aws-sdk/credential-provider-web-identity': 3.830.0 - '@aws-sdk/nested-clients': 3.830.0 - '@aws-sdk/types': 3.821.0 - '@smithy/credential-provider-imds': 4.0.6 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-node@3.830.0': - dependencies: - '@aws-sdk/credential-provider-env': 3.826.0 - '@aws-sdk/credential-provider-http': 3.826.0 - '@aws-sdk/credential-provider-ini': 3.830.0 - '@aws-sdk/credential-provider-process': 3.826.0 - '@aws-sdk/credential-provider-sso': 3.830.0 - '@aws-sdk/credential-provider-web-identity': 3.830.0 - '@aws-sdk/types': 3.821.0 - '@smithy/credential-provider-imds': 4.0.6 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-process@3.826.0': - dependencies: - '@aws-sdk/core': 3.826.0 - '@aws-sdk/types': 3.821.0 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-sso@3.830.0': - dependencies: - '@aws-sdk/client-sso': 3.830.0 - '@aws-sdk/core': 3.826.0 - '@aws-sdk/token-providers': 3.830.0 - '@aws-sdk/types': 3.821.0 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-web-identity@3.830.0': - dependencies: - '@aws-sdk/core': 3.826.0 - '@aws-sdk/nested-clients': 3.830.0 - '@aws-sdk/types': 3.821.0 - '@smithy/property-provider': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/middleware-bucket-endpoint@3.830.0': - dependencies: - '@aws-sdk/types': 3.821.0 - '@aws-sdk/util-arn-parser': 3.804.0 - '@smithy/node-config-provider': 4.1.3 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - '@smithy/util-config-provider': 4.0.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-expect-continue@3.821.0': - dependencies: - '@aws-sdk/types': 3.821.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@aws-sdk/middleware-flexible-checksums@3.826.0': - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@aws-crypto/crc32c': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.826.0 - '@aws-sdk/types': 3.821.0 - '@smithy/is-array-buffer': 4.0.0 - '@smithy/node-config-provider': 4.1.3 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-stream': 4.2.2 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-host-header@3.821.0': - dependencies: - '@aws-sdk/types': 3.821.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@aws-sdk/middleware-location-constraint@3.821.0': - dependencies: - '@aws-sdk/types': 3.821.0 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@aws-sdk/middleware-logger@3.821.0': - dependencies: - '@aws-sdk/types': 3.821.0 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@aws-sdk/middleware-recursion-detection@3.821.0': - dependencies: - '@aws-sdk/types': 3.821.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@aws-sdk/middleware-sdk-s3@3.826.0': - dependencies: - '@aws-sdk/core': 3.826.0 - '@aws-sdk/types': 3.821.0 - '@aws-sdk/util-arn-parser': 3.804.0 - '@smithy/core': 3.5.3 - '@smithy/node-config-provider': 4.1.3 - '@smithy/protocol-http': 5.1.2 - '@smithy/signature-v4': 5.1.2 - '@smithy/smithy-client': 4.4.3 - '@smithy/types': 4.3.1 - '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-stream': 4.2.2 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@aws-sdk/middleware-ssec@3.821.0': - dependencies: - '@aws-sdk/types': 3.821.0 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@aws-sdk/middleware-user-agent@3.828.0': - dependencies: - '@aws-sdk/core': 3.826.0 - '@aws-sdk/types': 3.821.0 - '@aws-sdk/util-endpoints': 3.828.0 - '@smithy/core': 3.5.3 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@aws-sdk/nested-clients@3.830.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.826.0 - '@aws-sdk/middleware-host-header': 3.821.0 - '@aws-sdk/middleware-logger': 3.821.0 - '@aws-sdk/middleware-recursion-detection': 3.821.0 - '@aws-sdk/middleware-user-agent': 3.828.0 - '@aws-sdk/region-config-resolver': 3.821.0 - '@aws-sdk/types': 3.821.0 - '@aws-sdk/util-endpoints': 3.828.0 - '@aws-sdk/util-user-agent-browser': 3.821.0 - '@aws-sdk/util-user-agent-node': 3.828.0 - '@smithy/config-resolver': 4.1.4 - '@smithy/core': 3.5.3 - '@smithy/fetch-http-handler': 5.0.4 - '@smithy/hash-node': 4.0.4 - '@smithy/invalid-dependency': 4.0.4 - '@smithy/middleware-content-length': 4.0.4 - '@smithy/middleware-endpoint': 4.1.11 - '@smithy/middleware-retry': 4.1.12 - '@smithy/middleware-serde': 4.0.8 - '@smithy/middleware-stack': 4.0.4 - '@smithy/node-config-provider': 4.1.3 - '@smithy/node-http-handler': 4.0.6 - '@smithy/protocol-http': 5.1.2 - '@smithy/smithy-client': 4.4.3 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 - '@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.19 - '@smithy/util-defaults-mode-node': 4.0.19 - '@smithy/util-endpoints': 3.0.6 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-retry': 4.0.5 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/region-config-resolver@3.821.0': - dependencies: - '@aws-sdk/types': 3.821.0 - '@smithy/node-config-provider': 4.1.3 - '@smithy/types': 4.3.1 - '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.4 - tslib: 2.8.1 - - '@aws-sdk/signature-v4-multi-region@3.826.0': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.826.0 - '@aws-sdk/types': 3.821.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/signature-v4': 5.1.2 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@aws-sdk/token-providers@3.830.0': - dependencies: - '@aws-sdk/core': 3.826.0 - '@aws-sdk/nested-clients': 3.830.0 - '@aws-sdk/types': 3.821.0 - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/types@3.821.0': - dependencies: - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@aws-sdk/util-arn-parser@3.804.0': - dependencies: - tslib: 2.8.1 - - '@aws-sdk/util-endpoints@3.828.0': - dependencies: - '@aws-sdk/types': 3.821.0 - '@smithy/types': 4.3.1 - '@smithy/util-endpoints': 3.0.6 - tslib: 2.8.1 - - '@aws-sdk/util-locate-window@3.804.0': - dependencies: - tslib: 2.8.1 - - '@aws-sdk/util-user-agent-browser@3.821.0': - dependencies: - '@aws-sdk/types': 3.821.0 - '@smithy/types': 4.3.1 - bowser: 2.11.0 - tslib: 2.8.1 - - '@aws-sdk/util-user-agent-node@3.828.0': - dependencies: - '@aws-sdk/middleware-user-agent': 3.828.0 - '@aws-sdk/types': 3.821.0 - '@smithy/node-config-provider': 4.1.3 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@aws-sdk/xml-builder@3.821.0': - dependencies: - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@azu/format-text@1.0.2': {} - - '@azu/style-format@1.0.1': - dependencies: - '@azu/format-text': 1.0.2 - - '@azure/abort-controller@2.1.2': - dependencies: - tslib: 2.8.1 - - '@azure/core-auth@1.9.0': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.12.0 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/core-client@1.9.4': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.9.0 - '@azure/core-rest-pipeline': 1.21.0 - '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.12.0 - '@azure/logger': 1.2.0 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/core-rest-pipeline@1.21.0': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.9.0 - '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.12.0 - '@azure/logger': 1.2.0 - '@typespec/ts-http-runtime': 0.2.3 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/core-tracing@1.2.0': - dependencies: - tslib: 2.8.1 - - '@azure/core-util@1.12.0': - dependencies: - '@azure/abort-controller': 2.1.2 - '@typespec/ts-http-runtime': 0.2.3 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/identity@4.10.1': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.9.0 - '@azure/core-client': 1.9.4 - '@azure/core-rest-pipeline': 1.21.0 - '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.12.0 - '@azure/logger': 1.2.0 - '@azure/msal-browser': 4.13.2 - '@azure/msal-node': 3.6.1 - open: 10.1.2 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/logger@1.2.0': - dependencies: - '@typespec/ts-http-runtime': 0.2.3 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/msal-browser@4.13.2': - dependencies: - '@azure/msal-common': 15.7.1 - - '@azure/msal-common@15.7.1': {} - - '@azure/msal-node@3.6.1': - dependencies: - '@azure/msal-common': 15.7.1 - jsonwebtoken: 9.0.2 - uuid: 8.3.2 - - '@babel/code-frame@7.27.1': - dependencies: - '@babel/helper-validator-identifier': 7.27.1 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.27.5': {} - - '@babel/core@7.12.9': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.12.9) - '@babel/helpers': 7.27.6 - '@babel/parser': 7.27.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.27.6 - convert-source-map: 1.9.0 - debug: 4.4.1(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - lodash: 4.17.21 - resolve: 1.22.10 - semver: 5.7.2 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.27.4': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) - '@babel/helpers': 7.27.6 - '@babel/parser': 7.27.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 - convert-source-map: 2.0.0 - debug: 4.4.1(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.28.0': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helpers': 7.27.6 - '@babel/parser': 7.28.0 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 - convert-source-map: 2.0.0 - debug: 4.4.1(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.27.5': - dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - - '@babel/generator@7.28.0': - dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - jsesc: 3.1.0 - - '@babel/helper-annotate-as-pure@7.27.3': - dependencies: - '@babel/types': 7.27.6 - - '@babel/helper-compilation-targets@7.27.2': - dependencies: - '@babel/compat-data': 7.27.5 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.27.4 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.27.4 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.2.0 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.2.0 - semver: 6.3.1 - optional: true - - '@babel/helper-define-polyfill-provider@0.0.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.4 - debug: 4.4.1(supports-color@8.1.1) - lodash.debounce: 4.0.8 - resolve: 1.22.10 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.1.5(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@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) - lodash.debounce: 4.0.8 - resolve: 1.22.10 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.1(supports-color@8.1.1) - lodash.debounce: 4.0.8 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.1(supports-color@8.1.1) - lodash.debounce: 4.0.8 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/helper-globals@7.28.0': {} - - '@babel/helper-member-expression-to-functions@7.27.1': - dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.28.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.27.1': - dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.27.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.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.27.1': - dependencies: - '@babel/types': 7.28.1 - - '@babel/helper-plugin-utils@7.10.4': {} - - '@babel/helper-plugin-utils@7.27.1': {} - - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-validator-identifier@7.27.1': {} - - '@babel/helper-validator-option@7.27.1': {} - - '@babel/helper-wrap-function@7.27.1': - dependencies: - '@babel/template': 7.27.2 - '@babel/traverse': 7.27.4 - '@babel/types': 7.28.1 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@7.27.6': - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.27.6 - - '@babel/parser@7.27.5': - dependencies: - '@babel/types': 7.27.6 - - '@babel/parser@7.28.0': - dependencies: - '@babel/types': 7.28.1 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@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.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@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.4)': - dependencies: - '@babel/core': 7.27.4 - '@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.4) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@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.28.0) - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-decorators@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.27.4) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.4) - - '@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/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.12.9) - - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.27.4)': - dependencies: - '@babel/compat-data': 7.27.5 - '@babel/core': 7.27.4 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) - - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.4) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - optional: true - - '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.4) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-jsx@7.12.1(@babel/core@7.12.9)': - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.9)': - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.4) - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.0) - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@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.27.4) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@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.0) - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-block-scoping@7.27.5(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-block-scoping@7.27.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-transform-classes@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) - '@babel/traverse': 7.27.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) - '@babel/traverse': 7.27.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.2 - - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.2 - optional: true - - '@babel/plugin-transform-destructuring@7.27.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-destructuring@7.27.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.27.4) - - '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.0) - - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@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.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@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.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-object-rest-spread@7.27.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) - - '@babel/plugin-transform-object-rest-spread@7.27.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.28.0) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.28.0) - optional: true - - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.12.9)': - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-react-display-name@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-react-display-name@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.4) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@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.27.4) - '@babel/types': 7.27.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@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.0) - '@babel/types': 7.27.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-regenerator@7.27.5(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-regenerator@7.27.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@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.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) - '@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.4) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) - '@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.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.4) - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - optional: true - - '@babel/preset-env@7.27.2(@babel/core@7.27.4)': - dependencies: - '@babel/compat-data': 7.27.5 - '@babel/core': 7.27.4 - '@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.4) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.4) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.27.4) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-object-rest-spread': 7.27.3(@babel/core@7.27.4) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-regenerator': 7.27.5(@babel/core@7.27.4) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.27.4) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.27.4) - babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.27.4) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.4) - babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.27.4) - core-js-compat: 3.43.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-env@7.27.2(@babel/core@7.28.0)': - dependencies: - '@babel/compat-data': 7.27.5 - '@babel/core': 7.28.0 - '@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.28.0) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.0) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.28.0) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.28.0) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-object-rest-spread': 7.27.3(@babel/core@7.28.0) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-regenerator': 7.27.5(@babel/core@7.28.0) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.0) - babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.28.0) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.28.0) - babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.28.0) - core-js-compat: 3.43.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/preset-flow@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@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.27.4) - - '@babel/preset-flow@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@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.0) - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.27.6 - esutils: 2.0.3 - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.27.6 - esutils: 2.0.3 - optional: true - - '@babel/preset-react@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-react-display-name': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.27.4) - transitivePeerDependencies: - - supports-color - - '@babel/preset-react@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-react-display-name': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - - '@babel/preset-typescript@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@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.4) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.4) - transitivePeerDependencies: - - supports-color - - '@babel/preset-typescript@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@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.0) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - - '@babel/register@7.27.1(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.7 - source-map-support: 0.5.21 - - '@babel/register@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.7 - source-map-support: 0.5.21 - - '@babel/runtime-corejs3@7.27.6': - dependencies: - core-js-pure: 3.43.0 - - '@babel/runtime@7.27.6': {} - - '@babel/template@7.27.2': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 - - '@babel/traverse@7.27.4': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/parser': 7.27.5 - '@babel/template': 7.27.2 - '@babel/types': 7.27.6 - debug: 4.4.1(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/traverse@7.28.0': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.0 - '@babel/template': 7.27.2 - '@babel/types': 7.28.1 - debug: 4.4.1(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - '@babel/types@7.27.6': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - - '@babel/types@7.28.1': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - - '@base2/pretty-print-object@1.0.1': {} - - '@bazel/runfiles@6.3.1': {} - - '@bcoe/v8-coverage@0.2.3': {} - - '@bcoe/v8-coverage@1.0.2': {} - - '@biomejs/biome@1.9.4': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 - - '@biomejs/cli-darwin-arm64@1.9.4': - optional: true - - '@biomejs/cli-darwin-x64@1.9.4': - optional: true - - '@biomejs/cli-linux-arm64-musl@1.9.4': - optional: true - - '@biomejs/cli-linux-arm64@1.9.4': - optional: true - - '@biomejs/cli-linux-x64-musl@1.9.4': - optional: true - - '@biomejs/cli-linux-x64@1.9.4': - optional: true - - '@biomejs/cli-win32-arm64@1.9.4': - optional: true - - '@biomejs/cli-win32-x64@1.9.4': - optional: true - - '@cnakazawa/watch@1.0.4': - dependencies: - exec-sh: 0.3.6 - minimist: 1.2.8 - - '@codemirror/autocomplete@6.18.6': - dependencies: - '@codemirror/language': 6.11.1 - '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.2 - '@lezer/common': 1.2.3 - - '@codemirror/commands@6.8.1': - dependencies: - '@codemirror/language': 6.11.1 - '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.2 - '@lezer/common': 1.2.3 - - '@codemirror/lang-xml@6.1.0': - dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.1 - '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.2 - '@lezer/common': 1.2.3 - '@lezer/xml': 1.0.6 - - '@codemirror/language@6.11.1': - dependencies: - '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.2 - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 - style-mod: 4.1.2 - - '@codemirror/lint@6.8.5': - dependencies: - '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.2 - crelt: 1.0.6 - - '@codemirror/search@6.5.11': - dependencies: - '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.2 - crelt: 1.0.6 - - '@codemirror/state@6.5.2': - dependencies: - '@marijn/find-cluster-break': 1.0.2 - - '@codemirror/theme-one-dark@6.1.3': - dependencies: - '@codemirror/language': 6.11.1 - '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.2 - '@lezer/highlight': 1.2.1 - - '@codemirror/view@6.37.2': - dependencies: - '@codemirror/state': 6.5.2 - crelt: 1.0.6 - style-mod: 4.1.2 - w3c-keyname: 2.2.8 - - '@colors/colors@1.5.0': - optional: true - - '@colors/colors@1.6.0': {} - - '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': - dependencies: - '@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)': - dependencies: - '@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)': - dependencies: - postcss-selector-parser: 7.1.0 - - '@dabh/diagnostics@2.0.3': - dependencies: - colorspace: 1.1.4 - enabled: 2.0.0 - kuler: 2.0.0 - - '@date-io/core@3.2.0': {} - - '@date-io/date-fns@3.2.1(date-fns@4.1.0)': - dependencies: - '@date-io/core': 3.2.0 - optionalDependencies: - date-fns: 4.1.0 - - '@discoveryjs/json-ext@0.5.7': {} - - '@discoveryjs/json-ext@0.6.3': {} - - '@dual-bundle/import-meta-resolve@4.1.0': {} - - '@emotion/babel-plugin@11.13.5': - dependencies: - '@babel/helper-module-imports': 7.27.1 - '@babel/runtime': 7.27.6 - '@emotion/hash': 0.9.2 - '@emotion/memoize': 0.9.0 - '@emotion/serialize': 1.3.3 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.9.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.2.0 - transitivePeerDependencies: - - supports-color - - '@emotion/cache@11.14.0': - dependencies: - '@emotion/memoize': 0.9.0 - '@emotion/sheet': 1.4.0 - '@emotion/utils': 1.4.2 - '@emotion/weak-memoize': 0.4.0 - stylis: 4.2.0 - - '@emotion/css@11.13.5': - dependencies: - '@emotion/babel-plugin': 11.13.5 - '@emotion/cache': 11.14.0 - '@emotion/serialize': 1.3.3 - '@emotion/sheet': 1.4.0 - '@emotion/utils': 1.4.2 - transitivePeerDependencies: - - supports-color - - '@emotion/hash@0.9.2': {} - - '@emotion/is-prop-valid@0.8.8': - dependencies: - '@emotion/memoize': 0.7.4 - optional: true - - '@emotion/is-prop-valid@1.3.1': - dependencies: - '@emotion/memoize': 0.9.0 - - '@emotion/memoize@0.7.4': - optional: true - - '@emotion/memoize@0.9.0': {} - - '@emotion/react@11.14.0(@types/react@17.0.87)(react@19.1.0)': - dependencies: - '@babel/runtime': 7.27.6 - '@emotion/babel-plugin': 11.13.5 - '@emotion/cache': 11.14.0 - '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0) - '@emotion/utils': 1.4.2 - '@emotion/weak-memoize': 0.4.0 - hoist-non-react-statics: 3.3.2 - react: 19.1.0 - optionalDependencies: - '@types/react': 17.0.87 - transitivePeerDependencies: - - supports-color - - '@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.27.6 - '@emotion/babel-plugin': 11.13.5 - '@emotion/cache': 11.14.0 - '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.2.0) - '@emotion/utils': 1.4.2 - '@emotion/weak-memoize': 0.4.0 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - transitivePeerDependencies: - - supports-color - - '@emotion/serialize@1.3.3': - dependencies: - '@emotion/hash': 0.9.2 - '@emotion/memoize': 0.9.0 - '@emotion/unitless': 0.10.0 - '@emotion/utils': 1.4.2 - csstype: 3.1.3 - - '@emotion/sheet@1.4.0': {} - - '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@17.0.87)(react@19.1.0))(@types/react@17.0.87)(react@19.1.0)': - dependencies: - '@babel/runtime': 7.27.6 - '@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/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 - transitivePeerDependencies: - - supports-color - - '@emotion/styled@11.14.0(@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.27.6 - '@emotion/babel-plugin': 11.13.5 - '@emotion/is-prop-valid': 1.3.1 - '@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) - '@emotion/utils': 1.4.2 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - transitivePeerDependencies: - - supports-color - - '@emotion/unitless@0.10.0': {} - - '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@18.2.0)': - dependencies: - react: 18.2.0 - - '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.1.0)': - dependencies: - react: 19.1.0 - - '@emotion/utils@1.4.2': {} - - '@emotion/weak-memoize@0.4.0': {} - - '@esbuild/aix-ppc64@0.25.5': - optional: true - - '@esbuild/aix-ppc64@0.25.6': - optional: true - - '@esbuild/android-arm64@0.25.5': - optional: true - - '@esbuild/android-arm64@0.25.6': - optional: true - - '@esbuild/android-arm@0.25.5': - optional: true - - '@esbuild/android-arm@0.25.6': - optional: true - - '@esbuild/android-x64@0.25.5': - optional: true - - '@esbuild/android-x64@0.25.6': - optional: true - - '@esbuild/darwin-arm64@0.25.5': - optional: true - - '@esbuild/darwin-arm64@0.25.6': - optional: true - - '@esbuild/darwin-x64@0.25.5': - optional: true - - '@esbuild/darwin-x64@0.25.6': - optional: true - - '@esbuild/freebsd-arm64@0.25.5': - optional: true - - '@esbuild/freebsd-arm64@0.25.6': - optional: true - - '@esbuild/freebsd-x64@0.25.5': - optional: true - - '@esbuild/freebsd-x64@0.25.6': - optional: true - - '@esbuild/linux-arm64@0.25.5': - optional: true - - '@esbuild/linux-arm64@0.25.6': - optional: true - - '@esbuild/linux-arm@0.25.5': - optional: true - - '@esbuild/linux-arm@0.25.6': - optional: true - - '@esbuild/linux-ia32@0.25.5': - optional: true - - '@esbuild/linux-ia32@0.25.6': - optional: true - - '@esbuild/linux-loong64@0.25.5': - optional: true - - '@esbuild/linux-loong64@0.25.6': - optional: true - - '@esbuild/linux-mips64el@0.25.5': - optional: true - - '@esbuild/linux-mips64el@0.25.6': - optional: true - - '@esbuild/linux-ppc64@0.25.5': - optional: true - - '@esbuild/linux-ppc64@0.25.6': - optional: true - - '@esbuild/linux-riscv64@0.25.5': - optional: true - - '@esbuild/linux-riscv64@0.25.6': - optional: true - - '@esbuild/linux-s390x@0.25.5': - optional: true - - '@esbuild/linux-s390x@0.25.6': - optional: true - - '@esbuild/linux-x64@0.25.5': - optional: true - - '@esbuild/linux-x64@0.25.6': - optional: true - - '@esbuild/netbsd-arm64@0.25.5': - optional: true - - '@esbuild/netbsd-arm64@0.25.6': - optional: true - - '@esbuild/netbsd-x64@0.25.5': - optional: true - - '@esbuild/netbsd-x64@0.25.6': - optional: true - - '@esbuild/openbsd-arm64@0.25.5': - optional: true - - '@esbuild/openbsd-arm64@0.25.6': - optional: true - - '@esbuild/openbsd-x64@0.25.5': - optional: true - - '@esbuild/openbsd-x64@0.25.6': - optional: true - - '@esbuild/openharmony-arm64@0.25.6': - optional: true - - '@esbuild/sunos-x64@0.25.5': - optional: true - - '@esbuild/sunos-x64@0.25.6': - optional: true - - '@esbuild/win32-arm64@0.25.5': - optional: true - - '@esbuild/win32-arm64@0.25.6': - optional: true - - '@esbuild/win32-ia32@0.25.5': - optional: true - - '@esbuild/win32-ia32@0.25.6': - optional: true - - '@esbuild/win32-x64@0.25.5': - optional: true - - '@esbuild/win32-x64@0.25.6': - optional: true - - '@eslint-community/eslint-utils@4.7.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.4.2))': - dependencies: - eslint: 9.26.0(jiti@2.4.2) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': - dependencies: - eslint: 9.27.0(jiti@2.4.2) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - - '@eslint/config-array@0.20.1': - dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.1(supports-color@8.1.1) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/config-helpers@0.2.3': {} - - '@eslint/core@0.13.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/core@0.14.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/core@0.15.1': - 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) - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/eslintrc@3.3.1': - dependencies: - ajv: 6.12.6 - debug: 4.4.1(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 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@8.57.1': {} - - '@eslint/js@9.26.0': {} - - '@eslint/js@9.27.0': {} - - '@eslint/object-schema@2.1.6': {} - - '@eslint/plugin-kit@0.3.3': - dependencies: - '@eslint/core': 0.15.1 - levn: 0.4.1 - - '@fal-works/esbuild-plugin-global-externals@2.1.2': {} - - '@floating-ui/core@1.7.1': - dependencies: - '@floating-ui/utils': 0.2.9 - - '@floating-ui/core@1.7.2': - dependencies: - '@floating-ui/utils': 0.2.10 - - '@floating-ui/dom@1.7.1': - dependencies: - '@floating-ui/core': 1.7.1 - '@floating-ui/utils': 0.2.9 - - '@floating-ui/dom@1.7.2': - dependencies: - '@floating-ui/core': 1.7.2 - '@floating-ui/utils': 0.2.10 - - '@floating-ui/react-dom@2.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@floating-ui/dom': 1.7.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@floating-ui/react-dom@2.1.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@floating-ui/dom': 1.7.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.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.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@floating-ui/utils': 0.2.9 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tabbable: 6.2.0 - - '@floating-ui/utils@0.2.10': {} - - '@floating-ui/utils@0.2.9': {} - - '@formatjs/ecma402-abstract@2.3.4': - dependencies: - '@formatjs/fast-memoize': 2.2.7 - '@formatjs/intl-localematcher': 0.6.1 - decimal.js: 10.5.0 - tslib: 2.8.1 - - '@formatjs/fast-memoize@2.2.7': - dependencies: - tslib: 2.8.1 - - '@formatjs/icu-messageformat-parser@2.11.2': - dependencies: - '@formatjs/ecma402-abstract': 2.3.4 - '@formatjs/icu-skeleton-parser': 1.8.14 - tslib: 2.8.1 - - '@formatjs/icu-skeleton-parser@1.8.14': - dependencies: - '@formatjs/ecma402-abstract': 2.3.4 - tslib: 2.8.1 - - '@formatjs/intl-localematcher@0.6.1': - dependencies: - tslib: 2.8.1 - - '@formatjs/intl@3.1.6(typescript@4.9.5)': - dependencies: - '@formatjs/ecma402-abstract': 2.3.4 - '@formatjs/fast-memoize': 2.2.7 - '@formatjs/icu-messageformat-parser': 2.11.2 - intl-messageformat: 10.7.16 - tslib: 2.8.1 - optionalDependencies: - typescript: 4.9.5 - - '@formatjs/intl@3.1.6(typescript@5.8.3)': - dependencies: - '@formatjs/ecma402-abstract': 2.3.4 - '@formatjs/fast-memoize': 2.2.7 - '@formatjs/icu-messageformat-parser': 2.11.2 - intl-messageformat: 10.7.16 - tslib: 2.8.1 - optionalDependencies: - typescript: 5.8.3 - - '@formkit/auto-animate@0.8.2': {} - - '@gar/promisify@1.1.3': {} - - '@graphiql/react@0.26.2(@codemirror/language@6.11.1)(@types/node@24.0.14)(@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)': - dependencies: - '@graphiql/toolkit': 0.11.3(@types/node@24.0.14)(graphql@16.11.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 - clsx: 1.2.1 - codemirror: 5.65.19 - codemirror-graphql: 2.2.3(@codemirror/language@6.11.1)(codemirror@5.65.19)(graphql@16.11.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.4.0(graphql@16.11.0) - markdown-it: 14.1.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - set-value: 4.1.0 - transitivePeerDependencies: - - '@codemirror/language' - - '@types/node' - - '@types/react' - - '@types/react-dom' - - graphql-ws - - '@graphiql/toolkit@0.11.3(@types/node@24.0.14)(graphql@16.11.0)': - dependencies: - '@n1ru4l/push-pull-async-iterable-iterator': 3.2.0 - graphql: 16.11.0 - meros: 1.3.1(@types/node@24.0.14) - transitivePeerDependencies: - - '@types/node' - - '@hapi/hoek@9.3.0': {} - - '@hapi/topo@5.1.0': - dependencies: - '@hapi/hoek': 9.3.0 - - '@headlessui/react@1.7.19(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@tanstack/react-virtual': 3.13.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - client-only: 0.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@headlessui/react@2.2.4(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.20.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/interactions': 3.25.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@tanstack/react-virtual': 3.13.10(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) - - '@hookform/resolvers@2.9.11(react-hook-form@7.56.4(react@18.2.0))': - dependencies: - react-hook-form: 7.56.4(react@18.2.0) - - '@hookform/resolvers@5.0.1(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) - - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.6': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - - '@humanwhocodes/config-array@0.13.0': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.1(supports-color@8.1.1) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/object-schema@2.0.3': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.3': {} - - '@iarna/toml@2.2.5': {} - - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.0': - dependencies: - '@isaacs/balanced-match': 4.0.1 - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - - '@istanbuljs/schema@0.1.3': {} - - '@jest/console@25.5.0': - dependencies: - '@jest/types': 25.5.0 - chalk: 3.0.0 - jest-message-util: 25.5.0 - jest-util: 25.5.0 - slash: 3.0.0 - - '@jest/console@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.15.32 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - - '@jest/core@25.5.4': - dependencies: - '@jest/console': 25.5.0 - '@jest/reporters': 25.5.1 - '@jest/test-result': 25.5.0 - '@jest/transform': 25.5.1 - '@jest/types': 25.5.0 - ansi-escapes: 4.3.2 - chalk: 3.0.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 25.5.0 - jest-config: 25.5.4 - jest-haste-map: 25.5.1 - jest-message-util: 25.5.0 - jest-regex-util: 25.2.6 - jest-resolve: 25.5.1 - jest-resolve-dependencies: 25.5.4 - jest-runner: 25.5.4 - jest-runtime: 25.5.4 - jest-snapshot: 25.5.1 - jest-util: 25.5.0 - jest-validate: 25.5.0 - jest-watcher: 25.5.0 - micromatch: 4.0.8 - p-each-series: 2.2.0 - realpath-native: 2.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.32 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.32)(babel-plugin-macros@3.1.0) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/environment@25.5.0': - dependencies: - '@jest/fake-timers': 25.5.0 - '@jest/types': 25.5.0 - jest-mock: 25.5.0 - - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.32 - jest-mock: 29.7.0 - - '@jest/expect-utils@29.7.0': - dependencies: - jest-get-type: 29.6.3 - - '@jest/expect@29.7.0': - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/fake-timers@25.5.0': - dependencies: - '@jest/types': 25.5.0 - jest-message-util: 25.5.0 - jest-mock: 25.5.0 - jest-util: 25.5.0 - lolex: 5.1.2 - - '@jest/fake-timers@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.15.32 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - '@jest/globals@25.5.2': - dependencies: - '@jest/environment': 25.5.0 - '@jest/types': 25.5.0 - expect: 25.5.0 - - '@jest/globals@29.7.0': - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/reporters@25.5.1': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 25.5.0 - '@jest/test-result': 25.5.0 - '@jest/transform': 25.5.1 - '@jest/types': 25.5.0 - chalk: 3.0.0 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 4.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-haste-map: 25.5.1 - jest-resolve: 25.5.1 - jest-util: 25.5.0 - jest-worker: 25.5.0 - slash: 3.0.0 - source-map: 0.6.1 - string-length: 3.1.0 - terminal-link: 2.1.1 - v8-to-istanbul: 4.1.4 - optionalDependencies: - node-notifier: 6.0.0 - transitivePeerDependencies: - - supports-color - - '@jest/reporters@29.7.0': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.15.32 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - 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: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jest/source-map@25.5.0': - dependencies: - callsites: 3.1.0 - graceful-fs: 4.2.11 - source-map: 0.6.1 - - '@jest/source-map@29.6.3': - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - callsites: 3.1.0 - graceful-fs: 4.2.11 - - '@jest/test-result@25.5.0': - dependencies: - '@jest/console': 25.5.0 - '@jest/types': 25.5.0 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - - '@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 - - '@jest/test-sequencer@25.5.4': - dependencies: - '@jest/test-result': 25.5.0 - graceful-fs: 4.2.11 - jest-haste-map: 25.5.1 - jest-runner: 25.5.4 - jest-runtime: 25.5.4 - transitivePeerDependencies: - - supports-color - - '@jest/test-sequencer@29.7.0': - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 - - '@jest/transform@25.5.1': - dependencies: - '@babel/core': 7.27.4 - '@jest/types': 25.5.0 - babel-plugin-istanbul: 6.1.1 - chalk: 3.0.0 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 25.5.1 - jest-regex-util: 25.2.6 - jest-util: 25.5.0 - micromatch: 4.0.8 - pirates: 4.0.7 - realpath-native: 2.0.0 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - - '@jest/transform@26.6.2': - dependencies: - '@babel/core': 7.27.4 - '@jest/types': 26.6.2 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 26.6.2 - jest-regex-util: 26.0.0 - jest-util: 26.6.2 - micromatch: 4.0.8 - pirates: 4.0.7 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - - '@jest/transform@29.7.0': - dependencies: - '@babel/core': 7.27.4 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.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: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 - pirates: 4.0.7 - slash: 3.0.0 - write-file-atomic: 4.0.2 - 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 - chalk: 3.0.0 - - '@jest/types@26.6.2': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.32 - '@types/yargs': 15.0.19 - chalk: 4.1.2 - - '@jest/types@29.6.3': - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.32 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.8.3)(vite@6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))': - dependencies: - glob: 10.4.5 - magic-string: 0.30.17 - react-docgen-typescript: 2.4.0(typescript@5.8.3) - vite: 6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) - optionalDependencies: - typescript: 5.8.3 - - '@jridgewell/gen-mapping@0.3.12': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - '@jridgewell/trace-mapping': 0.3.29 - - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/sourcemap-codec@1.5.4': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@jridgewell/trace-mapping@0.3.29': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 - - '@jsdevtools/ono@7.1.3': {} - - '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 - - '@jsonjoy.com/json-pack@1.2.0(tslib@2.8.1)': - dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/util': 1.6.0(tslib@2.8.1) - hyperdyperid: 1.2.0 - thingies: 1.21.0(tslib@2.8.1) - tslib: 2.8.1 - - '@jsonjoy.com/util@1.6.0(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 - - '@juggle/resize-observer@3.4.0': {} - - '@keyv/serialize@1.0.3': - dependencies: - buffer: 6.0.3 - - '@leichtgewicht/ip-codec@2.0.5': {} - - '@lezer/common@1.2.3': {} - - '@lezer/highlight@1.2.1': - dependencies: - '@lezer/common': 1.2.3 - - '@lezer/lr@1.4.2': - dependencies: - '@lezer/common': 1.2.3 - - '@lezer/xml@1.0.6': - dependencies: - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 - - '@marijn/find-cluster-break@1.0.2': {} - - '@mdx-js/mdx@1.6.22': - dependencies: - '@babel/core': 7.12.9 - '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) - '@mdx-js/util': 1.6.22 - babel-plugin-apply-mdx-type-prop: 1.6.22(@babel/core@7.12.9) - babel-plugin-extract-import-names: 1.6.22 - camelcase-css: 2.0.1 - detab: 2.0.4 - hast-util-raw: 6.0.1 - lodash.uniq: 4.5.0 - mdast-util-to-hast: 10.0.1 - remark-footnotes: 2.0.0 - remark-mdx: 1.6.22 - remark-parse: 8.0.3 - remark-squeeze-paragraphs: 4.0.0 - style-to-object: 0.3.0 - unified: 9.2.0 - unist-builder: 2.0.3 - unist-util-visit: 2.0.3 - transitivePeerDependencies: - - supports-color - - '@mdx-js/react@1.6.22(react@18.2.0)': - dependencies: - react: 18.2.0 - - '@mdx-js/react@2.3.0(react@18.2.0)': - dependencies: - '@types/mdx': 2.0.13 - '@types/react': 18.2.0 - react: 18.2.0 - - '@mdx-js/react@3.1.0(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@types/mdx': 2.0.13 - '@types/react': 18.2.0 - react: 18.2.0 - - '@mdx-js/util@1.6.22': {} - - '@microsoft/1ds-core-js@4.3.8(tslib@2.8.1)': - dependencies: - '@microsoft/applicationinsights-core-js': 3.3.8(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 - transitivePeerDependencies: - - tslib - - '@microsoft/1ds-post-js@4.3.8(tslib@2.8.1)': - dependencies: - '@microsoft/1ds-core-js': 4.3.8(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 - transitivePeerDependencies: - - tslib - - '@microsoft/applicationinsights-channel-js@3.3.8(tslib@2.8.1)': - dependencies: - '@microsoft/applicationinsights-common': 3.3.8(tslib@2.8.1) - '@microsoft/applicationinsights-core-js': 3.3.8(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.8(tslib@2.8.1)': - dependencies: - '@microsoft/applicationinsights-core-js': 3.3.8(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.8(tslib@2.8.1)': - dependencies: - '@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-shims@3.0.1': - dependencies: - '@nevware21/ts-utils': 0.12.5 - - '@microsoft/applicationinsights-web-basic@3.3.8(tslib@2.8.1)': - dependencies: - '@microsoft/applicationinsights-channel-js': 3.3.8(tslib@2.8.1) - '@microsoft/applicationinsights-common': 3.3.8(tslib@2.8.1) - '@microsoft/applicationinsights-core-js': 3.3.8(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/dynamicproto-js@2.0.3': - dependencies: - '@nevware21/ts-utils': 0.12.5 - - '@microsoft/fast-element@1.14.0': {} - - '@microsoft/fast-foundation@2.50.0': - dependencies: - '@microsoft/fast-element': 1.14.0 - '@microsoft/fast-web-utilities': 5.4.1 - tabbable: 5.3.3 - tslib: 1.14.1 - - '@microsoft/fast-react-wrapper@0.3.25(react@18.2.0)': - dependencies: - '@microsoft/fast-element': 1.14.0 - '@microsoft/fast-foundation': 2.50.0 - react: 18.2.0 - - '@microsoft/fast-react-wrapper@0.3.25(react@19.1.0)': - dependencies: - '@microsoft/fast-element': 1.14.0 - '@microsoft/fast-foundation': 2.50.0 - react: 19.1.0 - - '@microsoft/fast-web-utilities@5.4.1': - dependencies: - exenv-es6: 1.1.1 - - '@modelcontextprotocol/sdk@1.13.0': - dependencies: - ajv: 6.12.6 - content-type: 1.0.5 - cors: 2.8.5 - cross-spawn: 7.0.6 - eventsource: 3.0.7 - express: 5.1.0 - express-rate-limit: 7.5.1(express@5.1.0) - pkce-challenge: 5.0.0 - raw-body: 3.0.0 - zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) - transitivePeerDependencies: - - supports-color - - '@monaco-editor/loader@1.5.0': - 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: 0.52.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@motionone/animation@10.18.0': - dependencies: - '@motionone/easing': 10.18.0 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - tslib: 2.8.1 - - '@motionone/dom@10.12.0': - dependencies: - '@motionone/animation': 10.18.0 - '@motionone/generators': 10.18.0 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - hey-listen: 1.0.8 - tslib: 2.8.1 - - '@motionone/easing@10.18.0': - dependencies: - '@motionone/utils': 10.18.0 - tslib: 2.8.1 - - '@motionone/generators@10.18.0': - dependencies: - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - tslib: 2.8.1 - - '@motionone/types@10.17.1': {} - - '@motionone/utils@10.18.0': - dependencies: - '@motionone/types': 10.17.1 - hey-listen: 1.0.8 - tslib: 2.8.1 - - '@mrmlnc/readdir-enhanced@2.2.1': - dependencies: - call-me-maybe: 1.0.2 - glob-to-regexp: 0.3.0 - - '@n1ru4l/push-pull-async-iterable-iterator@3.2.0': {} - - '@ndelangen/get-tarball@3.0.9': - dependencies: - gunzip-maybe: 1.4.2 - pump: 3.0.3 - tar-fs: 2.1.3 - - '@nevware21/ts-async@0.5.4': - dependencies: - '@nevware21/ts-utils': 0.12.5 - - '@nevware21/ts-utils@0.12.5': {} - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@1.1.3': {} - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - - '@npmcli/fs@1.1.1': - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.7.2 - - '@npmcli/fs@2.1.2': - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.7.2 - - '@npmcli/move-file@1.1.2': - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - - '@npmcli/move-file@2.0.1': - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - - '@oozcitak/dom@1.15.10': - dependencies: - '@oozcitak/infra': 1.0.8 - '@oozcitak/url': 1.0.4 - '@oozcitak/util': 8.3.8 - - '@oozcitak/infra@1.0.8': - dependencies: - '@oozcitak/util': 8.3.8 - - '@oozcitak/url@1.0.4': - dependencies: - '@oozcitak/infra': 1.0.8 - '@oozcitak/util': 8.3.8 - - '@oozcitak/util@8.3.8': {} - - '@parcel/watcher-android-arm64@2.5.1': - optional: true - - '@parcel/watcher-darwin-arm64@2.5.1': - optional: true - - '@parcel/watcher-darwin-x64@2.5.1': - optional: true - - '@parcel/watcher-freebsd-x64@2.5.1': - optional: true - - '@parcel/watcher-linux-arm-glibc@2.5.1': - optional: true - - '@parcel/watcher-linux-arm-musl@2.5.1': - optional: true - - '@parcel/watcher-linux-arm64-glibc@2.5.1': - optional: true - - '@parcel/watcher-linux-arm64-musl@2.5.1': - optional: true - - '@parcel/watcher-linux-x64-glibc@2.5.1': - optional: true - - '@parcel/watcher-linux-x64-musl@2.5.1': - optional: true - - '@parcel/watcher-win32-arm64@2.5.1': - optional: true - - '@parcel/watcher-win32-ia32@2.5.1': - optional: true - - '@parcel/watcher-win32-x64@2.5.1': - optional: true - - '@parcel/watcher@2.5.1': - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.8 - node-addon-api: 7.1.1 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.1 - '@parcel/watcher-darwin-arm64': 2.5.1 - '@parcel/watcher-darwin-x64': 2.5.1 - '@parcel/watcher-freebsd-x64': 2.5.1 - '@parcel/watcher-linux-arm-glibc': 2.5.1 - '@parcel/watcher-linux-arm-musl': 2.5.1 - '@parcel/watcher-linux-arm64-glibc': 2.5.1 - '@parcel/watcher-linux-arm64-musl': 2.5.1 - '@parcel/watcher-linux-x64-glibc': 2.5.1 - '@parcel/watcher-linux-x64-musl': 2.5.1 - '@parcel/watcher-win32-arm64': 2.5.1 - '@parcel/watcher-win32-ia32': 2.5.1 - '@parcel/watcher-win32-x64': 2.5.1 - optional: true - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@playwright/test@1.52.0': - dependencies: - playwright: 1.52.0 - - '@pmmmwh/react-refresh-webpack-plugin@0.5.16(@types/webpack@5.28.5(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)))(webpack-hot-middleware@2.26.1)(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6))': - dependencies: - ansi-html: 0.0.9 - core-js-pure: 3.43.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 - source-map: 0.7.4 - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - optionalDependencies: - '@types/webpack': 5.28.5(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - type-fest: 4.41.0 - webpack-dev-server: 5.2.2(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - webpack-hot-middleware: 2.26.1 - - '@pmmmwh/react-refresh-webpack-plugin@0.5.16(@types/webpack@5.28.5(esbuild@0.25.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.100.2)': - dependencies: - ansi-html: 0.0.9 - core-js-pure: 3.43.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 - source-map: 0.7.4 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - optionalDependencies: - '@types/webpack': 5.28.5(esbuild@0.25.5)(webpack-cli@6.0.1) - type-fest: 4.41.0 - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - - '@pmmmwh/react-refresh-webpack-plugin@0.5.16(@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.100.2)': - dependencies: - ansi-html: 0.0.9 - core-js-pure: 3.43.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 - source-map: 0.7.4 - webpack: 5.100.2(webpack-cli@4.10.0) - optionalDependencies: - '@types/webpack': 5.28.5(webpack-cli@4.10.0) - type-fest: 4.41.0 - webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - - '@pmmmwh/react-refresh-webpack-plugin@0.5.16(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.100.2))(webpack-hot-middleware@2.26.1)(webpack@5.100.2)': - dependencies: - ansi-html: 0.0.9 - core-js-pure: 3.43.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 - source-map: 0.7.4 - webpack: 5.100.2(webpack-cli@4.10.0) - optionalDependencies: - '@types/webpack': 5.28.5 - type-fest: 4.41.0 - webpack-dev-server: 5.2.2(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - - '@pmmmwh/react-refresh-webpack-plugin@0.6.0(@types/webpack@5.28.5(webpack-cli@5.1.4))(react-refresh@0.17.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2)(webpack-hot-middleware@2.26.1)(webpack@5.100.2)': - dependencies: - anser: 2.3.2 - core-js-pure: 3.43.0 - error-stack-parser: 2.1.4 - html-entities: 2.6.0 - react-refresh: 0.17.0 - schema-utils: 4.3.2 - source-map: 0.7.4 - webpack: 5.100.2(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.100.2) - webpack-hot-middleware: 2.26.1 - - '@projectstorm/geometry@6.7.4': {} - - '@projectstorm/geometry@7.0.3': - dependencies: - lodash: 4.17.21 - - '@projectstorm/react-canvas-core@6.7.4(lodash@4.17.21)(react@18.2.0)': - dependencies: - '@projectstorm/geometry': 6.7.4 - lodash: 4.17.21 - react: 18.2.0 - - '@projectstorm/react-canvas-core@7.0.3(@types/react@18.2.0)': - dependencies: - '@emotion/react': 11.14.0(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': 7.0.3 - lodash: 4.17.21 - react: 18.2.0 - transitivePeerDependencies: - - '@types/react' - - supports-color - - '@projectstorm/react-diagrams-core@6.7.4(lodash@4.17.21)(react@18.2.0)(resize-observer-polyfill@1.5.1)': - dependencies: - '@projectstorm/geometry': 6.7.4 - '@projectstorm/react-canvas-core': 6.7.4(lodash@4.17.21)(react@18.2.0) - lodash: 4.17.21 - react: 18.2.0 - resize-observer-polyfill: 1.5.1 - - '@projectstorm/react-diagrams-core@7.0.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)': - dependencies: - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': 7.0.3 - '@projectstorm/react-canvas-core': 7.0.3(@types/react@18.2.0) - lodash: 4.17.21 - react: 18.2.0 - resize-observer-polyfill: 1.5.1 - transitivePeerDependencies: - - '@emotion/react' - - '@types/react' - - supports-color - - '@projectstorm/react-diagrams-defaults@6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(lodash@4.17.21)(react@18.2.0)(resize-observer-polyfill@1.5.1)': - dependencies: - '@emotion/react': 11.14.0(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/react-diagrams-core': 6.7.4(lodash@4.17.21)(react@18.2.0)(resize-observer-polyfill@1.5.1) - lodash: 4.17.21 - react: 18.2.0 - transitivePeerDependencies: - - resize-observer-polyfill - - '@projectstorm/react-diagrams-defaults@7.1.3(@types/react@18.2.0)': - dependencies: - '@emotion/react': 11.14.0(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0) - '@projectstorm/geometry': 7.0.3 - '@projectstorm/react-canvas-core': 7.0.3(@types/react@18.2.0) - '@projectstorm/react-diagrams-core': 7.0.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - lodash: 4.17.21 - react: 18.2.0 - transitivePeerDependencies: - - '@types/react' - - supports-color - - '@projectstorm/react-diagrams-routing@6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(dagre@0.8.5)(lodash@4.17.21)(pathfinding@0.4.18)(paths-js@0.4.11)(react@18.2.0)(resize-observer-polyfill@1.5.1)': - dependencies: - '@projectstorm/geometry': 6.7.4 - '@projectstorm/react-diagrams-core': 6.7.4(lodash@4.17.21)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@projectstorm/react-diagrams-defaults': 6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(lodash@4.17.21)(react@18.2.0)(resize-observer-polyfill@1.5.1) - dagre: 0.8.5 - lodash: 4.17.21 - pathfinding: 0.4.18 - paths-js: 0.4.11 - react: 18.2.0 - transitivePeerDependencies: - - '@emotion/react' - - '@emotion/styled' - - resize-observer-polyfill - - '@projectstorm/react-diagrams-routing@7.1.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)': - dependencies: - '@projectstorm/geometry': 7.0.3 - '@projectstorm/react-canvas-core': 7.0.3(@types/react@18.2.0) - '@projectstorm/react-diagrams-core': 7.0.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-defaults': 7.1.3(@types/react@18.2.0) - dagre: 0.8.5 - lodash: 4.17.21 - pathfinding: 0.4.18 - paths-js: 0.4.11 - react: 18.2.0 - transitivePeerDependencies: - - '@emotion/react' - - '@types/react' - - supports-color - - '@projectstorm/react-diagrams@6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(dagre@0.8.5)(lodash@4.17.21)(pathfinding@0.4.18)(paths-js@0.4.11)(react@18.2.0)(resize-observer-polyfill@1.5.1)': - dependencies: - '@projectstorm/react-diagrams-core': 6.7.4(lodash@4.17.21)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@projectstorm/react-diagrams-defaults': 6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(lodash@4.17.21)(react@18.2.0)(resize-observer-polyfill@1.5.1) - '@projectstorm/react-diagrams-routing': 6.7.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)(react@18.2.0))(dagre@0.8.5)(lodash@4.17.21)(pathfinding@0.4.18)(paths-js@0.4.11)(react@18.2.0)(resize-observer-polyfill@1.5.1) - transitivePeerDependencies: - - '@emotion/react' - - '@emotion/styled' - - dagre - - lodash - - pathfinding - - paths-js - - react - - resize-observer-polyfill - - '@projectstorm/react-diagrams@7.0.4(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0)': - dependencies: - '@projectstorm/react-canvas-core': 7.0.3(@types/react@18.2.0) - '@projectstorm/react-diagrams-core': 7.0.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - '@projectstorm/react-diagrams-defaults': 7.1.3(@types/react@18.2.0) - '@projectstorm/react-diagrams-routing': 7.1.3(@emotion/react@11.14.0(@types/react@18.2.0)(react@18.2.0))(@types/react@18.2.0) - transitivePeerDependencies: - - '@emotion/react' - - '@types/react' - - supports-color - - '@radix-ui/number@1.0.1': - dependencies: - '@babel/runtime': 7.27.6 - - '@radix-ui/primitive@1.0.1': - dependencies: - '@babel/runtime': 7.27.6 - - '@radix-ui/primitive@1.1.2': {} - - '@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.27.6 - '@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) - optionalDependencies: - '@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.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) - 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-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.27.6 - '@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) - '@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) - 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@18.2.0(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) - '@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-slot': 1.2.3(@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-compose-refs@1.0.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.27.6 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-compose-refs@1.1.2(@types/react@18.2.0)(react@18.2.0)': - dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-context@1.0.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.27.6 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-context@1.1.2(@types/react@18.2.0)(react@18.2.0)': - dependencies: - react: 18.2.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)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@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-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-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) - aria-hidden: 1.2.6 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.7.1(@types/react@18.2.0)(react@18.2.0) - 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.27.6 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-direction@1.1.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@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.27.6 - '@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) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@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-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)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@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) - 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)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@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-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 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.0 - '@types/react-dom': 18.2.0 - - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.27.6 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-focus-guards@1.1.2(@types/react@18.2.0)(react@18.2.0)': - dependencies: - react: 18.2.0 - 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.27.6 - '@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) - 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-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)': - dependencies: - '@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) - 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-id@1.0.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.27.6 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.0)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-id@1.1.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.2.0) - react: 18.2.0 - 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)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@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-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-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-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-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 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.7.1(@types/react@18.2.0)(react@18.2.0) - 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.27.6 - '@floating-ui/react-dom': 2.1.3(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) - '@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) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/rect': 1.0.1 - 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-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)': - dependencies: - '@floating-ui/react-dom': 2.1.4(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/rect': 1.1.1 - 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-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.27.6 - '@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) - optionalDependencies: - '@types/react': 18.2.0 - '@types/react-dom': 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)': - 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) - '@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) - optionalDependencies: - '@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)': - 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) - 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.27.6 - '@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) - 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@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@radix-ui/react-slot': 1.2.3(@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-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)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@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-id': 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-use-callback-ref': 1.1.1(@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) - 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-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.27.6 - '@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) - '@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-direction': 1.0.1(@types/react@18.2.0)(react@18.2.0) - '@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) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.0)(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) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.0)(react@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) - '@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) - '@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-slot': 1.0.2(@types/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) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.0)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.0)(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) - aria-hidden: 1.2.6 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.0)(react@18.2.0) - 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) - 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-slot@1.0.2(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.27.6 - '@radix-ui/react-compose-refs': 1.0.1(@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.3(@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-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)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@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-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) - optionalDependencies: - '@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)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@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 - 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@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@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-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) - 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-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)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@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-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-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-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) - '@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) - 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-use-callback-ref@1.0.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.27.6 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.27.6 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.0)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@radix-ui/react-use-effect-event': 0.0.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 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.27.6 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.0)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.2.0)(react@18.2.0) - 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@18.2.0)': - dependencies: - '@babel/runtime': 7.27.6 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-use-previous@1.0.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.27.6 - react: 18.2.0 - 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.27.6 - '@radix-ui/rect': 1.0.1 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-use-rect@1.1.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@radix-ui/rect': 1.1.1 - react: 18.2.0 - 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.27.6 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.0)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - '@radix-ui/react-use-size@1.1.1(@types/react@18.2.0)(react@18.2.0)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.2.0)(react@18.2.0) - react: 18.2.0 - 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.27.6 - '@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) - optionalDependencies: - '@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.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) - 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.27.6 - - '@radix-ui/rect@1.1.1': {} - - '@react-aria/focus@3.20.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@react-aria/interactions': 3.25.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-aria/utils': 3.29.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-types/shared': 3.30.0(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.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@react-aria/ssr': 3.9.9(react@18.2.0) - '@react-aria/utils': 3.29.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-stately/flags': 3.1.2 - '@react-types/shared': 3.30.0(react@18.2.0) - '@swc/helpers': 0.5.17 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@react-aria/ssr@3.9.9(react@18.2.0)': - dependencies: - '@swc/helpers': 0.5.17 - react: 18.2.0 - - '@react-aria/utils@3.29.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@react-aria/ssr': 3.9.9(react@18.2.0) - '@react-stately/flags': 3.1.2 - '@react-stately/utils': 3.10.7(react@18.2.0) - '@react-types/shared': 3.30.0(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-dnd/asap@5.0.2': {} - - '@react-dnd/invariant@4.0.2': {} - - '@react-dnd/shallowequal@4.0.2': {} - - '@react-stately/flags@3.1.2': - dependencies: - '@swc/helpers': 0.5.17 - - '@react-stately/utils@3.10.7(react@18.2.0)': - dependencies: - '@swc/helpers': 0.5.17 - react: 18.2.0 - - '@react-types/shared@3.30.0(react@18.2.0)': - dependencies: - react: 18.2.0 - - '@redhat-developer/locators@1.13.0(@redhat-developer/page-objects@1.13.0(selenium-webdriver@4.33.0)(typescript@5.8.3))(selenium-webdriver@4.33.0)': - dependencies: - '@redhat-developer/page-objects': 1.13.0(selenium-webdriver@4.33.0)(typescript@5.8.3) - selenium-webdriver: 4.33.0 - - '@redhat-developer/page-objects@1.13.0(selenium-webdriver@4.33.0)(typescript@5.8.3)': - dependencies: - clipboardy: 4.0.0 - clone-deep: 4.0.1 - compare-versions: 6.1.1 - fs-extra: 11.3.0 - selenium-webdriver: 4.33.0 - type-fest: 4.41.0 - typescript: 5.8.3 - - '@rolldown/pluginutils@1.0.0-beta.11': {} - - '@rollup/plugin-babel@5.3.1(@babel/core@7.27.4)(@types/babel__core@7.20.5)(rollup@1.32.1)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-imports': 7.27.1 - '@rollup/pluginutils': 3.1.0(rollup@1.32.1) - rollup: 1.32.1 - optionalDependencies: - '@types/babel__core': 7.20.5 - transitivePeerDependencies: - - supports-color - - '@rollup/plugin-commonjs@11.1.0(rollup@1.32.1)': - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@1.32.1) - commondir: 1.0.1 - estree-walker: 1.0.1 - glob: 7.2.3 - is-reference: 1.2.1 - magic-string: 0.25.9 - resolve: 1.22.10 - rollup: 1.32.1 - - '@rollup/plugin-commonjs@28.0.6(rollup@4.44.0)': - dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.44.0) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.4.6(picomatch@4.0.2) - is-reference: 1.2.1 - magic-string: 0.30.17 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.44.0 - - '@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.44.0)': - dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.44.0) - optionalDependencies: - rollup: 4.44.0 - - '@rollup/plugin-node-resolve@16.0.1(rollup@4.44.0)': - dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.44.0) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - optionalDependencies: - rollup: 4.44.0 - - '@rollup/plugin-node-resolve@9.0.0(rollup@1.32.1)': - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@1.32.1) - '@types/resolve': 1.17.1 - builtin-modules: 3.3.0 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - rollup: 1.32.1 - - '@rollup/plugin-replace@2.4.2(rollup@1.32.1)': - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@1.32.1) - magic-string: 0.25.9 - rollup: 1.32.1 - - '@rollup/pluginutils@3.1.0(rollup@1.32.1)': - dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 1.32.1 - - '@rollup/pluginutils@4.2.1': - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - - '@rollup/pluginutils@5.2.0(rollup@4.44.0)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.44.0 - - '@rollup/rollup-android-arm-eabi@4.44.0': - optional: true - - '@rollup/rollup-android-arm64@4.44.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.44.0': - optional: true - - '@rollup/rollup-darwin-x64@4.44.0': - optional: true - - '@rollup/rollup-freebsd-arm64@4.44.0': - optional: true - - '@rollup/rollup-freebsd-x64@4.44.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.44.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.44.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.44.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.44.0': - optional: true - - '@rollup/rollup-linux-loongarch64-gnu@4.44.0': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.44.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.44.0': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.44.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.44.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.44.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.44.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.44.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.44.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.44.0': - optional: true - - '@rtsao/scc@1.1.0': {} - - '@scarf/scarf@1.4.0': {} - - '@sec-ant/readable-stream@0.4.1': {} - - '@secretlint/config-creator@9.3.4': - dependencies: - '@secretlint/types': 9.3.4 - - '@secretlint/config-loader@9.3.4': - dependencies: - '@secretlint/profiler': 9.3.4 - '@secretlint/resolver': 9.3.4 - '@secretlint/types': 9.3.4 - ajv: 8.17.1 - debug: 4.4.1(supports-color@8.1.1) - rc-config-loader: 4.1.3 - transitivePeerDependencies: - - supports-color - - '@secretlint/core@9.3.4': - dependencies: - '@secretlint/profiler': 9.3.4 - '@secretlint/types': 9.3.4 - debug: 4.4.1(supports-color@8.1.1) - structured-source: 4.0.0 - transitivePeerDependencies: - - supports-color - - '@secretlint/formatter@9.3.4': - 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) - pluralize: 8.0.0 - strip-ansi: 6.0.1 - table: 6.9.0 - terminal-link: 2.1.1 - transitivePeerDependencies: - - supports-color - - '@secretlint/node@9.3.4': - 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 - transitivePeerDependencies: - - supports-color - - '@secretlint/profiler@9.3.4': {} - - '@secretlint/resolver@9.3.4': {} - - '@secretlint/secretlint-formatter-sarif@9.3.4': - dependencies: - node-sarif-builder: 2.0.3 - - '@secretlint/secretlint-rule-no-dotenv@9.3.4': - dependencies: - '@secretlint/types': 9.3.4 - - '@secretlint/secretlint-rule-preset-recommend@9.3.4': {} - - '@secretlint/source-creator@9.3.4': - dependencies: - '@secretlint/types': 9.3.4 - istextorbinary: 9.5.0 - - '@secretlint/types@9.3.4': {} - - '@sentry/cli@1.77.3(encoding@0.1.13)': - dependencies: - https-proxy-agent: 5.0.1 - mkdirp: 0.5.6 - node-fetch: 2.7.0(encoding@0.1.13) - progress: 2.0.3 - proxy-from-env: 1.1.0 - which: 2.0.2 - transitivePeerDependencies: - - encoding - - supports-color - - '@sentry/webpack-plugin@1.21.0(encoding@0.1.13)': - dependencies: - '@sentry/cli': 1.77.3(encoding@0.1.13) - webpack-sources: 3.3.3 - transitivePeerDependencies: - - encoding - - supports-color - - '@sideway/address@4.1.5': - dependencies: - '@hapi/hoek': 9.3.0 - - '@sideway/formula@3.0.1': {} - - '@sideway/pinpoint@2.0.0': {} - - '@sinclair/typebox@0.27.8': {} - - '@sindresorhus/is@5.6.0': {} - - '@sindresorhus/is@7.0.2': {} - - '@sindresorhus/merge-streams@2.3.0': {} - - '@sinonjs/commons@1.8.6': - dependencies: - type-detect: 4.0.8 - - '@sinonjs/commons@3.0.1': - dependencies: - type-detect: 4.0.8 - - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 - - '@size-limit/esbuild@11.2.0(size-limit@11.2.0)': - dependencies: - esbuild: 0.25.5 - nanoid: 5.1.5 - size-limit: 11.2.0 - - '@size-limit/file@11.2.0(size-limit@11.2.0)': - dependencies: - size-limit: 11.2.0 - - '@size-limit/preset-small-lib@11.2.0(size-limit@11.2.0)': - dependencies: - '@size-limit/esbuild': 11.2.0(size-limit@11.2.0) - '@size-limit/file': 11.2.0(size-limit@11.2.0) - size-limit: 11.2.0 - - '@smithy/abort-controller@4.0.4': - dependencies: - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/chunked-blob-reader-native@4.0.0': - dependencies: - '@smithy/util-base64': 4.0.0 - tslib: 2.8.1 - - '@smithy/chunked-blob-reader@5.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/config-resolver@4.1.4': - dependencies: - '@smithy/node-config-provider': 4.1.3 - '@smithy/types': 4.3.1 - '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.4 - tslib: 2.8.1 - - '@smithy/core@3.5.3': - dependencies: - '@smithy/middleware-serde': 4.0.8 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - '@smithy/util-base64': 4.0.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-stream': 4.2.2 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/credential-provider-imds@4.0.6': - dependencies: - '@smithy/node-config-provider': 4.1.3 - '@smithy/property-provider': 4.0.4 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 - tslib: 2.8.1 - - '@smithy/eventstream-codec@4.0.4': - dependencies: - '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.3.1 - '@smithy/util-hex-encoding': 4.0.0 - tslib: 2.8.1 - - '@smithy/eventstream-serde-browser@4.0.4': - dependencies: - '@smithy/eventstream-serde-universal': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/eventstream-serde-config-resolver@4.1.2': - dependencies: - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/eventstream-serde-node@4.0.4': - dependencies: - '@smithy/eventstream-serde-universal': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/eventstream-serde-universal@4.0.4': - dependencies: - '@smithy/eventstream-codec': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/fetch-http-handler@5.0.4': - dependencies: - '@smithy/protocol-http': 5.1.2 - '@smithy/querystring-builder': 4.0.4 - '@smithy/types': 4.3.1 - '@smithy/util-base64': 4.0.0 - tslib: 2.8.1 - - '@smithy/hash-blob-browser@4.0.4': - dependencies: - '@smithy/chunked-blob-reader': 5.0.0 - '@smithy/chunked-blob-reader-native': 4.0.0 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/hash-node@4.0.4': - dependencies: - '@smithy/types': 4.3.1 - '@smithy/util-buffer-from': 4.0.0 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/hash-stream-node@4.0.4': - dependencies: - '@smithy/types': 4.3.1 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/invalid-dependency@4.0.4': - dependencies: - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/is-array-buffer@2.2.0': - dependencies: - tslib: 2.8.1 - - '@smithy/is-array-buffer@4.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/md5-js@4.0.4': - dependencies: - '@smithy/types': 4.3.1 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/middleware-content-length@4.0.4': - dependencies: - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/middleware-endpoint@4.1.11': - dependencies: - '@smithy/core': 3.5.3 - '@smithy/middleware-serde': 4.0.8 - '@smithy/node-config-provider': 4.1.3 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 - '@smithy/url-parser': 4.0.4 - '@smithy/util-middleware': 4.0.4 - tslib: 2.8.1 - - '@smithy/middleware-retry@4.1.12': - dependencies: - '@smithy/node-config-provider': 4.1.3 - '@smithy/protocol-http': 5.1.2 - '@smithy/service-error-classification': 4.0.5 - '@smithy/smithy-client': 4.4.3 - '@smithy/types': 4.3.1 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-retry': 4.0.5 - tslib: 2.8.1 - uuid: 9.0.1 - - '@smithy/middleware-serde@4.0.8': - dependencies: - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/middleware-stack@4.0.4': - dependencies: - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/node-config-provider@4.1.3': - dependencies: - '@smithy/property-provider': 4.0.4 - '@smithy/shared-ini-file-loader': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/node-http-handler@4.0.6': - dependencies: - '@smithy/abort-controller': 4.0.4 - '@smithy/protocol-http': 5.1.2 - '@smithy/querystring-builder': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/property-provider@4.0.4': - dependencies: - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/protocol-http@5.1.2': - dependencies: - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/querystring-builder@4.0.4': - dependencies: - '@smithy/types': 4.3.1 - '@smithy/util-uri-escape': 4.0.0 - tslib: 2.8.1 - - '@smithy/querystring-parser@4.0.4': - dependencies: - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/service-error-classification@4.0.5': - dependencies: - '@smithy/types': 4.3.1 - - '@smithy/shared-ini-file-loader@4.0.4': - dependencies: - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/signature-v4@5.1.2': - dependencies: - '@smithy/is-array-buffer': 4.0.0 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - '@smithy/util-hex-encoding': 4.0.0 - '@smithy/util-middleware': 4.0.4 - '@smithy/util-uri-escape': 4.0.0 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/smithy-client@4.4.3': - dependencies: - '@smithy/core': 3.5.3 - '@smithy/middleware-endpoint': 4.1.11 - '@smithy/middleware-stack': 4.0.4 - '@smithy/protocol-http': 5.1.2 - '@smithy/types': 4.3.1 - '@smithy/util-stream': 4.2.2 - tslib: 2.8.1 - - '@smithy/types@4.3.1': - dependencies: - tslib: 2.8.1 - - '@smithy/url-parser@4.0.4': - dependencies: - '@smithy/querystring-parser': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/util-base64@4.0.0': - dependencies: - '@smithy/util-buffer-from': 4.0.0 - '@smithy/util-utf8': 4.0.0 - tslib: 2.8.1 - - '@smithy/util-body-length-browser@4.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-body-length-node@4.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-buffer-from@2.2.0': - dependencies: - '@smithy/is-array-buffer': 2.2.0 - tslib: 2.8.1 - - '@smithy/util-buffer-from@4.0.0': - dependencies: - '@smithy/is-array-buffer': 4.0.0 - tslib: 2.8.1 - - '@smithy/util-config-provider@4.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-defaults-mode-browser@4.0.19': - dependencies: - '@smithy/property-provider': 4.0.4 - '@smithy/smithy-client': 4.4.3 - '@smithy/types': 4.3.1 - bowser: 2.11.0 - tslib: 2.8.1 - - '@smithy/util-defaults-mode-node@4.0.19': - dependencies: - '@smithy/config-resolver': 4.1.4 - '@smithy/credential-provider-imds': 4.0.6 - '@smithy/node-config-provider': 4.1.3 - '@smithy/property-provider': 4.0.4 - '@smithy/smithy-client': 4.4.3 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/util-endpoints@3.0.6': - dependencies: - '@smithy/node-config-provider': 4.1.3 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/util-hex-encoding@4.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-middleware@4.0.4': - dependencies: - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/util-retry@4.0.5': - dependencies: - '@smithy/service-error-classification': 4.0.5 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@smithy/util-stream@4.2.2': - dependencies: - '@smithy/fetch-http-handler': 5.0.4 - '@smithy/node-http-handler': 4.0.6 - '@smithy/types': 4.3.1 - '@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 - tslib: 2.8.1 - - '@smithy/util-uri-escape@4.0.0': - dependencies: - tslib: 2.8.1 - - '@smithy/util-utf8@2.3.0': - dependencies: - '@smithy/util-buffer-from': 2.2.0 - tslib: 2.8.1 - - '@smithy/util-utf8@4.0.0': - dependencies: - '@smithy/util-buffer-from': 4.0.0 - tslib: 2.8.1 - - '@smithy/util-waiter@4.0.5': - dependencies: - '@smithy/abort-controller': 4.0.4 - '@smithy/types': 4.3.1 - tslib: 2.8.1 - - '@standard-schema/utils@0.3.0': {} - - '@storybook/addon-actions@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.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-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.43.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - polished: 4.3.1 - prop-types: 15.8.1 - react-inspector: 5.1.1(react@18.2.0) - regenerator-runtime: 0.13.11 - telejson: 6.0.8 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - uuid-browser: 3.1.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/addon-actions@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: - '@storybook/client-logger': 7.4.6 - '@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) - '@storybook/core-events': 7.4.6 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/preview-api': 7.4.6 - '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/types': 7.4.6 - dequal: 2.0.3 - lodash: 4.17.21 - polished: 4.3.1 - prop-types: 15.8.1 - react-inspector: 6.0.2(react@18.2.0) - telejson: 7.2.0 - ts-dedent: 2.2.0 - uuid: 9.0.1 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - '@storybook/addon-actions@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - '@types/uuid': 9.0.8 - dequal: 2.0.3 - polished: 4.3.1 - storybook: 8.6.14(prettier@3.6.2) - uuid: 9.0.1 - - '@storybook/addon-actions@8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - '@types/uuid': 9.0.8 - dequal: 2.0.3 - polished: 4.3.1 - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - uuid: 9.0.1 - - '@storybook/addon-actions@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - '@types/uuid': 9.0.8 - dequal: 2.0.3 - polished: 4.3.1 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - uuid: 9.0.1 - - '@storybook/addon-backgrounds@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.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-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.43.0 - global: 4.4.0 - memoizerific: 1.11.3 - regenerator-runtime: 0.13.11 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/addon-backgrounds@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: - '@storybook/client-logger': 7.4.6 - '@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) - '@storybook/core-events': 7.4.6 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/preview-api': 7.4.6 - '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/types': 7.4.6 - memoizerific: 1.11.3 - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - '@storybook/addon-backgrounds@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - storybook: 8.6.14(prettier@3.6.2) - ts-dedent: 2.2.0 - - '@storybook/addon-backgrounds@8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - - '@storybook/addon-backgrounds@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - - '@storybook/addon-controls@6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.43.0 - lodash: 4.17.21 - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - eslint - - supports-color - - typescript - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/addon-controls@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.43.0 - lodash: 4.17.21 - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - eslint - - supports-color - - typescript - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/addon-controls@7.4.6(@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)': - dependencies: - '@storybook/blocks': 7.4.6(@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) - '@storybook/client-logger': 7.4.6 - '@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) - '@storybook/core-common': 7.4.6(encoding@0.1.13) - '@storybook/core-events': 7.4.6 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/node-logger': 7.4.6 - '@storybook/preview-api': 7.4.6 - '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/types': 7.4.6 - lodash: 4.17.21 - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - supports-color - - '@storybook/addon-controls@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - dequal: 2.0.3 - storybook: 8.6.14(prettier@3.6.2) - ts-dedent: 2.2.0 - - '@storybook/addon-controls@8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - dequal: 2.0.3 - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - - '@storybook/addon-controls@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - dequal: 2.0.3 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - - '@storybook/addon-docs@6.5.16(@babel/core@7.27.4)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.100.2)': - dependencies: - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.4) - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@jest/transform': 26.6.2 - '@mdx-js/react': 1.6.22(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/components': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/core-common': 6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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) - '@storybook/mdx1-csf': 0.0.1(@babel/core@7.27.4) - '@storybook/node-logger': 6.5.16 - '@storybook/postinstall': 6.5.16 - '@storybook/preview-web': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@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.4)(webpack@5.100.2) - core-js: 3.43.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - regenerator-runtime: 0.13.11 - remark-external-links: 8.0.0 - remark-slug: 6.1.0 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@swc/core' - - esbuild - - eslint - - supports-color - - typescript - - uglify-js - - vue-template-compiler - - webpack - - webpack-cli - - '@storybook/addon-docs@6.5.16(@babel/core@7.27.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.100.2)': - dependencies: - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.4) - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@jest/transform': 26.6.2 - '@mdx-js/react': 1.6.22(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/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.4.2))(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) - '@storybook/mdx1-csf': 0.0.1(@babel/core@7.27.4) - '@storybook/node-logger': 6.5.16 - '@storybook/postinstall': 6.5.16 - '@storybook/preview-web': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@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.4)(webpack@5.100.2) - core-js: 3.43.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - regenerator-runtime: 0.13.11 - remark-external-links: 8.0.0 - remark-slug: 6.1.0 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@swc/core' - - esbuild - - eslint - - supports-color - - typescript - - uglify-js - - vue-template-compiler - - webpack - - webpack-cli - - '@storybook/addon-docs@7.4.6(@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)': - dependencies: - '@jest/transform': 29.7.0 - '@mdx-js/react': 2.3.0(react@18.2.0) - '@storybook/blocks': 7.4.6(@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) - '@storybook/client-logger': 7.4.6 - '@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) - '@storybook/csf-plugin': 7.4.6 - '@storybook/csf-tools': 7.4.6 - '@storybook/global': 5.0.0 - '@storybook/mdx2-csf': 1.1.0 - '@storybook/node-logger': 7.4.6 - '@storybook/postinstall': 7.4.6 - '@storybook/preview-api': 7.4.6 - '@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.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - remark-external-links: 8.0.0 - remark-slug: 6.1.0 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - supports-color - - '@storybook/addon-docs@8.6.14(@types/react@18.2.0)(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@mdx-js/react': 3.1.0(@types/react@18.2.0)(react@18.2.0) - '@storybook/blocks': 8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2)) - '@storybook/csf-plugin': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/react-dom-shim': 8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2)) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 8.6.14(prettier@3.6.2) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-docs@8.6.14(@types/react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@mdx-js/react': 3.1.0(@types/react@18.2.0)(react@18.2.0) - '@storybook/blocks': 8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/csf-plugin': 8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/react-dom-shim': 8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-docs@8.6.14(@types/react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@mdx-js/react': 3.1.0(@types/react@18.2.0)(react@18.2.0) - '@storybook/blocks': 8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/csf-plugin': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/react-dom-shim': 8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-docs@9.0.12(@types/react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@mdx-js/react': 3.1.0(@types/react@18.2.0)(react@18.2.0) - '@storybook/csf-plugin': 9.0.12(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/icons': 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/react-dom-shim': 9.0.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-essentials@6.5.16(@babel/core@7.27.4)(@storybook/builder-webpack5@6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1))(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.100.2)': - dependencies: - '@babel/core': 7.27.4 - '@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(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.4)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.100.2) - '@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(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.43.0 - regenerator-runtime: 0.13.11 - ts-dedent: 2.2.0 - optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - '@swc/core' - - esbuild - - eslint - - supports-color - - typescript - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/addon-essentials@6.5.16(@babel/core@7.27.4)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.100.2)': - dependencies: - '@babel/core': 7.27.4 - '@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.4.2))(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.4)(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.100.2) - '@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.4.2))(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.43.0 - regenerator-runtime: 0.13.11 - ts-dedent: 2.2.0 - optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.100.2(webpack-cli@4.10.0) - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - '@swc/core' - - esbuild - - eslint - - supports-color - - typescript - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/addon-essentials@7.4.6(@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)': - dependencies: - '@storybook/addon-actions': 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) - '@storybook/addon-backgrounds': 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) - '@storybook/addon-controls': 7.4.6(@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) - '@storybook/addon-docs': 7.4.6(@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) - '@storybook/addon-highlight': 7.4.6 - '@storybook/addon-measure': 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) - '@storybook/addon-outline': 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) - '@storybook/addon-toolbars': 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) - '@storybook/addon-viewport': 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) - '@storybook/core-common': 7.4.6(encoding@0.1.13) - '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/node-logger': 7.4.6 - '@storybook/preview-api': 7.4.6 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - supports-color - - '@storybook/addon-essentials@8.6.14(@types/react@18.2.0)(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/addon-actions': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-backgrounds': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-controls': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-docs': 8.6.14(@types/react@18.2.0)(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-highlight': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-measure': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-outline': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-toolbars': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/addon-viewport': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - storybook: 8.6.14(prettier@3.6.2) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-essentials@8.6.14(@types/react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/addon-actions': 8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-backgrounds': 8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-controls': 8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-docs': 8.6.14(@types/react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-highlight': 8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-measure': 8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-outline': 8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-toolbars': 8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-viewport': 8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-essentials@8.6.14(@types/react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/addon-actions': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-backgrounds': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-controls': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-docs': 8.6.14(@types/react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-highlight': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-measure': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-outline': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-toolbars': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/addon-viewport': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-highlight@7.4.6': - dependencies: - '@storybook/core-events': 7.4.6 - '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.4.6 - - '@storybook/addon-highlight@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 8.6.14(prettier@3.6.2) - - '@storybook/addon-highlight@8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/addon-highlight@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/addon-interactions@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/test': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - polished: 4.3.1 - storybook: 8.6.14(prettier@3.6.2) - ts-dedent: 2.2.0 - - '@storybook/addon-links@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@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-events': 6.5.16 - '@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.43.0 - global: 4.4.0 - prop-types: 15.8.1 - qs: 6.14.0 - regenerator-runtime: 0.13.11 - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/addon-links@7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/client-logger': 7.4.6 - '@storybook/core-events': 7.4.6 - '@storybook/csf': 0.1.13 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/preview-api': 7.4.6 - '@storybook/router': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/types': 7.4.6 - prop-types: 15.8.1 - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/addon-links@8.6.14(react@18.2.0)(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 8.6.14(prettier@3.6.2) - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - - '@storybook/addon-links@8.6.14(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - - '@storybook/addon-measure@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.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-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.43.0 - global: 4.4.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/addon-measure@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: - '@storybook/client-logger': 7.4.6 - '@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) - '@storybook/core-events': 7.4.6 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/preview-api': 7.4.6 - '@storybook/types': 7.4.6 - tiny-invariant: 1.3.3 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - '@storybook/addon-measure@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 8.6.14(prettier@3.6.2) - tiny-invariant: 1.3.3 - - '@storybook/addon-measure@8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - tiny-invariant: 1.3.3 - - '@storybook/addon-measure@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - tiny-invariant: 1.3.3 - - '@storybook/addon-onboarding@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - storybook: 8.6.14(prettier@3.6.2) - - '@storybook/addon-outline@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.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-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.43.0 - global: 4.4.0 - regenerator-runtime: 0.13.11 - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/addon-outline@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: - '@storybook/client-logger': 7.4.6 - '@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) - '@storybook/core-events': 7.4.6 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/preview-api': 7.4.6 - '@storybook/types': 7.4.6 - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - '@storybook/addon-outline@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 8.6.14(prettier@3.6.2) - ts-dedent: 2.2.0 - - '@storybook/addon-outline@8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - - '@storybook/addon-outline@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - - '@storybook/addon-toolbars@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.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/theming': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - core-js: 3.43.0 - regenerator-runtime: 0.13.11 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/addon-toolbars@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: - '@storybook/client-logger': 7.4.6 - '@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) - '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/preview-api': 7.4.6 - '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - '@storybook/addon-toolbars@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - storybook: 8.6.14(prettier@3.6.2) - - '@storybook/addon-toolbars@8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/addon-toolbars@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/addon-viewport@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.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-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.43.0 - global: 4.4.0 - memoizerific: 1.11.3 - prop-types: 15.8.1 - regenerator-runtime: 0.13.11 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/addon-viewport@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: - '@storybook/client-logger': 7.4.6 - '@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) - '@storybook/core-events': 7.4.6 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/preview-api': 7.4.6 - '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - memoizerific: 1.11.3 - prop-types: 15.8.1 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - '@storybook/addon-viewport@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - memoizerific: 1.11.3 - storybook: 8.6.14(prettier@3.6.2) - - '@storybook/addon-viewport@8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - memoizerific: 1.11.3 - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/addon-viewport@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - memoizerific: 1.11.3 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/addons@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/api': 6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@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) - '@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.43.0 - global: 4.4.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - - '@storybook/addons@6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@storybook/api': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@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.43.0 - global: 4.4.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - regenerator-runtime: 0.13.11 - - '@storybook/addons@7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/preview-api': 7.4.6 - '@storybook/types': 7.4.6 - react: 18.2.0 - react-dom: 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)': - dependencies: - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@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) - '@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.43.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - store2: 2.14.4 - telejson: 6.0.8 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/api@6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@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.43.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - regenerator-runtime: 0.13.11 - store2: 2.14.4 - telejson: 6.0.8 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/blocks@7.4.6(@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)': - dependencies: - '@storybook/channels': 7.4.6 - '@storybook/client-logger': 7.4.6 - '@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) - '@storybook/core-events': 7.4.6 - '@storybook/csf': 0.1.13 - '@storybook/docs-tools': 7.4.6(encoding@0.1.13) - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/preview-api': 7.4.6 - '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/types': 7.4.6 - '@types/lodash': 4.17.17 - color-convert: 2.0.1 - dequal: 2.0.3 - lodash: 4.17.21 - markdown-to-jsx: 7.7.8(react@18.2.0) - memoizerific: 1.11.3 - polished: 4.3.1 - react: 18.2.0 - react-colorful: 5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-dom: 18.2.0(react@18.2.0) - telejson: 7.2.0 - tocbot: 4.36.4 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - supports-color - - '@storybook/blocks@8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/icons': 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - storybook: 8.6.14(prettier@3.6.2) - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/blocks@8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/icons': 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/blocks@8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/icons': 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/builder-manager@7.6.20(encoding@0.1.13)': - dependencies: - '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 7.6.20(encoding@0.1.13) - '@storybook/manager': 7.6.20 - '@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.6) - browser-assert: 1.2.1 - ejs: 3.1.10 - esbuild: 0.25.6 - esbuild-plugin-alias: 0.2.1 - express: 4.21.2 - find-cache-dir: 3.3.2 - fs-extra: 11.3.0 - process: 0.11.10 - util: 0.12.5 - transitivePeerDependencies: - - encoding - - supports-color - - '@storybook/builder-vite@9.0.17(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))': - dependencies: - '@storybook/csf-plugin': 9.0.17(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - vite: 6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) - - '@storybook/builder-webpack4@6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.4 - '@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(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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) - '@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.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.43.0 - css-loader: 3.6.0(webpack@5.100.2) - file-loader: 6.2.0(webpack@5.100.2) - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2) - 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.100.2) - 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.100.2) - raw-loader: 4.0.2(webpack@5.100.2) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - stable: 0.1.8 - style-loader: 1.3.0(webpack@5.100.2) - terser-webpack-plugin: 4.2.3(webpack@5.100.2) - ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) - util-deprecate: 1.0.2 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.2.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@swc/core' - - bluebird - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/builder-webpack4@6.5.16(eslint@9.26.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': - dependencies: - '@babel/core': 7.27.4 - '@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(eslint@9.26.0(jiti@2.4.2))(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.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.43.0 - css-loader: 3.6.0(webpack@5.100.2) - file-loader: 6.2.0(webpack@5.100.2) - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2) - 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.100.2) - 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.100.2) - raw-loader: 4.0.2(webpack@5.100.2) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - stable: 0.1.8 - style-loader: 1.3.0(webpack@5.100.2) - terser-webpack-plugin: 4.2.3(webpack@5.100.2) - ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.2.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@swc/core' - - bluebird - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': - dependencies: - '@babel/core': 7.27.4 - '@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(eslint@9.27.0(jiti@2.4.2))(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.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.43.0 - css-loader: 3.6.0(webpack@5.100.2) - file-loader: 6.2.0(webpack@5.100.2) - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2) - 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.100.2) - 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.100.2) - raw-loader: 4.0.2(webpack@5.100.2) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - stable: 0.1.8 - style-loader: 1.3.0(webpack@5.100.2) - terser-webpack-plugin: 4.2.3(webpack@5.100.2) - ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.2.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@swc/core' - - bluebird - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4 - '@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(eslint@9.27.0(jiti@2.4.2))(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) - '@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.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.43.0 - css-loader: 3.6.0(webpack@5.100.2) - file-loader: 6.2.0(webpack@5.100.2) - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2) - 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.100.2) - 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.100.2) - raw-loader: 4.0.2(webpack@5.100.2) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - stable: 0.1.8 - style-loader: 1.3.0(webpack@5.100.2) - terser-webpack-plugin: 4.2.3(webpack@5.100.2) - ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.2.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@swc/core' - - bluebird - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/builder-webpack4@6.5.16(eslint@9.27.0(jiti@2.4.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': - dependencies: - '@babel/core': 7.27.4 - '@storybook/addons': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/api': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/channel-postmessage': 6.5.16 - '@storybook/channels': 6.5.16 - '@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.4.2))(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) - '@storybook/router': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/semver': 7.3.2 - '@storybook/store': 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) - '@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 - autoprefixer: 9.8.8 - babel-loader: 8.4.1(@babel/core@7.27.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.43.0 - css-loader: 3.6.0(webpack@5.100.2) - file-loader: 6.2.0(webpack@5.100.2) - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6(eslint@9.27.0(jiti@2.4.2))(typescript@4.9.5)(webpack@5.100.2) - 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.100.2) - 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.100.2) - raw-loader: 4.0.2(webpack@5.100.2) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - stable: 0.1.8 - style-loader: 1.3.0(webpack@5.100.2) - terser-webpack-plugin: 4.2.3(webpack@5.100.2) - ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-filter-warnings-plugin: 1.2.1(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.2.2 - optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - '@swc/core' - - bluebird - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/builder-webpack5@6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.4 - '@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(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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) - '@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) - '@types/node': 16.18.126 - babel-loader: 8.4.1(@babel/core@7.27.4)(webpack@5.100.2) - babel-plugin-named-exports-order: 0.0.2 - browser-assert: 1.2.1 - case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.43.0 - css-loader: 5.2.7(webpack@5.100.2) - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2) - glob: 7.2.3 - glob-promise: 3.4.0(glob@7.2.3) - html-webpack-plugin: 5.6.3(webpack@5.100.2) - 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.100.2) - terser-webpack-plugin: 5.3.14(esbuild@0.25.5)(webpack@5.100.2) - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-dev-middleware: 4.3.0(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.4.6 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/core' - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4 - '@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(eslint@9.27.0(jiti@2.4.2))(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) - '@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) - '@types/node': 16.18.126 - babel-loader: 8.4.1(@babel/core@7.27.4)(webpack@5.100.2) - babel-plugin-named-exports-order: 0.0.2 - browser-assert: 1.2.1 - case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.43.0 - css-loader: 5.2.7(webpack@5.100.2) - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2) - glob: 7.2.3 - glob-promise: 3.4.0(glob@7.2.3) - html-webpack-plugin: 5.6.3(webpack@5.100.2) - 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.100.2) - terser-webpack-plugin: 5.3.14(webpack@5.100.2) - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 4.3.0(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.4.6 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/core' - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@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)(esbuild@0.25.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': - dependencies: - '@babel/core': 7.27.4 - '@storybook/addons': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/channels': 7.4.6 - '@storybook/client-api': 7.4.6 - '@storybook/client-logger': 7.4.6 - '@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) - '@storybook/core-common': 7.4.6(encoding@0.1.13) - '@storybook/core-events': 7.4.6 - '@storybook/core-webpack': 7.4.6(encoding@0.1.13) - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/node-logger': 7.4.6 - '@storybook/preview': 7.4.6 - '@storybook/preview-api': 7.4.6 - '@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.12.5(@swc/helpers@0.5.17) - '@types/node': 16.18.126 - '@types/semver': 7.7.0 - babel-loader: 9.2.1(@babel/core@7.27.4)(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - 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.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - express: 4.21.2 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - fs-extra: 11.3.0 - html-webpack-plugin: 5.6.3(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - 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.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - swc-loader: 0.2.6(@swc/core@1.12.5(@swc/helpers@0.5.17))(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - terser-webpack-plugin: 5.3.14(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - ts-dedent: 2.2.0 - url: 0.11.4 - util: 0.12.5 - util-deprecate: 1.0.2 - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - webpack-dev-middleware: 6.1.3(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.5.0 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/helpers' - - '@types/react' - - '@types/react-dom' - - encoding - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@storybook/builder-webpack5@8.6.14(storybook@8.6.14(prettier@3.6.2))(typescript@5.8.3)': - dependencies: - '@storybook/core-webpack': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@types/semver': 7.7.0 - 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.100.2) - es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.100.2) - html-webpack-plugin: 5.6.3(webpack@5.100.2) - magic-string: 0.30.17 - path-browserify: 1.0.1 - process: 0.11.10 - semver: 7.7.2 - storybook: 8.6.14(prettier@3.6.2) - style-loader: 3.3.4(webpack@5.100.2) - terser-webpack-plugin: 5.3.14(webpack@5.100.2) - ts-dedent: 2.2.0 - url: 0.11.4 - util: 0.12.5 - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 6.1.3(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.6.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - - '@storybook/builder-webpack5@8.6.14(storybook@8.6.14(prettier@3.6.2))(typescript@5.8.3)(webpack-cli@6.0.1)': - dependencies: - '@storybook/core-webpack': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@types/semver': 7.7.0 - 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.100.2) - es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.100.2) - html-webpack-plugin: 5.6.3(webpack@5.100.2) - magic-string: 0.30.17 - path-browserify: 1.0.1 - process: 0.11.10 - semver: 7.7.2 - storybook: 8.6.14(prettier@3.6.2) - style-loader: 3.3.4(webpack@5.100.2) - terser-webpack-plugin: 5.3.14(webpack@5.100.2) - ts-dedent: 2.2.0 - url: 0.11.4 - util: 0.12.5 - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-dev-middleware: 6.1.3(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.6.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - - '@storybook/builder-webpack5@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3)(webpack-cli@5.1.4)': - dependencies: - '@storybook/core-webpack': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@types/semver': 7.7.0 - 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.100.2) - es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.3)(webpack@5.100.2) - html-webpack-plugin: 5.6.3(webpack@5.100.2) - magic-string: 0.30.17 - path-browserify: 1.0.1 - process: 0.11.10 - semver: 7.7.2 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - style-loader: 3.3.4(webpack@5.100.2) - terser-webpack-plugin: 5.3.14(webpack@5.100.2) - ts-dedent: 2.2.0 - url: 0.11.4 - util: 0.12.5 - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-dev-middleware: 6.1.3(webpack@5.100.2) - webpack-hot-middleware: 2.26.1 - webpack-virtual-modules: 0.6.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - - '@storybook/channel-postmessage@6.5.16': - dependencies: - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - core-js: 3.43.0 - global: 4.4.0 - qs: 6.14.0 - telejson: 6.0.8 - - '@storybook/channel-websocket@6.5.16': - dependencies: - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - core-js: 3.43.0 - global: 4.4.0 - telejson: 6.0.8 - - '@storybook/channels@6.5.16': - dependencies: - core-js: 3.43.0 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/channels@7.4.6': - dependencies: - '@storybook/client-logger': 7.4.6 - '@storybook/core-events': 7.4.6 - '@storybook/global': 5.0.0 - qs: 6.14.0 - telejson: 7.2.0 - tiny-invariant: 1.3.3 - - '@storybook/channels@7.6.20': - dependencies: - '@storybook/client-logger': 7.6.20 - '@storybook/core-events': 7.6.20 - '@storybook/global': 5.0.0 - qs: 6.14.0 - telejson: 7.2.0 - tiny-invariant: 1.3.3 - - '@storybook/cli@7.6.20(encoding@0.1.13)': - dependencies: - '@babel/core': 7.27.4 - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@babel/types': 7.27.6 - '@ndelangen/get-tarball': 3.0.9 - '@storybook/codemod': 7.6.20 - '@storybook/core-common': 7.6.20(encoding@0.1.13) - '@storybook/core-events': 7.6.20 - '@storybook/core-server': 7.6.20(encoding@0.1.13) - '@storybook/csf-tools': 7.6.20 - '@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 - '@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 - execa: 5.1.1 - express: 4.21.2 - find-up: 5.0.0 - fs-extra: 11.3.0 - get-npm-tarball-url: 2.1.0 - get-port: 5.1.1 - giget: 1.2.5 - globby: 11.1.0 - jscodeshift: 0.15.2(@babel/preset-env@7.27.2(@babel/core@7.27.4)) - leven: 3.1.0 - ora: 5.4.1 - prettier: 2.8.8 - prompts: 2.4.2 - puppeteer-core: 2.1.1 - read-pkg-up: 7.0.1 - semver: 7.7.2 - strip-json-comments: 3.1.1 - tempy: 1.0.1 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@storybook/cli@9.0.17(@babel/preset-env@7.27.2(@babel/core@7.28.0))(@testing-library/dom@10.4.0)(prettier@3.6.2)': - dependencies: - '@storybook/codemod': 9.0.17(@babel/preset-env@7.27.2(@babel/core@7.28.0))(@testing-library/dom@10.4.0) - '@types/semver': 7.7.0 - commander: 12.1.0 - create-storybook: 9.0.17 - giget: 1.2.5 - jscodeshift: 0.15.2(@babel/preset-env@7.27.2(@babel/core@7.28.0)) - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@babel/preset-env' - - '@testing-library/dom' - - bufferutil - - prettier - - supports-color - - utf-8-validate - - '@storybook/client-api@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.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 - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@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) - '@types/qs': 6.14.0 - '@types/webpack-env': 1.18.8 - core-js: 3.43.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.14.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - store2: 2.14.4 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/client-api@6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.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 - '@storybook/channels': 6.5.16 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@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) - '@types/qs': 6.14.0 - '@types/webpack-env': 1.18.8 - core-js: 3.43.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.14.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - regenerator-runtime: 0.13.11 - store2: 2.14.4 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/client-api@7.4.6': - dependencies: - '@storybook/client-logger': 7.4.6 - '@storybook/preview-api': 7.4.6 - - '@storybook/client-logger@6.5.16': - dependencies: - core-js: 3.43.0 - global: 4.4.0 - - '@storybook/client-logger@7.4.6': - dependencies: - '@storybook/global': 5.0.0 - - '@storybook/client-logger@7.6.20': - dependencies: - '@storybook/global': 5.0.0 - - '@storybook/codemod@7.6.20': - dependencies: - '@babel/core': 7.27.4 - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@babel/types': 7.27.6 - '@storybook/csf': 0.1.13 - '@storybook/csf-tools': 7.6.20 - '@storybook/node-logger': 7.6.20 - '@storybook/types': 7.6.20 - '@types/cross-spawn': 6.0.6 - cross-spawn: 7.0.6 - globby: 11.1.0 - jscodeshift: 0.15.2(@babel/preset-env@7.27.2(@babel/core@7.27.4)) - lodash: 4.17.21 - prettier: 2.8.8 - recast: 0.23.11 - transitivePeerDependencies: - - supports-color - - '@storybook/codemod@9.0.17(@babel/preset-env@7.27.2(@babel/core@7.28.0))(@testing-library/dom@10.4.0)': - dependencies: - '@types/cross-spawn': 6.0.6 - cross-spawn: 7.0.6 - es-toolkit: 1.39.7 - globby: 14.1.0 - jscodeshift: 0.15.2(@babel/preset-env@7.27.2(@babel/core@7.28.0)) - prettier: 3.6.2 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - tiny-invariant: 1.3.3 - transitivePeerDependencies: - - '@babel/preset-env' - - '@testing-library/dom' - - bufferutil - - supports-color - - utf-8-validate - - '@storybook/components@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@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.43.0 - memoizerific: 1.11.3 - qs: 6.14.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - util-deprecate: 1.0.2 - - '@storybook/components@6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@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.43.0 - memoizerific: 1.11.3 - qs: 6.14.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - regenerator-runtime: 0.13.11 - util-deprecate: 1.0.2 - - '@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) - '@storybook/client-logger': 7.4.6 - '@storybook/csf': 0.1.13 - '@storybook/global': 5.0.0 - '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/types': 7.4.6 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - use-resize-observer: 9.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - util-deprecate: 1.0.2 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - '@storybook/components@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - storybook: 8.6.14(prettier@3.6.2) - - '@storybook/components@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@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.100.2)': - 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.43.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.100.2(webpack-cli@4.10.0) - 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.100.2)': - 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 - '@storybook/channel-websocket': 6.5.16 - '@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/core-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/preview-web': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/store': 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) - airbnb-js-shims: 2.2.1 - ansi-to-html: 0.6.15 - core-js: 3.43.0 - global: 4.4.0 - lodash: 4.17.21 - qs: 6.14.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - regenerator-runtime: 0.13.11 - ts-dedent: 2.2.0 - unfetch: 4.2.0 - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - optionalDependencies: - typescript: 4.9.5 - - '@storybook/core-client@7.4.6': - dependencies: - '@storybook/client-logger': 7.4.6 - '@storybook/preview-api': 7.4.6 - - '@storybook/core-common@6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.4 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-decorators': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.27.4) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.27.4) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.27.4) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.27.4) - '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.4) - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) - '@babel/register': 7.27.1(@babel/core@7.27.4) - '@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.4)(webpack@5.100.2) - babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.4) - chalk: 4.1.2 - core-js: 3.43.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.4.2))(typescript@5.8.3)(webpack@5.100.2) - 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.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - 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(eslint@9.26.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': - dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-decorators': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.27.4) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.27.4) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.27.4) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.27.4) - '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.4) - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) - '@babel/register': 7.27.1(@babel/core@7.27.4) - '@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.4)(webpack@5.100.2) - babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.4) - chalk: 4.1.2 - core-js: 3.43.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.4.2))(typescript@5.8.3)(webpack@5.100.2) - 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.100.2(webpack-cli@4.10.0) - 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(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': - dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-decorators': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.27.4) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.27.4) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.27.4) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.27.4) - '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.4) - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) - '@babel/register': 7.27.1(@babel/core@7.27.4) - '@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.4)(webpack@5.100.2) - babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.4) - chalk: 4.1.2 - core-js: 3.43.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.4.2))(typescript@5.8.3)(webpack@5.100.2) - 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.100.2(webpack-cli@4.10.0) - 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(eslint@9.27.0(jiti@2.4.2))(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.4 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-decorators': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.27.4) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.27.4) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.27.4) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.27.4) - '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.4) - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) - '@babel/register': 7.27.1(@babel/core@7.27.4) - '@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.4)(webpack@5.100.2) - babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.4) - chalk: 4.1.2 - core-js: 3.43.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.4.2))(typescript@5.8.3)(webpack@5.100.2) - 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.100.2(webpack-cli@4.10.0) - 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(eslint@9.27.0(jiti@2.4.2))(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.4 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-decorators': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.27.4) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.27.4) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.27.4) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.27.4) - '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.4) - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) - '@babel/register': 7.27.1(@babel/core@7.27.4) - '@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.4)(webpack@5.100.2) - babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.4) - chalk: 4.1.2 - core-js: 3.43.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.4.2))(typescript@5.8.3)(webpack@5.100.2) - 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.100.2(webpack-cli@6.0.1) - 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(eslint@9.27.0(jiti@2.4.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': - dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-decorators': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.27.4) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.27.4) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.27.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.27.4) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.27.4) - '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.27.4) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.4) - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) - '@babel/register': 7.27.1(@babel/core@7.27.4) - '@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.4)(webpack@5.100.2) - babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.27.4) - chalk: 4.1.2 - core-js: 3.43.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.4.2))(typescript@4.9.5)(webpack@5.100.2) - 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: 19.1.0 - react-dom: 19.1.0(react@19.1.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.100.2(webpack-cli@4.10.0) - optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/core-common@7.4.6(encoding@0.1.13)': - dependencies: - '@storybook/core-events': 7.4.6 - '@storybook/node-logger': 7.4.6 - '@storybook/types': 7.4.6 - '@types/find-cache-dir': 3.2.1 - '@types/node': 16.18.126 - '@types/node-fetch': 2.6.12 - '@types/pretty-hrtime': 1.0.3 - chalk: 4.1.2 - esbuild: 0.25.6 - esbuild-register: 3.6.0(esbuild@0.25.6) - file-system-cache: 2.3.0 - find-cache-dir: 3.3.2 - find-up: 5.0.0 - fs-extra: 11.3.0 - glob: 10.4.5 - handlebars: 4.7.8 - lazy-universal-dotenv: 4.0.0 - node-fetch: 2.7.0(encoding@0.1.13) - picomatch: 2.3.1 - pkg-dir: 5.0.0 - pretty-hrtime: 1.0.3 - resolve-from: 5.0.0 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - encoding - - supports-color - - '@storybook/core-common@7.6.20(encoding@0.1.13)': - dependencies: - '@storybook/core-events': 7.6.20 - '@storybook/node-logger': 7.6.20 - '@storybook/types': 7.6.20 - '@types/find-cache-dir': 3.2.1 - '@types/node': 18.19.112 - '@types/node-fetch': 2.6.12 - '@types/pretty-hrtime': 1.0.3 - chalk: 4.1.2 - esbuild: 0.25.6 - esbuild-register: 3.6.0(esbuild@0.25.6) - file-system-cache: 2.3.0 - find-cache-dir: 3.3.2 - find-up: 5.0.0 - fs-extra: 11.3.0 - glob: 10.4.5 - handlebars: 4.7.8 - lazy-universal-dotenv: 4.0.0 - node-fetch: 2.7.0(encoding@0.1.13) - picomatch: 2.3.1 - pkg-dir: 5.0.0 - pretty-hrtime: 1.0.3 - resolve-from: 5.0.0 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - encoding - - supports-color - - '@storybook/core-events@6.5.16': - dependencies: - core-js: 3.43.0 - - '@storybook/core-events@7.4.6': - dependencies: - ts-dedent: 2.2.0 - - '@storybook/core-events@7.6.20': - dependencies: - ts-dedent: 2.2.0 - - '@storybook/core-server@6.5.16(@storybook/builder-webpack5@6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.100.2) - '@storybook/core-common': 6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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(encoding@0.1.13)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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(encoding@0.1.13)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.12 - '@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.0 - core-js: 3.43.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.7.0(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.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - ws: 8.18.2 - x-default-browser: 0.4.0 - optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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' - - bluebird - - 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.4.2))(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.4.2))(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.4.2))(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.4.2))(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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.4.2))(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.12 - '@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.0 - core-js: 3.43.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.7.0(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.100.2(webpack-cli@4.10.0) - ws: 8.18.2 - x-default-browser: 0.4.0 - optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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' - - '@swc/core' - - bluebird - - bufferutil - - encoding - - esbuild - - eslint - - supports-color - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@storybook/core-server@6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.4.2))(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.4.2))(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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.4.2))(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.4.2))(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.4.2))(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.12 - '@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.0 - core-js: 3.43.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.7.0(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.100.2(webpack-cli@4.10.0) - ws: 8.18.2 - x-default-browser: 0.4.0 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - '@swc/core' - - bluebird - - bufferutil - - encoding - - esbuild - - eslint - - supports-color - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@storybook/core-server@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.4.2))(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.12 - '@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.0 - core-js: 3.43.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.7.0(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.100.2(webpack-cli@4.10.0) - ws: 8.18.2 - x-default-browser: 0.4.0 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - '@swc/core' - - bluebird - - bufferutil - - encoding - - esbuild - - eslint - - supports-color - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@storybook/core-server@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.4.2))(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.12 - '@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.0 - core-js: 3.43.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.7.0(encoding@0.1.13) - open: 8.4.2 - pretty-hrtime: 1.0.3 - prompts: 2.4.2 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.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.100.2(webpack-cli@4.10.0) - ws: 8.18.2 - x-default-browser: 0.4.0 - optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - '@swc/core' - - bluebird - - bufferutil - - encoding - - esbuild - - eslint - - supports-color - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@storybook/core-server@7.6.20(encoding@0.1.13)': - dependencies: - '@aw-web-design/x-default-browser': 1.4.126 - '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 7.6.20(encoding@0.1.13) - '@storybook/channels': 7.6.20 - '@storybook/core-common': 7.6.20(encoding@0.1.13) - '@storybook/core-events': 7.6.20 - '@storybook/csf': 0.1.13 - '@storybook/csf-tools': 7.6.20 - '@storybook/docs-mdx': 0.1.0 - '@storybook/global': 5.0.0 - '@storybook/manager': 7.6.20 - '@storybook/node-logger': 7.6.20 - '@storybook/preview-api': 7.6.20 - '@storybook/telemetry': 7.6.20(encoding@0.1.13) - '@storybook/types': 7.6.20 - '@types/detect-port': 1.3.5 - '@types/node': 18.19.112 - '@types/pretty-hrtime': 1.0.3 - '@types/semver': 7.7.0 - better-opn: 3.0.2 - chalk: 4.1.2 - cli-table3: 0.6.5 - compression: 1.8.0 - detect-port: 1.6.1 - express: 4.21.2 - fs-extra: 11.3.0 - 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 - telejson: 7.2.0 - tiny-invariant: 1.3.3 - ts-dedent: 2.2.0 - util: 0.12.5 - util-deprecate: 1.0.2 - watchpack: 2.4.4 - ws: 8.18.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@storybook/core-webpack@7.4.6(encoding@0.1.13)': - dependencies: - '@storybook/core-common': 7.4.6(encoding@0.1.13) - '@storybook/node-logger': 7.4.6 - '@storybook/types': 7.4.6 - '@types/node': 16.18.126 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - encoding - - supports-color - - '@storybook/core-webpack@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - storybook: 8.6.14(prettier@3.6.2) - ts-dedent: 2.2.0 - - '@storybook/core-webpack@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - ts-dedent: 2.2.0 - - '@storybook/core@6.5.16(@storybook/builder-webpack5@6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.100.2)': - 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.100.2) - '@storybook/core-server': 6.5.16(@storybook/builder-webpack5@6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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' - - bluebird - - bufferutil - - encoding - - esbuild - - eslint - - supports-color - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@storybook/core@6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.100.2)': - 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.100.2) - '@storybook/core-server': 6.5.16(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.4.2))(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.100.2(webpack-cli@4.10.0) - optionalDependencies: - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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' - - '@swc/core' - - bluebird - - 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.26.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.100.2)': - 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.100.2) - '@storybook/core-server': 6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.4.2))(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.100.2(webpack-cli@4.10.0) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - '@swc/core' - - bluebird - - 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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.100.2)': - 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.100.2) - '@storybook/core-server': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2(webpack-cli@4.10.0) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - '@swc/core' - - bluebird - - 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.4.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.100.2)': - 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.100.2) - '@storybook/core-server': 6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2(webpack-cli@4.10.0) - optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - '@swc/core' - - bluebird - - bufferutil - - encoding - - esbuild - - eslint - - supports-color - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - '@storybook/core@8.6.14(prettier@3.6.2)(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/theming': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - better-opn: 3.0.2 - browser-assert: 1.2.1 - esbuild: 0.25.5 - esbuild-register: 3.6.0(esbuild@0.25.5) - jsdoc-type-pratt-parser: 4.1.0 - process: 0.11.10 - recast: 0.23.11 - semver: 7.7.2 - util: 0.12.5 - ws: 8.18.2 - optionalDependencies: - prettier: 3.6.2 - transitivePeerDependencies: - - bufferutil - - storybook - - supports-color - - utf-8-validate - - '@storybook/csf-plugin@7.4.6': - dependencies: - '@storybook/csf-tools': 7.4.6 - unplugin: 1.16.1 - transitivePeerDependencies: - - supports-color - - '@storybook/csf-plugin@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - storybook: 8.6.14(prettier@3.6.2) - unplugin: 1.16.1 - - '@storybook/csf-plugin@8.6.14(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - unplugin: 1.16.1 - - '@storybook/csf-plugin@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - unplugin: 1.16.1 - - '@storybook/csf-plugin@9.0.12(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - unplugin: 1.16.1 - - '@storybook/csf-plugin@9.0.17(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - unplugin: 1.16.1 - - '@storybook/csf-tools@6.5.16': - dependencies: - '@babel/core': 7.27.4 - '@babel/generator': 7.27.5 - '@babel/parser': 7.28.0 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.4) - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/mdx1-csf': 0.0.1(@babel/core@7.27.4) - core-js: 3.43.0 - fs-extra: 9.1.0 - global: 4.4.0 - regenerator-runtime: 0.13.11 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color - - '@storybook/csf-tools@7.4.6': - dependencies: - '@babel/generator': 7.27.5 - '@babel/parser': 7.28.0 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 - '@storybook/csf': 0.1.13 - '@storybook/types': 7.4.6 - fs-extra: 11.3.0 - recast: 0.23.11 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color - - '@storybook/csf-tools@7.6.20': - dependencies: - '@babel/generator': 7.27.5 - '@babel/parser': 7.27.5 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 - '@storybook/csf': 0.1.13 - '@storybook/types': 7.6.20 - fs-extra: 11.3.0 - recast: 0.23.11 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color - - '@storybook/csf@0.0.2--canary.4566f4d.1': - dependencies: - lodash: 4.17.21 - - '@storybook/csf@0.1.13': - dependencies: - type-fest: 2.19.0 - - '@storybook/docs-mdx@0.1.0': {} - - '@storybook/docs-tools@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/core': 7.27.4 - '@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.43.0 - doctrine: 3.0.0 - lodash: 4.17.21 - regenerator-runtime: 0.13.11 - transitivePeerDependencies: - - react - - react-dom - - supports-color - - '@storybook/docs-tools@6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@babel/core': 7.27.4 - '@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.43.0 - doctrine: 3.0.0 - lodash: 4.17.21 - regenerator-runtime: 0.13.11 - transitivePeerDependencies: - - react - - react-dom - - supports-color - - '@storybook/docs-tools@7.4.6(encoding@0.1.13)': - dependencies: - '@storybook/core-common': 7.4.6(encoding@0.1.13) - '@storybook/preview-api': 7.4.6 - '@storybook/types': 7.4.6 - '@types/doctrine': 0.0.3 - doctrine: 3.0.0 - lodash: 4.17.21 - transitivePeerDependencies: - - encoding - - supports-color - - '@storybook/global@5.0.0': {} - - '@storybook/icons@1.4.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/instrumenter@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - '@vitest/utils': 2.1.9 - storybook: 8.6.14(prettier@3.6.2) - - '@storybook/instrumenter@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - '@vitest/utils': 2.1.9 - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - optional: true - - '@storybook/manager-api@7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/channels': 7.4.6 - '@storybook/client-logger': 7.4.6 - '@storybook/core-events': 7.4.6 - '@storybook/csf': 0.1.13 - '@storybook/global': 5.0.0 - '@storybook/router': 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 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - semver: 7.7.2 - store2: 2.14.4 - telejson: 7.2.0 - ts-dedent: 2.2.0 - - '@storybook/manager-api@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - storybook: 8.6.14(prettier@3.6.2) - - '@storybook/manager-api@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.4 - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@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.100.2) - '@storybook/core-common': 6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - chalk: 4.1.2 - core-js: 3.43.0 - css-loader: 3.6.0(webpack@5.100.2) - express: 4.21.2 - file-loader: 6.2.0(webpack@5.100.2) - find-up: 5.0.0 - fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.100.2) - node-fetch: 2.7.0(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.100.2) - telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.100.2) - ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) - util-deprecate: 1.0.2 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-virtual-modules: 0.2.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@swc/core' - - bluebird - - encoding - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/manager-webpack4@6.5.16(encoding@0.1.13)(eslint@9.26.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': - dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.4.2))(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.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - chalk: 4.1.2 - core-js: 3.43.0 - css-loader: 3.6.0(webpack@5.100.2) - express: 4.21.2 - file-loader: 6.2.0(webpack@5.100.2) - find-up: 5.0.0 - fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.100.2) - node-fetch: 2.7.0(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.100.2) - telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.100.2) - ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-virtual-modules: 0.2.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@swc/core' - - bluebird - - 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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': - dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - chalk: 4.1.2 - core-js: 3.43.0 - css-loader: 3.6.0(webpack@5.100.2) - express: 4.21.2 - file-loader: 6.2.0(webpack@5.100.2) - find-up: 5.0.0 - fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.100.2) - node-fetch: 2.7.0(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.100.2) - telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.100.2) - ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-virtual-modules: 0.2.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@swc/core' - - bluebird - - 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.4.2))(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.4 - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - chalk: 4.1.2 - core-js: 3.43.0 - css-loader: 3.6.0(webpack@5.100.2) - express: 4.21.2 - file-loader: 6.2.0(webpack@5.100.2) - find-up: 5.0.0 - fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.100.2) - node-fetch: 2.7.0(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.100.2) - telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.100.2) - ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-virtual-modules: 0.2.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@swc/core' - - bluebird - - 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.4.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)': - dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - chalk: 4.1.2 - core-js: 3.43.0 - css-loader: 3.6.0(webpack@5.100.2) - express: 4.21.2 - file-loader: 6.2.0(webpack@5.100.2) - find-up: 5.0.0 - fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2(webpack@5.100.2) - node-fetch: 2.7.0(encoding@0.1.13) - pnp-webpack-plugin: 1.6.4(typescript@4.9.5) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.11 - resolve-from: 5.0.0 - style-loader: 1.3.0(webpack@5.100.2) - telejson: 6.0.8 - terser-webpack-plugin: 4.2.3(webpack@5.100.2) - ts-dedent: 2.2.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.100.2))(webpack@5.100.2) - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 3.7.3(webpack@5.100.2) - webpack-virtual-modules: 0.2.2 - optionalDependencies: - typescript: 4.9.5 - transitivePeerDependencies: - - '@swc/core' - - bluebird - - encoding - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.4 - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@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.100.2) - '@storybook/core-common': 6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - chalk: 4.1.2 - core-js: 3.43.0 - css-loader: 5.2.7(webpack@5.100.2) - express: 4.21.2 - find-up: 5.0.0 - fs-extra: 9.1.0 - html-webpack-plugin: 5.6.3(webpack@5.100.2) - node-fetch: 2.7.0(encoding@0.1.13) - process: 0.11.10 - 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: 2.0.0(webpack@5.100.2) - telejson: 6.0.8 - terser-webpack-plugin: 5.3.14(esbuild@0.25.5)(webpack@5.100.2) - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-dev-middleware: 4.3.0(webpack@5.100.2) - webpack-virtual-modules: 0.4.6 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/core' - - encoding - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.4 - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - chalk: 4.1.2 - core-js: 3.43.0 - css-loader: 5.2.7(webpack@5.100.2) - express: 4.21.2 - find-up: 5.0.0 - fs-extra: 9.1.0 - html-webpack-plugin: 5.6.3(webpack@5.100.2) - node-fetch: 2.7.0(encoding@0.1.13) - process: 0.11.10 - 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: 2.0.0(webpack@5.100.2) - telejson: 6.0.8 - terser-webpack-plugin: 5.3.14(webpack@5.100.2) - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-middleware: 4.3.0(webpack@5.100.2) - webpack-virtual-modules: 0.4.6 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/core' - - encoding - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/manager-webpack5@6.5.16(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.4 - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@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.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4)(webpack@5.100.2) - case-sensitive-paths-webpack-plugin: 2.4.0 - chalk: 4.1.2 - core-js: 3.43.0 - css-loader: 5.2.7(webpack@5.100.2) - express: 4.21.2 - find-up: 5.0.0 - fs-extra: 9.1.0 - html-webpack-plugin: 5.6.3(webpack@5.100.2) - node-fetch: 2.7.0(encoding@0.1.13) - process: 0.11.10 - 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: 2.0.0(webpack@5.100.2) - telejson: 6.0.8 - terser-webpack-plugin: 5.3.14(webpack@5.100.2) - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-dev-middleware: 4.3.0(webpack@5.100.2) - webpack-virtual-modules: 0.4.6 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/core' - - encoding - - esbuild - - eslint - - supports-color - - uglify-js - - vue-template-compiler - - webpack-cli - - '@storybook/manager@7.6.20': {} - - '@storybook/mdx1-csf@0.0.1(@babel/core@7.27.4)': - dependencies: - '@babel/generator': 7.27.5 - '@babel/parser': 7.27.5 - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@babel/types': 7.27.6 - '@mdx-js/mdx': 1.6.22 - '@types/lodash': 4.17.17 - js-string-escape: 1.0.1 - loader-utils: 2.0.4 - lodash: 4.17.21 - prettier: 2.3.0 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@babel/core' - - supports-color - - '@storybook/mdx2-csf@1.1.0': {} - - '@storybook/node-logger@6.5.16': - dependencies: - '@types/npmlog': 4.1.6 - chalk: 4.1.2 - core-js: 3.43.0 - npmlog: 5.0.1 - pretty-hrtime: 1.0.3 - - '@storybook/node-logger@7.4.6': {} - - '@storybook/node-logger@7.6.20': {} - - '@storybook/postinstall@6.5.16': - dependencies: - core-js: 3.43.0 - - '@storybook/postinstall@7.4.6': {} - - '@storybook/preset-react-webpack@7.4.6(@babel/core@7.27.4)(@swc/core@1.12.5(@swc/helpers@0.5.17))(@types/webpack@5.28.5(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6))(encoding@0.1.13)(esbuild@0.25.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)))(webpack-hot-middleware@2.26.1)': - dependencies: - '@babel/preset-flow': 7.27.1(@babel/core@7.27.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.16(@types/webpack@5.28.5(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6))(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)))(webpack-hot-middleware@2.26.1)(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - '@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.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - '@types/node': 16.18.126 - '@types/semver': 7.7.0 - babel-plugin-add-react-displayname: 0.0.5 - babel-plugin-react-docgen: 4.2.1 - fs-extra: 11.3.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-refresh: 0.11.0 - semver: 7.7.2 - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - optionalDependencies: - '@babel/core': 7.27.4 - typescript: 5.8.3 - transitivePeerDependencies: - - '@swc/core' - - '@types/webpack' - - encoding - - esbuild - - sockjs-client - - supports-color - - type-fest - - uglify-js - - webpack-cli - - webpack-dev-server - - webpack-hot-middleware - - webpack-plugin-serve - - '@storybook/preset-react-webpack@8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2))(typescript@5.8.3)': - dependencies: - '@storybook/core-webpack': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2))(typescript@5.8.3) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.100.2) - '@types/semver': 7.7.0 - find-up: 5.0.0 - magic-string: 0.30.17 - 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: 8.6.14(prettier@3.6.2) - tsconfig-paths: 4.2.0 - webpack: 5.100.2(webpack-cli@4.10.0) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@storybook/test' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@storybook/preset-react-webpack@8.6.14(@storybook/test@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3)(webpack-cli@5.1.4)': - dependencies: - '@storybook/core-webpack': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.100.2) - '@types/semver': 7.7.0 - find-up: 5.0.0 - magic-string: 0.30.17 - 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.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - tsconfig-paths: 4.2.0 - webpack: 5.100.2(webpack-cli@5.1.4) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@storybook/test' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@storybook/preview-api@7.4.6': - dependencies: - '@storybook/channels': 7.4.6 - '@storybook/client-logger': 7.4.6 - '@storybook/core-events': 7.4.6 - '@storybook/csf': 0.1.13 - '@storybook/global': 5.0.0 - '@storybook/types': 7.4.6 - '@types/qs': 6.14.0 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.14.0 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/preview-api@7.6.20': - dependencies: - '@storybook/channels': 7.6.20 - '@storybook/client-logger': 7.6.20 - '@storybook/core-events': 7.6.20 - '@storybook/csf': 0.1.13 - '@storybook/global': 5.0.0 - '@storybook/types': 7.6.20 - '@types/qs': 6.14.0 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.14.0 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/preview-api@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - storybook: 8.6.14(prettier@3.6.2) - - '@storybook/preview-api@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/preview-web@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.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 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@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.43.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 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - unfetch: 4.2.0 - util-deprecate: 1.0.2 - - '@storybook/preview-web@6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.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 - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - '@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.43.0 - global: 4.4.0 - lodash: 4.17.21 - qs: 6.14.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - regenerator-runtime: 0.13.11 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - unfetch: 4.2.0 - util-deprecate: 1.0.2 - - '@storybook/preview@7.4.6': {} - - '@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@4.9.5)(webpack@5.100.2)': - dependencies: - debug: 4.4.1(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@4.9.5) - tslib: 2.8.1 - typescript: 4.9.5 - webpack: 5.100.2(webpack-cli@4.10.0) - transitivePeerDependencies: - - supports-color - - '@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@5.8.3)(webpack@5.100.2)': - dependencies: - debug: 4.4.1(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.100.2(webpack-cli@4.10.0) - transitivePeerDependencies: - - supports-color - - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6))': - dependencies: - debug: 4.4.1(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.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - transitivePeerDependencies: - - supports-color - - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.100.2)': - dependencies: - debug: 4.4.1(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.100.2(webpack-cli@4.10.0) - transitivePeerDependencies: - - supports-color - - '@storybook/react-dom-shim@7.4.6(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/react-dom-shim@8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2))': - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 8.6.14(prettier@3.6.2) - - '@storybook/react-dom-shim@8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/react-dom-shim@8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/react-dom-shim@9.0.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/react-dom-shim@9.0.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/react-dom-shim@9.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/react-vite@9.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.44.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3)(vite@6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))': - dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.8.3)(vite@6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) - '@rollup/pluginutils': 5.2.0(rollup@4.44.0) - '@storybook/builder-vite': 9.0.17(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0)) - '@storybook/react': 9.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3) - find-up: 7.0.0 - magic-string: 0.30.17 - react: 18.2.0 - react-docgen: 8.0.0 - react-dom: 18.2.0(react@18.2.0) - resolve: 1.22.10 - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - tsconfig-paths: 4.2.0 - vite: 6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) - transitivePeerDependencies: - - rollup - - supports-color - - typescript - - '@storybook/react-webpack5@7.4.6(@babel/core@7.27.4)(@swc/core@1.12.5(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(@types/react-dom@18.2.0)(@types/react@18.2.0)(@types/webpack@5.28.5(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6))(encoding@0.1.13)(esbuild@0.25.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)))(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)(esbuild@0.25.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) - '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.27.4)(@swc/core@1.12.5(@swc/helpers@0.5.17))(@types/webpack@5.28.5(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6))(encoding@0.1.13)(esbuild@0.25.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(type-fest@4.41.0)(typescript@5.8.3)(webpack-dev-server@5.2.2(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)))(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.4 - typescript: 5.8.3 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/core' - - '@swc/helpers' - - '@types/react' - - '@types/react-dom' - - '@types/webpack' - - encoding - - esbuild - - sockjs-client - - supports-color - - type-fest - - uglify-js - - webpack-cli - - webpack-dev-server - - webpack-hot-middleware - - webpack-plugin-serve - - '@storybook/react-webpack5@8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2))(typescript@5.8.3)': - dependencies: - '@storybook/builder-webpack5': 8.6.14(storybook@8.6.14(prettier@3.6.2))(typescript@5.8.3) - '@storybook/preset-react-webpack': 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2))(typescript@5.8.3) - '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2))(typescript@5.8.3) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 8.6.14(prettier@3.6.2) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@rspack/core' - - '@storybook/test' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@storybook/react-webpack5@8.6.14(@storybook/test@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3)(webpack-cli@5.1.4)': - dependencies: - '@storybook/builder-webpack5': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3)(webpack-cli@5.1.4) - '@storybook/preset-react-webpack': 8.6.14(@storybook/test@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3)(webpack-cli@5.1.4) - '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - '@rspack/core' - - '@storybook/test' - - '@swc/core' - - esbuild - - supports-color - - uglify-js - - webpack-cli - - '@storybook/react@6.5.16(@babel/core@7.27.4)(@storybook/builder-webpack5@6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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(esbuild@0.25.5)(webpack-cli@6.0.1))(encoding@0.1.13)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.16(@types/webpack@5.28.5(esbuild@0.25.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.100.2) - '@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(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@6.0.1)(webpack@5.100.2) - '@storybook/core-common': 6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.100.2) - '@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.43.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.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - optionalDependencies: - '@babel/core': 7.27.4 - '@storybook/builder-webpack5': 6.5.16(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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' - - '@types/webpack' - - bluebird - - 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.27.4)(@storybook/builder-webpack5@6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.4.2))(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.4) - '@babel/preset-react': 7.27.1(@babel/core@7.27.4) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.16(@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.100.2) - '@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.4.2))(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.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack-cli@4.10.0)(webpack@5.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.100.2) - '@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.43.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.100.2(webpack-cli@4.10.0) - optionalDependencies: - '@babel/core': 7.27.4 - '@storybook/builder-webpack5': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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' - - '@swc/core' - - '@types/webpack' - - bluebird - - 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.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.26.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1)': - dependencies: - '@babel/preset-flow': 7.27.1(@babel/core@7.28.0) - '@babel/preset-react': 7.27.1(@babel/core@7.28.0) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.16(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.100.2))(webpack-hot-middleware@2.26.1)(webpack@5.100.2) - '@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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.100.2) - '@storybook/core-common': 6.5.16(eslint@9.26.0(jiti@2.4.2))(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.100.2) - '@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.43.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.100.2(webpack-cli@4.10.0) - optionalDependencies: - '@babel/core': 7.28.0 - typescript: 5.8.3 - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - '@swc/core' - - '@types/webpack' - - bluebird - - 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.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1)': - dependencies: - '@babel/preset-flow': 7.27.1(@babel/core@7.28.0) - '@babel/preset-react': 7.27.1(@babel/core@7.28.0) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.16(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.100.2))(webpack-hot-middleware@2.26.1)(webpack@5.100.2) - '@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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)(webpack@5.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.100.2) - '@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.43.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.100.2(webpack-cli@4.10.0) - optionalDependencies: - '@babel/core': 7.28.0 - typescript: 5.8.3 - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - '@swc/core' - - '@types/webpack' - - bluebird - - 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.0)(@types/webpack@5.28.5)(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.100.2))(webpack-hot-middleware@2.26.1)': - dependencies: - '@babel/preset-flow': 7.27.1(@babel/core@7.28.0) - '@babel/preset-react': 7.27.1(@babel/core@7.28.0) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.16(@types/webpack@5.28.5)(react-refresh@0.11.0)(type-fest@4.41.0)(webpack-dev-server@5.2.2(webpack@5.100.2))(webpack-hot-middleware@2.26.1)(webpack@5.100.2) - '@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.4.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5)(webpack@5.100.2) - '@storybook/core-common': 6.5.16(eslint@9.27.0(jiti@2.4.2))(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.100.2) - '@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 - '@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.43.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: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-element-to-jsx-string: 14.3.4(react-dom@19.1.0(react@19.1.0))(react@19.1.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.100.2(webpack-cli@4.10.0) - optionalDependencies: - '@babel/core': 7.28.0 - typescript: 4.9.5 - transitivePeerDependencies: - - '@storybook/mdx2-csf' - - '@swc/core' - - '@types/webpack' - - bluebird - - 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@7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3)': - dependencies: - '@storybook/client-logger': 7.4.6 - '@storybook/core-client': 7.4.6 - '@storybook/docs-tools': 7.4.6(encoding@0.1.13) - '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.4.6 - '@storybook/react-dom-shim': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@storybook/types': 7.4.6 - '@types/escodegen': 0.0.6 - '@types/estree': 0.0.51 - '@types/node': 16.18.126 - acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) - acorn-walk: 7.2.0 - escodegen: 2.1.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: 15.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - ts-dedent: 2.2.0 - type-fest: 2.19.0 - util-deprecate: 1.0.2 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - encoding - - supports-color - - '@storybook/react@8.6.14(@storybook/test@8.6.14(storybook@8.6.14(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2))(typescript@5.8.3)': - dependencies: - '@storybook/components': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/preview-api': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@storybook/react-dom-shim': 8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.14(prettier@3.6.2)) - '@storybook/theming': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 8.6.14(prettier@3.6.2) - optionalDependencies: - '@storybook/test': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - typescript: 5.8.3 - - '@storybook/react@8.6.14(@storybook/test@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3)': - dependencies: - '@storybook/components': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/preview-api': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/react-dom-shim': 8.6.14(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@storybook/theming': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - optionalDependencies: - '@storybook/test': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - typescript: 5.8.3 - - '@storybook/react@9.0.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3)': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 9.0.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - optionalDependencies: - typescript: 5.8.3 - - '@storybook/react@9.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3)': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 9.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2)) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - 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.43.0 - memoizerific: 1.11.3 - qs: 6.14.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - - '@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.43.0 - memoizerific: 1.11.3 - qs: 6.14.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - regenerator-runtime: 0.13.11 - - '@storybook/router@7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@storybook/client-logger': 7.4.6 - memoizerific: 1.11.3 - qs: 6.14.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/semver@7.3.2': - dependencies: - core-js: 3.43.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)': - dependencies: - '@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.43.0 - estraverse: 5.3.0 - global: 4.4.0 - loader-utils: 2.0.4 - lodash: 4.17.21 - prettier: 2.3.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - - '@storybook/store@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@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-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.43.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - slash: 3.0.0 - stable: 0.1.8 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/store@6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@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-events': 6.5.16 - '@storybook/csf': 0.0.2--canary.4566f4d.1 - core-js: 3.43.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - regenerator-runtime: 0.13.11 - slash: 3.0.0 - stable: 0.1.8 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - - '@storybook/store@7.4.6': - dependencies: - '@storybook/client-logger': 7.4.6 - '@storybook/preview-api': 7.4.6 - - '@storybook/telemetry@6.5.16(encoding@0.1.13)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.43.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(encoding@0.1.13)(eslint@9.26.0(jiti@2.4.2))(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.26.0(jiti@2.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) - chalk: 4.1.2 - core-js: 3.43.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(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.4.2))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.8.3) - chalk: 4.1.2 - core-js: 3.43.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(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.4.2))(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.43.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(encoding@0.1.13)(eslint@9.27.0(jiti@2.4.2))(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.4.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@4.9.5) - chalk: 4.1.2 - core-js: 3.43.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@7.6.20(encoding@0.1.13)': - dependencies: - '@storybook/client-logger': 7.6.20 - '@storybook/core-common': 7.6.20(encoding@0.1.13) - '@storybook/csf-tools': 7.6.20 - chalk: 4.1.2 - detect-package-manager: 2.0.1 - fetch-retry: 5.0.6 - fs-extra: 11.3.0 - read-pkg-up: 7.0.1 - transitivePeerDependencies: - - encoding - - supports-color - - '@storybook/test@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@8.6.14(prettier@3.6.2)) - '@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: 8.6.14(prettier@3.6.2) - - '@storybook/test@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2)) - '@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.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - 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.43.0 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - - '@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.43.0 - memoizerific: 1.11.3 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - regenerator-runtime: 0.13.11 - - '@storybook/theming@7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.2.0) - '@storybook/client-logger': 7.4.6 - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@storybook/theming@8.6.14(storybook@8.6.14(prettier@3.6.2))': - dependencies: - storybook: 8.6.14(prettier@3.6.2) - - '@storybook/theming@8.6.14(storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2))': - dependencies: - storybook: 9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2) - - '@storybook/types@7.4.6': - dependencies: - '@storybook/channels': 7.4.6 - '@types/babel__core': 7.20.5 - '@types/express': 4.17.23 - 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 - file-system-cache: 2.3.0 - - '@storybook/ui@6.5.16(react-dom@18.2.0(react@18.2.0))(react@18.2.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/channels': 6.5.16 - '@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-events': 6.5.16 - '@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.43.0 - memoizerific: 1.11.3 - qs: 6.14.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - regenerator-runtime: 0.13.11 - resolve-from: 5.0.0 - - '@storybook/ui@6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@storybook/addons': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/api': 6.5.16(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@storybook/channels': 6.5.16 - '@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-events': 6.5.16 - '@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.43.0 - memoizerific: 1.11.3 - qs: 6.14.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - regenerator-runtime: 0.13.11 - resolve-from: 5.0.0 - - '@swagger-api/apidom-ast@1.0.0-beta.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-ast': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@types/ramda': 0.30.2 - minim: 0.23.8 - ramda: 0.30.1 - ramda-adjunct: 5.1.0(ramda@0.30.1) - short-unique-id: 5.3.2 - ts-mixer: 6.0.4 - - '@swagger-api/apidom-error@1.0.0-beta.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - - '@swagger-api/apidom-json-pointer@1.0.0-beta.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@swaggerexpert/json-pointer': 2.10.2 - - '@swagger-api/apidom-ns-api-design-systems@1.0.0-beta.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-json-schema-2020-12': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-json-schema-draft-7': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@swagger-api/apidom-ns-json-schema-draft-7': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@swagger-api/apidom-ns-json-schema-2019-09': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-ast': 1.0.0-beta.43 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@swagger-api/apidom-ns-json-schema-draft-6': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@swagger-api/apidom-ns-json-schema-draft-4': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-ast': 1.0.0-beta.43 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-json-pointer': 1.0.0-beta.43 - '@swagger-api/apidom-ns-json-schema-2020-12': 1.0.0-beta.43 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-api-design-systems': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-api-design-systems': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-arazzo-1': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-arazzo-1': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-ast': 1.0.0-beta.43 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@types/ramda': 0.30.2 - ramda: 0.30.1 - ramda-adjunct: 5.1.0(ramda@0.30.1) - tree-sitter: 0.21.1 - tree-sitter-json: 0.24.8(tree-sitter@0.21.1) - web-tree-sitter: 0.24.5 - optional: true - - '@swagger-api/apidom-parser-adapter-openapi-json-2@1.0.0-beta.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-openapi-2': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-openapi-2': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.43 - '@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.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-ast': 1.0.0-beta.43 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@tree-sitter-grammars/tree-sitter-yaml': 0.7.1(tree-sitter@0.22.4) - '@types/ramda': 0.30.2 - ramda: 0.30.1 - ramda-adjunct: 5.1.0(ramda@0.30.1) - tree-sitter: 0.22.4 - web-tree-sitter: 0.24.5 - optional: true - - '@swagger-api/apidom-reference@1.0.0-beta.43': - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@types/ramda': 0.30.2 - axios: 1.9.0 - 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.43 - '@swagger-api/apidom-ns-arazzo-1': 1.0.0-beta.43 - '@swagger-api/apidom-ns-asyncapi-2': 1.0.0-beta.43 - '@swagger-api/apidom-ns-openapi-2': 1.0.0-beta.43 - '@swagger-api/apidom-ns-openapi-3-0': 1.0.0-beta.43 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-api-design-systems-json': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-api-design-systems-yaml': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-arazzo-json-1': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-arazzo-yaml-1': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-asyncapi-json-2': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-json': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-openapi-json-2': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-openapi-json-3-0': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-openapi-json-3-1': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-openapi-yaml-2': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1': 1.0.0-beta.43 - '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.0.0-beta.43 - transitivePeerDependencies: - - debug - - '@swaggerexpert/cookie@2.0.2': - dependencies: - apg-lite: 1.0.5 - - '@swaggerexpert/json-pointer@2.10.2': - dependencies: - apg-lite: 1.0.5 - - '@swc/core-darwin-arm64@1.12.5': - optional: true - - '@swc/core-darwin-x64@1.12.5': - optional: true - - '@swc/core-linux-arm-gnueabihf@1.12.5': - optional: true - - '@swc/core-linux-arm64-gnu@1.12.5': - optional: true - - '@swc/core-linux-arm64-musl@1.12.5': - optional: true - - '@swc/core-linux-x64-gnu@1.12.5': - optional: true - - '@swc/core-linux-x64-musl@1.12.5': - optional: true - - '@swc/core-win32-arm64-msvc@1.12.5': - optional: true - - '@swc/core-win32-ia32-msvc@1.12.5': - optional: true - - '@swc/core-win32-x64-msvc@1.12.5': - optional: true - - '@swc/core@1.12.5(@swc/helpers@0.5.17)': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.23 - optionalDependencies: - '@swc/core-darwin-arm64': 1.12.5 - '@swc/core-darwin-x64': 1.12.5 - '@swc/core-linux-arm-gnueabihf': 1.12.5 - '@swc/core-linux-arm64-gnu': 1.12.5 - '@swc/core-linux-arm64-musl': 1.12.5 - '@swc/core-linux-x64-gnu': 1.12.5 - '@swc/core-linux-x64-musl': 1.12.5 - '@swc/core-win32-arm64-msvc': 1.12.5 - '@swc/core-win32-ia32-msvc': 1.12.5 - '@swc/core-win32-x64-msvc': 1.12.5 - '@swc/helpers': 0.5.17 - - '@swc/counter@0.1.3': {} - - '@swc/helpers@0.5.17': - dependencies: - tslib: 2.8.1 - - '@swc/types@0.1.23': - dependencies: - '@swc/counter': 0.1.3 - - '@szmarczak/http-timer@5.0.1': - dependencies: - defer-to-connect: 2.0.1 - - '@tanstack/query-core@4.27.0': {} - - '@tanstack/query-core@4.40.0': {} - - '@tanstack/query-core@5.76.0': {} - - '@tanstack/query-core@5.76.2': {} - - '@tanstack/query-core@5.77.1': {} - - '@tanstack/query-core@5.81.2': {} - - '@tanstack/query-persist-client-core@4.27.0': - dependencies: - '@tanstack/query-core': 4.27.0 - - '@tanstack/react-query-persist-client@4.28.0(@tanstack/react-query@4.28.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': - dependencies: - '@tanstack/query-persist-client-core': 4.27.0 - '@tanstack/react-query': 4.28.0(react-dom@18.2.0(react@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 - '@types/use-sync-external-store': 0.0.3 - react: 19.1.0 - use-sync-external-store: 1.5.0(react@19.1.0) - optionalDependencies: - react-dom: 19.1.0(react@19.1.0) - - '@tanstack/react-query@4.28.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@tanstack/query-core': 4.27.0 - react: 18.2.0 - use-sync-external-store: 1.5.0(react@18.2.0) - optionalDependencies: - react-dom: 18.2.0(react@18.2.0) - - '@tanstack/react-query@5.76.1(react@18.2.0)': - dependencies: - '@tanstack/query-core': 5.76.0 - react: 18.2.0 - - '@tanstack/react-query@5.76.2(react@18.2.0)': - dependencies: - '@tanstack/query-core': 5.76.2 - react: 18.2.0 - - '@tanstack/react-query@5.77.1(react@18.2.0)': - dependencies: - '@tanstack/query-core': 5.77.1 - react: 18.2.0 - - '@tanstack/react-virtual@3.13.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@tanstack/virtual-core': 3.13.10 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@tanstack/virtual-core@3.13.10': {} - - '@testing-library/dom@10.4.0': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.27.6 - '@types/aria-query': 5.0.4 - aria-query: 5.3.0 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - - '@testing-library/jest-dom@6.5.0': - dependencies: - '@adobe/css-tools': 4.4.3 - aria-query: 5.3.2 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - lodash: 4.17.21 - redent: 3.0.0 - - '@testing-library/jest-dom@6.6.3': - dependencies: - '@adobe/css-tools': 4.4.3 - aria-query: 5.3.2 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - lodash: 4.17.21 - redent: 3.0.0 - - '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@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.27.6 - '@testing-library/dom': 10.4.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 - - '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': - dependencies: - '@testing-library/dom': 10.4.0 - - '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': - dependencies: - '@testing-library/dom': 10.4.0 - - '@textlint/ast-node-types@14.8.4': {} - - '@textlint/linter-formatter@14.8.4': - 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 - chalk: 4.1.2 - debug: 4.4.1(supports-color@8.1.1) - js-yaml: 3.14.1 - lodash: 4.17.21 - pluralize: 2.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - table: 6.9.0 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - '@textlint/module-interop@14.8.4': {} - - '@textlint/resolver@14.8.4': {} - - '@textlint/types@14.8.4': - dependencies: - '@textlint/ast-node-types': 14.8.4 - - '@tokenizer/token@0.3.0': {} - - '@tootallnate/once@1.1.2': {} - - '@tootallnate/once@2.0.0': {} - - '@tree-sitter-grammars/tree-sitter-yaml@0.7.1(tree-sitter@0.22.4)': - dependencies: - node-addon-api: 8.4.0 - node-gyp-build: 4.8.4 - optionalDependencies: - tree-sitter: 0.22.4 - optional: true - - '@trysound/sax@0.2.0': {} - - '@ts-morph/common@0.23.0': - dependencies: - fast-glob: 3.3.3 - minimatch: 9.0.5 - mkdirp: 3.0.1 - path-browserify: 1.0.1 - - '@ts-morph/common@0.27.0': - dependencies: - fast-glob: 3.3.3 - minimatch: 10.0.3 - path-browserify: 1.0.1 - - '@types/aria-query@5.0.4': {} - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.7 - - '@types/babel__generator@7.27.0': - dependencies: - '@babel/types': 7.27.6 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 - - '@types/babel__traverse@7.20.7': - dependencies: - '@babel/types': 7.28.1 - - '@types/blueimp-md5@2.18.2': {} - - '@types/body-parser@1.19.6': - dependencies: - '@types/connect': 3.4.38 - '@types/node': 22.15.32 - - '@types/bonjour@3.5.13': - dependencies: - '@types/node': 22.15.32 - - '@types/byline@4.2.36': - dependencies: - '@types/node': 22.15.32 - - '@types/chai@4.3.20': {} - - '@types/chai@5.2.2': - dependencies: - '@types/deep-eql': 4.0.2 - - '@types/classnames@2.3.4': - dependencies: - classnames: 2.5.1 - - '@types/codemirror@0.0.90': - dependencies: - '@types/tern': 0.23.9 - - '@types/codemirror@5.60.16': - dependencies: - '@types/tern': 0.23.9 - - '@types/connect-history-api-fallback@1.5.4': - dependencies: - '@types/express-serve-static-core': 5.0.6 - '@types/node': 22.15.32 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.15.32 - - '@types/cross-spawn@6.0.6': - dependencies: - '@types/node': 24.0.14 - - '@types/dagre@0.7.52': {} - - '@types/debug@4.1.12': - dependencies: - '@types/ms': 2.1.0 - - '@types/deep-eql@4.0.2': {} - - '@types/deep-equal@1.0.4': {} - - '@types/detect-port@1.3.5': {} - - '@types/doctrine@0.0.3': {} - - '@types/doctrine@0.0.9': {} - - '@types/ejs@3.1.5': {} - - '@types/emscripten@1.40.1': {} - - '@types/escodegen@0.0.6': {} - - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.8 - - '@types/eslint-visitor-keys@1.0.0': {} - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - - '@types/estree-jsx@1.0.5': - dependencies: - '@types/estree': 1.0.8 - - '@types/estree@0.0.39': {} - - '@types/estree@0.0.51': {} - - '@types/estree@1.0.8': {} - - '@types/express-serve-static-core@4.19.6': - dependencies: - '@types/node': 22.15.32 - '@types/qs': 6.14.0 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.5 - - '@types/express-serve-static-core@5.0.6': - dependencies: - '@types/node': 22.15.32 - '@types/qs': 6.14.0 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.5 - - '@types/express@4.17.23': - dependencies: - '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.14.0 - '@types/serve-static': 1.15.8 - - '@types/find-cache-dir@3.2.1': {} - - '@types/fs-extra@11.0.4': - dependencies: - '@types/jsonfile': 6.1.4 - '@types/node': 22.15.32 - - '@types/glob@7.2.0': - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 16.18.126 - - '@types/glob@8.1.0': - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 22.15.32 - - '@types/graceful-fs@4.1.9': - dependencies: - '@types/node': 22.15.32 - - '@types/handlebars@4.1.0': - dependencies: - handlebars: 4.7.8 - - '@types/hast@2.3.10': - dependencies: - '@types/unist': 2.0.11 - - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/hoist-non-react-statics@3.3.6': - dependencies: - '@types/react': 18.2.0 - hoist-non-react-statics: 3.3.2 - - '@types/html-minifier-terser@5.1.2': {} - - '@types/html-minifier-terser@6.1.0': {} - - '@types/http-cache-semantics@4.0.4': {} - - '@types/http-errors@2.0.5': {} - - '@types/http-proxy@1.17.16': - dependencies: - '@types/node': 22.15.32 - - '@types/is-function@1.0.3': {} - - '@types/istanbul-lib-coverage@2.0.6': {} - - '@types/istanbul-lib-report@3.0.3': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - - '@types/istanbul-reports@1.1.2': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-lib-report': 3.0.3 - - '@types/istanbul-reports@3.0.4': - dependencies: - '@types/istanbul-lib-report': 3.0.3 - - '@types/jest@25.2.3': - dependencies: - jest-diff: 25.5.0 - pretty-format: 25.5.0 - - '@types/jest@29.5.14': - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - - '@types/js-yaml@4.0.9': {} - - '@types/jsdom@20.0.1': - dependencies: - '@types/node': 22.15.32 - '@types/tough-cookie': 4.0.5 - parse5: 7.3.0 - - '@types/json-schema@7.0.15': {} - - '@types/json5@0.0.29': {} - - '@types/jsonfile@6.1.4': - dependencies: - '@types/node': 22.15.32 - - '@types/keyv@3.1.4': - dependencies: - '@types/node': 24.0.14 - - '@types/lodash.camelcase@4.3.9': - dependencies: - '@types/lodash': 4.17.17 - - '@types/lodash.clonedeep@4.5.9': - dependencies: - '@types/lodash': 4.17.17 - - '@types/lodash.debounce@4.0.9': - dependencies: - '@types/lodash': 4.17.17 - - '@types/lodash@4.14.202': {} - - '@types/lodash@4.17.16': {} - - '@types/lodash@4.17.17': {} - - '@types/mdast@3.0.15': - dependencies: - '@types/unist': 2.0.11 - - '@types/mdast@4.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/mdurl@1.0.5': {} - - '@types/mdx@2.0.13': {} - - '@types/mime-types@2.1.4': {} - - '@types/mime@1.3.5': {} - - '@types/minimatch@5.1.2': {} - - '@types/minimist@1.2.5': {} - - '@types/mocha@10.0.10': {} - - '@types/mousetrap@1.6.15': {} - - '@types/ms@2.1.0': {} - - '@types/mustache@4.2.6': {} - - '@types/node-fetch@2.6.12': - dependencies: - '@types/node': 22.15.32 - form-data: 4.0.4 - - '@types/node-forge@1.3.11': - dependencies: - '@types/node': 22.15.32 - - '@types/node@16.18.126': {} - - '@types/node@18.19.112': - dependencies: - undici-types: 5.26.5 - - '@types/node@22.15.18': - dependencies: - undici-types: 6.21.0 - - '@types/node@22.15.21': - dependencies: - undici-types: 6.21.0 - - '@types/node@22.15.32': - dependencies: - undici-types: 6.21.0 - - '@types/node@24.0.14': - dependencies: - undici-types: 7.8.0 - - '@types/normalize-package-data@2.4.4': {} - - '@types/npmlog@4.1.6': - dependencies: - '@types/node': 22.15.32 - - '@types/parse-json@4.0.2': {} - - '@types/parse5@5.0.3': {} - - '@types/parse5@6.0.3': {} - - '@types/prettier@1.19.1': {} - - '@types/pretty-hrtime@1.0.3': {} - - '@types/prismjs@1.26.5': {} - - '@types/prop-types@15.7.15': {} - - '@types/qs@6.14.0': {} - - '@types/ramda@0.30.2': - dependencies: - types-ramda: 0.30.1 - - '@types/range-parser@1.2.7': {} - - '@types/react-collapse@5.0.4': - dependencies: - '@types/react': 18.2.0 - - '@types/react-dom@17.0.14': - dependencies: - '@types/react': 18.2.0 - - '@types/react-dom@17.0.26(@types/react@18.2.0)': - dependencies: - '@types/react': 18.2.0 - - '@types/react-dom@18.2.0': - dependencies: - '@types/react': 18.2.0 - - '@types/react-lottie@1.2.10': - dependencies: - '@types/react': 18.2.0 - - '@types/react-split-pane@0.1.67(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - react-split-pane: 0.1.92(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - transitivePeerDependencies: - - react - - react-dom - - '@types/react-syntax-highlighter@15.5.13': - dependencies: - '@types/react': 18.2.0 - - '@types/react-test-renderer@19.1.0': - dependencies: - '@types/react': 18.2.0 - - '@types/react@17.0.87': - dependencies: - '@types/prop-types': 15.7.15 - '@types/scheduler': 0.16.8 - csstype: 3.1.3 - - '@types/react@18.2.0': - dependencies: - '@types/prop-types': 15.7.15 - '@types/scheduler': 0.26.0 - csstype: 3.1.3 - - '@types/resolve@1.17.1': - dependencies: - '@types/node': 22.15.32 - - '@types/resolve@1.20.2': {} - - '@types/resolve@1.20.6': {} - - '@types/responselike@1.0.3': - dependencies: - '@types/node': 24.0.14 - - '@types/retry@0.12.2': {} - - '@types/sarif@2.1.7': {} - - '@types/scheduler@0.16.8': {} - - '@types/scheduler@0.26.0': {} - - '@types/selenium-webdriver@4.1.28': - dependencies: - '@types/node': 22.15.32 - '@types/ws': 8.18.1 - - '@types/semver@7.7.0': {} - - '@types/send@0.17.5': - dependencies: - '@types/mime': 1.3.5 - '@types/node': 22.15.32 - - '@types/serve-index@1.9.4': - dependencies: - '@types/express': 4.17.23 - - '@types/serve-static@1.15.8': - dependencies: - '@types/http-errors': 2.0.5 - '@types/node': 22.15.32 - '@types/send': 0.17.5 - - '@types/sockjs@0.3.36': - dependencies: - '@types/node': 22.15.32 - - '@types/source-list-map@0.1.6': {} - - '@types/stack-utils@1.0.1': {} - - '@types/stack-utils@2.0.3': {} - - '@types/swagger-ui-react@5.18.0': - dependencies: - '@types/react': 18.2.0 - - '@types/tapable@1.0.12': {} - - '@types/tcp-port-used@1.0.4': {} - - '@types/tern@0.23.9': - dependencies: - '@types/estree': 1.0.8 - - '@types/tmp@0.2.6': {} - - '@types/tough-cookie@4.0.5': {} - - '@types/triple-beam@1.3.5': {} - - '@types/trusted-types@2.0.7': - optional: true - - '@types/uglify-js@3.17.5': - dependencies: - source-map: 0.6.1 - - '@types/unist@2.0.11': {} - - '@types/unist@3.0.3': {} - - '@types/unzipper@0.10.11': - dependencies: - '@types/node': 22.15.32 - - '@types/use-sync-external-store@0.0.3': {} - - '@types/use-sync-external-store@0.0.6': {} - - '@types/uuid@10.0.0': {} - - '@types/uuid@9.0.8': {} - - '@types/vscode-notebook-renderer@1.72.3': {} - - '@types/vscode-webview@1.57.5': {} - - '@types/vscode@1.101.0': {} - - '@types/webpack-env@1.18.8': {} - - '@types/webpack-sources@3.2.3': - dependencies: - '@types/node': 22.15.32 - '@types/source-list-map': 0.1.6 - source-map: 0.7.4 - - '@types/webpack@4.41.40': - dependencies: - '@types/node': 22.15.32 - '@types/tapable': 1.0.12 - '@types/uglify-js': 3.17.5 - '@types/webpack-sources': 3.2.3 - anymatch: 3.1.3 - source-map: 0.6.1 - - '@types/webpack@5.28.5': - dependencies: - '@types/node': 22.15.32 - tapable: 2.2.2 - webpack: 5.100.2(webpack-cli@4.10.0) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - optional: true - - '@types/webpack@5.28.5(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)': - dependencies: - '@types/node': 22.15.32 - tapable: 2.2.2 - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - optional: true - - '@types/webpack@5.28.5(esbuild@0.25.5)(webpack-cli@6.0.1)': - dependencies: - '@types/node': 22.15.32 - tapable: 2.2.2 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - - '@types/webpack@5.28.5(webpack-cli@4.10.0)': - dependencies: - '@types/node': 22.15.32 - tapable: 2.2.2 - webpack: 5.100.2(webpack-cli@4.10.0) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - - '@types/webpack@5.28.5(webpack-cli@5.1.4)': - dependencies: - '@types/node': 22.15.32 - tapable: 2.2.2 - webpack: 5.100.2(webpack-cli@5.1.4) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - optional: true - - '@types/webpack@5.28.5(webpack-cli@6.0.1)': - dependencies: - '@types/node': 22.15.32 - tapable: 2.2.2 - webpack: 5.100.2(webpack-cli@6.0.1) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - - '@types/which@3.0.4': {} - - '@types/ws@8.18.1': - dependencies: - '@types/node': 22.15.32 - - '@types/xml2js@0.4.14': - dependencies: - '@types/node': 22.15.32 - - '@types/yargs-parser@21.0.3': {} - - '@types/yargs@15.0.19': - dependencies: - '@types/yargs-parser': 21.0.3 - - '@types/yargs@17.0.33': - dependencies: - '@types/yargs-parser': 21.0.3 - - '@typescript-eslint/eslint-plugin@2.34.0(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@6.8.0)(typescript@3.9.10)': - dependencies: - '@typescript-eslint/experimental-utils': 2.34.0(eslint@6.8.0)(typescript@3.9.10) - '@typescript-eslint/parser': 2.34.0(eslint@6.8.0)(typescript@3.9.10) - eslint: 6.8.0 - functional-red-black-tree: 1.0.1 - regexpp: 3.2.0 - tsutils: 3.21.0(typescript@3.9.10) - optionalDependencies: - typescript: 3.9.10 - transitivePeerDependencies: - - supports-color - - '@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 - '@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) - eslint: 8.57.1 - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - semver: 7.7.2 - ts-api-utils: 1.4.3(typescript@5.8.3) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@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 - '@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) - eslint: 8.57.1 - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - semver: 7.7.2 - ts-api-utils: 1.4.3(typescript@5.8.3) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@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 - '@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) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 8.57.1 - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.8.3) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 2.34.0(eslint@6.8.0)(typescript@3.9.10) - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 9.27.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 9.27.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 9.26.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 9.27.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.33.1 - '@typescript-eslint/type-utils': 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.33.1 - eslint: 9.27.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/experimental-utils@2.34.0(eslint@6.8.0)(typescript@3.9.10)': - dependencies: - '@types/json-schema': 7.0.15 - '@typescript-eslint/typescript-estree': 2.34.0(typescript@3.9.10) - eslint: 6.8.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10)': - dependencies: - '@types/eslint-visitor-keys': 1.0.0 - '@typescript-eslint/experimental-utils': 2.34.0(eslint@6.8.0)(typescript@3.9.10) - '@typescript-eslint/typescript-estree': 2.34.0(typescript@3.9.10) - eslint: 6.8.0 - eslint-visitor-keys: 1.3.0 - optionalDependencies: - typescript: 3.9.10 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.8.3)': - dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@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) - eslint: 8.57.1 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3)': - dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@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) - eslint: 8.57.1 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(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.4.2) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.33.1(eslint@8.57.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: 8.57.1 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.4.2))(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.4.2) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.4.2))(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.4.2) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.33.1(typescript@5.8.3)': - 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) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@6.21.0': - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - - '@typescript-eslint/scope-manager@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - - '@typescript-eslint/scope-manager@8.32.1': - dependencies: - '@typescript-eslint/types': 8.32.1 - '@typescript-eslint/visitor-keys': 8.32.1 - - '@typescript-eslint/scope-manager@8.33.1': - dependencies: - '@typescript-eslint/types': 8.33.1 - '@typescript-eslint/visitor-keys': 8.33.1 - - '@typescript-eslint/tsconfig-utils@8.33.1(typescript@5.8.3)': - dependencies: - typescript: 5.8.3 - - '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.8.3)': - 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) - eslint: 8.57.1 - ts-api-utils: 1.4.3(typescript@5.8.3) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.8.3)': - 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) - eslint: 8.57.1 - ts-api-utils: 1.4.3(typescript@5.8.3) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/type-utils@8.32.1(eslint@9.26.0(jiti@2.4.2))(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.4.2))(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) - eslint: 9.26.0(jiti@2.4.2) - 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.4.2))(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.4.2))(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) - eslint: 9.27.0(jiti@2.4.2) - 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.4.2))(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.4.2))(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) - eslint: 9.27.0(jiti@2.4.2) - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@6.21.0': {} - - '@typescript-eslint/types@7.18.0': {} - - '@typescript-eslint/types@8.32.1': {} - - '@typescript-eslint/types@8.33.1': {} - - '@typescript-eslint/typescript-estree@2.34.0(typescript@3.9.10)': - dependencies: - debug: 4.4.1(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 - tsutils: 3.21.0(typescript@3.9.10) - optionalDependencies: - typescript: 3.9.10 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.8.3)': - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.7.2 - ts-api-utils: 1.4.3(typescript@5.8.3) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.8.3)': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.1(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 1.4.3(typescript@5.8.3) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)': - dependencies: - '@typescript-eslint/types': 8.32.1 - '@typescript-eslint/visitor-keys': 8.32.1 - debug: 4.4.1(supports-color@8.1.1) - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.33.1(typescript@5.8.3)': - dependencies: - '@typescript-eslint/project-service': 8.33.1(typescript@5.8.3) - '@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) - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@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) - '@types/json-schema': 7.0.15 - '@types/semver': 7.7.0 - '@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 - 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) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) - eslint: 8.57.1 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) - '@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.4.2) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) - '@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.4.2) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.33.1(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.33.1 - '@typescript-eslint/types': 8.33.1 - '@typescript-eslint/typescript-estree': 8.33.1(typescript@5.8.3) - eslint: 8.57.1 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) - '@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.4.2) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@6.21.0': - dependencies: - '@typescript-eslint/types': 6.21.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@8.32.1': - dependencies: - '@typescript-eslint/types': 8.32.1 - eslint-visitor-keys: 4.2.1 - - '@typescript-eslint/visitor-keys@8.33.1': - dependencies: - '@typescript-eslint/types': 8.33.1 - eslint-visitor-keys: 4.2.1 - - '@typespec/ts-http-runtime@0.2.3': - dependencies: - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@uiw/codemirror-extensions-basic-setup@4.23.13(@codemirror/autocomplete@6.18.6)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.1)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.37.2)': - dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/commands': 6.8.1 - '@codemirror/language': 6.11.1 - '@codemirror/lint': 6.8.5 - '@codemirror/search': 6.5.11 - '@codemirror/state': 6.5.2 - '@codemirror/view': 6.37.2 - - '@uiw/react-codemirror@4.23.13(@babel/runtime@7.27.6)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.1)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.37.2)(codemirror@5.65.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.27.6 - '@codemirror/commands': 6.8.1 - '@codemirror/state': 6.5.2 - '@codemirror/theme-one-dark': 6.1.3 - '@codemirror/view': 6.37.2 - '@uiw/codemirror-extensions-basic-setup': 4.23.13(@codemirror/autocomplete@6.18.6)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.1)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.37.2) - codemirror: 5.65.19 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@codemirror/autocomplete' - - '@codemirror/language' - - '@codemirror/lint' - - '@codemirror/search' - - '@ungap/structured-clone@1.3.0': {} - - '@vitejs/plugin-react@4.5.2(vite@6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0))': - dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.4) - '@rolldown/pluginutils': 1.0.0-beta.11 - '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0) - transitivePeerDependencies: - - supports-color - - '@vitest/expect@2.0.5': - dependencies: - '@vitest/spy': 2.0.5 - '@vitest/utils': 2.0.5 - chai: 5.2.0 - tinyrainbow: 1.2.0 - - '@vitest/expect@3.0.9': - dependencies: - '@vitest/spy': 3.0.9 - '@vitest/utils': 3.0.9 - chai: 5.2.0 - tinyrainbow: 2.0.0 - - '@vitest/expect@3.2.4': - dependencies: - '@types/chai': 5.2.2 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.2.1 - tinyrainbow: 2.0.0 - - '@vitest/pretty-format@2.0.5': - dependencies: - tinyrainbow: 1.2.0 - - '@vitest/pretty-format@2.1.9': - dependencies: - tinyrainbow: 1.2.0 - - '@vitest/pretty-format@3.0.9': - dependencies: - tinyrainbow: 2.0.0 - - '@vitest/pretty-format@3.2.4': - dependencies: - tinyrainbow: 2.0.0 - - '@vitest/spy@2.0.5': - dependencies: - tinyspy: 3.0.2 - - '@vitest/spy@3.0.9': - dependencies: - tinyspy: 3.0.2 - - '@vitest/spy@3.2.4': - dependencies: - tinyspy: 4.0.3 - - '@vitest/utils@2.0.5': - dependencies: - '@vitest/pretty-format': 2.0.5 - estree-walker: 3.0.3 - loupe: 3.1.4 - tinyrainbow: 1.2.0 - - '@vitest/utils@2.1.9': - dependencies: - '@vitest/pretty-format': 2.1.9 - loupe: 3.1.4 - tinyrainbow: 1.2.0 - - '@vitest/utils@3.0.9': - dependencies: - '@vitest/pretty-format': 3.0.9 - loupe: 3.1.4 - tinyrainbow: 2.0.0 - - '@vitest/utils@3.2.4': - dependencies: - '@vitest/pretty-format': 3.2.4 - loupe: 3.1.4 - tinyrainbow: 2.0.0 - - '@vscode-logging/logger@2.0.0': - dependencies: - '@vscode-logging/types': 2.0.0 - fast-safe-stringify: 2.1.1 - fs-extra: 11.2.0 - lodash: 4.17.21 - stacktrace-js: 2.0.2 - streamroller: 3.1.5 - triple-beam: 1.4.1 - winston: 3.11.0 - winston-transport: 4.6.0 - transitivePeerDependencies: - - supports-color - - '@vscode-logging/types@2.0.0': {} - - '@vscode-logging/wrapper@2.0.0': - dependencies: - '@vscode-logging/logger': 2.0.0 - '@vscode-logging/types': 2.0.0 - transitivePeerDependencies: - - supports-color - - '@vscode/codicons@0.0.33': {} - - '@vscode/codicons@0.0.36': {} - - '@vscode/extension-telemetry@1.0.0(tslib@2.8.1)': - dependencies: - '@microsoft/1ds-core-js': 4.3.8(tslib@2.8.1) - '@microsoft/1ds-post-js': 4.3.8(tslib@2.8.1) - '@microsoft/applicationinsights-web-basic': 3.3.8(tslib@2.8.1) - transitivePeerDependencies: - - tslib - - '@vscode/iconv-lite-umd@0.7.0': {} - - '@vscode/test-electron@2.5.2': - dependencies: - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - jszip: 3.10.1 - ora: 8.2.0 - semver: 7.7.2 - transitivePeerDependencies: - - supports-color - - '@vscode/vsce-sign-alpine-arm64@2.0.5': - optional: true - - '@vscode/vsce-sign-alpine-x64@2.0.5': - optional: true - - '@vscode/vsce-sign-darwin-arm64@2.0.5': - optional: true - - '@vscode/vsce-sign-darwin-x64@2.0.5': - optional: true - - '@vscode/vsce-sign-linux-arm64@2.0.5': - optional: true - - '@vscode/vsce-sign-linux-arm@2.0.5': - optional: true - - '@vscode/vsce-sign-linux-x64@2.0.5': - optional: true - - '@vscode/vsce-sign-win32-arm64@2.0.5': - optional: true - - '@vscode/vsce-sign-win32-x64@2.0.5': - optional: true - - '@vscode/vsce-sign@2.0.6': - 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.32.0': - dependencies: - '@azure/identity': 4.10.1 - '@vscode/vsce-sign': 2.0.6 - azure-devops-node-api: 12.5.0 - chalk: 2.4.2 - cheerio: 1.1.0 - cockatiel: 3.2.1 - commander: 6.2.1 - form-data: 4.0.4 - 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.3 - 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: - - supports-color - - '@vscode/vsce@3.4.2': - dependencies: - '@azure/identity': 4.10.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-devops-node-api: 12.5.0 - chalk: 2.4.2 - cheerio: 1.1.0 - cockatiel: 3.2.1 - commander: 12.1.0 - form-data: 4.0.4 - glob: 11.0.3 - hosted-git-info: 4.1.0 - jsonc-parser: 3.3.1 - leven: 3.1.0 - markdown-it: 14.1.0 - mime: 1.6.0 - minimatch: 3.1.2 - parse-semver: 1.1.1 - read: 1.0.7 - secretlint: 9.3.4 - semver: 7.7.2 - tmp: 0.2.3 - 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: - - supports-color - - '@vscode/webview-ui-toolkit@1.4.0(react@18.2.0)': - dependencies: - '@microsoft/fast-element': 1.14.0 - '@microsoft/fast-foundation': 2.50.0 - '@microsoft/fast-react-wrapper': 0.3.25(react@18.2.0) - react: 18.2.0 - tslib: 2.8.1 - - '@vscode/webview-ui-toolkit@1.4.0(react@19.1.0)': - dependencies: - '@microsoft/fast-element': 1.14.0 - '@microsoft/fast-foundation': 2.50.0 - '@microsoft/fast-react-wrapper': 0.3.25(react@19.1.0) - react: 19.1.0 - tslib: 2.8.1 - - '@webassemblyjs/ast@1.14.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - - '@webassemblyjs/helper-api-error@1.13.2': {} - - '@webassemblyjs/helper-buffer@1.14.1': {} - - '@webassemblyjs/helper-numbers@1.13.2': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - - '@webassemblyjs/helper-wasm-section@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 - - '@webassemblyjs/ieee754@1.13.2': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.13.2': {} - - '@webassemblyjs/wasm-edit@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 - - '@webassemblyjs/wasm-gen@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wasm-opt@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - - '@webassemblyjs/wasm-parser@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wast-printer@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 - - '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.100.2)': - dependencies: - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.100.2) - - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.100.2)': - dependencies: - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2) - - '@webpack-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.100.2)': - dependencies: - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) - - '@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.100.2) - - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.100.2)': - dependencies: - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2) - - '@webpack-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.100.2)': - dependencies: - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) - - '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)': - dependencies: - webpack-cli: 4.10.0(webpack@5.100.2) - - '@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.100.2) - optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.100.2) - - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack@5.100.2)': - dependencies: - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2) - optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.100.2) - - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.100.2)': - dependencies: - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.100.2) - - '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.100.2)': - dependencies: - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) - optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) - - '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack@5.100.2)': - dependencies: - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack@5.100.2) - - '@xmldom/xmldom@0.7.13': {} - - '@xmldom/xmldom@0.8.10': {} - - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - - '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.25.6)': - dependencies: - esbuild: 0.25.6 - tslib: 2.8.1 - - '@yarnpkg/fslib@2.10.3': - dependencies: - '@yarnpkg/libzip': 2.3.0 - tslib: 1.14.1 - - '@yarnpkg/libzip@2.3.0': - dependencies: - '@types/emscripten': 1.40.1 - tslib: 1.14.1 - - abab@1.0.4: {} - - abab@2.0.6: {} - - abbrev@1.0.9: {} - - abbrev@1.1.1: {} - - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - - accepts@2.0.0: - dependencies: - mime-types: 3.0.1 - negotiator: 1.0.0 - - acorn-globals@3.1.0: - dependencies: - acorn: 4.0.13 - - acorn-globals@4.3.4: - dependencies: - acorn: 6.4.2 - acorn-walk: 6.2.0 - - acorn-globals@7.0.1: - dependencies: - acorn: 8.15.0 - acorn-walk: 8.3.4 - - acorn-import-phases@1.0.4(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - - acorn-jsx@5.3.2(acorn@7.4.1): - dependencies: - acorn: 7.4.1 - - acorn-jsx@5.3.2(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - - acorn-walk@6.2.0: {} - - acorn-walk@7.2.0: {} - - acorn-walk@8.3.4: - dependencies: - acorn: 8.15.0 - - acorn@4.0.13: {} - - acorn@5.7.4: {} - - acorn@6.4.2: {} - - acorn@7.4.1: {} - - acorn@8.15.0: {} - - address@1.0.3: {} - - address@1.2.2: {} - - adm-zip@0.5.16: {} - - agent-base@5.1.1: {} - - agent-base@6.0.2: - dependencies: - debug: 4.4.1(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - agent-base@7.1.3: {} - - agentkeepalive@4.6.0: - dependencies: - humanize-ms: 1.2.1 - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - aggregate-error@4.0.1: - dependencies: - clean-stack: 4.2.0 - indent-string: 5.0.0 - - airbnb-js-shims@2.2.1: - dependencies: - array-includes: 3.1.9 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - es5-shim: 4.6.7 - es6-shim: 0.35.8 - function.prototype.name: 1.1.8 - globalthis: 1.0.4 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.getownpropertydescriptors: 2.1.8 - object.values: 1.2.1 - promise.allsettled: 1.0.7 - promise.prototype.finally: 3.1.8 - string.prototype.matchall: 4.0.12 - string.prototype.padend: 3.1.6 - string.prototype.padstart: 3.1.7 - symbol.prototype.description: 1.0.7 - - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - - ajv-formats@3.0.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - - ajv-keywords@5.1.0(ajv@8.17.1): - dependencies: - ajv: 8.17.1 - fast-deep-equal: 3.1.3 - - ajv@5.5.2: - dependencies: - co: 4.6.0 - fast-deep-equal: 1.1.0 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.3.1 - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - - alphanum-sort@1.0.2: {} - - amdefine@0.1.1: {} - - amdefine@1.0.1: - optional: true - - anser@2.3.2: {} - - ansi-align@2.0.0: - dependencies: - string-width: 2.1.1 - - ansi-align@3.0.1: - dependencies: - string-width: 4.2.3 - - ansi-colors@1.1.0: - dependencies: - ansi-wrap: 0.1.0 - - ansi-colors@3.2.4: {} - - ansi-colors@4.1.3: {} - - ansi-escapes@1.4.0: {} - - ansi-escapes@3.2.0: {} - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-escapes@7.0.0: - dependencies: - environment: 1.1.0 - - ansi-html-community@0.0.8: {} - - ansi-html@0.0.9: {} - - ansi-regex@2.1.1: {} - - ansi-regex@3.0.1: {} - - ansi-regex@4.1.1: {} - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - - ansi-styles@2.2.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@5.2.0: {} - - ansi-styles@6.2.1: {} - - ansi-to-html@0.6.15: - dependencies: - entities: 2.2.0 - - ansi-wrap@0.1.0: {} - - any-promise@1.3.0: {} - - anymatch@1.3.2: - dependencies: - micromatch: 4.0.8 - normalize-path: 2.1.1 - - anymatch@2.0.0: - dependencies: - micromatch: 4.0.8 - normalize-path: 2.1.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - apg-lite@1.0.5: {} - - app-root-dir@1.0.2: {} - - append-transform@0.4.0: - dependencies: - default-require-extensions: 1.0.0 - - applicationinsights@1.7.4: - dependencies: - cls-hooked: 4.2.2 - continuation-local-storage: 3.2.1 - diagnostic-channel: 0.2.0 - diagnostic-channel-publishers: 0.3.5(diagnostic-channel@0.2.0) - - aproba@1.2.0: {} - - aproba@2.0.0: {} - - are-we-there-yet@1.1.7: - dependencies: - delegates: 1.0.0 - readable-stream: 2.3.8 - - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - - are-we-there-yet@3.0.1: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - - arg@5.0.2: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - argparse@2.0.1: {} - - aria-hidden@1.2.6: - dependencies: - tslib: 2.8.1 - - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - - aria-query@5.3.2: {} - - arr-diff@4.0.0: {} - - arr-union@3.1.0: {} - - array-buffer-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - is-array-buffer: 3.0.5 - - array-equal@1.0.2: {} - - array-filter@0.0.1: {} - - array-find-index@1.0.2: {} - - array-flatten@1.1.1: {} - - array-includes@3.1.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - is-string: 1.1.1 - math-intrinsics: 1.1.0 - - array-map@0.0.1: {} - - array-reduce@0.0.0: {} - - array-union@1.0.2: - dependencies: - array-uniq: 1.0.3 - - array-union@2.1.0: {} - - array-uniq@1.0.3: {} - - array.prototype.findlast@1.2.5: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - - array.prototype.findlastindex@1.2.6: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - - array.prototype.flat@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-shim-unscopables: 1.1.0 - - array.prototype.flatmap@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-shim-unscopables: 1.1.0 - - array.prototype.map@1.0.8: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-array-method-boxes-properly: 1.0.0 - es-object-atoms: 1.1.1 - is-string: 1.1.1 - - array.prototype.reduce@1.0.8: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-array-method-boxes-properly: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - is-string: 1.1.1 - - array.prototype.tosorted@1.1.4: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-shim-unscopables: 1.1.0 - - arraybuffer.prototype.slice@1.0.4: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.5 - - arrify@1.0.1: {} - - arrify@2.0.1: {} - - asap@2.0.6: {} - - asn1@0.2.6: - dependencies: - safer-buffer: 2.1.2 - - assert-plus@1.0.0: {} - - assertion-error@1.1.0: {} - - assertion-error@2.0.1: {} - - assign-symbols@1.0.0: {} - - ast-types-flow@0.0.8: {} - - ast-types@0.14.2: - dependencies: - tslib: 2.8.1 - - ast-types@0.16.1: - dependencies: - tslib: 2.8.1 - - astral-regex@1.0.0: {} - - astral-regex@2.0.0: {} - - async-each@1.0.6: {} - - async-foreach@0.1.3: {} - - async-function@1.0.0: {} - - async-hook-jl@1.7.6: - dependencies: - stack-chain: 1.3.7 - - async-limiter@1.0.1: {} - - async-listener@0.6.10: - dependencies: - semver: 5.7.2 - shimmer: 1.2.1 - - async@1.5.2: {} - - async@2.6.4: - dependencies: - lodash: 4.17.21 - - async@3.2.6: {} - - asynckit@0.4.0: {} - - asyncro@3.0.0: {} - - at-least-node@1.0.0: {} - - atob@2.1.2: {} - - autolinker@3.16.2: - dependencies: - tslib: 2.8.1 - - autoprefixer@10.4.21(postcss@8.5.6): - dependencies: - browserslist: 4.25.0 - caniuse-lite: 1.0.30001724 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - autoprefixer@6.7.7: - dependencies: - browserslist: 1.7.7 - caniuse-db: 1.0.30001724 - normalize-range: 0.1.2 - num2fraction: 1.2.2 - postcss: 5.2.18 - postcss-value-parser: 3.3.1 - - autoprefixer@7.1.6: - dependencies: - browserslist: 2.11.3 - caniuse-lite: 1.0.30001724 - normalize-range: 0.1.2 - num2fraction: 1.2.2 - postcss: 6.0.23 - postcss-value-parser: 3.3.1 - - autoprefixer@9.8.8: - dependencies: - browserslist: 4.25.1 - caniuse-lite: 1.0.30001727 - normalize-range: 0.1.2 - num2fraction: 1.2.2 - picocolors: 0.2.1 - postcss: 7.0.39 - postcss-value-parser: 4.2.0 - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.1.0 - - await-notify@1.0.1: {} - - aws-sign2@0.7.0: {} - - aws4@1.13.2: {} - - axe-core@4.10.3: {} - - axios@1.9.0: - dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.4 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axobject-query@4.1.0: {} - - azure-devops-node-api@12.5.0: - dependencies: - tunnel: 0.0.6 - typed-rest-client: 1.8.11 - - babel-code-frame@6.26.0: - dependencies: - chalk: 1.1.3 - esutils: 2.0.3 - js-tokens: 3.0.2 - - babel-core@6.26.3: - dependencies: - babel-code-frame: 6.26.0 - babel-generator: 6.26.1 - babel-helpers: 6.24.1 - babel-messages: 6.23.0 - babel-register: 6.26.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - convert-source-map: 1.9.0 - debug: 2.6.9 - json5: 0.5.1 - lodash: 4.17.21 - minimatch: 3.1.2 - path-is-absolute: 1.0.1 - private: 0.1.8 - slash: 1.0.0 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - - babel-core@7.0.0-bridge.0(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - - babel-core@7.0.0-bridge.0(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - - babel-eslint@10.1.0(eslint@6.8.0): - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.5 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 - eslint: 6.8.0 - eslint-visitor-keys: 1.3.0 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - - babel-generator@6.26.1: - dependencies: - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - detect-indent: 4.0.0 - jsesc: 1.3.0 - lodash: 4.17.21 - source-map: 0.5.7 - trim-right: 1.0.1 - - babel-helper-builder-binary-assignment-operator-visitor@6.24.1: - dependencies: - babel-helper-explode-assignable-expression: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-helper-builder-react-jsx@6.26.0: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - esutils: 2.0.3 - - babel-helper-call-delegate@6.24.1: - dependencies: - babel-helper-hoist-variables: 6.24.1 - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-helper-define-map@6.26.0: - dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - babel-helper-explode-assignable-expression@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-helper-function-name@6.24.1: - dependencies: - babel-helper-get-function-arity: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-helper-get-function-arity@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-helper-hoist-variables@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-helper-optimise-call-expression@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-helper-regex@6.26.0: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.21 - - babel-helper-remap-async-to-generator@6.24.1: - dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-helper-replace-supers@6.24.1: - dependencies: - babel-helper-optimise-call-expression: 6.24.1 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-helpers@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-jest@20.0.3: - dependencies: - babel-core: 6.26.3 - babel-plugin-istanbul: 4.1.6 - babel-preset-jest: 20.0.3 - transitivePeerDependencies: - - supports-color - - babel-jest@25.5.1(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - '@jest/transform': 25.5.1 - '@jest/types': 25.5.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 25.5.0(@babel/core@7.27.4) - chalk: 3.0.0 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-jest@29.7.0(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.27.4) - 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.4)(webpack@5.100.2): - dependencies: - '@babel/core': 7.27.4 - find-up: 5.0.0 - webpack: 5.100.2(webpack-cli@4.10.0) - - babel-loader@7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.27.4))(webpack@5.100.2): - dependencies: - babel-core: 7.0.0-bridge.0(@babel/core@7.27.4) - find-cache-dir: 1.0.0 - loader-utils: 1.4.2 - mkdirp: 0.5.6 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - - babel-loader@7.1.2(babel-core@7.0.0-bridge.0(@babel/core@7.28.0))(webpack@5.100.2): - dependencies: - babel-core: 7.0.0-bridge.0(@babel/core@7.28.0) - find-cache-dir: 1.0.0 - loader-utils: 1.4.2 - mkdirp: 0.5.6 - webpack: 5.100.2(webpack-cli@4.10.0) - - babel-loader@8.4.1(@babel/core@7.27.4)(webpack@5.100.2): - dependencies: - '@babel/core': 7.27.4 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 5.100.2(webpack-cli@4.10.0) - - babel-loader@9.2.1(@babel/core@7.27.4)(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)): - dependencies: - '@babel/core': 7.27.4 - find-cache-dir: 4.0.0 - schema-utils: 4.3.2 - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - - babel-messages@6.23.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-add-react-displayname@0.0.5: {} - - babel-plugin-annotate-pure-calls@0.4.0(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - - babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 - '@mdx-js/util': 1.6.22 - - babel-plugin-check-es2015-constants@6.22.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-dev-expression@0.2.3(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - - babel-plugin-dynamic-import-node@1.1.0: - dependencies: - babel-plugin-syntax-dynamic-import: 6.18.0 - babel-template: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-extract-import-names@1.6.22: - dependencies: - '@babel/helper-plugin-utils': 7.10.4 - - babel-plugin-istanbul@4.1.6: - dependencies: - babel-plugin-syntax-object-rest-spread: 6.13.0 - find-up: 2.1.0 - istanbul-lib-instrument: 1.10.2 - test-exclude: 4.2.3 - transitivePeerDependencies: - - supports-color - - babel-plugin-istanbul@6.1.1: - dependencies: - '@babel/helper-plugin-utils': 7.27.1 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-jest-hoist@20.0.3: {} - - babel-plugin-jest-hoist@22.4.4: {} - - babel-plugin-jest-hoist@25.5.0: - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.1 - '@types/babel__traverse': 7.20.7 - - babel-plugin-jest-hoist@29.6.3: - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.1 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.7 - - babel-plugin-macros@2.8.0: - dependencies: - '@babel/runtime': 7.27.6 - cosmiconfig: 6.0.0 - resolve: 1.22.10 - - babel-plugin-macros@3.1.0: - dependencies: - '@babel/runtime': 7.27.6 - cosmiconfig: 7.1.0 - resolve: 1.22.10 - - babel-plugin-named-exports-order@0.0.2: {} - - babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.4): - dependencies: - '@babel/compat-data': 7.27.5 - '@babel/core': 7.27.4 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.4) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.28.0): - dependencies: - '@babel/compat-data': 7.27.5 - '@babel/core': 7.28.0 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.28.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - optional: true - - babel-plugin-polyfill-corejs3@0.1.7(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-define-polyfill-provider': 0.1.5(@babel/core@7.27.4) - core-js-compat: 3.43.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.4) - core-js-compat: 3.43.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.28.0) - core-js-compat: 3.43.0 - transitivePeerDependencies: - - supports-color - optional: true - - babel-plugin-polyfill-regenerator@0.0.4(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-define-polyfill-provider': 0.0.3(@babel/core@7.27.4) - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.4) - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - optional: true - - babel-plugin-react-docgen@4.2.1: - dependencies: - ast-types: 0.14.2 - lodash: 4.17.21 - react-docgen: 5.4.3 - transitivePeerDependencies: - - supports-color - - babel-plugin-syntax-async-functions@6.13.0: {} - - babel-plugin-syntax-class-properties@6.13.0: {} - - babel-plugin-syntax-dynamic-import@6.18.0: {} - - babel-plugin-syntax-exponentiation-operator@6.13.0: {} - - babel-plugin-syntax-flow@6.18.0: {} - - babel-plugin-syntax-jsx@6.18.0: {} - - babel-plugin-syntax-object-rest-spread@6.13.0: {} - - babel-plugin-syntax-trailing-function-commas@6.22.0: {} - - babel-plugin-transform-async-to-generator@6.24.1: - dependencies: - babel-helper-remap-async-to-generator: 6.24.1 - babel-plugin-syntax-async-functions: 6.13.0 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-class-properties@6.24.1: - dependencies: - babel-helper-function-name: 6.24.1 - babel-plugin-syntax-class-properties: 6.13.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-arrow-functions@6.22.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-block-scoped-functions@6.22.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-block-scoping@6.26.0: - dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-classes@6.24.1: - dependencies: - babel-helper-define-map: 6.26.0 - babel-helper-function-name: 6.24.1 - babel-helper-optimise-call-expression: 6.24.1 - babel-helper-replace-supers: 6.24.1 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-computed-properties@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-destructuring@6.23.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-duplicate-keys@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-plugin-transform-es2015-for-of@6.23.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-function-name@6.24.1: - dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-literals@6.22.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-modules-amd@6.24.1: - dependencies: - babel-plugin-transform-es2015-modules-commonjs: 6.26.2 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-modules-commonjs@6.26.2: - dependencies: - babel-plugin-transform-strict-mode: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-modules-systemjs@6.24.1: - dependencies: - babel-helper-hoist-variables: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-modules-umd@6.24.1: - dependencies: - babel-plugin-transform-es2015-modules-amd: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-object-super@6.24.1: - dependencies: - babel-helper-replace-supers: 6.24.1 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-parameters@6.24.1: - dependencies: - babel-helper-call-delegate: 6.24.1 - babel-helper-get-function-arity: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-es2015-shorthand-properties@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-plugin-transform-es2015-spread@6.22.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-sticky-regex@6.24.1: - dependencies: - babel-helper-regex: 6.26.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-plugin-transform-es2015-template-literals@6.22.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-typeof-symbol@6.23.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-es2015-unicode-regex@6.24.1: - dependencies: - babel-helper-regex: 6.26.0 - babel-runtime: 6.26.0 - regexpu-core: 2.0.0 - - babel-plugin-transform-exponentiation-operator@6.24.1: - dependencies: - babel-helper-builder-binary-assignment-operator-visitor: 6.24.1 - babel-plugin-syntax-exponentiation-operator: 6.13.0 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-transform-flow-strip-types@6.22.0: - dependencies: - babel-plugin-syntax-flow: 6.18.0 - babel-runtime: 6.26.0 - - babel-plugin-transform-object-rest-spread@6.26.0: - dependencies: - babel-plugin-syntax-object-rest-spread: 6.13.0 - babel-runtime: 6.26.0 - - babel-plugin-transform-react-constant-elements@6.23.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-react-display-name@6.25.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-react-jsx-self@6.22.0: - dependencies: - babel-plugin-syntax-jsx: 6.18.0 - babel-runtime: 6.26.0 - - babel-plugin-transform-react-jsx-source@6.22.0: - dependencies: - babel-plugin-syntax-jsx: 6.18.0 - babel-runtime: 6.26.0 - - babel-plugin-transform-react-jsx@6.24.1: - dependencies: - babel-helper-builder-react-jsx: 6.26.0 - babel-plugin-syntax-jsx: 6.18.0 - babel-runtime: 6.26.0 - - babel-plugin-transform-regenerator@6.26.0: - dependencies: - regenerator-transform: 0.10.1 - - babel-plugin-transform-rename-import@2.3.0: {} - - babel-plugin-transform-runtime@6.23.0: - dependencies: - babel-runtime: 6.26.0 - - babel-plugin-transform-strict-mode@6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - - babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.27.4)(@babel/traverse@7.28.0): - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 - optionalDependencies: - '@babel/traverse': 7.28.0 - - babel-preset-current-node-syntax@0.1.4(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.4) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.4) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.4) - - babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.4) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.4) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.4) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.4) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.4) - - babel-preset-env@1.6.1: - dependencies: - babel-plugin-check-es2015-constants: 6.22.0 - babel-plugin-syntax-trailing-function-commas: 6.22.0 - babel-plugin-transform-async-to-generator: 6.24.1 - babel-plugin-transform-es2015-arrow-functions: 6.22.0 - babel-plugin-transform-es2015-block-scoped-functions: 6.22.0 - babel-plugin-transform-es2015-block-scoping: 6.26.0 - babel-plugin-transform-es2015-classes: 6.24.1 - babel-plugin-transform-es2015-computed-properties: 6.24.1 - babel-plugin-transform-es2015-destructuring: 6.23.0 - babel-plugin-transform-es2015-duplicate-keys: 6.24.1 - babel-plugin-transform-es2015-for-of: 6.23.0 - babel-plugin-transform-es2015-function-name: 6.24.1 - babel-plugin-transform-es2015-literals: 6.22.0 - babel-plugin-transform-es2015-modules-amd: 6.24.1 - babel-plugin-transform-es2015-modules-commonjs: 6.26.2 - babel-plugin-transform-es2015-modules-systemjs: 6.24.1 - babel-plugin-transform-es2015-modules-umd: 6.24.1 - babel-plugin-transform-es2015-object-super: 6.24.1 - babel-plugin-transform-es2015-parameters: 6.24.1 - babel-plugin-transform-es2015-shorthand-properties: 6.24.1 - babel-plugin-transform-es2015-spread: 6.22.0 - babel-plugin-transform-es2015-sticky-regex: 6.24.1 - babel-plugin-transform-es2015-template-literals: 6.22.0 - babel-plugin-transform-es2015-typeof-symbol: 6.23.0 - babel-plugin-transform-es2015-unicode-regex: 6.24.1 - babel-plugin-transform-exponentiation-operator: 6.24.1 - babel-plugin-transform-regenerator: 6.26.0 - browserslist: 2.11.3 - invariant: 2.2.4 - semver: 5.7.2 - transitivePeerDependencies: - - supports-color - - babel-preset-flow@6.23.0: - dependencies: - babel-plugin-transform-flow-strip-types: 6.22.0 - - babel-preset-jest@20.0.3: - dependencies: - babel-plugin-jest-hoist: 20.0.3 - - babel-preset-jest@22.4.4: - dependencies: - babel-plugin-jest-hoist: 22.4.4 - babel-plugin-syntax-object-rest-spread: 6.13.0 - - babel-preset-jest@25.5.0(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - babel-plugin-jest-hoist: 25.5.0 - babel-preset-current-node-syntax: 0.1.4(@babel/core@7.27.4) - - babel-preset-jest@29.6.3(@babel/core@7.27.4): - dependencies: - '@babel/core': 7.27.4 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.4) - - babel-preset-react-app@3.1.2(babel-runtime@6.26.0): - dependencies: - babel-plugin-dynamic-import-node: 1.1.0 - babel-plugin-syntax-dynamic-import: 6.18.0 - babel-plugin-transform-class-properties: 6.24.1 - babel-plugin-transform-es2015-destructuring: 6.23.0 - babel-plugin-transform-object-rest-spread: 6.26.0 - babel-plugin-transform-react-constant-elements: 6.23.0 - babel-plugin-transform-react-jsx: 6.24.1 - babel-plugin-transform-react-jsx-self: 6.22.0 - babel-plugin-transform-react-jsx-source: 6.22.0 - babel-plugin-transform-regenerator: 6.26.0 - babel-plugin-transform-runtime: 6.23.0 - babel-preset-env: 1.6.1 - babel-preset-react: 6.24.1 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color - - babel-preset-react@6.24.1: - dependencies: - babel-plugin-syntax-jsx: 6.18.0 - babel-plugin-transform-react-display-name: 6.25.0 - babel-plugin-transform-react-jsx: 6.24.1 - babel-plugin-transform-react-jsx-self: 6.22.0 - babel-plugin-transform-react-jsx-source: 6.22.0 - babel-preset-flow: 6.23.0 - - babel-register@6.26.0: - dependencies: - babel-core: 6.26.3 - babel-runtime: 6.26.0 - core-js: 2.6.12 - home-or-tmp: 2.0.0 - lodash: 4.17.21 - mkdirp: 0.5.6 - source-map-support: 0.4.18 - transitivePeerDependencies: - - supports-color - - babel-runtime@6.26.0: - dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.11.1 - - babel-template@6.26.0: - dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - babel-traverse@6.26.0: - dependencies: - babel-code-frame: 6.26.0 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - debug: 2.6.9 - globals: 9.18.0 - invariant: 2.2.4 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - - babel-types@6.26.0: - dependencies: - babel-runtime: 6.26.0 - esutils: 2.0.3 - lodash: 4.17.21 - to-fast-properties: 1.0.3 - - babylon@6.18.0: {} - - bail@1.0.5: {} - - bail@2.0.2: {} - - balanced-match@0.4.2: {} - - balanced-match@1.0.2: {} - - balanced-match@2.0.0: {} - - base16@1.0.0: {} - - base64-js@1.5.1: {} - - basic-auth@2.0.1: - dependencies: - safe-buffer: 5.1.2 - - batch@0.6.1: {} - - bcrypt-pbkdf@1.0.2: - dependencies: - tweetnacl: 0.14.5 - - better-opn@2.1.1: - dependencies: - open: 7.4.2 - - better-opn@3.0.2: - dependencies: - open: 8.4.2 - - big-integer@1.6.52: {} - - big.js@3.2.0: {} - - big.js@5.2.2: {} - - binary-extensions@1.13.1: {} - - binary-extensions@2.3.0: {} - - binary@0.3.0: - dependencies: - buffers: 0.1.1 - chainsaw: 0.1.0 - - binaryextensions@6.11.0: - dependencies: - editions: 6.21.0 - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - bl@1.2.3: - dependencies: - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - - block-stream@0.0.9: - dependencies: - inherits: 2.0.4 - - bluebird@3.4.7: {} - - bluebird@3.7.2: {} - - blueimp-md5@2.19.0: {} - - body-parser@1.20.3: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - body-parser@2.2.0: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 4.4.1(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 - type-is: 2.0.1 - transitivePeerDependencies: - - supports-color - - bonjour-service@1.3.0: - dependencies: - fast-deep-equal: 3.1.3 - multicast-dns: 7.2.5 - - boolbase@1.0.0: {} - - boundary@2.0.0: {} - - bowser@2.11.0: {} - - boxen@1.3.0: - dependencies: - ansi-align: 2.0.0 - camelcase: 4.1.0 - chalk: 2.4.2 - cli-boxes: 1.0.0 - string-width: 2.1.1 - term-size: 1.2.0 - widest-line: 2.0.1 - - boxen@5.1.2: - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 2.2.1 - string-width: 4.2.3 - type-fest: 0.20.2 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 - - bplist-parser@0.1.1: - dependencies: - big-integer: 1.6.52 - optional: true - - bplist-parser@0.2.0: - dependencies: - big-integer: 1.6.52 - - brace-expansion@2.0.2: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-assert@1.2.1: {} - - browser-process-hrtime@1.0.0: {} - - browser-resolve@1.11.3: - dependencies: - resolve: 1.1.7 - - browser-stdout@1.3.1: {} - - browserify-zlib@0.1.4: - dependencies: - pako: 0.2.9 - - browserslist@1.7.7: - dependencies: - caniuse-db: 1.0.30001724 - electron-to-chromium: 1.5.185 - - browserslist@2.11.3: - dependencies: - caniuse-lite: 1.0.30001724 - electron-to-chromium: 1.5.171 - - browserslist@4.25.0: - dependencies: - caniuse-lite: 1.0.30001724 - electron-to-chromium: 1.5.171 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.0) - - browserslist@4.25.1: - dependencies: - caniuse-lite: 1.0.30001727 - electron-to-chromium: 1.5.185 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.1) - - bs-logger@0.2.6: - dependencies: - fast-json-stable-stringify: 2.1.0 - - bser@1.0.2: - dependencies: - node-int64: 0.4.0 - - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - - buffer-alloc-unsafe@1.1.0: {} - - buffer-alloc@1.2.0: - dependencies: - buffer-alloc-unsafe: 1.1.0 - buffer-fill: 1.0.0 - - buffer-crc32@0.2.13: {} - - buffer-equal-constant-time@1.0.1: {} - - buffer-fill@1.0.0: {} - - buffer-from@1.1.2: {} - - buffer-indexof-polyfill@1.0.2: {} - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - buffers@0.1.1: {} - - bufferstreams@1.1.3: - dependencies: - readable-stream: 2.3.8 - - bufferstreams@3.0.0: - dependencies: - readable-stream: 3.6.2 - - builtin-modules@1.1.1: {} - - builtin-modules@3.3.0: {} - - bundle-name@4.1.0: - dependencies: - run-applescript: 7.0.0 - - byline@5.0.0: {} - - bytes-iec@3.1.1: {} - - bytes@3.1.2: {} - - c8@10.1.3: - dependencies: - '@bcoe/v8-coverage': 1.0.2 - '@istanbuljs/schema': 0.1.3 - find-up: 5.0.0 - foreground-child: 3.3.1 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-reports: 3.1.7 - test-exclude: 7.0.1 - v8-to-istanbul: 9.3.0 - yargs: 17.7.2 - yargs-parser: 21.1.1 - - c8@7.14.0: - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@istanbuljs/schema': 0.1.3 - find-up: 5.0.0 - foreground-child: 2.0.0 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-reports: 3.1.7 - rimraf: 3.0.2 - test-exclude: 6.0.0 - v8-to-istanbul: 9.3.0 - yargs: 16.2.0 - yargs-parser: 20.2.9 - - cacache@10.0.4: - dependencies: - bluebird: 3.7.2 - chownr: 1.1.4 - glob: 7.2.3 - graceful-fs: 4.2.11 - lru-cache: 4.1.5 - mississippi: 2.0.0 - mkdirp: 0.5.6 - move-concurrently: 1.0.1 - promise-inflight: 1.0.1(bluebird@3.7.2) - rimraf: 2.7.1 - ssri: 5.3.0 - unique-filename: 1.1.1 - y18n: 4.0.3 - - cacache@15.3.0: - dependencies: - '@npmcli/fs': 1.1.1 - '@npmcli/move-file': 1.1.2 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 7.2.3 - infer-owner: 1.0.4 - lru-cache: 6.0.0 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1(bluebird@3.7.2) - rimraf: 3.0.2 - ssri: 8.0.1 - tar: 6.2.1 - unique-filename: 1.1.1 - transitivePeerDependencies: - - bluebird - - cacache@16.1.3: - dependencies: - '@npmcli/fs': 2.1.2 - '@npmcli/move-file': 2.0.1 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 8.1.0 - infer-owner: 1.0.4 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1(bluebird@3.7.2) - rimraf: 3.0.2 - ssri: 9.0.1 - tar: 6.2.1 - unique-filename: 2.0.1 - transitivePeerDependencies: - - bluebird - - cacheable-lookup@7.0.0: {} - - cacheable-request@10.2.14: - dependencies: - '@types/http-cache-semantics': 4.0.4 - get-stream: 6.0.1 - http-cache-semantics: 4.2.0 - keyv: 4.5.4 - mimic-response: 4.0.0 - normalize-url: 8.0.2 - responselike: 3.0.0 - - cacheable-request@12.0.1: - dependencies: - '@types/http-cache-semantics': 4.0.4 - get-stream: 9.0.1 - http-cache-semantics: 4.2.0 - keyv: 4.5.4 - mimic-response: 4.0.0 - normalize-url: 8.0.2 - responselike: 3.0.0 - - cacheable@1.10.0: - dependencies: - hookified: 1.9.1 - keyv: 5.3.4 - - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bind@1.0.8: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 - - call-bound@1.0.4: - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - - call-me-maybe@1.0.2: {} - - callsite@1.0.0: {} - - callsites@2.0.0: {} - - callsites@3.1.0: {} - - camel-case@3.0.0: - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - - camel-case@4.1.2: - dependencies: - pascal-case: 3.1.2 - tslib: 2.8.1 - - camelcase-css@2.0.1: {} - - camelcase-keys@2.1.0: - dependencies: - camelcase: 2.1.1 - map-obj: 1.0.1 - - camelcase-keys@6.2.2: - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - - camelcase-keys@7.0.2: - dependencies: - camelcase: 6.3.0 - map-obj: 4.3.0 - quick-lru: 5.1.1 - type-fest: 1.4.0 - - camelcase@2.1.1: {} - - camelcase@3.0.0: {} - - camelcase@4.1.0: {} - - camelcase@5.3.1: {} - - camelcase@6.3.0: {} - - caniuse-api@1.6.1: - dependencies: - browserslist: 1.7.7 - caniuse-db: 1.0.30001724 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - - caniuse-api@3.0.0: - dependencies: - browserslist: 4.25.1 - caniuse-lite: 1.0.30001727 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - - caniuse-db@1.0.30001724: {} - - caniuse-lite@1.0.30001724: {} - - caniuse-lite@1.0.30001727: {} - - capture-exit@2.0.0: - dependencies: - rsvp: 4.8.5 - - capture-stack-trace@1.0.2: {} - - case-sensitive-paths-webpack-plugin@2.1.1: {} - - case-sensitive-paths-webpack-plugin@2.4.0: {} - - case@1.6.3: {} - - caseless@0.12.0: {} - - ccount@1.1.0: {} - - ccount@2.0.1: {} - - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - - chai@5.2.0: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.4 - pathval: 2.0.0 - - chai@5.2.1: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.4 - pathval: 2.0.1 - - chainsaw@0.1.0: - dependencies: - traverse: 0.3.9 - - chalk@1.1.3: - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.4.1: {} - - char-regex@1.0.2: {} - - character-entities-html4@2.1.0: {} - - character-entities-legacy@1.1.4: {} - - character-entities-legacy@3.0.0: {} - - character-entities@1.2.4: {} - - character-entities@2.0.2: {} - - character-reference-invalid@1.1.4: {} - - character-reference-invalid@2.0.1: {} - - chardet@0.4.2: {} - - chardet@0.7.0: {} - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - check-error@2.1.1: {} - - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - - cheerio@1.1.0: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.2.2 - encoding-sniffer: 0.2.1 - htmlparser2: 10.0.0 - parse5: 7.3.0 - parse5-htmlparser2-tree-adapter: 7.1.0 - parse5-parser-stream: 7.1.2 - undici: 7.10.0 - whatwg-mimetype: 4.0.0 - - chokidar@1.7.0: - dependencies: - anymatch: 1.3.2 - async-each: 1.0.6 - glob-parent: 2.0.0 - inherits: 2.0.4 - is-binary-path: 1.0.1 - is-glob: 2.0.1 - path-is-absolute: 1.0.1 - readdirp: 2.2.1 - optionalDependencies: - fsevents: 1.2.13 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chokidar@4.0.3: - dependencies: - readdirp: 4.1.2 - - chownr@1.1.4: {} - - chownr@2.0.0: {} - - chrome-trace-event@1.0.4: {} - - ci-info@1.6.0: {} - - ci-info@2.0.0: {} - - ci-info@3.9.0: {} - - citty@0.1.6: - dependencies: - consola: 3.4.2 - - cjs-module-lexer@1.4.3: {} - - clap@1.2.3: - dependencies: - chalk: 1.1.3 - - classnames@2.5.1: {} - - clean-css@4.2.4: - dependencies: - source-map: 0.6.1 - - clean-css@5.3.3: - dependencies: - source-map: 0.6.1 - - clean-stack@2.2.0: {} - - clean-stack@4.2.0: - dependencies: - escape-string-regexp: 5.0.0 - - cli-boxes@1.0.0: {} - - cli-boxes@2.2.1: {} - - cli-color@2.0.4: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-iterator: 2.0.3 - memoizee: 0.4.17 - timers-ext: 0.1.8 - - cli-cursor@2.1.0: - dependencies: - restore-cursor: 2.0.0 - - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-cursor@5.0.0: - dependencies: - restore-cursor: 5.1.0 - - cli-spinners@1.3.1: {} - - cli-spinners@2.9.2: {} - - cli-table3@0.6.5: - dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 - - cli-truncate@4.0.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 7.2.0 - - cli-width@2.2.1: {} - - cli-width@3.0.0: {} - - client-only@0.0.1: {} - - clipboard-copy@4.0.1: {} - - clipboardy@4.0.0: - dependencies: - execa: 8.0.1 - is-wsl: 3.1.0 - is64bit: 2.0.0 - - cliui@3.2.0: - dependencies: - string-width: 1.0.2 - strip-ansi: 3.0.1 - wrap-ansi: 2.1.0 - - cliui@4.1.0: - dependencies: - string-width: 2.1.1 - strip-ansi: 4.0.0 - wrap-ansi: 2.1.0 - - cliui@6.0.0: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - - cliui@7.0.4: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - clone-deep@4.0.1: - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - - clone@1.0.4: {} - - closest@0.0.1: - dependencies: - matches-selector: 0.0.1 - - cls-hooked@4.2.2: - dependencies: - async-hook-jl: 1.7.6 - emitter-listener: 1.1.2 - semver: 5.7.2 - - clsx@1.2.1: {} - - clsx@2.1.1: {} - - co@4.6.0: {} - - coa@1.0.4: - dependencies: - q: 1.5.1 - - cockatiel@3.2.1: {} - - code-block-writer@13.0.3: {} - - code-point-at@1.1.0: {} - - codemirror-graphql@2.2.3(@codemirror/language@6.11.1)(codemirror@5.65.19)(graphql@16.11.0): - dependencies: - '@codemirror/language': 6.11.1 - '@types/codemirror': 0.0.90 - codemirror: 5.65.19 - graphql: 16.11.0 - graphql-language-service: 5.4.0(graphql@16.11.0) - - codemirror@5.65.19: {} - - collapse-white-space@1.0.6: {} - - collect-v8-coverage@1.0.2: {} - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - color-string@0.3.0: - dependencies: - color-name: 1.1.4 - - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - - color-support@1.1.3: {} - - color@0.11.4: - dependencies: - clone: 1.0.4 - color-convert: 1.9.3 - color-string: 0.3.0 - - color@3.2.1: - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 - - colord@2.9.3: {} - - colorette@1.4.0: {} - - colorette@2.0.20: {} - - colormin@1.1.2: - dependencies: - color: 0.11.4 - css-color-names: 0.0.4 - has: 1.0.4 - - colors@1.1.2: {} - - 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 - - comma-separated-tokens@1.0.8: {} - - comma-separated-tokens@2.0.3: {} - - commander@10.0.1: {} - - commander@11.1.0: {} - - commander@12.1.0: {} - - commander@13.1.0: {} - - commander@14.0.0: {} - - commander@2.13.0: {} - - commander@2.17.1: {} - - commander@2.19.0: {} - - commander@2.20.3: {} - - commander@4.1.1: {} - - commander@6.2.1: {} - - commander@7.2.0: {} - - commander@8.3.0: {} - - commander@9.5.0: {} - - common-path-prefix@3.0.0: {} - - commondir@1.0.1: {} - - compare-versions@6.1.1: {} - - compressible@2.0.18: - dependencies: - mime-db: 1.54.0 - - compression@1.8.0: - dependencies: - bytes: 3.1.2 - compressible: 2.0.18 - debug: 2.6.9 - negotiator: 0.6.4 - on-headers: 1.1.0 - safe-buffer: 5.2.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - concat-stream@1.6.2: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - - concat-with-sourcemaps@1.1.0: - dependencies: - source-map: 0.6.1 - - confbox@0.1.8: {} - - configstore@3.1.5: - dependencies: - dot-prop: 4.2.1 - graceful-fs: 4.2.11 - make-dir: 1.3.0 - unique-string: 1.0.0 - write-file-atomic: 2.4.3 - xdg-basedir: 3.0.0 - - confusing-browser-globals@1.0.11: {} - - connect-history-api-fallback@2.0.0: {} - - consola@3.4.2: {} - - console-control-strings@1.1.0: {} - - constants-browserify@1.0.0: {} - - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - content-disposition@1.0.0: - dependencies: - safe-buffer: 5.2.1 - - content-type-parser@1.0.2: {} - - content-type@1.0.5: {} - - continuation-local-storage@3.2.1: - dependencies: - async-listener: 0.6.10 - emitter-listener: 1.1.2 - - convert-source-map@1.9.0: {} - - convert-source-map@2.0.0: {} - - cookie-signature@1.0.6: {} - - cookie-signature@1.2.2: {} - - cookie@0.7.1: {} - - cookie@0.7.2: {} - - copy-concurrently@1.0.5: - dependencies: - aproba: 1.2.0 - fs-write-stream-atomic: 1.0.10 - iferr: 0.1.5 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - - copy-to-clipboard@3.3.3: - dependencies: - toggle-selection: 1.0.6 - - copy-webpack-plugin@13.0.0(webpack@5.100.2): - dependencies: - glob-parent: 6.0.2 - normalize-path: 3.0.0 - schema-utils: 4.3.2 - serialize-javascript: 6.0.2 - tinyglobby: 0.2.14 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - - copyfiles@2.4.1: - dependencies: - glob: 7.2.3 - minimatch: 3.1.2 - mkdirp: 1.0.4 - noms: 0.0.0 - through2: 2.0.5 - untildify: 4.0.0 - yargs: 16.2.0 - - core-js-compat@3.43.0: - dependencies: - browserslist: 4.25.0 - - core-js-pure@3.43.0: {} - - core-js@2.6.12: {} - - core-js@3.43.0: {} - - core-util-is@1.0.2: {} - - core-util-is@1.0.3: {} - - cors-anywhere@0.4.4: - dependencies: - http-proxy: 1.18.1 - proxy-from-env: 0.0.1 - transitivePeerDependencies: - - debug - - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - - corser@2.0.1: {} - - cosmiconfig@2.2.2: - dependencies: - is-directory: 0.3.1 - js-yaml: 3.14.1 - minimist: 1.2.8 - object-assign: 4.1.1 - os-homedir: 1.0.2 - parse-json: 2.2.0 - require-from-string: 1.2.1 - - cosmiconfig@6.0.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.1 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.1 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cosmiconfig@8.3.6(typescript@5.8.3): - dependencies: - import-fresh: 3.3.1 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.8.3 - - cosmiconfig@9.0.0(typescript@5.8.3): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.8.3 - - cp-file@7.0.0: - dependencies: - graceful-fs: 4.2.11 - make-dir: 3.1.0 - nested-error-stacks: 2.1.1 - p-event: 4.2.0 - - cpx@1.5.0: - dependencies: - babel-runtime: 6.26.0 - chokidar: 1.7.0 - duplexer: 0.1.2 - glob: 7.2.3 - glob2base: 0.0.12 - minimatch: 3.1.2 - mkdirp: 0.5.6 - resolve: 1.6.0 - safe-buffer: 5.2.1 - shell-quote: 1.8.3 - subarg: 1.0.0 - - cpy@8.1.2: - dependencies: - arrify: 2.0.1 - cp-file: 7.0.0 - globby: 9.2.0 - has-glob: 1.0.0 - junk: 3.1.0 - nested-error-stacks: 2.1.1 - p-all: 2.1.0 - p-filter: 2.1.0 - p-map: 3.0.0 - - create-error-class@3.0.2: - dependencies: - capture-stack-trace: 1.0.2 - - create-jest@29.7.0(@types/node@22.15.32)(babel-plugin-macros@3.1.0): - 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.32)(babel-plugin-macros@3.1.0) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-storybook@9.0.17: - dependencies: - semver: 7.7.2 - - crelt@1.0.6: {} - - cron-expression-validator@1.0.20: {} - - cron-parser@4.9.0: - dependencies: - luxon: 3.6.1 - - cron-validator@1.3.1: {} - - cross-env@7.0.3: - dependencies: - cross-spawn: 7.0.6 - - cross-fetch@3.2.0(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - cross-spawn@5.1.0: - dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 - - cross-spawn@6.0.6: - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - crypto-js@4.2.0: {} - - crypto-random-string@1.0.0: {} - - crypto-random-string@2.0.0: {} - - css-color-names@0.0.4: {} - - css-declaration-sorter@6.4.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - css-functions-list@3.2.3: {} - - css-loader@0.28.7: - dependencies: - babel-code-frame: 6.26.0 - css-selector-tokenizer: 0.7.3 - cssnano: 3.10.0 - icss-utils: 2.1.0 - loader-utils: 1.4.2 - lodash.camelcase: 4.3.0 - object-assign: 4.1.1 - postcss: 5.2.18 - postcss-modules-extract-imports: 1.2.1 - postcss-modules-local-by-default: 1.2.0 - postcss-modules-scope: 1.1.0 - postcss-modules-values: 1.3.0 - postcss-value-parser: 3.3.1 - source-list-map: 2.0.1 - - css-loader@3.6.0(webpack@5.100.2): - 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.100.2(webpack-cli@4.10.0) - - css-loader@5.2.7(webpack@5.100.2): - dependencies: - icss-utils: 5.1.0(postcss@8.5.6) - loader-utils: 2.0.4 - 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 - schema-utils: 3.3.0 - semver: 7.7.2 - webpack: 5.100.2(webpack-cli@4.10.0) - - css-loader@6.11.0(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)): - 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.2 - optionalDependencies: - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - - css-loader@6.11.0(webpack@5.100.2): - 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.2 - optionalDependencies: - webpack: 5.100.2(webpack-cli@6.0.1) - - css-loader@7.1.2(webpack@5.100.2): - 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.2 - optionalDependencies: - webpack: 5.100.2(webpack-cli@4.10.0) - - css-select@4.3.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - - css-select@5.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.2.2 - nth-check: 2.1.1 - - css-selector-tokenizer@0.7.3: - dependencies: - cssesc: 3.0.0 - fastparse: 1.1.2 - - css-tree@1.1.3: - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - - css-tree@3.1.0: - dependencies: - mdn-data: 2.12.2 - source-map-js: 1.2.1 - - css-what@6.1.0: {} - - css.escape@1.5.1: {} - - cssesc@3.0.0: {} - - cssnano-preset-default@5.2.14(postcss@8.5.6): - dependencies: - css-declaration-sorter: 6.4.1(postcss@8.5.6) - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-calc: 8.2.4(postcss@8.5.6) - postcss-colormin: 5.3.1(postcss@8.5.6) - postcss-convert-values: 5.1.3(postcss@8.5.6) - postcss-discard-comments: 5.1.2(postcss@8.5.6) - postcss-discard-duplicates: 5.1.0(postcss@8.5.6) - postcss-discard-empty: 5.1.1(postcss@8.5.6) - postcss-discard-overridden: 5.1.0(postcss@8.5.6) - postcss-merge-longhand: 5.1.7(postcss@8.5.6) - postcss-merge-rules: 5.1.4(postcss@8.5.6) - postcss-minify-font-values: 5.1.0(postcss@8.5.6) - postcss-minify-gradients: 5.1.1(postcss@8.5.6) - postcss-minify-params: 5.1.4(postcss@8.5.6) - postcss-minify-selectors: 5.2.1(postcss@8.5.6) - postcss-normalize-charset: 5.1.0(postcss@8.5.6) - postcss-normalize-display-values: 5.1.0(postcss@8.5.6) - postcss-normalize-positions: 5.1.1(postcss@8.5.6) - postcss-normalize-repeat-style: 5.1.1(postcss@8.5.6) - postcss-normalize-string: 5.1.0(postcss@8.5.6) - postcss-normalize-timing-functions: 5.1.0(postcss@8.5.6) - postcss-normalize-unicode: 5.1.1(postcss@8.5.6) - postcss-normalize-url: 5.1.0(postcss@8.5.6) - postcss-normalize-whitespace: 5.1.1(postcss@8.5.6) - postcss-ordered-values: 5.1.3(postcss@8.5.6) - postcss-reduce-initial: 5.1.2(postcss@8.5.6) - postcss-reduce-transforms: 5.1.0(postcss@8.5.6) - postcss-svgo: 5.1.0(postcss@8.5.6) - postcss-unique-selectors: 5.1.1(postcss@8.5.6) - - cssnano-utils@3.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - cssnano@3.10.0: - dependencies: - autoprefixer: 6.7.7 - decamelize: 1.2.0 - defined: 1.0.1 - has: 1.0.4 - object-assign: 4.1.1 - postcss: 5.2.18 - postcss-calc: 5.3.1 - postcss-colormin: 2.2.2 - postcss-convert-values: 2.6.1 - postcss-discard-comments: 2.0.4 - postcss-discard-duplicates: 2.1.0 - postcss-discard-empty: 2.1.0 - postcss-discard-overridden: 0.1.1 - postcss-discard-unused: 2.2.3 - postcss-filter-plugins: 2.0.3 - postcss-merge-idents: 2.1.7 - postcss-merge-longhand: 2.0.2 - postcss-merge-rules: 2.1.2 - postcss-minify-font-values: 1.0.5 - postcss-minify-gradients: 1.0.5 - postcss-minify-params: 1.2.2 - postcss-minify-selectors: 2.1.1 - postcss-normalize-charset: 1.1.1 - postcss-normalize-url: 3.0.8 - postcss-ordered-values: 2.2.3 - postcss-reduce-idents: 2.4.0 - postcss-reduce-initial: 1.0.1 - postcss-reduce-transforms: 1.0.4 - postcss-svgo: 2.1.6 - postcss-unique-selectors: 2.0.2 - postcss-value-parser: 3.3.1 - postcss-zindex: 2.2.0 - - cssnano@5.1.15(postcss@8.5.6): - dependencies: - cssnano-preset-default: 5.2.14(postcss@8.5.6) - lilconfig: 2.1.0 - postcss: 8.5.6 - yaml: 1.10.2 - - csso@2.3.2: - dependencies: - clap: 1.2.3 - source-map: 0.5.7 - - csso@4.2.0: - dependencies: - css-tree: 1.1.3 - - cssom@0.3.8: {} - - cssom@0.4.4: {} - - cssom@0.5.0: {} - - cssstyle@0.2.37: - dependencies: - cssom: 0.3.8 - - cssstyle@1.4.0: - dependencies: - cssom: 0.3.8 - - cssstyle@2.3.0: - dependencies: - cssom: 0.3.8 - - csstype@3.1.3: {} - - cubic2quad@1.2.1: {} - - currently-unhandled@0.4.1: - dependencies: - array-find-index: 1.0.2 - - cyclist@1.0.2: {} - - d@1.0.2: - dependencies: - es5-ext: 0.10.64 - type: 2.7.3 - - dagre@0.8.5: - dependencies: - graphlib: 2.1.8 - lodash: 4.17.21 - - damerau-levenshtein@1.0.8: {} - - dashdash@1.14.1: - dependencies: - assert-plus: 1.0.0 - - data-uri-to-buffer@4.0.1: {} - - data-urls@1.1.0: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 2.3.0 - whatwg-url: 7.1.0 - - data-urls@3.0.2: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - - data-view-buffer@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-offset@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - date-fns-tz@3.2.0(date-fns@4.1.0): - dependencies: - date-fns: 4.1.0 - - date-fns@4.1.0: {} - - date-format@4.0.14: {} - - debounce-promise@3.1.2: {} - - debug@2.6.9: - dependencies: - ms: 2.0.0 - - debug@3.2.7: - dependencies: - ms: 2.1.3 - - debug@4.3.1: - dependencies: - ms: 2.1.2 - - debug@4.4.1(supports-color@8.1.1): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decache@4.6.2: - dependencies: - callsite: 1.0.0 - - decamelize-keys@1.1.1: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - decamelize@1.2.0: {} - - decamelize@4.0.0: {} - - decamelize@5.0.1: {} - - decimal.js@10.5.0: {} - - decode-named-character-reference@1.2.0: - dependencies: - character-entities: 2.0.2 - - decode-uri-component@0.2.2: {} - - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - - dedent@0.7.0: {} - - dedent@1.6.0(babel-plugin-macros@3.1.0): - optionalDependencies: - babel-plugin-macros: 3.1.0 - - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - - deep-eql@5.0.2: {} - - deep-equal@2.2.3: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - es-get-iterator: 1.1.3 - get-intrinsic: 1.3.0 - is-arguments: 1.2.0 - is-array-buffer: 3.0.5 - is-date-object: 1.1.0 - is-regex: 1.2.1 - is-shared-array-buffer: 1.0.4 - isarray: 2.0.5 - object-is: 1.1.6 - object-keys: 1.1.1 - object.assign: 4.1.7 - regexp.prototype.flags: 1.5.4 - side-channel: 1.1.0 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.19 - - deep-extend@0.6.0: {} - - deep-is@0.1.4: {} - - deepmerge@4.3.1: {} - - default-browser-id@1.0.4: - dependencies: - bplist-parser: 0.1.1 - meow: 3.7.0 - untildify: 2.1.0 - optional: true - - default-browser-id@3.0.0: - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - - default-browser-id@5.0.0: {} - - default-browser@5.2.1: - dependencies: - bundle-name: 4.1.0 - default-browser-id: 5.0.0 - - default-require-extensions@1.0.0: - dependencies: - strip-bom: 2.0.0 - - defaults@1.0.4: - dependencies: - clone: 1.0.4 - - defer-to-connect@2.0.1: {} - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - define-lazy-prop@2.0.0: {} - - define-lazy-prop@3.0.0: {} - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - defined@1.0.1: {} - - defu@6.1.4: {} - - del-cli@5.1.0: - dependencies: - del: 7.1.0 - meow: 10.1.5 - - del-cli@6.0.0: - dependencies: - del: 8.0.0 - meow: 13.2.0 - - del@2.2.2: - dependencies: - globby: 5.0.0 - is-path-cwd: 1.0.0 - is-path-in-cwd: 1.0.1 - object-assign: 4.1.1 - pify: 2.3.0 - pinkie-promise: 2.0.1 - rimraf: 2.7.1 - - del@6.1.1: - dependencies: - globby: 11.1.0 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 4.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - - del@7.1.0: - dependencies: - globby: 13.2.2 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 3.0.0 - is-path-inside: 4.0.0 - p-map: 5.5.0 - rimraf: 3.0.2 - slash: 4.0.0 - - del@8.0.0: - 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 - slash: 5.1.0 - - delayed-stream@1.0.0: {} - - delegates@1.0.0: {} - - depd@1.1.2: {} - - depd@2.0.0: {} - - dequal@2.0.3: {} - - destroy@1.2.0: {} - - detab@2.0.4: - dependencies: - repeat-string: 1.6.1 - - detect-indent@4.0.0: - dependencies: - repeating: 2.0.1 - - detect-indent@6.1.0: {} - - detect-libc@1.0.3: - optional: true - - detect-libc@2.0.4: {} - - detect-newline@3.1.0: {} - - detect-node-es@1.1.0: {} - - detect-node@2.1.0: {} - - detect-package-manager@2.0.1: - dependencies: - execa: 5.1.1 - - detect-port-alt@1.1.6: - dependencies: - address: 1.2.2 - debug: 2.6.9 - transitivePeerDependencies: - - supports-color - - detect-port@1.6.1: - dependencies: - address: 1.2.2 - debug: 4.4.1(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - - dexie@4.0.11: {} - - diagnostic-channel-publishers@0.3.5(diagnostic-channel@0.2.0): - dependencies: - diagnostic-channel: 0.2.0 - - diagnostic-channel@0.2.0: - dependencies: - semver: 5.7.2 - - didyoumean@1.2.2: {} - - diff-sequences@25.2.6: {} - - diff-sequences@29.6.3: {} - - diff@3.5.0: {} - - diff@4.0.2: {} - - diff@5.2.0: {} - - diff@7.0.0: {} - - dir-glob@2.2.2: - dependencies: - path-type: 3.0.0 - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - dlv@1.1.3: {} - - dnd-core@16.0.1: - dependencies: - '@react-dnd/asap': 5.0.2 - '@react-dnd/invariant': 4.0.2 - redux: 4.2.1 - - dns-packet@5.6.1: - dependencies: - '@leichtgewicht/ip-codec': 2.0.5 - - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - - dom-accessibility-api@0.5.16: {} - - dom-accessibility-api@0.6.3: {} - - dom-converter@0.2.0: - dependencies: - utila: 0.4.0 - - dom-serializer@1.4.1: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - dom-urls@1.1.0: - dependencies: - urijs: 1.19.11 - - dom-walk@0.1.2: {} - - domelementtype@2.3.0: {} - - domexception@1.0.1: - dependencies: - webidl-conversions: 4.0.2 - - domexception@4.0.0: - dependencies: - webidl-conversions: 7.0.0 - - domhandler@4.3.1: - dependencies: - domelementtype: 2.3.0 - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - dompurify@3.2.4: - optionalDependencies: - '@types/trusted-types': 2.0.7 - - domutils@2.8.0: - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - - domutils@3.2.2: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - - dot-prop@4.2.1: - dependencies: - is-obj: 1.0.1 - - dotenv-expand@10.0.0: {} - - dotenv-expand@4.2.0: {} - - dotenv-expand@5.1.0: {} - - dotenv@16.3.2: {} - - dotenv@16.5.0: {} - - dotenv@16.6.1: {} - - dotenv@4.0.0: {} - - dotenv@8.6.0: {} - - drange@1.1.1: {} - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - - duplexer2@0.1.4: - dependencies: - readable-stream: 2.3.8 - - duplexer3@0.1.5: {} - - duplexer@0.1.2: {} - - duplexify@3.7.1: - dependencies: - end-of-stream: 1.4.5 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.3 - - eastasianwidth@0.2.0: {} - - ecc-jsbn@0.1.2: - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - - ecdsa-sig-formatter@1.0.11: - dependencies: - safe-buffer: 5.2.1 - - editions@6.21.0: - dependencies: - version-range: 4.14.0 - - ee-first@1.1.1: {} - - ejs@3.1.10: - dependencies: - jake: 10.9.2 - - electron-to-chromium@1.5.171: {} - - electron-to-chromium@1.5.185: {} - - email-addresses@5.0.0: {} - - emitter-listener@1.1.2: - dependencies: - shimmer: 1.2.1 - - emittery@0.13.1: {} - - emoji-regex@10.4.0: {} - - emoji-regex@7.0.3: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - emojis-list@2.1.0: {} - - emojis-list@3.0.0: {} - - enabled@2.0.0: {} - - encodeurl@1.0.2: {} - - encodeurl@2.0.0: {} - - encoding-sniffer@0.2.1: - dependencies: - iconv-lite: 0.6.3 - whatwg-encoding: 3.1.1 - - encoding@0.1.13: - dependencies: - iconv-lite: 0.6.3 - optional: true - - end-of-stream@1.4.5: - dependencies: - once: 1.4.0 - - endent@2.1.0: - dependencies: - dedent: 0.7.0 - fast-json-parse: 1.0.3 - objectorarray: 1.0.5 - - enhanced-resolve@3.4.1: - dependencies: - graceful-fs: 4.2.11 - memory-fs: 0.4.1 - object-assign: 4.1.1 - tapable: 0.2.9 - - enhanced-resolve@5.18.1: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.2 - - enhanced-resolve@5.18.2: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.2 - - enquirer@2.4.1: - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - - entities@2.1.0: {} - - entities@2.2.0: {} - - entities@4.5.0: {} - - entities@6.0.1: {} - - env-paths@2.2.1: {} - - envinfo@7.14.0: {} - - environment@1.1.0: {} - - err-code@1.1.2: {} - - err-code@2.0.3: {} - - errno@0.1.8: - dependencies: - prr: 1.0.1 - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - error-stack-parser@2.1.4: - dependencies: - stackframe: 1.3.4 - - es-abstract@1.24.0: - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.0 - function.prototype.name: 1.1.8 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-negative-zero: 2.0.3 - is-regex: 1.2.1 - is-set: 2.0.3 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.1 - math-intrinsics: 1.1.0 - object-inspect: 1.13.4 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.1 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - stop-iteration-iterator: 1.1.0 - string.prototype.trim: 1.2.10 - string.prototype.trimend: 1.0.9 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.7 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.19 - - es-array-method-boxes-properly@1.0.0: {} - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-get-iterator@1.1.3: - dependencies: - call-bind: 1.0.8 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - is-arguments: 1.2.0 - is-map: 2.0.3 - is-set: 2.0.3 - is-string: 1.1.1 - isarray: 2.0.5 - stop-iteration-iterator: 1.1.0 - - es-iterator-helpers@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-set-tostringtag: 2.1.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - iterator.prototype: 1.1.5 - safe-array-concat: 1.1.3 - - es-module-lexer@1.7.0: {} - - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - es-shim-unscopables@1.1.0: - dependencies: - hasown: 2.0.2 - - es-to-primitive@1.3.0: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - - es-toolkit@1.39.7: {} - - es5-ext@0.10.64: - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - esniff: 2.0.1 - next-tick: 1.1.0 - - es5-shim@4.6.7: {} - - es6-iterator@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-symbol: 3.1.4 - - es6-promise@4.2.8: {} - - es6-promisify@6.1.1: {} - - es6-shim@0.35.8: {} - - es6-symbol@3.1.4: - dependencies: - d: 1.0.2 - ext: 1.7.0 - - es6-weak-map@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - - esbuild-plugin-alias@0.2.1: {} - - esbuild-register@3.6.0(esbuild@0.25.5): - dependencies: - debug: 4.4.1(supports-color@8.1.1) - esbuild: 0.25.5 - transitivePeerDependencies: - - supports-color - - esbuild-register@3.6.0(esbuild@0.25.6): - dependencies: - debug: 4.4.1(supports-color@8.1.1) - esbuild: 0.25.6 - transitivePeerDependencies: - - supports-color - - esbuild@0.25.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.5 - '@esbuild/android-arm': 0.25.5 - '@esbuild/android-arm64': 0.25.5 - '@esbuild/android-x64': 0.25.5 - '@esbuild/darwin-arm64': 0.25.5 - '@esbuild/darwin-x64': 0.25.5 - '@esbuild/freebsd-arm64': 0.25.5 - '@esbuild/freebsd-x64': 0.25.5 - '@esbuild/linux-arm': 0.25.5 - '@esbuild/linux-arm64': 0.25.5 - '@esbuild/linux-ia32': 0.25.5 - '@esbuild/linux-loong64': 0.25.5 - '@esbuild/linux-mips64el': 0.25.5 - '@esbuild/linux-ppc64': 0.25.5 - '@esbuild/linux-riscv64': 0.25.5 - '@esbuild/linux-s390x': 0.25.5 - '@esbuild/linux-x64': 0.25.5 - '@esbuild/netbsd-arm64': 0.25.5 - '@esbuild/netbsd-x64': 0.25.5 - '@esbuild/openbsd-arm64': 0.25.5 - '@esbuild/openbsd-x64': 0.25.5 - '@esbuild/sunos-x64': 0.25.5 - '@esbuild/win32-arm64': 0.25.5 - '@esbuild/win32-ia32': 0.25.5 - '@esbuild/win32-x64': 0.25.5 - - esbuild@0.25.6: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.6 - '@esbuild/android-arm': 0.25.6 - '@esbuild/android-arm64': 0.25.6 - '@esbuild/android-x64': 0.25.6 - '@esbuild/darwin-arm64': 0.25.6 - '@esbuild/darwin-x64': 0.25.6 - '@esbuild/freebsd-arm64': 0.25.6 - '@esbuild/freebsd-x64': 0.25.6 - '@esbuild/linux-arm': 0.25.6 - '@esbuild/linux-arm64': 0.25.6 - '@esbuild/linux-ia32': 0.25.6 - '@esbuild/linux-loong64': 0.25.6 - '@esbuild/linux-mips64el': 0.25.6 - '@esbuild/linux-ppc64': 0.25.6 - '@esbuild/linux-riscv64': 0.25.6 - '@esbuild/linux-s390x': 0.25.6 - '@esbuild/linux-x64': 0.25.6 - '@esbuild/netbsd-arm64': 0.25.6 - '@esbuild/netbsd-x64': 0.25.6 - '@esbuild/openbsd-arm64': 0.25.6 - '@esbuild/openbsd-x64': 0.25.6 - '@esbuild/openharmony-arm64': 0.25.6 - '@esbuild/sunos-x64': 0.25.6 - '@esbuild/win32-arm64': 0.25.6 - '@esbuild/win32-ia32': 0.25.6 - '@esbuild/win32-x64': 0.25.6 - - escalade@3.2.0: {} - - escape-html@1.0.3: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@2.0.0: {} - - escape-string-regexp@4.0.0: {} - - escape-string-regexp@5.0.0: {} - - escodegen@1.14.3: - dependencies: - esprima: 4.0.1 - estraverse: 4.3.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - - escodegen@1.8.1: - dependencies: - esprima: 2.7.3 - estraverse: 1.9.3 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.2.0 - - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - - eslint-config-prettier@6.15.0(eslint@6.8.0): - dependencies: - eslint: 6.8.0 - get-stdin: 6.0.0 - - eslint-config-react-app@5.2.1(@typescript-eslint/eslint-plugin@2.34.0(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@6.8.0)(typescript@3.9.10))(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(babel-eslint@10.1.0(eslint@6.8.0))(eslint-plugin-flowtype@3.13.0(eslint@6.8.0))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@6.8.0))(eslint-plugin-jsx-a11y@6.10.2(eslint@6.8.0))(eslint-plugin-react-hooks@2.5.1(eslint@6.8.0))(eslint-plugin-react@7.37.5(eslint@6.8.0))(eslint@6.8.0)(typescript@3.9.10): - dependencies: - '@typescript-eslint/eslint-plugin': 2.34.0(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@6.8.0)(typescript@3.9.10) - '@typescript-eslint/parser': 2.34.0(eslint@6.8.0)(typescript@3.9.10) - babel-eslint: 10.1.0(eslint@6.8.0) - confusing-browser-globals: 1.0.11 - eslint: 6.8.0 - eslint-plugin-flowtype: 3.13.0(eslint@6.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@6.8.0) - eslint-plugin-jsx-a11y: 6.10.2(eslint@6.8.0) - eslint-plugin-react: 7.37.5(eslint@6.8.0) - eslint-plugin-react-hooks: 2.5.1(eslint@6.8.0) - optionalDependencies: - typescript: 3.9.10 - - eslint-import-resolver-node@0.3.9: - dependencies: - debug: 3.2.7 - is-core-module: 2.16.1 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.1(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@6.8.0): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 2.34.0(eslint@6.8.0)(typescript@3.9.10) - eslint: 6.8.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-plugin-flowtype@3.13.0(eslint@6.8.0): - dependencies: - eslint: 6.8.0 - lodash: 4.17.21 - - eslint-plugin-import@2.32.0(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@6.8.0): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 6.8.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@6.8.0) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 2.34.0(eslint@6.8.0)(typescript@3.9.10) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-jsx-a11y@6.10.2(eslint@6.8.0): - dependencies: - aria-query: 5.3.2 - array-includes: 3.1.9 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.10.3 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 6.8.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - - eslint-plugin-prettier@3.4.1(eslint-config-prettier@6.15.0(eslint@6.8.0))(eslint@6.8.0)(prettier@1.19.1): - dependencies: - eslint: 6.8.0 - prettier: 1.19.1 - prettier-linter-helpers: 1.0.0 - optionalDependencies: - eslint-config-prettier: 6.15.0(eslint@6.8.0) - - eslint-plugin-react-hooks@2.5.1(eslint@6.8.0): - dependencies: - eslint: 6.8.0 - - eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - - eslint-plugin-react-hooks@5.2.0(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - - eslint-plugin-react-hooks@5.2.0(eslint@9.26.0(jiti@2.4.2)): - dependencies: - eslint: 9.26.0(jiti@2.4.2) - - eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.4.2)): - dependencies: - eslint: 9.27.0(jiti@2.4.2) - - eslint-plugin-react-refresh@0.4.20(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - - eslint-plugin-react-refresh@0.4.20(eslint@9.27.0(jiti@2.4.2)): - dependencies: - eslint: 9.27.0(jiti@2.4.2) - - eslint-plugin-react@7.37.5(eslint@6.8.0): - dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.2.1 - eslint: 6.8.0 - estraverse: 5.3.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - - eslint-plugin-react@7.37.5(eslint@8.57.1): - dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.2.1 - eslint: 8.57.1 - estraverse: 5.3.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - - eslint-plugin-storybook@9.0.12(eslint@8.57.1)(storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2))(typescript@5.8.3): - dependencies: - '@typescript-eslint/utils': 8.33.1(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 - storybook: 9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2) - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)): - dependencies: - eslint: 9.27.0(jiti@2.4.2) - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(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.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2)): - dependencies: - eslint: 9.26.0(jiti@2.4.2) - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(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.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)): - dependencies: - eslint: 9.27.0(jiti@2.4.2) - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.33.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-scope@8.4.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-utils@1.4.3: - dependencies: - eslint-visitor-keys: 1.3.0 - - eslint-utils@2.1.0: - dependencies: - eslint-visitor-keys: 1.3.0 - - eslint-visitor-keys@1.3.0: {} - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.1: {} - - eslint@6.8.0: - dependencies: - '@babel/code-frame': 7.27.1 - ajv: 6.12.6 - chalk: 2.4.2 - cross-spawn: 6.0.6 - debug: 4.4.1(supports-color@8.1.1) - doctrine: 3.0.0 - eslint-scope: 5.1.1 - eslint-utils: 1.4.3 - eslint-visitor-keys: 1.3.0 - espree: 6.2.1 - esquery: 1.6.0 - esutils: 2.0.3 - file-entry-cache: 5.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 5.1.2 - globals: 12.4.0 - ignore: 4.0.6 - import-fresh: 3.3.1 - imurmurhash: 0.1.4 - inquirer: 7.3.3 - is-glob: 4.0.3 - js-yaml: 3.14.1 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.3.0 - lodash: 4.17.21 - minimatch: 3.1.2 - mkdirp: 0.5.6 - natural-compare: 1.4.0 - optionator: 0.8.3 - progress: 2.0.3 - regexpp: 2.0.1 - semver: 6.3.1 - strip-ansi: 5.2.0 - strip-json-comments: 3.1.1 - table: 5.4.6 - text-table: 0.2.0 - v8-compile-cache: 2.4.0 - transitivePeerDependencies: - - supports-color - - eslint@8.57.1: - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.3.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.1(supports-color@8.1.1) - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - eslint@9.26.0(jiti@2.4.2): - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - '@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.3 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@modelcontextprotocol/sdk': 1.13.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) - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - zod: 3.25.67 - optionalDependencies: - jiti: 2.4.2 - transitivePeerDependencies: - - supports-color - - eslint@9.27.0(jiti@2.4.2): - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - '@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.3 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@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) - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.4.2 - transitivePeerDependencies: - - supports-color - - esniff@2.0.1: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - event-emitter: 0.3.5 - type: 2.7.3 - - espree@10.4.0: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 - - espree@6.2.1: - dependencies: - acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) - eslint-visitor-keys: 1.3.0 - - espree@9.6.1: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 3.4.3 - - esprima@2.7.3: {} - - esprima@4.0.1: {} - - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@1.9.3: {} - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - - estree-to-babel@3.2.1: - dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 - c8: 7.14.0 - transitivePeerDependencies: - - supports-color - - estree-util-is-identifier-name@3.0.0: {} - - estree-walker@0.2.1: {} - - estree-walker@0.6.1: {} - - estree-walker@1.0.1: {} - - estree-walker@2.0.2: {} - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.8 - - esutils@2.0.3: {} - - etag@1.8.1: {} - - event-emitter@0.3.5: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - - event-target-shim@5.0.1: {} - - eventemitter3@4.0.7: {} - - eventemitter3@5.0.1: {} - - events@3.3.0: {} - - eventsource-parser@3.0.2: {} - - eventsource@0.1.6: - dependencies: - original: 1.0.2 - - eventsource@3.0.7: - dependencies: - eventsource-parser: 3.0.2 - - exec-sh@0.2.2: - dependencies: - merge: 1.2.1 - - exec-sh@0.3.6: {} - - execa@0.7.0: - dependencies: - cross-spawn: 5.1.0 - get-stream: 3.0.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - - execa@1.0.0: - dependencies: - cross-spawn: 6.0.6 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - - execa@3.4.0: - dependencies: - cross-spawn: 7.0.6 - get-stream: 5.2.0 - human-signals: 1.1.1 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - p-finally: 2.0.1 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - execa@4.1.0: - dependencies: - cross-spawn: 7.0.6 - get-stream: 5.2.0 - human-signals: 1.1.1 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - execa@5.1.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - execa@8.0.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - - exenv-es6@1.1.1: {} - - exit@0.1.2: {} - - expand-template@2.0.3: {} - - expand-tilde@2.0.2: - dependencies: - homedir-polyfill: 1.0.3 - - expect@22.4.3: - dependencies: - ansi-styles: 3.2.1 - jest-diff: 22.4.3 - jest-get-type: 22.4.3 - jest-matcher-utils: 22.4.3 - jest-message-util: 22.4.3 - jest-regex-util: 22.4.3 - - expect@25.5.0: - dependencies: - '@jest/types': 25.5.0 - ansi-styles: 4.3.0 - jest-get-type: 25.2.6 - jest-matcher-utils: 25.5.0 - jest-message-util: 25.5.0 - jest-regex-util: 25.2.6 - - expect@29.7.0: - dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - - exponential-backoff@3.1.2: {} - - express-rate-limit@7.5.1(express@5.1.0): - dependencies: - express: 5.1.0 - - express@4.21.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.12 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - express@5.1.0: - dependencies: - accepts: 2.0.0 - body-parser: 2.2.0 - content-disposition: 1.0.0 - content-type: 1.0.5 - cookie: 0.7.2 - cookie-signature: 1.2.2 - debug: 4.4.1(supports-color@8.1.1) - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 2.1.0 - fresh: 2.0.0 - http-errors: 2.0.0 - merge-descriptors: 2.0.0 - mime-types: 3.0.1 - on-finished: 2.4.1 - once: 1.4.0 - parseurl: 1.3.3 - proxy-addr: 2.0.7 - qs: 6.14.0 - range-parser: 1.2.1 - router: 2.2.0 - send: 1.2.0 - serve-static: 2.2.0 - statuses: 2.0.2 - type-is: 2.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - ext@1.7.0: - dependencies: - type: 2.7.3 - - extend-shallow@3.0.2: - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - - extend@3.0.2: {} - - external-editor@2.2.0: - dependencies: - chardet: 0.4.2 - iconv-lite: 0.4.24 - tmp: 0.0.33 - - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - - extract-text-webpack-plugin@3.0.2(webpack@5.100.2): - dependencies: - async: 2.6.4 - loader-utils: 1.4.2 - schema-utils: 0.3.0 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-sources: 1.4.3 - - extract-zip@1.7.0: - dependencies: - concat-stream: 1.6.2 - debug: 2.6.9 - mkdirp: 0.5.6 - yauzl: 2.10.0 - transitivePeerDependencies: - - supports-color - - extsprintf@1.3.0: {} - - fantasticon@3.0.0: - dependencies: - case: 1.6.3 - cli-color: 2.0.4 - commander: 12.1.0 - glob: 10.4.5 - handlebars: 4.7.8 - slugify: 1.6.6 - svg2ttf: 6.0.3 - svgicons2svgfont: 12.0.0 - ttf2eot: 3.1.0 - ttf2woff: 3.0.0 - ttf2woff2: 5.0.0 - transitivePeerDependencies: - - bluebird - - supports-color - - fast-deep-equal@1.1.0: {} - - fast-deep-equal@3.1.3: {} - - fast-diff@1.3.0: {} - - fast-glob@2.2.7: - dependencies: - '@mrmlnc/readdir-enhanced': 2.2.1 - '@nodelib/fs.stat': 1.1.3 - glob-parent: 3.1.0 - is-glob: 4.0.3 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-parse@1.0.3: {} - - fast-json-patch@3.1.1: {} - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fast-safe-stringify@2.1.1: {} - - fast-uri@3.0.6: {} - - fast-xml-parser@4.4.1: - dependencies: - strnum: 1.1.2 - - fast-xml-parser@5.2.5: - dependencies: - strnum: 2.1.1 - - fastest-levenshtein@1.0.16: {} - - fastparse@1.1.2: {} - - fastq@1.19.1: - dependencies: - reusify: 1.1.0 - - fault@1.0.4: - dependencies: - format: 0.2.2 - - faye-websocket@0.11.4: - dependencies: - websocket-driver: 0.7.4 - - fb-watchman@1.9.2: - dependencies: - bser: 1.0.2 - - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - - fbemitter@3.0.0(encoding@0.1.13): - dependencies: - fbjs: 3.0.5(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - fbjs-css-vars@1.0.2: {} - - fbjs@3.0.5(encoding@0.1.13): - dependencies: - cross-fetch: 3.2.0(encoding@0.1.13) - fbjs-css-vars: 1.0.2 - loose-envify: 1.4.0 - object-assign: 4.1.1 - promise: 7.3.1 - setimmediate: 1.0.5 - ua-parser-js: 1.0.40 - transitivePeerDependencies: - - encoding - - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - - fdir@6.4.6(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - - fecha@4.2.3: {} - - fetch-blob@3.2.0: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - - fetch-retry@5.0.6: {} - - figures@2.0.0: - dependencies: - escape-string-regexp: 1.0.5 - - figures@3.2.0: - dependencies: - escape-string-regexp: 1.0.5 - - file-entry-cache@10.1.1: - dependencies: - flat-cache: 6.1.10 - - file-entry-cache@5.0.1: - dependencies: - flat-cache: 2.0.1 - - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - file-js@0.3.0: - dependencies: - bluebird: 3.7.2 - minimatch: 3.1.2 - proper-lockfile: 1.2.0 - - file-loader@1.1.5(webpack@5.100.2): - dependencies: - loader-utils: 1.4.2 - schema-utils: 0.3.0 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - - file-loader@6.2.0(webpack@5.100.2): - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - - file-system-cache@1.1.0: - dependencies: - fs-extra: 10.1.0 - ramda: 0.28.0 - - file-system-cache@2.3.0: - dependencies: - fs-extra: 11.1.1 - ramda: 0.29.0 - - file-type@18.7.0: - dependencies: - readable-web-to-node-stream: 3.0.4 - strtok3: 7.1.1 - token-types: 5.0.1 - - file-uri-to-path@1.0.0: {} - - file-uri-to-path@2.0.0: {} - - filehound@1.17.6: - dependencies: - bluebird: 3.7.2 - file-js: 0.3.0 - lodash: 4.17.21 - minimatch: 5.1.6 - moment: 2.30.1 - unit-compare: 1.0.1 - - filelist@1.0.4: - dependencies: - minimatch: 5.1.6 - - filename-reserved-regex@2.0.0: {} - - filenamify@4.3.0: - dependencies: - filename-reserved-regex: 2.0.0 - strip-outer: 1.0.1 - trim-repeated: 1.0.0 - - fileset@2.0.3: - dependencies: - glob: 7.2.3 - minimatch: 3.1.2 - - filesize@3.5.11: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - finalhandler@2.1.0: - dependencies: - debug: 4.4.1(supports-color@8.1.1) - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.2 - transitivePeerDependencies: - - supports-color - - find-cache-dir@1.0.0: - dependencies: - commondir: 1.0.1 - make-dir: 1.3.0 - pkg-dir: 2.0.0 - - find-cache-dir@2.1.0: - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - - find-cache-dir@3.3.2: - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - - find-cache-dir@4.0.0: - dependencies: - common-path-prefix: 3.0.0 - pkg-dir: 7.0.0 - - find-index@0.1.1: {} - - find-process@1.4.10: - dependencies: - chalk: 4.1.2 - commander: 12.1.0 - loglevel: 1.9.2 - - find-root@1.1.0: {} - - find-up@1.1.2: - dependencies: - path-exists: 2.1.0 - pinkie-promise: 2.0.1 - - find-up@2.1.0: - dependencies: - locate-path: 2.0.0 - - find-up@3.0.0: - dependencies: - locate-path: 3.0.0 - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - find-up@6.3.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - - find-up@7.0.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - unicorn-magic: 0.1.0 - - flat-cache@2.0.1: - dependencies: - flatted: 2.0.2 - rimraf: 2.6.3 - write: 1.0.3 - - flat-cache@3.2.0: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - rimraf: 3.0.2 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - - flat-cache@6.1.10: - dependencies: - cacheable: 1.10.0 - flatted: 3.3.3 - hookified: 1.9.1 - - flat@5.0.2: {} - - flatted@2.0.2: {} - - flatted@3.3.3: {} - - flatten@1.0.3: {} - - flow-parser@0.275.0: {} - - flush-write-stream@1.1.1: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - - flux@4.0.4(encoding@0.1.13)(react@18.2.0): - dependencies: - fbemitter: 3.0.0(encoding@0.1.13) - fbjs: 3.0.5(encoding@0.1.13) - react: 18.2.0 - transitivePeerDependencies: - - encoding - - fn.name@1.1.0: {} - - follow-redirects@1.15.9: {} - - for-each@0.3.5: - dependencies: - is-callable: 1.2.7 - - foreground-child@2.0.0: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 3.0.7 - - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - forever-agent@0.6.1: {} - - fork-ts-checker-webpack-plugin@0.2.10(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2): - dependencies: - babel-code-frame: 6.26.0 - chalk: 1.1.3 - chokidar: 1.7.0 - lodash.endswith: 4.2.1 - lodash.isfunction: 3.0.9 - lodash.isstring: 4.0.1 - lodash.startswith: 4.2.1 - minimatch: 3.1.2 - typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@4.10.0) - optionalDependencies: - eslint: 9.26.0(jiti@2.4.2) - - fork-ts-checker-webpack-plugin@0.2.10(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2): - dependencies: - babel-code-frame: 6.26.0 - chalk: 1.1.3 - chokidar: 1.7.0 - lodash.endswith: 4.2.1 - lodash.isfunction: 3.0.9 - lodash.isstring: 4.0.1 - lodash.startswith: 4.2.1 - minimatch: 3.1.2 - typescript: 5.8.3 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - optionalDependencies: - eslint: 9.27.0(jiti@2.4.2) - - fork-ts-checker-webpack-plugin@4.1.6(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2): - dependencies: - '@babel/code-frame': 7.27.1 - chalk: 2.4.2 - micromatch: 4.0.8 - minimatch: 3.1.2 - semver: 5.7.2 - tapable: 1.1.3 - typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@4.10.0) - worker-rpc: 0.1.1 - optionalDependencies: - eslint: 9.26.0(jiti@2.4.2) - - fork-ts-checker-webpack-plugin@4.1.6(eslint@9.27.0(jiti@2.4.2))(typescript@4.9.5)(webpack@5.100.2): - dependencies: - '@babel/code-frame': 7.27.1 - chalk: 2.4.2 - micromatch: 4.0.8 - minimatch: 3.1.2 - semver: 5.7.2 - tapable: 1.1.3 - typescript: 4.9.5 - webpack: 5.100.2(webpack-cli@4.10.0) - worker-rpc: 0.1.1 - optionalDependencies: - eslint: 9.27.0(jiti@2.4.2) - - fork-ts-checker-webpack-plugin@4.1.6(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2): - dependencies: - '@babel/code-frame': 7.27.1 - chalk: 2.4.2 - micromatch: 4.0.8 - minimatch: 3.1.2 - semver: 5.7.2 - tapable: 1.1.3 - typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@4.10.0) - worker-rpc: 0.1.1 - optionalDependencies: - eslint: 9.27.0(jiti@2.4.2) - - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2): - 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.2 - tapable: 1.1.3 - typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@4.10.0) - optionalDependencies: - eslint: 9.26.0(jiti@2.4.2) - - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.27.0(jiti@2.4.2))(typescript@4.9.5)(webpack@5.100.2): - 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.2 - tapable: 1.1.3 - typescript: 4.9.5 - webpack: 5.100.2(webpack-cli@4.10.0) - optionalDependencies: - eslint: 9.27.0(jiti@2.4.2) - - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2): - 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.2 - tapable: 1.1.3 - typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@4.10.0) - optionalDependencies: - eslint: 9.27.0(jiti@2.4.2) - - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.3)(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)): - 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.2 - tapable: 2.2.2 - typescript: 5.8.3 - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.3)(webpack@5.100.2): - 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.2 - tapable: 2.2.2 - typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@6.0.1) - - fork-ts-checker-webpack-plugin@9.1.0(typescript@5.8.3)(webpack@5.100.2): - dependencies: - '@babel/code-frame': 7.27.1 - chalk: 4.1.2 - chokidar: 4.0.3 - cosmiconfig: 8.3.6(typescript@5.8.3) - 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.2 - tapable: 2.2.2 - typescript: 5.8.3 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - - form-data-encoder@2.1.4: {} - - form-data-encoder@4.1.0: {} - - form-data@4.0.4: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.2 - mime-types: 2.1.35 - - format@0.2.2: {} - - formdata-polyfill@4.0.10: - dependencies: - fetch-blob: 3.2.0 - - forwarded@0.2.0: {} - - fraction.js@4.3.7: {} - - framer-motion@6.5.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@motionone/dom': 10.12.0 - framesync: 6.0.1 - hey-listen: 1.0.8 - popmotion: 11.0.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - style-value-types: 5.0.0 - tslib: 2.8.1 - optionalDependencies: - '@emotion/is-prop-valid': 0.8.8 - - framesync@6.0.1: - dependencies: - tslib: 2.8.1 - - fresh@0.5.2: {} - - fresh@2.0.0: {} - - from2@2.3.0: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - - fs-constants@1.0.0: {} - - fs-extra@0.30.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 2.4.0 - klaw: 1.3.1 - path-is-absolute: 1.0.1 - rimraf: 2.7.1 - - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@11.1.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@11.2.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@11.3.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@3.0.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 3.0.1 - universalify: 0.1.2 - - fs-extra@4.0.3: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@9.1.0: - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - - fs-monkey@1.0.6: {} - - fs-write-stream-atomic@1.0.10: - dependencies: - graceful-fs: 4.2.11 - iferr: 0.1.5 - imurmurhash: 0.1.4 - readable-stream: 2.3.8 - - fs.realpath@1.0.0: {} - - fsevents@1.2.13: - dependencies: - bindings: 1.5.0 - nan: 2.22.2 - optional: true - - fsevents@2.3.2: - optional: true - - fsevents@2.3.3: - optional: true - - fstream@1.0.12: - dependencies: - graceful-fs: 4.2.11 - inherits: 2.0.4 - mkdirp: 0.5.6 - rimraf: 2.7.1 - - function-bind@1.1.2: {} - - function.prototype.name@1.1.8: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - functions-have-names: 1.2.3 - hasown: 2.0.2 - is-callable: 1.2.7 - - functional-red-black-tree@1.0.1: {} - - functions-have-names@1.2.3: {} - - gauge@2.7.4: - dependencies: - aproba: 1.2.0 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 1.0.2 - strip-ansi: 3.0.1 - wide-align: 1.1.5 - - gauge@3.0.2: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - - gauge@4.0.4: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - - gaze@1.1.3: - dependencies: - globule: 1.3.4 - - generic-names@4.0.0: - dependencies: - loader-utils: 3.3.1 - - gensync@1.0.0-beta.2: {} - - get-caller-file@1.0.3: {} - - get-caller-file@2.0.5: {} - - get-east-asian-width@1.3.0: {} - - get-func-name@2.0.2: {} - - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - - get-nonce@1.0.1: {} - - get-npm-tarball-url@2.1.0: {} - - get-package-type@0.1.0: {} - - get-port@5.1.1: {} - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - - get-stdin@4.0.1: {} - - get-stdin@6.0.0: {} - - get-stream@3.0.0: {} - - get-stream@4.1.0: - dependencies: - pump: 3.0.3 - - get-stream@5.2.0: - dependencies: - pump: 3.0.3 - - get-stream@6.0.1: {} - - get-stream@8.0.1: {} - - get-stream@9.0.1: - dependencies: - '@sec-ant/readable-stream': 0.4.1 - is-stream: 4.0.1 - - get-symbol-description@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - - get-them-args@1.3.2: {} - - get-value@3.0.1: - dependencies: - isobject: 3.0.1 - - getpass@0.1.7: - dependencies: - assert-plus: 1.0.0 - - gh-pages@6.3.0: - dependencies: - async: 3.2.6 - commander: 13.1.0 - email-addresses: 5.0.0 - filenamify: 4.3.0 - find-cache-dir: 3.3.2 - fs-extra: 11.3.0 - globby: 11.1.0 - - giget@1.2.5: - dependencies: - citty: 0.1.6 - consola: 3.4.2 - defu: 6.1.4 - node-fetch-native: 1.6.6 - nypm: 0.5.4 - pathe: 2.0.3 - tar: 6.2.1 - - github-from-package@0.0.0: {} - - github-slugger@1.5.0: {} - - glob-parent@2.0.0: - dependencies: - is-glob: 2.0.1 - - glob-parent@3.1.0: - dependencies: - is-glob: 3.1.0 - path-dirname: 1.0.2 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob-promise@3.4.0(glob@7.2.3): - dependencies: - '@types/glob': 8.1.0 - glob: 7.2.3 - - glob-to-regexp@0.3.0: {} - - glob-to-regexp@0.4.1: {} - - glob2base@0.0.12: - dependencies: - find-index: 0.1.1 - - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - glob@11.0.3: - dependencies: - foreground-child: 3.3.1 - jackspeak: 4.1.1 - minimatch: 10.0.3 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 - - glob@5.0.15: - dependencies: - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.1.7: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.0.8 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - - global-dirs@0.1.1: - dependencies: - ini: 1.3.8 - - global-modules@1.0.0: - dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - - global-modules@2.0.0: - dependencies: - global-prefix: 3.0.0 - - global-prefix@1.0.2: - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 - - global-prefix@3.0.0: - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - - global@4.4.0: - dependencies: - min-document: 2.19.0 - process: 0.11.10 - - globals@11.12.0: {} - - globals@12.4.0: - dependencies: - type-fest: 0.8.1 - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - - globals@14.0.0: {} - - globals@9.18.0: {} - - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 - - globalyzer@0.1.0: {} - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - - globby@13.2.2: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 4.0.0 - - globby@14.1.0: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 7.0.5 - path-type: 6.0.0 - slash: 5.1.0 - unicorn-magic: 0.3.0 - - globby@5.0.0: - dependencies: - array-union: 1.0.2 - arrify: 1.0.1 - glob: 7.2.3 - object-assign: 4.1.1 - pify: 2.3.0 - pinkie-promise: 2.0.1 - - globby@9.2.0: - dependencies: - '@types/glob': 7.2.0 - array-union: 1.0.2 - dir-glob: 2.2.2 - fast-glob: 2.2.7 - glob: 7.2.3 - ignore: 4.0.6 - pify: 4.0.1 - slash: 2.0.0 - - globjoin@0.1.4: {} - - globrex@0.1.2: {} - - globule@1.3.4: - dependencies: - glob: 7.1.7 - lodash: 4.17.21 - minimatch: 3.0.8 - - gopd@1.2.0: {} - - got@13.0.0: - dependencies: - '@sindresorhus/is': 5.6.0 - '@szmarczak/http-timer': 5.0.1 - cacheable-lookup: 7.0.0 - cacheable-request: 10.2.14 - decompress-response: 6.0.0 - form-data-encoder: 2.1.4 - get-stream: 6.0.1 - http2-wrapper: 2.2.1 - lowercase-keys: 3.0.0 - p-cancelable: 3.0.0 - responselike: 3.0.0 - - got@14.4.7: - dependencies: - '@sindresorhus/is': 7.0.2 - '@szmarczak/http-timer': 5.0.1 - cacheable-lookup: 7.0.0 - cacheable-request: 12.0.1 - decompress-response: 6.0.0 - form-data-encoder: 4.1.0 - http2-wrapper: 2.2.1 - lowercase-keys: 3.0.0 - p-cancelable: 4.0.1 - responselike: 3.0.0 - type-fest: 4.41.0 - - got@6.7.1: - dependencies: - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.3 - create-error-class: 3.0.2 - duplexer3: 0.1.5 - get-stream: 3.0.0 - is-redirect: 1.0.0 - is-retry-allowed: 1.2.0 - is-stream: 1.1.0 - lowercase-keys: 1.0.1 - safe-buffer: 5.2.1 - timed-out: 4.0.1 - unzip-response: 2.0.1 - url-parse-lax: 1.0.0 - - graceful-fs@4.2.11: {} - - 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): - dependencies: - graphql: 16.11.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - graphiql@3.7.0(@codemirror/language@6.11.1)(@types/node@24.0.14)(@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): - dependencies: - '@graphiql/react': 0.26.2(@codemirror/language@6.11.1)(@types/node@24.0.14)(@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 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@codemirror/language' - - '@types/node' - - '@types/react' - - '@types/react-dom' - - graphql-ws - - graphlib@2.1.8: - dependencies: - lodash: 4.17.21 - - graphql-language-service@5.4.0(graphql@16.11.0): - dependencies: - debounce-promise: 3.1.2 - graphql: 16.11.0 - nullthrows: 1.1.1 - vscode-languageserver-types: 3.17.5 - - graphql@16.11.0: {} - - growly@1.3.0: {} - - gunzip-maybe@1.4.2: - dependencies: - browserify-zlib: 0.1.4 - is-deflate: 1.0.0 - is-gzip: 1.0.0 - peek-stream: 1.1.3 - pumpify: 1.5.1 - through2: 2.0.5 - - gzip-size@3.0.0: - dependencies: - duplexer: 0.1.2 - - handle-thing@2.0.1: {} - - handlebars@4.7.8: - dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.19.3 - - har-schema@2.0.0: {} - - har-validator@5.1.5: - dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 - - hard-rejection@2.1.0: {} - - harmony-reflect@1.6.2: {} - - has-ansi@2.0.0: - dependencies: - ansi-regex: 2.1.1 - - has-bigints@1.1.0: {} - - has-flag@1.0.0: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - has-glob@1.0.0: - dependencies: - is-glob: 3.1.0 - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.1 - - has-proto@1.2.0: - dependencies: - dunder-proto: 1.0.1 - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - - has-unicode@2.0.1: {} - - has@1.0.4: {} - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hast-to-hyperscript@9.0.1: - dependencies: - '@types/unist': 2.0.11 - comma-separated-tokens: 1.0.8 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - style-to-object: 0.3.0 - unist-util-is: 4.1.0 - web-namespaces: 1.1.4 - - hast-util-from-parse5@6.0.1: - dependencies: - '@types/parse5': 5.0.3 - hastscript: 6.0.0 - property-information: 5.6.0 - vfile: 4.2.1 - vfile-location: 3.2.0 - web-namespaces: 1.1.4 - - hast-util-from-parse5@7.1.2: - dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.11 - hastscript: 7.2.0 - property-information: 6.5.0 - vfile: 5.3.7 - vfile-location: 4.1.0 - web-namespaces: 2.0.1 - - hast-util-from-parse5@8.0.3: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - devlop: 1.1.0 - hastscript: 9.0.1 - property-information: 7.1.0 - vfile: 6.0.3 - vfile-location: 5.0.3 - web-namespaces: 2.0.1 - - hast-util-parse-selector@2.2.5: {} - - hast-util-parse-selector@3.1.1: - dependencies: - '@types/hast': 2.3.10 - - hast-util-parse-selector@4.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-raw@6.0.1: - dependencies: - '@types/hast': 2.3.10 - hast-util-from-parse5: 6.0.1 - hast-util-to-parse5: 6.0.0 - html-void-elements: 1.0.5 - parse5: 6.0.1 - unist-util-position: 3.1.0 - vfile: 4.2.1 - web-namespaces: 1.1.4 - xtend: 4.0.2 - zwitch: 1.0.5 - - hast-util-raw@7.2.3: - dependencies: - '@types/hast': 2.3.10 - '@types/parse5': 6.0.3 - hast-util-from-parse5: 7.1.2 - hast-util-to-parse5: 7.1.0 - html-void-elements: 2.0.1 - parse5: 6.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - vfile: 5.3.7 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-raw@9.1.0: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - '@ungap/structured-clone': 1.3.0 - hast-util-from-parse5: 8.0.3 - hast-util-to-parse5: 8.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - parse5: 7.3.0 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-jsx-runtime@2.3.6: - dependencies: - '@types/estree': 1.0.8 - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.1.0 - space-separated-tokens: 2.0.2 - style-to-js: 1.1.17 - unist-util-position: 5.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - hast-util-to-parse5@6.0.0: - dependencies: - hast-to-hyperscript: 9.0.1 - property-information: 5.6.0 - web-namespaces: 1.1.4 - xtend: 4.0.2 - zwitch: 1.0.5 - - hast-util-to-parse5@7.1.0: - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 2.0.3 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-parse5@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-whitespace@2.0.1: {} - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hastscript@6.0.0: - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 1.0.8 - hast-util-parse-selector: 2.2.5 - property-information: 5.6.0 - space-separated-tokens: 1.1.5 - - hastscript@7.2.0: - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 3.1.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - - hastscript@9.0.1: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 7.1.0 - space-separated-tokens: 2.0.2 - - he@1.2.0: {} - - heap@0.2.5: {} - - hey-listen@1.0.8: {} - - highlight.js@10.7.3: {} - - highlight.js@11.11.1: {} - - highlightjs-vue@1.0.0: {} - - hoist-non-react-statics@3.3.2: - dependencies: - react-is: 16.13.1 - - home-or-tmp@2.0.0: - dependencies: - os-homedir: 1.0.2 - os-tmpdir: 1.0.2 - - homedir-polyfill@1.0.3: - dependencies: - parse-passwd: 1.0.0 - - hookified@1.9.1: {} - - hosted-git-info@2.8.9: {} - - hosted-git-info@4.1.0: - dependencies: - lru-cache: 6.0.0 - - hosted-git-info@7.0.2: - dependencies: - lru-cache: 10.4.3 - - hpack.js@2.1.6: - dependencies: - inherits: 2.0.4 - obuf: 1.1.2 - readable-stream: 2.3.8 - wbuf: 1.7.3 - - hpagent@1.2.0: {} - - html-comment-regex@1.1.2: {} - - html-encoding-sniffer@1.0.2: - dependencies: - whatwg-encoding: 1.0.5 - - html-encoding-sniffer@3.0.0: - dependencies: - whatwg-encoding: 2.0.0 - - html-entities@2.6.0: {} - - html-escaper@2.0.2: {} - - html-minifier-terser@5.1.1: - dependencies: - camel-case: 4.1.2 - clean-css: 4.2.4 - commander: 4.1.1 - he: 1.2.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 4.8.1 - - html-minifier-terser@6.1.0: - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 8.3.0 - he: 1.2.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.43.1 - - html-minifier@3.5.21: - dependencies: - camel-case: 3.0.0 - clean-css: 4.2.4 - commander: 2.17.1 - he: 1.2.0 - param-case: 2.1.1 - relateurl: 0.2.7 - uglify-js: 3.4.10 - - html-tags@3.3.1: {} - - html-to-image@1.11.11: {} - - html-to-image@1.11.13: {} - - html-url-attributes@3.0.1: {} - - html-void-elements@1.0.5: {} - - html-void-elements@2.0.1: {} - - html-void-elements@3.0.0: {} - - html-webpack-plugin@2.29.0(webpack@5.100.2): - dependencies: - bluebird: 3.7.2 - html-minifier: 3.5.21 - loader-utils: 0.2.17 - lodash: 4.17.21 - pretty-error: 2.1.2 - toposort: 1.0.7 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - - html-webpack-plugin@4.5.2(webpack@5.100.2): - 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.100.2(webpack-cli@4.10.0) - - html-webpack-plugin@5.6.3(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)): - 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 - optionalDependencies: - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - - html-webpack-plugin@5.6.3(webpack@5.100.2): - 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 - optionalDependencies: - webpack: 5.100.2(webpack-cli@4.10.0) - - htmlparser2@10.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 6.0.1 - - htmlparser2@6.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 2.2.0 - - http-cache-semantics@4.2.0: {} - - http-deceiver@1.2.7: {} - - http-errors@1.6.3: - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: 1.5.0 - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - http-parser-js@0.5.10: {} - - http-proxy-agent@4.0.1: - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - http-proxy-agent@5.0.0: - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - http-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.3 - debug: 4.4.1(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - http-proxy-middleware@2.0.9(@types/express@4.17.23): - dependencies: - '@types/http-proxy': 1.17.16 - 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 - transitivePeerDependencies: - - debug - - http-proxy@1.18.1: - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.9 - requires-port: 1.0.0 - transitivePeerDependencies: - - debug - - http-server@14.1.1: - dependencies: - basic-auth: 2.0.1 - chalk: 4.1.2 - corser: 2.0.1 - he: 1.2.0 - html-encoding-sniffer: 3.0.0 - http-proxy: 1.18.1 - mime: 1.6.0 - minimist: 1.2.8 - opener: 1.5.2 - portfinder: 1.0.37 - secure-compare: 3.0.1 - union: 0.5.0 - url-join: 4.0.1 - transitivePeerDependencies: - - debug - - supports-color - - http-signature@1.2.0: - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.18.0 - - http2-wrapper@2.2.1: - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - - https-proxy-agent@4.0.0: - dependencies: - agent-base: 5.1.1 - debug: 4.4.1(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) - transitivePeerDependencies: - - supports-color - - https-proxy-agent@7.0.6: - dependencies: - agent-base: 7.1.3 - debug: 4.4.1(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - human-signals@1.1.1: {} - - human-signals@2.1.0: {} - - human-signals@5.0.0: {} - - humanize-duration@3.33.0: {} - - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - - husky@9.1.7: {} - - hyperdyperid@1.2.0: {} - - icon-font-generator@2.1.11: - dependencies: - colors: 1.4.0 - glob: 7.2.3 - minimist: 1.2.8 - webfonts-generator: 0.4.0 - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - - icss-replace-symbols@1.1.0: {} - - icss-utils@2.1.0: - dependencies: - postcss: 6.0.23 - - icss-utils@4.1.1: - dependencies: - postcss: 7.0.39 - - icss-utils@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - identity-obj-proxy@3.0.0: - dependencies: - harmony-reflect: 1.6.2 - - ieee754@1.2.1: {} - - iferr@0.1.5: {} - - ignore@4.0.6: {} - - ignore@5.3.2: {} - - ignore@7.0.5: {} - - immediate@3.0.6: {} - - immer@9.0.21: - optional: true - - immutable@3.8.2: {} - - immutable@5.1.3: {} - - import-cwd@3.0.0: - dependencies: - import-from: 3.0.0 - - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - import-from@3.0.0: - dependencies: - resolve-from: 5.0.0 - - import-lazy@2.1.0: {} - - import-local@3.2.0: - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - - imurmurhash@0.1.4: {} - - indent-string@2.1.0: - dependencies: - repeating: 2.0.1 - - indent-string@4.0.0: {} - - indent-string@5.0.0: {} - - indexes-of@1.0.1: {} - - infer-owner@1.0.4: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.3: {} - - inherits@2.0.4: {} - - ini@1.3.8: {} - - inline-style-parser@0.1.1: {} - - inline-style-parser@0.2.4: {} - - inquirer@3.3.0: - dependencies: - ansi-escapes: 3.2.0 - chalk: 2.4.2 - cli-cursor: 2.1.0 - cli-width: 2.2.1 - external-editor: 2.2.0 - figures: 2.0.0 - lodash: 4.17.21 - mute-stream: 0.0.7 - run-async: 2.4.1 - rx-lite: 4.0.8 - rx-lite-aggregates: 4.0.8 - string-width: 2.1.1 - strip-ansi: 4.0.0 - through: 2.3.8 - - inquirer@7.3.3: - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - - internal-slot@1.1.0: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.1.0 - - interpret@1.4.0: {} - - interpret@2.2.0: {} - - interpret@3.1.1: {} - - intl-messageformat@10.7.16: - dependencies: - '@formatjs/ecma402-abstract': 2.3.4 - '@formatjs/fast-memoize': 2.2.7 - '@formatjs/icu-messageformat-parser': 2.11.2 - tslib: 2.8.1 - - invariant@2.2.4: - dependencies: - loose-envify: 1.4.0 - - invert-kv@1.0.0: {} - - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - - ip-regex@2.1.0: {} - - ip-regex@4.3.0: {} - - ip@2.0.1: {} - - ipaddr.js@1.9.1: {} - - ipaddr.js@2.2.0: {} - - is-absolute-url@2.1.0: {} - - is-absolute-url@3.0.3: {} - - is-alphabetical@1.0.4: {} - - is-alphabetical@2.0.1: {} - - is-alphanumerical@1.0.4: - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - - is-alphanumerical@2.0.1: - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - - is-arguments@1.2.0: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-array-buffer@3.0.5: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - - is-arrayish@0.2.1: {} - - is-arrayish@0.3.2: {} - - is-async-function@2.1.1: - dependencies: - async-function: 1.0.0 - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-bigint@1.1.0: - dependencies: - has-bigints: 1.1.0 - - is-binary-path@1.0.1: - dependencies: - binary-extensions: 1.13.1 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-boolean-object@1.2.2: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-buffer@2.0.5: {} - - is-builtin-module@1.0.0: - dependencies: - builtin-modules: 1.1.1 - - is-callable@1.2.7: {} - - is-ci@1.2.1: - dependencies: - ci-info: 1.6.0 - - is-ci@2.0.0: - dependencies: - ci-info: 2.0.0 - - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - - is-data-view@1.0.2: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-typed-array: 1.1.15 - - is-date-object@1.1.0: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-decimal@1.0.4: {} - - is-decimal@2.0.1: {} - - is-deflate@1.0.0: {} - - is-directory@0.3.1: {} - - is-docker@2.2.1: {} - - is-docker@3.0.0: {} - - is-dom@1.1.0: - dependencies: - is-object: 1.0.2 - is-window: 1.0.2 - - is-extendable@1.0.1: - dependencies: - is-plain-object: 2.0.4 - - is-extglob@1.0.0: {} - - is-extglob@2.1.1: {} - - is-finalizationregistry@1.1.1: - dependencies: - call-bound: 1.0.4 - - is-finite@1.1.0: {} - - is-fullwidth-code-point@1.0.0: - dependencies: - number-is-nan: 1.0.1 - - is-fullwidth-code-point@2.0.0: {} - - is-fullwidth-code-point@3.0.0: {} - - is-fullwidth-code-point@4.0.0: {} - - is-fullwidth-code-point@5.0.0: - dependencies: - get-east-asian-width: 1.3.0 - - is-function@1.0.2: {} - - is-generator-fn@1.0.0: {} - - is-generator-fn@2.1.0: {} - - is-generator-function@1.1.0: - dependencies: - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-glob@2.0.1: - dependencies: - is-extglob: 1.0.0 - - is-glob@3.1.0: - dependencies: - is-extglob: 2.1.1 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-gzip@1.0.0: {} - - is-hexadecimal@1.0.4: {} - - is-hexadecimal@2.0.1: {} - - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - - is-installed-globally@0.1.0: - dependencies: - global-dirs: 0.1.1 - is-path-inside: 1.0.1 - - is-interactive@1.0.0: {} - - is-interactive@2.0.0: {} - - is-lambda@1.0.1: {} - - is-map@2.0.3: {} - - is-module@1.0.0: {} - - is-negative-zero@2.0.3: {} - - is-network-error@1.1.0: {} - - is-npm@1.0.0: {} - - is-number-object@1.1.1: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-number@7.0.0: {} - - is-obj@1.0.1: {} - - is-object@1.0.2: {} - - is-path-cwd@1.0.0: {} - - is-path-cwd@2.2.0: {} - - is-path-cwd@3.0.0: {} - - is-path-in-cwd@1.0.1: - dependencies: - is-path-inside: 1.0.1 - - is-path-inside@1.0.1: - dependencies: - path-is-inside: 1.0.2 - - is-path-inside@3.0.3: {} - - is-path-inside@4.0.0: {} - - is-plain-obj@1.1.0: {} - - is-plain-obj@2.1.0: {} - - is-plain-obj@3.0.0: {} - - is-plain-obj@4.1.0: {} - - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - - is-plain-object@5.0.0: {} - - is-potential-custom-element-name@1.0.1: {} - - is-primitive@3.0.1: {} - - is-promise@2.2.2: {} - - is-promise@4.0.0: {} - - is-redirect@1.0.0: {} - - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.8 - - is-regex@1.2.1: - dependencies: - call-bound: 1.0.4 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - is-retry-allowed@1.2.0: {} - - is-root@1.0.0: {} - - is-set@2.0.3: {} - - is-shared-array-buffer@1.0.4: - dependencies: - call-bound: 1.0.4 - - is-stream@1.1.0: {} - - is-stream@2.0.1: {} - - is-stream@3.0.0: {} - - is-stream@4.0.1: {} - - is-string@1.1.1: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-svg@2.1.0: - dependencies: - html-comment-regex: 1.1.2 - - is-symbol@1.1.1: - dependencies: - call-bound: 1.0.4 - has-symbols: 1.1.0 - safe-regex-test: 1.1.0 - - is-typed-array@1.1.15: - dependencies: - which-typed-array: 1.1.19 - - is-typedarray@1.0.0: {} - - is-unicode-supported@0.1.0: {} - - is-unicode-supported@1.3.0: {} - - is-unicode-supported@2.1.0: {} - - is-url@1.2.4: {} - - is-utf8@0.2.1: {} - - is-weakmap@2.0.2: {} - - is-weakref@1.1.1: - dependencies: - call-bound: 1.0.4 - - is-weakset@2.0.4: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - - is-whitespace-character@1.0.4: {} - - is-window@1.0.2: {} - - is-windows@1.0.2: {} - - is-word-character@1.0.4: {} - - is-wsl@1.1.0: {} - - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - - is-wsl@3.1.0: - dependencies: - is-inside-container: 1.0.0 - - is2@2.0.9: - dependencies: - deep-is: 0.1.4 - ip-regex: 4.3.0 - is-url: 1.2.4 - - is64bit@2.0.0: - dependencies: - system-architecture: 0.1.0 - - isarray@0.0.1: {} - - isarray@1.0.0: {} - - isarray@2.0.5: {} - - isexe@2.0.0: {} - - isexe@3.1.1: {} - - isobject@3.0.1: {} - - isobject@4.0.0: {} - - isomorphic-unfetch@3.1.0(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - unfetch: 4.2.0 - transitivePeerDependencies: - - encoding - - isomorphic-ws@5.0.0(ws@8.18.3): - dependencies: - ws: 8.18.3 - - isstream@0.1.2: {} - - istanbul-api@1.3.7: - dependencies: - async: 2.6.4 - fileset: 2.0.3 - istanbul-lib-coverage: 1.2.1 - istanbul-lib-hook: 1.2.2 - istanbul-lib-instrument: 1.10.2 - istanbul-lib-report: 1.1.5 - istanbul-lib-source-maps: 1.2.6 - istanbul-reports: 1.5.1 - js-yaml: 3.14.1 - mkdirp: 0.5.6 - once: 1.4.0 - transitivePeerDependencies: - - supports-color - - istanbul-lib-coverage@1.2.1: {} - - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-hook@1.2.2: - dependencies: - append-transform: 0.4.0 - - istanbul-lib-instrument@1.10.2: - dependencies: - babel-generator: 6.26.1 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - istanbul-lib-coverage: 1.2.1 - semver: 5.7.2 - transitivePeerDependencies: - - supports-color - - istanbul-lib-instrument@4.0.3: - dependencies: - '@babel/core': 7.27.4 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.27.4 - '@babel/parser': 7.28.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-instrument@6.0.3: - dependencies: - '@babel/core': 7.27.4 - '@babel/parser': 7.28.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.7.2 - transitivePeerDependencies: - - supports-color - - istanbul-lib-report@1.1.5: - dependencies: - istanbul-lib-coverage: 1.2.1 - mkdirp: 0.5.6 - path-parse: 1.0.7 - supports-color: 3.2.3 - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-lib-source-maps@1.2.6: - dependencies: - debug: 3.2.7 - istanbul-lib-coverage: 1.2.1 - mkdirp: 0.5.6 - rimraf: 2.7.1 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - - istanbul-lib-source-maps@4.0.1: - dependencies: - debug: 4.4.1(supports-color@8.1.1) - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - - istanbul-reports@1.5.1: - dependencies: - handlebars: 4.7.8 - - istanbul-reports@3.1.7: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - - istanbul@0.4.5: - dependencies: - abbrev: 1.0.9 - async: 1.5.2 - escodegen: 1.8.1 - esprima: 2.7.3 - glob: 5.0.15 - handlebars: 4.7.8 - js-yaml: 3.14.1 - mkdirp: 0.5.6 - nopt: 3.0.6 - once: 1.4.0 - resolve: 1.1.7 - supports-color: 3.2.3 - which: 1.3.1 - wordwrap: 1.0.0 - - istextorbinary@9.5.0: - dependencies: - binaryextensions: 6.11.0 - editions: 6.21.0 - textextensions: 6.11.0 - - iterate-iterator@1.0.2: {} - - iterate-value@1.0.2: - dependencies: - es-get-iterator: 1.1.3 - iterate-iterator: 1.0.2 - - iterator.prototype@1.1.5: - dependencies: - define-data-property: 1.1.4 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - has-symbols: 1.1.0 - set-function-name: 2.0.2 - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jackspeak@4.1.1: - dependencies: - '@isaacs/cliui': 8.0.2 - - jake@10.9.2: - dependencies: - async: 3.2.6 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - jest-changed-files@20.0.3: {} - - jest-changed-files@25.5.0: - dependencies: - '@jest/types': 25.5.0 - execa: 3.4.0 - throat: 5.0.0 - - jest-changed-files@29.7.0: - dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 - - jest-circus@29.7.0(babel-plugin-macros@3.1.0): - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.32 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.6.0(babel-plugin-macros@3.1.0) - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 - 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 - callsites: 2.0.0 - chalk: 1.1.3 - graceful-fs: 4.2.11 - is-ci: 1.2.1 - istanbul-api: 1.3.7 - istanbul-lib-coverage: 1.2.1 - istanbul-lib-instrument: 1.10.2 - istanbul-lib-source-maps: 1.2.6 - jest-changed-files: 20.0.3 - jest-config: 20.0.4 - jest-docblock: 20.0.3 - jest-environment-jsdom: 20.0.3 - jest-haste-map: 20.0.5 - jest-jasmine2: 20.0.4 - jest-message-util: 20.0.3 - jest-regex-util: 20.0.3 - jest-resolve-dependencies: 20.0.3 - jest-runtime: 20.0.4 - jest-snapshot: 20.0.3 - jest-util: 20.0.3 - micromatch: 4.0.8 - node-notifier: 5.4.5 - pify: 2.3.0 - slash: 1.0.0 - string-length: 1.0.1 - throat: 3.2.0 - which: 1.3.1 - worker-farm: 1.7.0 - yargs: 7.1.2 - transitivePeerDependencies: - - supports-color - - jest-cli@25.5.4: - dependencies: - '@jest/core': 25.5.4 - '@jest/test-result': 25.5.0 - '@jest/types': 25.5.0 - chalk: 3.0.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.2.0 - is-ci: 2.0.0 - jest-config: 25.5.4 - jest-util: 25.5.0 - jest-validate: 25.5.0 - prompts: 2.4.2 - realpath-native: 2.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - - jest-cli@29.7.0(@types/node@22.15.32)(babel-plugin-macros@3.1.0): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.32)(babel-plugin-macros@3.1.0) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.15.32)(babel-plugin-macros@3.1.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-config@20.0.4: - dependencies: - chalk: 1.1.3 - glob: 7.2.3 - jest-environment-jsdom: 20.0.3 - jest-environment-node: 20.0.3 - jest-jasmine2: 20.0.4 - jest-matcher-utils: 20.0.3 - jest-regex-util: 20.0.3 - jest-resolve: 20.0.4 - jest-validate: 20.0.3 - pretty-format: 20.0.3 - - jest-config@22.4.4: - dependencies: - chalk: 2.4.2 - glob: 7.2.3 - jest-environment-jsdom: 22.4.3 - jest-environment-node: 22.4.3 - jest-get-type: 22.4.3 - jest-jasmine2: 22.4.4 - jest-regex-util: 22.4.3 - jest-resolve: 22.4.3 - jest-util: 22.4.3 - jest-validate: 22.4.4 - pretty-format: 22.4.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - jest-config@25.5.4: - dependencies: - '@babel/core': 7.27.4 - '@jest/test-sequencer': 25.5.4 - '@jest/types': 25.5.0 - babel-jest: 25.5.1(@babel/core@7.27.4) - chalk: 3.0.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-environment-jsdom: 25.5.0 - jest-environment-node: 25.5.0 - jest-get-type: 25.2.6 - jest-jasmine2: 25.5.4 - jest-regex-util: 25.2.6 - jest-resolve: 25.5.1 - jest-util: 25.5.0 - jest-validate: 25.5.0 - micromatch: 4.0.8 - pretty-format: 25.5.0 - realpath-native: 2.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - - jest-config@29.7.0(@types/node@22.15.32)(babel-plugin-macros@3.1.0): - dependencies: - '@babel/core': 7.27.4 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.27.4) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.15.32 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-diff@20.0.3: - dependencies: - chalk: 1.1.3 - diff: 3.5.0 - jest-matcher-utils: 20.0.3 - pretty-format: 20.0.3 - - jest-diff@22.4.3: - dependencies: - chalk: 2.4.2 - diff: 3.5.0 - jest-get-type: 22.4.3 - pretty-format: 22.4.3 - - jest-diff@25.5.0: - dependencies: - chalk: 3.0.0 - diff-sequences: 25.2.6 - jest-get-type: 25.2.6 - pretty-format: 25.5.0 - - jest-diff@29.7.0: - dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-docblock@20.0.3: {} - - jest-docblock@25.3.0: - dependencies: - detect-newline: 3.1.0 - - jest-docblock@29.7.0: - dependencies: - detect-newline: 3.1.0 - - jest-each@25.5.0: - dependencies: - '@jest/types': 25.5.0 - chalk: 3.0.0 - jest-get-type: 25.2.6 - jest-util: 25.5.0 - pretty-format: 25.5.0 - - jest-each@29.7.0: - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 - - jest-environment-jsdom@20.0.3: - dependencies: - jest-mock: 20.0.3 - jest-util: 20.0.3 - jsdom: 9.12.0 - - jest-environment-jsdom@22.4.3: - dependencies: - jest-mock: 22.4.3 - jest-util: 22.4.3 - jsdom: 11.12.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - jest-environment-jsdom@25.5.0: - dependencies: - '@jest/environment': 25.5.0 - '@jest/fake-timers': 25.5.0 - '@jest/types': 25.5.0 - jest-mock: 25.5.0 - jest-util: 25.5.0 - jsdom: 15.2.1 - transitivePeerDependencies: - - bufferutil - - canvas - - utf-8-validate - - jest-environment-jsdom@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/jsdom': 20.0.1 - '@types/node': 22.15.32 - jest-mock: 29.7.0 - jest-util: 29.7.0 - jsdom: 20.0.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - jest-environment-node@20.0.3: - dependencies: - jest-mock: 20.0.3 - jest-util: 20.0.3 - - jest-environment-node@22.4.3: - dependencies: - jest-mock: 22.4.3 - jest-util: 22.4.3 - - jest-environment-node@25.5.0: - dependencies: - '@jest/environment': 25.5.0 - '@jest/fake-timers': 25.5.0 - '@jest/types': 25.5.0 - jest-mock: 25.5.0 - jest-util: 25.5.0 - semver: 6.3.1 - - jest-environment-node@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.32 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - jest-get-type@22.4.3: {} - - jest-get-type@25.2.6: {} - - jest-get-type@29.6.3: {} - - jest-haste-map@20.0.5: - dependencies: - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-docblock: 20.0.3 - micromatch: 4.0.8 - sane: 1.6.0 - worker-farm: 1.7.0 - - jest-haste-map@25.5.1: - dependencies: - '@jest/types': 25.5.0 - '@types/graceful-fs': 4.1.9 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-serializer: 25.5.0 - jest-util: 25.5.0 - jest-worker: 25.5.0 - micromatch: 4.0.8 - sane: 4.1.0 - walker: 1.0.8 - which: 2.0.2 - optionalDependencies: - fsevents: 2.3.3 - - jest-haste-map@26.6.2: - dependencies: - '@jest/types': 26.6.2 - '@types/graceful-fs': 4.1.9 - '@types/node': 22.15.32 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 26.0.0 - jest-serializer: 26.6.2 - jest-util: 26.6.2 - jest-worker: 26.6.2 - micromatch: 4.0.8 - sane: 4.1.0 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - - jest-haste-map@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 22.15.32 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - - jest-jasmine2@20.0.4: - dependencies: - chalk: 1.1.3 - graceful-fs: 4.2.11 - jest-diff: 20.0.3 - jest-matcher-utils: 20.0.3 - jest-matchers: 20.0.3 - jest-message-util: 20.0.3 - jest-snapshot: 20.0.3 - once: 1.4.0 - p-map: 1.2.0 - - jest-jasmine2@22.4.4: - dependencies: - chalk: 2.4.2 - co: 4.6.0 - expect: 22.4.3 - graceful-fs: 4.2.11 - is-generator-fn: 1.0.0 - jest-diff: 22.4.3 - jest-matcher-utils: 22.4.3 - jest-message-util: 22.4.3 - jest-snapshot: 22.4.3 - jest-util: 22.4.3 - source-map-support: 0.5.21 - - jest-jasmine2@25.5.4: - dependencies: - '@babel/traverse': 7.27.4 - '@jest/environment': 25.5.0 - '@jest/source-map': 25.5.0 - '@jest/test-result': 25.5.0 - '@jest/types': 25.5.0 - chalk: 3.0.0 - co: 4.6.0 - expect: 25.5.0 - is-generator-fn: 2.1.0 - jest-each: 25.5.0 - jest-matcher-utils: 25.5.0 - jest-message-util: 25.5.0 - jest-runtime: 25.5.4 - jest-snapshot: 25.5.1 - jest-util: 25.5.0 - pretty-format: 25.5.0 - throat: 5.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - - jest-leak-detector@25.5.0: - dependencies: - jest-get-type: 25.2.6 - pretty-format: 25.5.0 - - jest-leak-detector@29.7.0: - dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-matcher-utils@20.0.3: - dependencies: - chalk: 1.1.3 - pretty-format: 20.0.3 - - jest-matcher-utils@22.4.3: - dependencies: - chalk: 2.4.2 - jest-get-type: 22.4.3 - pretty-format: 22.4.3 - - jest-matcher-utils@25.5.0: - dependencies: - chalk: 3.0.0 - jest-diff: 25.5.0 - jest-get-type: 25.2.6 - pretty-format: 25.5.0 - - jest-matcher-utils@29.7.0: - dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-matchers@20.0.3: - dependencies: - jest-diff: 20.0.3 - jest-matcher-utils: 20.0.3 - jest-message-util: 20.0.3 - jest-regex-util: 20.0.3 - - jest-message-util@20.0.3: - dependencies: - chalk: 1.1.3 - micromatch: 4.0.8 - slash: 1.0.0 - - jest-message-util@22.4.3: - dependencies: - '@babel/code-frame': 7.27.1 - chalk: 2.4.2 - micromatch: 4.0.8 - slash: 1.0.0 - stack-utils: 1.0.5 - - jest-message-util@25.5.0: - dependencies: - '@babel/code-frame': 7.27.1 - '@jest/types': 25.5.0 - '@types/stack-utils': 1.0.1 - chalk: 3.0.0 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - slash: 3.0.0 - stack-utils: 1.0.5 - - jest-message-util@29.7.0: - dependencies: - '@babel/code-frame': 7.27.1 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-mock@20.0.3: {} - - jest-mock@22.4.3: {} - - jest-mock@25.5.0: - dependencies: - '@jest/types': 25.5.0 - - jest-mock@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.15.32 - jest-util: 29.7.0 - - jest-pnp-resolver@1.2.3(jest-resolve@25.5.1): - optionalDependencies: - jest-resolve: 25.5.1 - - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: - jest-resolve: 29.7.0 - - jest-regex-util@20.0.3: {} - - jest-regex-util@22.4.3: {} - - jest-regex-util@25.2.6: {} - - jest-regex-util@26.0.0: {} - - jest-regex-util@29.6.3: {} - - jest-resolve-dependencies@20.0.3: - dependencies: - jest-regex-util: 20.0.3 - - jest-resolve-dependencies@25.5.4: - dependencies: - '@jest/types': 25.5.0 - jest-regex-util: 25.2.6 - jest-snapshot: 25.5.1 - - jest-resolve-dependencies@29.7.0: - dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - jest-resolve@20.0.4: - dependencies: - browser-resolve: 1.11.3 - is-builtin-module: 1.0.0 - resolve: 1.6.0 - - jest-resolve@22.4.3: - dependencies: - browser-resolve: 1.11.3 - chalk: 2.4.2 - - jest-resolve@25.5.1: - dependencies: - '@jest/types': 25.5.0 - browser-resolve: 1.11.3 - chalk: 3.0.0 - graceful-fs: 4.2.11 - 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 - slash: 3.0.0 - - jest-resolve@29.7.0: - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - 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.exports: 2.0.3 - slash: 3.0.0 - - jest-runner@25.5.4: - dependencies: - '@jest/console': 25.5.0 - '@jest/environment': 25.5.0 - '@jest/test-result': 25.5.0 - '@jest/types': 25.5.0 - chalk: 3.0.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 25.5.4 - jest-docblock: 25.3.0 - jest-haste-map: 25.5.1 - jest-jasmine2: 25.5.4 - jest-leak-detector: 25.5.0 - jest-message-util: 25.5.0 - jest-resolve: 25.5.1 - jest-runtime: 25.5.4 - jest-util: 25.5.0 - jest-worker: 25.5.0 - source-map-support: 0.5.21 - throat: 5.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - - jest-runner@29.7.0: - dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.32 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.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 - babel-jest: 20.0.3 - babel-plugin-istanbul: 4.1.6 - chalk: 1.1.3 - convert-source-map: 1.9.0 - graceful-fs: 4.2.11 - jest-config: 20.0.4 - jest-haste-map: 20.0.5 - jest-regex-util: 20.0.3 - jest-resolve: 20.0.4 - jest-util: 20.0.3 - json-stable-stringify: 1.3.0 - micromatch: 4.0.8 - strip-bom: 3.0.0 - yargs: 7.1.2 - transitivePeerDependencies: - - supports-color - - jest-runtime@25.5.4: - dependencies: - '@jest/console': 25.5.0 - '@jest/environment': 25.5.0 - '@jest/globals': 25.5.2 - '@jest/source-map': 25.5.0 - '@jest/test-result': 25.5.0 - '@jest/transform': 25.5.1 - '@jest/types': 25.5.0 - '@types/yargs': 15.0.19 - chalk: 3.0.0 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-config: 25.5.4 - jest-haste-map: 25.5.1 - jest-message-util: 25.5.0 - jest-mock: 25.5.0 - jest-regex-util: 25.2.6 - jest-resolve: 25.5.1 - jest-snapshot: 25.5.1 - jest-util: 25.5.0 - jest-validate: 25.5.0 - realpath-native: 2.0.0 - slash: 3.0.0 - strip-bom: 4.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - - jest-runtime@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.32 - chalk: 4.1.2 - cjs-module-lexer: 1.4.3 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - - jest-serializer@25.5.0: - dependencies: - graceful-fs: 4.2.11 - - jest-serializer@26.6.2: - dependencies: - '@types/node': 22.15.32 - graceful-fs: 4.2.11 - - jest-snapshot@20.0.3: - dependencies: - chalk: 1.1.3 - jest-diff: 20.0.3 - jest-matcher-utils: 20.0.3 - jest-util: 20.0.3 - natural-compare: 1.4.0 - pretty-format: 20.0.3 - - jest-snapshot@22.4.3: - dependencies: - chalk: 2.4.2 - jest-diff: 22.4.3 - jest-matcher-utils: 22.4.3 - mkdirp: 0.5.6 - natural-compare: 1.4.0 - pretty-format: 22.4.3 - - jest-snapshot@25.5.1: - dependencies: - '@babel/types': 7.28.1 - '@jest/types': 25.5.0 - '@types/prettier': 1.19.1 - chalk: 3.0.0 - expect: 25.5.0 - graceful-fs: 4.2.11 - jest-diff: 25.5.0 - jest-get-type: 25.2.6 - jest-matcher-utils: 25.5.0 - jest-message-util: 25.5.0 - jest-resolve: 25.5.1 - make-dir: 3.1.0 - natural-compare: 1.4.0 - pretty-format: 25.5.0 - semver: 6.3.1 - - jest-snapshot@29.7.0: - dependencies: - '@babel/core': 7.27.4 - '@babel/generator': 7.27.5 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) - '@babel/types': 7.28.1 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.4) - chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.7.2 - transitivePeerDependencies: - - supports-color - - jest-util@20.0.3: - dependencies: - chalk: 1.1.3 - graceful-fs: 4.2.11 - jest-message-util: 20.0.3 - jest-mock: 20.0.3 - jest-validate: 20.0.3 - leven: 2.1.0 - mkdirp: 0.5.6 - - jest-util@22.4.3: - dependencies: - callsites: 2.0.0 - chalk: 2.4.2 - graceful-fs: 4.2.11 - is-ci: 1.2.1 - jest-message-util: 22.4.3 - mkdirp: 0.5.6 - source-map: 0.6.1 - - jest-util@25.5.0: - dependencies: - '@jest/types': 25.5.0 - chalk: 3.0.0 - graceful-fs: 4.2.11 - is-ci: 2.0.0 - make-dir: 3.1.0 - - jest-util@26.6.2: - dependencies: - '@jest/types': 26.6.2 - '@types/node': 22.15.32 - chalk: 4.1.2 - graceful-fs: 4.2.11 - is-ci: 2.0.0 - micromatch: 4.0.8 - - jest-util@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.15.32 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - - jest-validate@20.0.3: - dependencies: - chalk: 1.1.3 - jest-matcher-utils: 20.0.3 - leven: 2.1.0 - pretty-format: 20.0.3 - - jest-validate@22.4.4: - dependencies: - chalk: 2.4.2 - jest-config: 22.4.4 - jest-get-type: 22.4.3 - leven: 2.1.0 - pretty-format: 22.4.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - jest-validate@25.5.0: - dependencies: - '@jest/types': 25.5.0 - camelcase: 5.3.1 - chalk: 3.0.0 - jest-get-type: 25.2.6 - leven: 3.1.0 - pretty-format: 25.5.0 - - jest-validate@29.7.0: - dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 - - jest-watch-typeahead@0.5.0: - dependencies: - ansi-escapes: 4.3.2 - chalk: 3.0.0 - jest-regex-util: 25.2.6 - jest-watcher: 25.5.0 - slash: 3.0.0 - string-length: 3.1.0 - strip-ansi: 6.0.1 - - jest-watcher@25.5.0: - dependencies: - '@jest/test-result': 25.5.0 - '@jest/types': 25.5.0 - ansi-escapes: 4.3.2 - chalk: 3.0.0 - jest-util: 25.5.0 - string-length: 3.1.0 - - jest-watcher@29.7.0: - dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.32 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.7.0 - string-length: 4.0.2 - - jest-worker@24.9.0: - dependencies: - merge-stream: 2.0.0 - supports-color: 6.1.0 - - jest-worker@25.5.0: - dependencies: - merge-stream: 2.0.0 - supports-color: 7.2.0 - - jest-worker@26.6.2: - dependencies: - '@types/node': 22.15.32 - merge-stream: 2.0.0 - supports-color: 7.2.0 - - jest-worker@27.5.1: - dependencies: - '@types/node': 22.15.32 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest-worker@29.7.0: - dependencies: - '@types/node': 22.15.32 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest@20.0.4: - dependencies: - jest-cli: 20.0.4 - transitivePeerDependencies: - - supports-color - - jest@25.5.4: - dependencies: - '@jest/core': 25.5.4 - import-local: 3.2.0 - jest-cli: 25.5.4 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - - jest@29.7.0(@types/node@22.15.32)(babel-plugin-macros@3.1.0): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.15.32)(babel-plugin-macros@3.1.0) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jiti@1.21.7: {} - - jiti@2.4.2: {} - - joi@17.13.3: - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.5 - '@sideway/formula': 3.0.1 - '@sideway/pinpoint': 2.0.0 - - jpjs@1.2.1: {} - - js-base64@2.6.4: {} - - js-file-download@0.4.12: {} - - js-string-escape@1.0.1: {} - - js-tokens@3.0.2: {} - - 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: - 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.4)): - dependencies: - '@babel/core': 7.28.0 - '@babel/parser': 7.28.0 - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.0) - '@babel/preset-flow': 7.27.1(@babel/core@7.28.0) - '@babel/preset-typescript': 7.27.1(@babel/core@7.28.0) - '@babel/register': 7.27.1(@babel/core@7.28.0) - babel-core: 7.0.0-bridge.0(@babel/core@7.28.0) - chalk: 4.1.2 - flow-parser: 0.275.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.27.4) - transitivePeerDependencies: - - supports-color - - jscodeshift@0.15.2(@babel/preset-env@7.27.2(@babel/core@7.28.0)): - dependencies: - '@babel/core': 7.28.0 - '@babel/parser': 7.28.0 - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.0) - '@babel/preset-flow': 7.27.1(@babel/core@7.28.0) - '@babel/preset-typescript': 7.27.1(@babel/core@7.28.0) - '@babel/register': 7.27.1(@babel/core@7.28.0) - babel-core: 7.0.0-bridge.0(@babel/core@7.28.0) - chalk: 4.1.2 - flow-parser: 0.275.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.0) - transitivePeerDependencies: - - supports-color - - jsdoc-type-pratt-parser@4.1.0: {} - - jsdom@11.12.0: - dependencies: - abab: 2.0.6 - acorn: 5.7.4 - acorn-globals: 4.3.4 - array-equal: 1.0.2 - cssom: 0.3.8 - cssstyle: 1.4.0 - data-urls: 1.1.0 - domexception: 1.0.1 - escodegen: 1.14.3 - html-encoding-sniffer: 1.0.2 - left-pad: 1.3.0 - nwsapi: 2.2.20 - 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 - symbol-tree: 3.2.4 - tough-cookie: 2.5.0 - w3c-hr-time: 1.0.2 - webidl-conversions: 4.0.2 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 6.5.0 - ws: 5.2.4 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - jsdom@15.2.1: - dependencies: - abab: 2.0.6 - acorn: 7.4.1 - acorn-globals: 4.3.4 - array-equal: 1.0.2 - cssom: 0.4.4 - cssstyle: 2.3.0 - data-urls: 1.1.0 - domexception: 1.0.1 - escodegen: 1.14.3 - html-encoding-sniffer: 1.0.2 - nwsapi: 2.2.20 - parse5: 5.1.0 - pn: 1.1.0 - request: 2.88.2 - request-promise-native: 1.0.9(request@2.88.2) - saxes: 3.1.11 - symbol-tree: 3.2.4 - tough-cookie: 3.0.1 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 1.1.2 - webidl-conversions: 4.0.2 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 7.1.0 - ws: 7.5.10 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - jsdom@20.0.3: - dependencies: - abab: 2.0.6 - acorn: 8.15.0 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.5.0 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.4 - 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.20 - parse5: 7.3.0 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.18.2 - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - jsdom@9.12.0: - dependencies: - abab: 1.0.4 - acorn: 4.0.13 - acorn-globals: 3.1.0 - array-equal: 1.0.2 - content-type-parser: 1.0.2 - cssom: 0.3.8 - cssstyle: 0.2.37 - escodegen: 1.14.3 - html-encoding-sniffer: 1.0.2 - nwmatcher: 1.4.4 - parse5: 1.5.1 - request: 2.88.2 - sax: 1.4.1 - symbol-tree: 3.2.4 - tough-cookie: 2.5.0 - webidl-conversions: 4.0.2 - whatwg-encoding: 1.0.5 - whatwg-url: 4.8.0 - xml-name-validator: 2.0.1 - - jsesc@0.5.0: {} - - 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.27.6 - ts-algebra: 2.0.0 - - json-schema-traverse@0.3.1: {} - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - - json-schema@0.4.0: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json-stable-stringify@1.3.0: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - isarray: 2.0.5 - jsonify: 0.0.1 - object-keys: 1.1.1 - - json-stringify-safe@5.0.1: {} - - json3@3.3.3: {} - - json5@0.5.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - - json5@2.2.3: {} - - jsonc-parser@3.3.1: {} - - jsonfile@2.4.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@3.0.1: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonify@0.0.1: {} - - jsonix@3.0.0: - dependencies: - amdefine: 0.1.1 - xmldom: '@xmldom/xmldom@0.8.10' - xmlhttprequest: 1.8.0 - - jsonwebtoken@9.0.2: - dependencies: - jws: 3.2.2 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 7.7.2 - - jsprim@1.4.2: - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.9 - array.prototype.flat: 1.3.3 - object.assign: 4.1.7 - object.values: 1.2.1 - - jszip@3.10.1: - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - setimmediate: 1.0.5 - - junk@3.1.0: {} - - jwa@1.4.2: - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - - jws@3.2.2: - dependencies: - jwa: 1.4.2 - safe-buffer: 5.2.1 - - jwt-decode@4.0.0: {} - - keytar@7.9.0: - dependencies: - node-addon-api: 4.3.0 - prebuild-install: 7.1.3 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - keyv@5.3.4: - dependencies: - '@keyv/serialize': 1.0.3 - - kill-port@2.0.1: - dependencies: - get-them-args: 1.3.2 - shell-exec: 1.0.2 - - kind-of@6.0.3: {} - - klaw@1.3.1: - optionalDependencies: - graceful-fs: 4.2.11 - - kleur@3.0.3: {} - - kleur@4.1.5: {} - - klona@2.0.6: {} - - known-css-properties@0.37.0: {} - - kuler@2.0.0: {} - - language-subtag-registry@0.3.23: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.23 - - latest-version@3.1.0: - dependencies: - package-json: 4.0.1 - - launch-editor@2.10.0: - dependencies: - picocolors: 1.1.1 - shell-quote: 1.8.3 - - lazy-universal-dotenv@3.0.1: - dependencies: - '@babel/runtime': 7.27.6 - app-root-dir: 1.0.2 - core-js: 3.43.0 - dotenv: 8.6.0 - dotenv-expand: 5.1.0 - - lazy-universal-dotenv@4.0.0: - dependencies: - app-root-dir: 1.0.2 - dotenv: 16.6.1 - dotenv-expand: 10.0.0 - - lcid@1.0.0: - dependencies: - invert-kv: 1.0.0 - - left-pad@1.3.0: {} - - leven@2.1.0: {} - - leven@3.1.0: {} - - levn@0.3.0: - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lie@3.3.0: - dependencies: - immediate: 3.0.6 - - lilconfig@2.1.0: {} - - lilconfig@3.1.3: {} - - lines-and-columns@1.2.4: {} - - lines-and-columns@2.0.4: {} - - linkify-it@3.0.3: - dependencies: - uc.micro: 1.0.6 - - linkify-it@5.0.0: - dependencies: - uc.micro: 2.1.0 - - lint-staged@16.1.2: - dependencies: - chalk: 5.4.1 - commander: 14.0.0 - debug: 4.4.1(supports-color@8.1.1) - lilconfig: 3.1.3 - listr2: 8.3.3 - micromatch: 4.0.8 - nano-spawn: 1.0.2 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.8.0 - transitivePeerDependencies: - - supports-color - - listenercount@1.0.1: {} - - listr2@8.3.3: - dependencies: - cli-truncate: 4.0.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 6.1.0 - rfdc: 1.4.1 - wrap-ansi: 9.0.0 - - load-json-file@1.1.0: - dependencies: - graceful-fs: 4.2.11 - parse-json: 2.2.0 - pify: 2.3.0 - pinkie-promise: 2.0.1 - strip-bom: 2.0.0 - - loader-runner@4.3.0: {} - - loader-utils@0.2.17: - dependencies: - big.js: 3.2.0 - emojis-list: 2.1.0 - json5: 0.5.1 - object-assign: 4.1.1 - - loader-utils@1.4.2: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 1.0.2 - - loader-utils@2.0.4: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - - loader-utils@3.3.1: {} - - locate-path@2.0.0: - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - - locate-path@3.0.0: - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - - lodash._reinterpolate@3.0.0: {} - - lodash.camelcase@4.3.0: {} - - lodash.clonedeep@4.5.0: {} - - lodash.curry@4.1.1: {} - - lodash.debounce@4.0.8: {} - - lodash.defaults@4.2.0: {} - - lodash.endswith@4.2.1: {} - - lodash.flow@3.5.0: {} - - lodash.includes@4.3.0: {} - - lodash.isboolean@3.0.3: {} - - lodash.isequal@4.5.0: {} - - lodash.isfunction@3.0.9: {} - - lodash.isinteger@4.0.4: {} - - lodash.isnumber@3.0.3: {} - - lodash.isplainobject@4.0.6: {} - - lodash.isstring@4.0.1: {} - - lodash.keys@4.2.0: {} - - lodash.memoize@4.1.2: {} - - lodash.merge@4.6.2: {} - - lodash.omit@4.5.0: {} - - lodash.once@4.1.1: {} - - lodash.sortby@4.7.0: {} - - lodash.startswith@4.2.1: {} - - lodash.template@4.5.0: - dependencies: - lodash._reinterpolate: 3.0.0 - lodash.templatesettings: 4.2.0 - - lodash.templatesettings@4.2.0: - dependencies: - lodash._reinterpolate: 3.0.0 - - lodash.truncate@4.4.2: {} - - lodash.uniq@4.5.0: {} - - lodash.without@4.4.0: {} - - lodash.xor@4.5.0: {} - - lodash@4.17.21: {} - - log-symbols@3.0.0: - dependencies: - chalk: 2.4.2 - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - log-symbols@6.0.0: - dependencies: - chalk: 5.4.1 - is-unicode-supported: 1.3.0 - - log-update@2.3.0: - dependencies: - ansi-escapes: 3.2.0 - cli-cursor: 2.1.0 - wrap-ansi: 3.0.1 - - log-update@6.1.0: - dependencies: - ansi-escapes: 7.0.0 - cli-cursor: 5.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 - - logform@2.7.0: - dependencies: - '@colors/colors': 1.6.0 - '@types/triple-beam': 1.3.5 - fecha: 4.2.3 - ms: 2.1.3 - safe-stable-stringify: 2.5.0 - triple-beam: 1.3.0 - - loglevel@1.9.2: {} - - lolex@5.1.2: - dependencies: - '@sinonjs/commons': 1.8.6 - - long-timeout@0.1.1: {} - - longest-streak@3.1.0: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lottie-web@5.13.0: {} - - loud-rejection@1.6.0: - dependencies: - currently-unhandled: 0.4.1 - signal-exit: 3.0.7 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - loupe@3.1.4: {} - - lower-case@1.1.4: {} - - lower-case@2.0.2: - dependencies: - tslib: 2.8.1 - - lowercase-keys@1.0.1: {} - - lowercase-keys@3.0.0: {} - - lowlight@1.20.0: - dependencies: - fault: 1.0.4 - highlight.js: 10.7.3 - - lru-cache@10.4.3: {} - - lru-cache@11.1.0: {} - - lru-cache@4.1.5: - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - lru-cache@7.18.3: {} - - lru-queue@0.1.0: - dependencies: - es5-ext: 0.10.64 - - luxon@3.6.1: {} - - lz-string@1.5.0: {} - - magic-string@0.25.9: - dependencies: - sourcemap-codec: 1.4.8 - - magic-string@0.30.17: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - - make-dir@1.3.0: - dependencies: - pify: 3.0.0 - - make-dir@2.1.0: - dependencies: - pify: 4.0.1 - semver: 5.7.2 - - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - - make-dir@4.0.0: - dependencies: - semver: 7.7.2 - - make-error@1.3.6: {} - - make-fetch-happen@10.2.1: - dependencies: - agentkeepalive: 4.6.0 - cacache: 16.1.3 - http-cache-semantics: 4.2.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-fetch: 2.1.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.4 - promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 - ssri: 9.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - - make-fetch-happen@9.1.0: - dependencies: - agentkeepalive: 4.6.0 - cacache: 15.3.0 - http-cache-semantics: 4.2.0 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 6.0.0 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-fetch: 1.4.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.4 - promise-retry: 2.0.1 - socks-proxy-agent: 6.2.1 - ssri: 8.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 - - map-age-cleaner@0.1.3: - dependencies: - p-defer: 1.0.0 - - map-obj@1.0.1: {} - - map-obj@4.3.0: {} - - map-or-similar@1.5.0: {} - - markdown-escapes@1.0.4: {} - - markdown-it@12.3.2: - dependencies: - argparse: 2.0.1 - entities: 2.1.0 - linkify-it: 3.0.3 - mdurl: 1.0.1 - uc.micro: 1.0.6 - - markdown-it@14.1.0: - dependencies: - argparse: 2.0.1 - entities: 4.5.0 - linkify-it: 5.0.0 - mdurl: 2.0.0 - punycode.js: 2.3.1 - uc.micro: 2.1.0 - - markdown-table@3.0.4: {} - - markdown-to-jsx@7.7.8(react@18.2.0): - dependencies: - react: 18.2.0 - - matches-selector@0.0.1: {} - - math-expression-evaluator@1.4.0: {} - - math-intrinsics@1.1.0: {} - - mathml-tag-names@2.1.3: {} - - mdast-squeeze-paragraphs@4.0.0: - dependencies: - unist-util-remove: 2.1.0 - - mdast-util-definitions@4.0.0: - dependencies: - unist-util-visit: 2.0.3 - - mdast-util-definitions@5.1.2: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.11 - unist-util-visit: 4.1.2 - - mdast-util-find-and-replace@3.0.2: - 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 - - mdast-util-from-markdown@1.3.1: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.11 - decode-named-character-reference: 1.2.0 - mdast-util-to-string: 3.2.0 - micromark: 3.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-decode-string: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-stringify-position: 3.0.3 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - - mdast-util-from-markdown@2.0.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - decode-named-character-reference: 1.2.0 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.2 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-decode-string: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-autolink-literal@2.0.1: - dependencies: - '@types/mdast': 4.0.4 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.2 - micromark-util-character: 2.1.1 - - mdast-util-gfm-footnote@2.1.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - micromark-util-normalize-identifier: 2.0.1 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-strikethrough@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-table@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-task-list-item@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@3.1.0: - dependencies: - mdast-util-from-markdown: 2.0.2 - mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.1.0 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-expression@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-jsx@3.2.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 - stringify-entities: 4.0.4 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdxjs-esm@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-newline-to-break@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-find-and-replace: 3.0.2 - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.4 - unist-util-is: 6.0.0 - - mdast-util-to-hast@10.0.1: - dependencies: - '@types/mdast': 3.0.15 - '@types/unist': 2.0.11 - mdast-util-definitions: 4.0.0 - mdurl: 1.0.1 - unist-builder: 2.0.3 - unist-util-generated: 1.1.6 - unist-util-position: 3.1.0 - unist-util-visit: 2.0.3 - - mdast-util-to-hast@11.3.0: - dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - '@types/mdurl': 1.0.5 - mdast-util-definitions: 5.1.2 - mdurl: 1.0.1 - unist-builder: 3.0.1 - unist-util-generated: 2.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - - mdast-util-to-hast@13.2.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.1 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - - mdast-util-to-markdown@2.1.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-classify-character: 2.0.1 - micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.0.0 - zwitch: 2.0.4 - - mdast-util-to-string@1.1.0: {} - - mdast-util-to-string@3.2.0: - dependencies: - '@types/mdast': 3.0.15 - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - - mdn-data@2.0.14: {} - - mdn-data@2.12.2: {} - - mdurl@1.0.1: {} - - mdurl@2.0.0: {} - - media-typer@0.3.0: {} - - media-typer@1.1.0: {} - - mem@1.1.0: - dependencies: - mimic-fn: 1.2.0 - - mem@8.1.1: - dependencies: - map-age-cleaner: 0.1.3 - mimic-fn: 3.1.0 - - memfs@3.5.3: - dependencies: - fs-monkey: 1.0.6 - - memfs@4.17.2: - dependencies: - '@jsonjoy.com/json-pack': 1.2.0(tslib@2.8.1) - '@jsonjoy.com/util': 1.6.0(tslib@2.8.1) - tree-dump: 1.0.3(tslib@2.8.1) - tslib: 2.8.1 - - memoizee@0.4.17: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-weak-map: 2.0.3 - event-emitter: 0.3.5 - is-promise: 2.2.2 - lru-queue: 0.1.0 - next-tick: 1.1.0 - timers-ext: 0.1.8 - - memoizerific@1.11.3: - dependencies: - map-or-similar: 1.5.0 - - memory-fs@0.4.1: - dependencies: - errno: 0.1.8 - readable-stream: 2.3.8 - - meow@10.1.5: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 7.0.2 - decamelize: 5.0.1 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 8.0.0 - redent: 4.0.0 - trim-newlines: 4.1.1 - type-fest: 1.4.0 - yargs-parser: 20.2.9 - - meow@13.2.0: {} - - meow@3.7.0: - dependencies: - camelcase-keys: 2.1.0 - decamelize: 1.2.0 - loud-rejection: 1.6.0 - map-obj: 1.0.1 - minimist: 1.2.8 - normalize-package-data: 2.5.0 - object-assign: 4.1.1 - read-pkg-up: 1.0.1 - redent: 1.0.0 - trim-newlines: 1.0.0 - - meow@9.0.0: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize: 1.2.0 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - - merge-descriptors@1.0.3: {} - - merge-descriptors@2.0.0: {} - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - merge@1.2.1: {} - - meros@1.3.1(@types/node@24.0.14): - optionalDependencies: - '@types/node': 24.0.14 - - methods@1.1.2: {} - - microbuffer@1.0.0: {} - - microevent.ts@0.1.1: {} - - micromark-core-commonmark@1.1.0: - dependencies: - decode-named-character-reference: 1.2.0 - micromark-factory-destination: 1.1.0 - micromark-factory-label: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-factory-title: 1.1.0 - micromark-factory-whitespace: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-html-tag-name: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-core-commonmark@2.0.3: - dependencies: - decode-named-character-reference: 1.2.0 - devlop: 1.1.0 - micromark-factory-destination: 2.0.1 - micromark-factory-label: 2.0.1 - micromark-factory-space: 2.0.1 - micromark-factory-title: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-html-tag-name: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-autolink-literal@2.1.0: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-footnote@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-strikethrough@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-table@2.1.1: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-tagfilter@2.0.0: - dependencies: - micromark-util-types: 2.0.2 - - micromark-extension-gfm-task-list-item@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm@3.0.0: - dependencies: - micromark-extension-gfm-autolink-literal: 2.1.0 - micromark-extension-gfm-footnote: 2.1.0 - micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.1 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.1.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-destination@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-factory-destination@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-label@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-factory-label@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-space@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-types: 1.1.0 - - micromark-factory-space@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-types: 2.0.2 - - micromark-factory-title@1.1.0: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-factory-title@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-whitespace@1.1.0: - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-factory-whitespace@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-character@1.2.0: - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-util-character@2.1.1: - dependencies: - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-chunked@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - - micromark-util-chunked@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-classify-character@1.1.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-util-classify-character@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-combine-extensions@1.1.0: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-types: 1.1.0 - - micromark-util-combine-extensions@2.0.1: - dependencies: - micromark-util-chunked: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-decode-numeric-character-reference@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - - micromark-util-decode-numeric-character-reference@2.0.2: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-decode-string@1.1.0: - dependencies: - decode-named-character-reference: 1.2.0 - micromark-util-character: 1.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-symbol: 1.1.0 - - micromark-util-decode-string@2.0.1: - dependencies: - decode-named-character-reference: 1.2.0 - micromark-util-character: 2.1.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-symbol: 2.0.1 - - micromark-util-encode@1.1.0: {} - - micromark-util-encode@2.0.1: {} - - micromark-util-html-tag-name@1.2.0: {} - - micromark-util-html-tag-name@2.0.1: {} - - micromark-util-normalize-identifier@1.1.0: - dependencies: - micromark-util-symbol: 1.1.0 - - micromark-util-normalize-identifier@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-resolve-all@1.1.0: - dependencies: - micromark-util-types: 1.1.0 - - micromark-util-resolve-all@2.0.1: - dependencies: - micromark-util-types: 2.0.2 - - micromark-util-sanitize-uri@1.2.0: - dependencies: - micromark-util-character: 1.2.0 - micromark-util-encode: 1.1.0 - micromark-util-symbol: 1.1.0 - - micromark-util-sanitize-uri@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-encode: 2.0.1 - micromark-util-symbol: 2.0.1 - - micromark-util-subtokenize@1.1.0: - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - - micromark-util-subtokenize@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-symbol@1.1.0: {} - - micromark-util-symbol@2.0.1: {} - - micromark-util-types@1.1.0: {} - - micromark-util-types@2.0.2: {} - - micromark@3.2.0: - dependencies: - '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@8.1.1) - decode-named-character-reference: 1.2.0 - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-combine-extensions: 1.1.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-encode: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - - micromark@4.0.2: - dependencies: - '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@8.1.1) - decode-named-character-reference: 1.2.0 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-combine-extensions: 2.0.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-encode: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-db@1.54.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mime-types@3.0.1: - dependencies: - mime-db: 1.54.0 - - mime@1.6.0: {} - - mime@2.6.0: {} - - mimic-fn@1.2.0: {} - - mimic-fn@2.1.0: {} - - mimic-fn@3.1.0: {} - - mimic-fn@4.0.0: {} - - mimic-function@5.0.1: {} - - mimic-response@3.1.0: {} - - mimic-response@4.0.0: {} - - min-document@2.19.0: - dependencies: - dom-walk: 0.1.2 - - min-indent@1.0.1: {} - - mini-css-extract-plugin@2.9.2(webpack@5.100.2): - dependencies: - schema-utils: 4.3.2 - tapable: 2.2.2 - webpack: 5.100.2(webpack-cli@4.10.0) - - minim@0.23.8: - dependencies: - lodash: 4.17.21 - - minimalistic-assert@1.0.1: {} - - minimatch@10.0.3: - dependencies: - '@isaacs/brace-expansion': 5.0.0 - - minimatch@3.0.3: - dependencies: - brace-expansion: 2.0.2 - - minimatch@3.0.8: - dependencies: - brace-expansion: 2.0.2 - - minimatch@3.1.2: - dependencies: - brace-expansion: 2.0.2 - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.2 - - minimatch@7.4.6: - dependencies: - brace-expansion: 2.0.2 - - minimatch@9.0.3: - dependencies: - brace-expansion: 2.0.2 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.2 - - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - - minimist@1.2.8: {} - - minipass-collect@1.0.2: - dependencies: - minipass: 3.3.6 - - minipass-fetch@1.4.1: - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - - minipass-fetch@2.1.2: - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - - minipass-flush@1.0.5: - dependencies: - minipass: 3.3.6 - - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 - - minipass-sized@1.0.3: - dependencies: - minipass: 3.3.6 - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - - minipass@7.1.2: {} - - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - - mississippi@2.0.0: - dependencies: - concat-stream: 1.6.2 - duplexify: 3.7.1 - end-of-stream: 1.4.5 - flush-write-stream: 1.1.1 - from2: 2.3.0 - parallel-transform: 1.2.0 - pump: 2.0.1 - pumpify: 1.5.1 - stream-each: 1.2.3 - through2: 2.0.5 - - mkdirp-classic@0.5.3: {} - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mkdirp@1.0.4: {} - - mkdirp@3.0.1: {} - - mlly@1.7.4: - dependencies: - acorn: 8.15.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.1 - - mocha@10.8.2: - dependencies: - ansi-colors: 4.1.3 - browser-stdout: 1.3.1 - chokidar: 3.6.0 - debug: 4.4.1(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 - log-symbols: 4.1.0 - minimatch: 5.1.6 - ms: 2.1.3 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.5.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - yargs-unparser: 2.0.0 - - mocha@11.7.0: - dependencies: - browser-stdout: 1.3.1 - chokidar: 4.0.3 - debug: 4.4.1(supports-color@8.1.1) - diff: 7.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 10.4.5 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 9.0.5 - ms: 2.1.3 - picocolors: 1.1.1 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 9.3.2 - yargs: 17.7.2 - yargs-parser: 21.1.1 - yargs-unparser: 2.0.0 - - moment-timezone@0.5.39: - dependencies: - moment: 2.30.1 - - moment@2.30.1: {} - - monaco-editor-webpack-plugin@7.1.0(monaco-editor@0.52.2)(webpack@5.100.2): - dependencies: - loader-utils: 2.0.4 - monaco-editor: 0.52.2 - webpack: 5.100.2(webpack-cli@6.0.1) - - monaco-editor@0.44.0: {} - - monaco-editor@0.46.0: {} - - monaco-editor@0.52.2: {} - - monaco-languageclient@0.13.1-next.9: - dependencies: - glob-to-regexp: 0.4.1 - vscode-jsonrpc: 6.0.0 - vscode-languageclient: 7.0.0 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 - - monaco-page-objects@3.14.1(selenium-webdriver@4.33.0)(typescript@5.8.3): - dependencies: - clipboardy: 4.0.0 - clone-deep: 4.0.1 - compare-versions: 6.1.1 - fs-extra: 11.3.0 - selenium-webdriver: 4.33.0 - type-fest: 4.41.0 - typescript: 5.8.3 - - mousetrap@1.6.5: {} - - move-concurrently@1.0.1: - dependencies: - aproba: 1.2.0 - copy-concurrently: 1.0.5 - fs-write-stream-atomic: 1.0.10 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - - mri@1.2.0: {} - - ms@2.0.0: {} - - ms@2.1.2: {} - - ms@2.1.3: {} - - multicast-dns@7.2.5: - dependencies: - dns-packet: 5.6.1 - thunky: 1.1.0 - - mustache@4.2.0: {} - - mute-stream@0.0.7: {} - - mute-stream@0.0.8: {} - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nan@2.22.2: {} - - nano-spawn@1.0.2: {} - - nanoid@3.3.11: {} - - nanoid@5.1.5: {} - - nanospinner@1.2.2: - dependencies: - picocolors: 1.1.1 - - napi-build-utils@2.0.0: {} - - natural-compare@1.4.0: {} - - neatequal@1.0.0: - dependencies: - varstream: 0.3.2 - - negotiator@0.6.3: {} - - negotiator@0.6.4: {} - - negotiator@1.0.0: {} - - neo-async@2.6.2: {} - - neotraverse@0.6.18: {} - - nested-error-stacks@2.1.1: {} - - next-tick@1.1.0: {} - - nice-try@1.0.5: {} - - no-case@2.3.2: - dependencies: - lower-case: 1.1.4 - - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.8.1 - - node-abi@3.75.0: - dependencies: - semver: 7.7.2 - - node-abort-controller@3.1.1: {} - - node-addon-api@4.3.0: {} - - node-addon-api@7.1.1: - optional: true - - node-addon-api@8.4.0: - optional: true - - node-dir@0.1.17: - dependencies: - minimatch: 3.1.2 - - node-domexception@1.0.0: {} - - node-fetch-commonjs@3.3.2: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - - node-fetch-native@1.6.6: {} - - node-fetch@2.7.0(encoding@0.1.13): - dependencies: - whatwg-url: 5.0.0 - optionalDependencies: - encoding: 0.1.13 - - node-fetch@3.3.2: - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - - node-forge@1.3.1: {} - - node-gyp-build@4.8.4: - optional: true - - node-gyp@3.8.0: - dependencies: - fstream: 1.0.12 - glob: 7.2.3 - graceful-fs: 4.2.11 - mkdirp: 0.5.6 - nopt: 3.0.6 - npmlog: 4.1.2 - osenv: 0.1.5 - request: 2.88.2 - rimraf: 2.7.1 - semver: 5.3.0 - tar: 2.2.2 - which: 1.3.1 - - node-gyp@8.4.1: - dependencies: - env-paths: 2.2.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - make-fetch-happen: 9.1.0 - nopt: 5.0.0 - npmlog: 6.0.2 - rimraf: 3.0.2 - semver: 7.7.2 - tar: 6.2.1 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - - node-gyp@9.4.1: - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.2 - 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 - tar: 6.2.1 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - - node-int64@0.4.0: {} - - node-loader@2.1.0(webpack@5.100.2): - dependencies: - loader-utils: 2.0.4 - webpack: 5.100.2(webpack-cli@4.10.0) - - node-notifier@5.4.5: - dependencies: - growly: 1.3.0 - is-wsl: 1.1.0 - semver: 5.7.2 - shellwords: 0.1.1 - which: 1.3.1 - - node-notifier@6.0.0: - dependencies: - growly: 1.3.0 - is-wsl: 2.2.0 - semver: 6.3.1 - shellwords: 0.1.1 - which: 1.3.1 - optional: true - - node-releases@2.0.19: {} - - node-sarif-builder@2.0.3: - dependencies: - '@types/sarif': 2.1.7 - fs-extra: 10.1.0 - - node-sass@9.0.0: - dependencies: - async-foreach: 0.1.3 - chalk: 4.1.2 - cross-spawn: 7.0.6 - gaze: 1.1.3 - get-stdin: 4.0.1 - glob: 7.2.3 - lodash: 4.17.21 - make-fetch-happen: 10.2.1 - meow: 9.0.0 - nan: 2.22.2 - node-gyp: 8.4.1 - sass-graph: 4.0.1 - stdout-stream: 1.4.1 - true-case-path: 2.2.1 - transitivePeerDependencies: - - bluebird - - supports-color - - node-schedule@2.1.1: - dependencies: - cron-parser: 4.9.0 - long-timeout: 0.1.1 - sorted-array-functions: 1.3.0 - - noms@0.0.0: - dependencies: - inherits: 2.0.4 - readable-stream: 1.0.34 - - nopt@3.0.6: - dependencies: - abbrev: 1.0.9 - - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - - nopt@6.0.0: - dependencies: - abbrev: 1.1.1 - - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.10 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - - normalize-package-data@3.0.3: - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.16.1 - semver: 7.7.2 - validate-npm-package-license: 3.0.4 - - normalize-package-data@6.0.2: - dependencies: - hosted-git-info: 7.0.2 - semver: 7.7.2 - validate-npm-package-license: 3.0.4 - - normalize-path@2.1.1: - dependencies: - remove-trailing-separator: 1.1.0 - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - normalize-url@1.9.1: - dependencies: - object-assign: 4.1.1 - prepend-http: 1.0.4 - query-string: 4.3.4 - sort-keys: 1.1.2 - - normalize-url@6.1.0: {} - - normalize-url@8.0.2: {} - - npm-run-path@2.0.2: - dependencies: - path-key: 2.0.1 - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - npmlog@4.1.2: - dependencies: - are-we-there-yet: 1.1.7 - console-control-strings: 1.1.0 - gauge: 2.7.4 - set-blocking: 2.0.0 - - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - - npmlog@6.0.2: - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - nullthrows@1.1.1: {} - - num2fraction@1.2.2: {} - - number-is-nan@1.0.1: {} - - nwmatcher@1.4.4: {} - - nwsapi@2.2.20: {} - - nypm@0.5.4: - dependencies: - citty: 0.1.6 - consola: 3.4.2 - pathe: 2.0.3 - pkg-types: 1.3.1 - tinyexec: 0.3.2 - ufo: 1.6.1 - - oauth-sign@0.9.0: {} - - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - - object-inspect@1.13.4: {} - - object-is@1.1.6: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - - object-keys@1.1.1: {} - - object.assign@4.1.7: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - has-symbols: 1.1.0 - object-keys: 1.1.1 - - object.entries@1.1.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - - object.getownpropertydescriptors@2.1.8: - dependencies: - array.prototype.reduce: 1.0.8 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - gopd: 1.2.0 - safe-array-concat: 1.1.3 - - object.groupby@1.0.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - - object.values@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - objectorarray@1.0.5: {} - - obuf@1.1.2: {} - - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - - on-headers@1.1.0: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - one-time@1.0.0: - dependencies: - fn.name: 1.1.0 - - onetime@2.0.1: - dependencies: - mimic-fn: 1.2.0 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - - onetime@7.0.0: - dependencies: - mimic-function: 5.0.1 - - open@10.1.2: - dependencies: - default-browser: 5.2.1 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 3.1.0 - - open@7.4.2: - dependencies: - is-docker: 2.2.1 - is-wsl: 2.2.0 - - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - openapi-path-templating@2.2.1: - dependencies: - apg-lite: 1.0.5 - - openapi-server-url-templating@1.3.0: - dependencies: - apg-lite: 1.0.5 - - opener@1.5.2: {} - - opn@5.2.0: - dependencies: - is-wsl: 1.1.0 - - optionator@0.8.3: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.5 - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - ora@4.1.1: - dependencies: - chalk: 3.0.0 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - log-symbols: 3.0.0 - mute-stream: 0.0.8 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - ora@8.2.0: - dependencies: - chalk: 5.4.1 - cli-cursor: 5.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.1.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.1.0 - - original@1.0.2: - dependencies: - url-parse: 1.5.10 - - os-homedir@1.0.2: {} - - os-locale@1.4.0: - dependencies: - lcid: 1.0.0 - - os-locale@2.1.0: - dependencies: - execa: 0.7.0 - lcid: 1.0.0 - mem: 1.1.0 - - os-tmpdir@1.0.2: {} - - osenv@0.1.5: - dependencies: - os-homedir: 1.0.2 - os-tmpdir: 1.0.2 - - own-keys@1.0.1: - dependencies: - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - - p-all@2.1.0: - dependencies: - p-map: 2.1.0 - - p-cancelable@3.0.0: {} - - p-cancelable@4.0.1: {} - - p-defer@1.0.0: {} - - p-each-series@2.2.0: {} - - p-event@4.2.0: - dependencies: - p-timeout: 3.2.0 - - p-filter@2.1.0: - dependencies: - p-map: 2.1.0 - - p-finally@1.0.0: {} - - p-finally@2.0.1: {} - - p-limit@1.3.0: - dependencies: - p-try: 1.0.0 - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-limit@4.0.0: - dependencies: - yocto-queue: 1.2.1 - - p-locate@2.0.0: - dependencies: - p-limit: 1.3.0 - - p-locate@3.0.0: - dependencies: - p-limit: 2.3.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - - p-map@1.2.0: {} - - p-map@2.1.0: {} - - p-map@3.0.0: - dependencies: - aggregate-error: 3.1.0 - - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - - p-map@5.5.0: - dependencies: - aggregate-error: 4.0.1 - - p-map@7.0.3: {} - - p-queue@6.6.2: - dependencies: - eventemitter3: 4.0.7 - p-timeout: 3.2.0 - - p-retry@6.2.1: - dependencies: - '@types/retry': 0.12.2 - is-network-error: 1.1.0 - retry: 0.13.1 - - p-timeout@3.2.0: - dependencies: - p-finally: 1.0.0 - - p-try@1.0.0: {} - - p-try@2.2.0: {} - - package-json-from-dist@1.0.1: {} - - package-json@4.0.1: - dependencies: - got: 6.7.1 - registry-auth-token: 3.4.0 - registry-url: 3.1.0 - semver: 5.7.2 - - pako@0.2.9: {} - - pako@1.0.11: {} - - pako@2.1.0: {} - - parallel-transform@1.2.0: - dependencies: - cyclist: 1.0.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - - param-case@2.1.1: - dependencies: - no-case: 2.3.2 - - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-entities@2.0.0: - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - - parse-entities@4.0.2: - dependencies: - '@types/unist': 2.0.11 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.2.0 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - - parse-json@2.2.0: - dependencies: - error-ex: 1.3.2 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.27.1 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - parse-json@7.1.1: - 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 - - parse-passwd@1.0.0: {} - - parse-semver@1.1.1: - dependencies: - semver: 5.7.2 - - parse5-htmlparser2-tree-adapter@7.1.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.3.0 - - parse5-parser-stream@7.1.2: - dependencies: - parse5: 7.3.0 - - parse5@1.5.1: {} - - parse5@4.0.0: {} - - parse5@5.1.0: {} - - parse5@6.0.1: {} - - parse5@7.3.0: - dependencies: - entities: 6.0.1 - - parseurl@1.3.3: {} - - pascal-case@3.1.2: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - - path-browserify@1.0.1: {} - - path-dirname@1.0.2: {} - - path-exists@2.1.0: - dependencies: - pinkie-promise: 2.0.1 - - path-exists@3.0.0: {} - - path-exists@4.0.0: {} - - path-exists@5.0.0: {} - - path-is-absolute@1.0.1: {} - - path-is-inside@1.0.2: {} - - path-key@2.0.1: {} - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-parse@1.0.7: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-scurry@2.0.0: - dependencies: - lru-cache: 11.1.0 - minipass: 7.1.2 - - path-to-regexp@0.1.12: {} - - path-to-regexp@1.9.0: - dependencies: - isarray: 0.0.1 - - path-to-regexp@8.2.0: {} - - path-type@1.1.0: - dependencies: - graceful-fs: 4.2.11 - pify: 2.3.0 - pinkie-promise: 2.0.1 - - path-type@3.0.0: - dependencies: - pify: 3.0.0 - - path-type@4.0.0: {} - - path-type@6.0.0: {} - - path@0.12.7: - dependencies: - process: 0.11.10 - util: 0.10.4 - - pathe@2.0.3: {} - - pathfinding@0.4.18: - dependencies: - heap: 0.2.5 - - paths-js@0.4.11: {} - - pathval@1.1.1: {} - - pathval@2.0.0: {} - - pathval@2.0.1: {} - - peek-readable@5.4.2: {} - - peek-stream@1.1.3: - dependencies: - buffer-from: 1.1.2 - duplexify: 3.7.1 - through2: 2.0.5 - - pend@1.2.0: {} - - performance-now@2.1.0: {} - - picocolors@0.2.1: {} - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - picomatch@4.0.2: {} - - picomatch@4.0.3: {} - - pidtree@0.6.0: {} - - pify@2.3.0: {} - - pify@3.0.0: {} - - pify@4.0.1: {} - - pify@5.0.0: {} - - pinkie-promise@2.0.1: - dependencies: - pinkie: 2.0.4 - - pinkie@2.0.4: {} - - pirates@4.0.7: {} - - pkce-challenge@3.1.0: - dependencies: - crypto-js: 4.2.0 - - pkce-challenge@5.0.0: {} - - pkg-dir@2.0.0: - dependencies: - find-up: 2.1.0 - - pkg-dir@3.0.0: - dependencies: - find-up: 3.0.0 - - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - - pkg-dir@5.0.0: - dependencies: - find-up: 5.0.0 - - pkg-dir@7.0.0: - dependencies: - find-up: 6.3.0 - - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.7.4 - pathe: 2.0.3 - - playwright-core@1.52.0: {} - - playwright@1.52.0: - dependencies: - playwright-core: 1.52.0 - optionalDependencies: - fsevents: 2.3.2 - - plugin-error@1.0.1: - dependencies: - ansi-colors: 1.1.0 - arr-diff: 4.0.0 - arr-union: 3.1.0 - extend-shallow: 3.0.2 - - pluralize@2.0.0: {} - - pluralize@8.0.0: {} - - pn@1.1.0: {} - - pnp-webpack-plugin@1.6.4(typescript@4.9.5): - dependencies: - ts-pnp: 1.2.0(typescript@4.9.5) - transitivePeerDependencies: - - typescript - - pnp-webpack-plugin@1.6.4(typescript@5.8.3): - dependencies: - ts-pnp: 1.2.0(typescript@5.8.3) - transitivePeerDependencies: - - typescript - - polished@4.3.1: - dependencies: - '@babel/runtime': 7.27.6 - - popmotion@11.0.3: - dependencies: - framesync: 6.0.1 - hey-listen: 1.0.8 - style-value-types: 5.0.0 - tslib: 2.8.1 - - portfinder@1.0.37: - dependencies: - async: 3.2.6 - debug: 4.4.1(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - possible-typed-array-names@1.1.0: {} - - postcss-calc@5.3.1: - dependencies: - postcss: 5.2.18 - postcss-message-helpers: 2.0.0 - reduce-css-calc: 1.3.0 - - postcss-calc@8.2.4(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - - postcss-colormin@2.2.2: - dependencies: - colormin: 1.1.2 - postcss: 5.2.18 - postcss-value-parser: 3.3.1 - - postcss-colormin@5.3.1(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-convert-values@2.6.1: - dependencies: - postcss: 5.2.18 - postcss-value-parser: 3.3.1 - - postcss-convert-values@5.1.3(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-discard-comments@2.0.4: - dependencies: - postcss: 5.2.18 - - postcss-discard-comments@5.1.2(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-discard-duplicates@2.1.0: - dependencies: - postcss: 5.2.18 - - postcss-discard-duplicates@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-discard-empty@2.1.0: - dependencies: - postcss: 5.2.18 - - postcss-discard-empty@5.1.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-discard-overridden@0.1.1: - dependencies: - postcss: 5.2.18 - - postcss-discard-overridden@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-discard-unused@2.2.3: - dependencies: - postcss: 5.2.18 - uniqs: 2.0.0 - - postcss-filter-plugins@2.0.3: - dependencies: - postcss: 5.2.18 - - postcss-flexbugs-fixes@3.2.0: - dependencies: - postcss: 6.0.23 - - postcss-flexbugs-fixes@4.2.1: - dependencies: - postcss: 7.0.39 - - postcss-import@15.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.10 - - postcss-js@4.0.1(postcss@8.5.6): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.5.6 - - postcss-load-config@1.2.0: - dependencies: - cosmiconfig: 2.2.2 - object-assign: 4.1.1 - postcss-load-options: 1.2.0 - postcss-load-plugins: 2.3.0 - - postcss-load-config@3.1.4(postcss@8.5.6): - dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 - optionalDependencies: - postcss: 8.5.6 - - postcss-load-config@4.0.2(postcss@8.5.6): - dependencies: - lilconfig: 3.1.3 - yaml: 2.8.0 - optionalDependencies: - postcss: 8.5.6 - - postcss-load-options@1.2.0: - dependencies: - cosmiconfig: 2.2.2 - object-assign: 4.1.1 - - postcss-load-plugins@2.3.0: - dependencies: - cosmiconfig: 2.2.2 - object-assign: 4.1.1 - - postcss-loader@2.0.8: - dependencies: - loader-utils: 1.4.2 - postcss: 6.0.23 - postcss-load-config: 1.2.0 - schema-utils: 0.3.0 - - postcss-loader@4.3.0(postcss@7.0.39)(webpack@5.100.2): - 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.100.2(webpack-cli@4.10.0) - - postcss-loader@8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.100.2): - dependencies: - cosmiconfig: 9.0.0(typescript@5.8.3) - jiti: 1.21.7 - postcss: 8.5.6 - semver: 7.7.2 - optionalDependencies: - webpack: 5.100.2(webpack-cli@6.0.1) - transitivePeerDependencies: - - typescript - - postcss-merge-idents@2.1.7: - dependencies: - has: 1.0.4 - postcss: 5.2.18 - postcss-value-parser: 3.3.1 - - postcss-merge-longhand@2.0.2: - dependencies: - postcss: 5.2.18 - - postcss-merge-longhand@5.1.7(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.5.6) - - postcss-merge-rules@2.1.2: - dependencies: - browserslist: 1.7.7 - caniuse-api: 1.6.1 - postcss: 5.2.18 - postcss-selector-parser: 2.2.3 - vendors: 1.0.4 - - postcss-merge-rules@5.1.4(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-message-helpers@2.0.0: {} - - postcss-minify-font-values@1.0.5: - dependencies: - object-assign: 4.1.1 - postcss: 5.2.18 - postcss-value-parser: 3.3.1 - - postcss-minify-font-values@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@1.0.5: - dependencies: - postcss: 5.2.18 - postcss-value-parser: 3.3.1 - - postcss-minify-gradients@5.1.1(postcss@8.5.6): - dependencies: - colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-minify-params@1.2.2: - dependencies: - alphanum-sort: 1.0.2 - postcss: 5.2.18 - postcss-value-parser: 3.3.1 - uniqs: 2.0.0 - - postcss-minify-params@5.1.4(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-minify-selectors@2.1.1: - dependencies: - alphanum-sort: 1.0.2 - has: 1.0.4 - postcss: 5.2.18 - postcss-selector-parser: 2.2.3 - - postcss-minify-selectors@5.2.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-modules-extract-imports@1.2.1: - dependencies: - postcss: 6.0.23 - - postcss-modules-extract-imports@2.0.0: - dependencies: - postcss: 7.0.39 - - postcss-modules-extract-imports@3.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-modules-local-by-default@1.2.0: - dependencies: - css-selector-tokenizer: 0.7.3 - postcss: 6.0.23 - - postcss-modules-local-by-default@3.0.3: - dependencies: - icss-utils: 4.1.1 - postcss: 7.0.39 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - - postcss-modules-local-by-default@4.2.0(postcss@8.5.6): - dependencies: - icss-utils: 5.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-selector-parser: 7.1.0 - postcss-value-parser: 4.2.0 - - postcss-modules-scope@1.1.0: - dependencies: - css-selector-tokenizer: 0.7.3 - postcss: 6.0.23 - - postcss-modules-scope@2.2.0: - dependencies: - postcss: 7.0.39 - postcss-selector-parser: 6.1.2 - - postcss-modules-scope@3.2.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 7.1.0 - - postcss-modules-values@1.3.0: - dependencies: - icss-replace-symbols: 1.1.0 - postcss: 6.0.23 - - postcss-modules-values@3.0.0: - dependencies: - icss-utils: 4.1.1 - postcss: 7.0.39 - - postcss-modules-values@4.0.0(postcss@8.5.6): - dependencies: - icss-utils: 5.1.0(postcss@8.5.6) - postcss: 8.5.6 - - postcss-modules@4.3.1(postcss@8.5.6): - dependencies: - generic-names: 4.0.0 - icss-replace-symbols: 1.1.0 - lodash.camelcase: 4.3.0 - 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) - string-hash: 1.1.3 - - postcss-nested@6.2.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-normalize-charset@1.1.1: - dependencies: - postcss: 5.2.18 - - postcss-normalize-charset@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-normalize-display-values@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@5.1.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@5.1.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@5.1.1(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@3.0.8: - dependencies: - is-absolute-url: 2.1.0 - normalize-url: 1.9.1 - postcss: 5.2.18 - postcss-value-parser: 3.3.1 - - postcss-normalize-url@5.1.0(postcss@8.5.6): - dependencies: - normalize-url: 6.1.0 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@5.1.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-ordered-values@2.2.3: - dependencies: - postcss: 5.2.18 - postcss-value-parser: 3.3.1 - - postcss-ordered-values@5.1.3(postcss@8.5.6): - dependencies: - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-reduce-idents@2.4.0: - dependencies: - postcss: 5.2.18 - postcss-value-parser: 3.3.1 - - postcss-reduce-initial@1.0.1: - dependencies: - postcss: 5.2.18 - - postcss-reduce-initial@5.1.2(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - caniuse-api: 3.0.0 - postcss: 8.5.6 - - postcss-reduce-transforms@1.0.4: - dependencies: - has: 1.0.4 - postcss: 5.2.18 - postcss-value-parser: 3.3.1 - - postcss-reduce-transforms@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-resolve-nested-selector@0.1.6: {} - - postcss-safe-parser@7.0.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-selector-parser@2.2.3: - dependencies: - flatten: 1.0.3 - indexes-of: 1.0.1 - uniq: 1.0.1 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@7.1.0: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-svgo@2.1.6: - dependencies: - is-svg: 2.1.0 - postcss: 5.2.18 - postcss-value-parser: 3.3.1 - svgo: 0.7.2 - - postcss-svgo@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - svgo: 2.8.0 - - postcss-unique-selectors@2.0.2: - dependencies: - alphanum-sort: 1.0.2 - postcss: 5.2.18 - uniqs: 2.0.0 - - postcss-unique-selectors@5.1.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-value-parser@3.3.1: {} - - postcss-value-parser@4.2.0: {} - - postcss-zindex@2.2.0: - dependencies: - has: 1.0.4 - postcss: 5.2.18 - uniqs: 2.0.0 - - postcss@5.2.18: - dependencies: - chalk: 1.1.3 - js-base64: 2.6.4 - source-map: 0.5.7 - supports-color: 3.2.3 - - postcss@6.0.23: - dependencies: - chalk: 2.4.2 - source-map: 0.6.1 - supports-color: 5.5.0 - - postcss@7.0.39: - dependencies: - picocolors: 0.2.1 - source-map: 0.6.1 - - postcss@8.5.6: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - prebuild-install@7.1.3: - dependencies: - detect-libc: 2.0.4 - 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 - pump: 3.0.3 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.3 - tunnel-agent: 0.6.0 - - prelude-ls@1.1.2: {} - - prelude-ls@1.2.1: {} - - prepend-http@1.0.4: {} - - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.3.0 - - prettier@1.19.1: {} - - prettier@2.3.0: {} - - prettier@2.8.8: {} - - prettier@3.5.3: {} - - prettier@3.6.2: {} - - pretty-bytes@4.0.2: {} - - pretty-error@2.1.2: - dependencies: - lodash: 4.17.21 - renderkid: 2.0.7 - - pretty-error@4.0.0: - dependencies: - lodash: 4.17.21 - renderkid: 3.0.0 - - pretty-format@20.0.3: - dependencies: - ansi-regex: 2.1.1 - ansi-styles: 3.2.1 - - pretty-format@22.4.3: - dependencies: - ansi-regex: 3.0.1 - ansi-styles: 3.2.1 - - pretty-format@25.5.0: - dependencies: - '@jest/types': 25.5.0 - ansi-regex: 5.0.1 - ansi-styles: 4.3.0 - react-is: 16.13.1 - - pretty-format@27.5.1: - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - - pretty-hrtime@1.0.3: {} - - prism-react-renderer@2.4.1(react@18.2.0): - dependencies: - '@types/prismjs': 1.26.5 - clsx: 2.1.1 - react: 18.2.0 - - prismjs@1.30.0: {} - - private@0.1.8: {} - - process-nextick-args@1.0.7: {} - - process-nextick-args@2.0.1: {} - - process@0.11.10: {} - - progress-estimator@0.2.2: - dependencies: - chalk: 2.4.2 - cli-spinners: 1.3.1 - humanize-duration: 3.33.0 - log-update: 2.3.0 - - progress@2.0.3: {} - - promise-inflight@1.0.1(bluebird@3.7.2): - optionalDependencies: - bluebird: 3.7.2 - - promise-retry@2.0.1: - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - - promise.allsettled@1.0.7: - dependencies: - array.prototype.map: 1.0.8 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - get-intrinsic: 1.3.0 - iterate-value: 1.0.2 - - promise.prototype.finally@3.1.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - set-function-name: 2.0.2 - - promise.series@0.2.0: {} - - promise@7.3.1: - dependencies: - asap: 2.0.6 - - promise@8.0.1: - dependencies: - asap: 2.0.6 - - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - proper-lockfile@1.2.0: - dependencies: - err-code: 1.1.2 - extend: 3.0.2 - graceful-fs: 4.2.11 - retry: 0.10.1 - - property-expr@2.0.6: {} - - property-information@5.6.0: - dependencies: - xtend: 4.0.2 - - property-information@6.5.0: {} - - property-information@7.1.0: {} - - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - - proxy-from-env@0.0.1: {} - - proxy-from-env@1.1.0: {} - - prr@1.0.1: {} - - pseudomap@1.0.2: {} - - psl@1.15.0: - dependencies: - punycode: 2.3.1 - - pump@1.0.3: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - - pump@2.0.1: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - - pump@3.0.3: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - - pumpify@1.5.1: - dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 - - punycode.js@2.3.1: {} - - punycode@1.4.1: {} - - punycode@2.3.1: {} - - puppeteer-core@2.1.1: - dependencies: - '@types/mime-types': 2.1.4 - debug: 4.4.1(supports-color@8.1.1) - extract-zip: 1.7.0 - https-proxy-agent: 4.0.0 - mime: 2.6.0 - mime-types: 2.1.35 - progress: 2.0.3 - proxy-from-env: 1.1.0 - rimraf: 2.7.1 - ws: 6.2.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - pure-color@1.3.0: {} - - pure-rand@6.1.0: {} - - q@1.5.1: {} - - qs@6.13.0: - dependencies: - side-channel: 1.1.0 - - qs@6.14.0: - dependencies: - side-channel: 1.1.0 - - qs@6.5.3: {} - - query-string@4.3.4: - dependencies: - object-assign: 4.1.1 - strict-uri-encode: 1.1.0 - - querystringify@2.2.0: {} - - queue-microtask@1.2.3: {} - - quick-lru@4.0.1: {} - - quick-lru@5.1.1: {} - - raf@3.4.0: - dependencies: - performance-now: 2.1.0 - - ramda-adjunct@5.1.0(ramda@0.30.1): - dependencies: - ramda: 0.30.1 - - ramda@0.28.0: {} - - ramda@0.29.0: {} - - ramda@0.30.1: {} - - randexp@0.5.3: - dependencies: - drange: 1.1.1 - ret: 0.2.2 - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - range-parser@1.2.1: {} - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - - raw-body@3.0.0: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.6.3 - unpipe: 1.0.0 - - raw-loader@4.0.2(webpack@5.100.2): - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.100.2(webpack-cli@4.10.0) - - rc-config-loader@4.1.3: - dependencies: - debug: 4.4.1(supports-color@8.1.1) - js-yaml: 4.1.0 - json5: 2.2.3 - require-from-string: 2.0.2 - transitivePeerDependencies: - - supports-color - - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - - react-base16-styling@0.6.0: - dependencies: - base16: 1.0.0 - lodash.curry: 4.1.1 - lodash.flow: 3.5.0 - pure-color: 1.3.0 - - react-collapse@5.1.1(react@18.2.0): - dependencies: - react: 18.2.0 - - react-colorful@5.6.1(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) - - react-copy-to-clipboard@5.1.0(react@18.2.0): - dependencies: - copy-to-clipboard: 3.3.3 - prop-types: 15.8.1 - react: 18.2.0 - - react-debounce-input@3.3.0(react@18.2.0): - dependencies: - lodash.debounce: 4.0.8 - prop-types: 15.8.1 - react: 18.2.0 - - react-dev-utils@5.0.3(typescript@5.8.3)(webpack@5.100.2): - dependencies: - address: 1.0.3 - babel-code-frame: 6.26.0 - chalk: 1.1.3 - cross-spawn: 5.1.0 - detect-port-alt: 1.1.6 - escape-string-regexp: 1.0.5 - filesize: 3.5.11 - global-modules: 1.0.0 - gzip-size: 3.0.0 - inquirer: 3.3.0 - is-root: 1.0.0 - opn: 5.2.0 - react-error-overlay: 4.0.1 - recursive-readdir: 2.2.1 - shell-quote: 1.6.1 - sockjs-client: 1.1.5 - strip-ansi: 3.0.1 - text-table: 0.2.0 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - react-dnd-html5-backend@16.0.1: - dependencies: - dnd-core: 16.0.1 - - react-dnd@16.0.1(@types/hoist-non-react-statics@3.3.6)(@types/node@22.15.32)(@types/react@18.2.0)(react@18.2.0): - dependencies: - '@react-dnd/invariant': 4.0.2 - '@react-dnd/shallowequal': 4.0.2 - dnd-core: 16.0.1 - fast-deep-equal: 3.1.3 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - optionalDependencies: - '@types/hoist-non-react-statics': 3.3.6 - '@types/node': 22.15.32 - '@types/react': 18.2.0 - - react-docgen-typescript@2.4.0(typescript@4.9.5): - dependencies: - typescript: 4.9.5 - - react-docgen-typescript@2.4.0(typescript@5.8.3): - dependencies: - typescript: 5.8.3 - - react-docgen@5.4.3: - dependencies: - '@babel/core': 7.27.4 - '@babel/generator': 7.27.5 - '@babel/runtime': 7.27.6 - ast-types: 0.14.2 - commander: 2.20.3 - doctrine: 3.0.0 - estree-to-babel: 3.2.1 - neo-async: 2.6.2 - node-dir: 0.1.17 - strip-indent: 3.0.0 - transitivePeerDependencies: - - supports-color - - react-docgen@7.1.1: - dependencies: - '@babel/core': 7.27.4 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.7 - '@types/doctrine': 0.0.9 - '@types/resolve': 1.20.6 - doctrine: 3.0.0 - resolve: 1.22.10 - strip-indent: 4.0.0 - transitivePeerDependencies: - - supports-color - - react-docgen@8.0.0: - dependencies: - '@babel/core': 7.28.0 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.7 - '@types/doctrine': 0.0.9 - '@types/resolve': 1.20.6 - doctrine: 3.0.0 - resolve: 1.22.10 - strip-indent: 4.0.0 - transitivePeerDependencies: - - supports-color - - react-dom@18.2.0(react@18.2.0): - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.2 - - react-dom@19.1.0(react@19.1.0): - dependencies: - react: 19.1.0 - scheduler: 0.26.0 - - react-element-to-jsx-string@14.3.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@base2/pretty-print-object': 1.0.1 - is-plain-object: 5.0.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 17.0.2 - - react-element-to-jsx-string@14.3.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0): - dependencies: - '@base2/pretty-print-object': 1.0.1 - is-plain-object: 5.0.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-is: 17.0.2 - - react-element-to-jsx-string@15.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@base2/pretty-print-object': 1.0.1 - is-plain-object: 5.0.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.1.0 - - react-error-boundary@6.0.0(react@18.2.0): - dependencies: - '@babel/runtime': 7.27.6 - react: 18.2.0 - - react-error-overlay@4.0.1: {} - - react-hook-form@7.56.3(react@18.2.0): - dependencies: - react: 18.2.0 - - react-hook-form@7.56.4(react@18.2.0): - dependencies: - react: 18.2.0 - - react-hot-loader@4.13.1(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - fast-levenshtein: 2.0.6 - global: 4.4.0 - hoist-non-react-statics: 3.3.2 - loader-utils: 2.0.4 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-lifecycles-compat: 3.0.4 - shallowequal: 1.1.0 - source-map: 0.7.4 - optionalDependencies: - '@types/react': 18.2.0 - - react-icons@4.12.0(react@19.1.0): - dependencies: - react: 19.1.0 - - react-immutable-proptypes@2.2.0(immutable@3.8.2): - dependencies: - immutable: 3.8.2 - invariant: 2.2.4 - - react-immutable-pure-component@2.2.2(immutable@3.8.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - immutable: 3.8.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react-inspector@5.1.1(react@18.2.0): - dependencies: - '@babel/runtime': 7.27.6 - is-dom: 1.1.0 - prop-types: 15.8.1 - react: 18.2.0 - - react-inspector@6.0.2(react@18.2.0): - dependencies: - react: 18.2.0 - - react-intl@7.1.11(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) - '@types/hoist-non-react-statics': 3.3.6 - '@types/react': 18.2.0 - hoist-non-react-statics: 3.3.2 - intl-messageformat: 10.7.16 - 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): - dependencies: - '@formatjs/ecma402-abstract': 2.3.4 - '@formatjs/icu-messageformat-parser': 2.11.2 - '@formatjs/intl': 3.1.6(typescript@4.9.5) - '@types/hoist-non-react-statics': 3.3.6 - '@types/react': 18.2.0 - hoist-non-react-statics: 3.3.2 - intl-messageformat: 10.7.16 - react: 19.1.0 - tslib: 2.8.1 - optionalDependencies: - typescript: 4.9.5 - - react-is@16.13.1: {} - - react-is@17.0.2: {} - - react-is@18.1.0: {} - - react-is@18.3.1: {} - - react-is@19.1.0: {} - - react-json-view-lite@2.4.1(react@18.2.0): - dependencies: - react: 18.2.0 - - react-json-view@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): - dependencies: - flux: 4.0.4(encoding@0.1.13)(react@18.2.0) - react: 18.2.0 - react-base16-styling: 0.6.0 - react-dom: 18.2.0(react@18.2.0) - react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.5.9(@types/react@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - encoding - - react-lifecycles-compat@3.0.4: {} - - react-lottie@1.2.10(react@18.2.0): - dependencies: - babel-runtime: 6.26.0 - lottie-web: 5.13.0 - prop-types: 15.8.1 - react: 18.2.0 - - react-lottie@1.2.10(react@19.1.0): - dependencies: - babel-runtime: 6.26.0 - lottie-web: 5.13.0 - prop-types: 15.8.1 - react: 19.1.0 - - react-markdown@10.1.0(@types/react@18.2.0)(react@18.2.0): - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@types/react': 18.2.0 - devlop: 1.1.0 - hast-util-to-jsx-runtime: 2.3.6 - html-url-attributes: 3.0.1 - mdast-util-to-hast: 13.2.0 - react: 18.2.0 - remark-parse: 11.0.0 - remark-rehype: 11.1.2 - unified: 11.0.5 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - - react-markdown@7.1.2(@types/react@18.2.0)(react@18.2.0): - dependencies: - '@types/hast': 2.3.10 - '@types/react': 18.2.0 - '@types/unist': 2.0.11 - comma-separated-tokens: 2.0.3 - hast-util-whitespace: 2.0.1 - prop-types: 15.8.1 - property-information: 6.5.0 - react: 18.2.0 - react-is: 17.0.2 - remark-parse: 10.0.2 - remark-rehype: 9.1.0 - space-separated-tokens: 2.0.2 - style-to-object: 0.3.0 - unified: 10.1.2 - unist-util-visit: 4.1.2 - vfile: 5.3.7 - transitivePeerDependencies: - - supports-color - - react-monaco-editor@0.58.0(monaco-editor@0.52.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - monaco-editor: 0.52.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react-redux@9.2.0(@types/react@18.2.0)(react@18.2.0)(redux@5.0.1): - dependencies: - '@types/use-sync-external-store': 0.0.6 - react: 18.2.0 - use-sync-external-store: 1.5.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.0 - redux: 5.0.1 - - react-refresh@0.11.0: {} - - react-refresh@0.17.0: {} - - react-remove-scroll-bar@2.3.8(@types/react@18.2.0)(react@18.2.0): - dependencies: - react: 18.2.0 - react-style-singleton: 2.2.3(@types/react@18.2.0)(react@18.2.0) - tslib: 2.8.1 - optionalDependencies: - '@types/react': 18.2.0 - - react-remove-scroll@2.5.5(@types/react@18.2.0)(react@18.2.0): - dependencies: - react: 18.2.0 - react-remove-scroll-bar: 2.3.8(@types/react@18.2.0)(react@18.2.0) - react-style-singleton: 2.2.3(@types/react@18.2.0)(react@18.2.0) - tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@18.2.0)(react@18.2.0) - use-sidecar: 1.1.3(@types/react@18.2.0)(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.0 - - react-remove-scroll@2.7.1(@types/react@18.2.0)(react@18.2.0): - dependencies: - react: 18.2.0 - react-remove-scroll-bar: 2.3.8(@types/react@18.2.0)(react@18.2.0) - react-style-singleton: 2.2.3(@types/react@18.2.0)(react@18.2.0) - tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@18.2.0)(react@18.2.0) - use-sidecar: 1.1.3(@types/react@18.2.0)(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.0 - - react-scripts-ts@3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.27.4))(babel-runtime@6.26.0)(esbuild@0.25.5)(eslint@9.27.0(jiti@2.4.2))(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.4))(webpack@5.100.2) - 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.100.2) - file-loader: 1.1.5(webpack@5.100.2) - fork-ts-checker-webpack-plugin: 0.2.10(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2) - fs-extra: 3.0.1 - html-webpack-plugin: 2.29.0(webpack@5.100.2) - jest: 20.0.4 - object-assign: 4.1.1 - postcss-flexbugs-fixes: 3.2.0 - postcss-loader: 2.0.8 - promise: 8.0.1 - raf: 3.4.0 - react-dev-utils: 5.0.3(typescript@5.8.3)(webpack@5.100.2) - resolve: 1.6.0 - source-map-loader: 0.2.4 - style-loader: 0.19.0 - sw-precache-webpack-plugin: 0.11.4(webpack@5.100.2) - 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 - tslint: 5.20.1(typescript@5.8.3) - 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.100.2) - url-loader: 0.6.2(file-loader@1.1.5(webpack@5.100.2)) - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) - webpack-manifest-plugin: 1.3.2(webpack@5.100.2) - whatwg-fetch: 2.0.3 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - '@swc/core' - - babel-core - - babel-runtime - - bufferutil - - debug - - esbuild - - eslint - - supports-color - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - react-scripts-ts@3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.27.4))(babel-runtime@6.26.0)(eslint@9.27.0(jiti@2.4.2))(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.4))(webpack@5.100.2) - 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.100.2) - file-loader: 1.1.5(webpack@5.100.2) - fork-ts-checker-webpack-plugin: 0.2.10(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2) - fs-extra: 3.0.1 - html-webpack-plugin: 2.29.0(webpack@5.100.2) - jest: 20.0.4 - object-assign: 4.1.1 - postcss-flexbugs-fixes: 3.2.0 - postcss-loader: 2.0.8 - promise: 8.0.1 - raf: 3.4.0 - react-dev-utils: 5.0.3(typescript@5.8.3)(webpack@5.100.2) - resolve: 1.6.0 - source-map-loader: 0.2.4 - style-loader: 0.19.0 - sw-precache-webpack-plugin: 0.11.4(webpack@5.100.2) - 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 - tslint: 5.20.1(typescript@5.8.3) - 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.100.2) - url-loader: 0.6.2(file-loader@1.1.5(webpack@5.100.2)) - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) - webpack-manifest-plugin: 1.3.2(webpack@5.100.2) - whatwg-fetch: 2.0.3 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - '@swc/core' - - babel-core - - babel-runtime - - bufferutil - - debug - - esbuild - - eslint - - supports-color - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - react-scripts-ts@3.1.0(babel-core@7.0.0-bridge.0(@babel/core@7.28.0))(babel-runtime@6.26.0)(eslint@9.26.0(jiti@2.4.2))(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.28.0))(webpack@5.100.2) - 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.100.2) - file-loader: 1.1.5(webpack@5.100.2) - fork-ts-checker-webpack-plugin: 0.2.10(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)(webpack@5.100.2) - fs-extra: 3.0.1 - html-webpack-plugin: 2.29.0(webpack@5.100.2) - jest: 20.0.4 - object-assign: 4.1.1 - postcss-flexbugs-fixes: 3.2.0 - postcss-loader: 2.0.8 - promise: 8.0.1 - raf: 3.4.0 - react-dev-utils: 5.0.3(typescript@5.8.3)(webpack@5.100.2) - resolve: 1.6.0 - source-map-loader: 0.2.4 - style-loader: 0.19.0 - sw-precache-webpack-plugin: 0.11.4(webpack@5.100.2) - 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 - tslint: 5.20.1(typescript@5.8.3) - 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.100.2) - url-loader: 0.6.2(file-loader@1.1.5(webpack@5.100.2)) - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-dev-server: 5.2.2(webpack@5.100.2) - webpack-manifest-plugin: 1.3.2(webpack@5.100.2) - whatwg-fetch: 2.0.3 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - '@swc/core' - - babel-core - - babel-runtime - - bufferutil - - debug - - esbuild - - eslint - - supports-color - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - - 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 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-lifecycles-compat: 3.0.4 - react-style-proptype: 3.2.2 - - react-style-proptype@3.2.2: - dependencies: - prop-types: 15.8.1 - - react-style-singleton@2.2.3(@types/react@18.2.0)(react@18.2.0): - dependencies: - get-nonce: 1.0.1 - react: 18.2.0 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 18.2.0 - - react-syntax-highlighter@15.6.1(react@18.2.0): - dependencies: - '@babel/runtime': 7.27.6 - highlight.js: 10.7.3 - highlightjs-vue: 1.0.0 - lowlight: 1.20.0 - prismjs: 1.30.0 - react: 18.2.0 - refractor: 3.6.0 - - react-test-renderer@19.1.0(react@18.2.0): - dependencies: - react: 18.2.0 - react-is: 19.1.0 - scheduler: 0.26.0 - - react-textarea-autosize@8.5.9(@types/react@18.2.0)(react@18.2.0): - dependencies: - '@babel/runtime': 7.27.6 - 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) - transitivePeerDependencies: - - '@types/react' - - react-zoom-pan-pinch@3.7.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) - - react@18.2.0: - dependencies: - loose-envify: 1.4.0 - - react@19.1.0: {} - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - read-pkg-up@1.0.1: - dependencies: - find-up: 1.1.2 - read-pkg: 1.1.0 - - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - read-pkg-up@8.0.0: - dependencies: - find-up: 5.0.0 - read-pkg: 6.0.0 - type-fest: 1.4.0 - - read-pkg@1.1.0: - dependencies: - load-json-file: 1.1.0 - normalize-package-data: 2.5.0 - path-type: 1.1.0 - - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - - read-pkg@6.0.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 3.0.3 - parse-json: 5.2.0 - type-fest: 1.4.0 - - read-pkg@8.1.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 6.0.2 - parse-json: 7.1.1 - type-fest: 4.41.0 - - read@1.0.7: - dependencies: - mute-stream: 0.0.8 - - readable-stream@1.0.34: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - - readable-stream@1.1.14: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - - readable-stream@2.0.6: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 1.0.7 - string_decoder: 0.10.31 - util-deprecate: 1.0.2 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readable-stream@4.7.0: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - - readable-web-to-node-stream@3.0.4: - dependencies: - readable-stream: 4.7.0 - - readdirp@2.2.1: - dependencies: - graceful-fs: 4.2.11 - micromatch: 4.0.8 - readable-stream: 2.3.8 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - readdirp@4.1.2: {} - - realpath-native@2.0.0: {} - - recast@0.23.11: - dependencies: - ast-types: 0.16.1 - esprima: 4.0.1 - source-map: 0.6.1 - tiny-invariant: 1.3.3 - tslib: 2.8.1 - - rechoir@0.6.2: - dependencies: - resolve: 1.22.10 - - rechoir@0.7.1: - dependencies: - resolve: 1.22.10 - - rechoir@0.8.0: - dependencies: - resolve: 1.22.10 - - recursive-readdir@2.2.1: - dependencies: - minimatch: 3.0.3 - - redent@1.0.0: - dependencies: - indent-string: 2.1.0 - strip-indent: 1.0.1 - - redent@3.0.0: - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - - redent@4.0.0: - dependencies: - indent-string: 5.0.0 - strip-indent: 4.0.0 - - reduce-css-calc@1.3.0: - dependencies: - balanced-match: 0.4.2 - math-expression-evaluator: 1.4.0 - reduce-function-call: 1.0.3 - - reduce-function-call@1.0.3: - dependencies: - balanced-match: 1.0.2 - - redux-immutable@4.0.0(immutable@3.8.2): - dependencies: - immutable: 3.8.2 - - redux@4.2.1: - dependencies: - '@babel/runtime': 7.27.6 - - redux@5.0.1: {} - - reflect-metadata@0.1.14: {} - - reflect.getprototypeof@1.0.10: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - - refractor@3.6.0: - dependencies: - hastscript: 6.0.0 - parse-entities: 2.0.0 - prismjs: 1.30.0 - - regenerate-unicode-properties@10.2.0: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - - regenerator-runtime@0.11.1: {} - - regenerator-runtime@0.13.11: {} - - regenerator-transform@0.10.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - private: 0.1.8 - - regexp.prototype.flags@1.5.4: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-errors: 1.3.0 - get-proto: 1.0.1 - gopd: 1.2.0 - set-function-name: 2.0.2 - - regexpp@2.0.1: {} - - regexpp@3.2.0: {} - - regexpu-core@2.0.0: - dependencies: - regenerate: 1.4.2 - regjsgen: 0.2.0 - regjsparser: 0.1.5 - - regexpu-core@6.2.0: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 - regjsgen: 0.8.0 - regjsparser: 0.12.0 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 - - registry-auth-token@3.4.0: - dependencies: - rc: 1.2.8 - safe-buffer: 5.2.1 - - registry-url@3.1.0: - dependencies: - rc: 1.2.8 - - regjsgen@0.2.0: {} - - regjsgen@0.8.0: {} - - regjsparser@0.1.5: - dependencies: - jsesc: 0.5.0 - - regjsparser@0.12.0: - dependencies: - jsesc: 3.0.2 - - rehype-raw@6.1.1: - dependencies: - '@types/hast': 2.3.10 - hast-util-raw: 7.2.3 - unified: 10.1.2 - - rehype-raw@7.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-raw: 9.1.0 - vfile: 6.0.3 - - relateurl@0.2.7: {} - - remap-istanbul@0.13.0: - dependencies: - istanbul: 0.4.5 - minimatch: 3.1.2 - plugin-error: 1.0.1 - source-map: 0.6.1 - through2: 3.0.0 - - remark-breaks@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-newline-to-break: 2.0.0 - unified: 11.0.5 - - remark-external-links@8.0.0: - dependencies: - extend: 3.0.2 - is-absolute-url: 3.0.3 - mdast-util-definitions: 4.0.0 - space-separated-tokens: 1.1.5 - unist-util-visit: 2.0.3 - - remark-footnotes@2.0.0: {} - - remark-gfm@4.0.1: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-gfm: 3.1.0 - micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-mdx@1.6.22: - dependencies: - '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-proposal-object-rest-spread': 7.12.1(@babel/core@7.12.9) - '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) - '@mdx-js/util': 1.6.22 - is-alphabetical: 1.0.4 - remark-parse: 8.0.3 - unified: 9.2.0 - transitivePeerDependencies: - - supports-color - - remark-parse@10.0.2: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-from-markdown: 1.3.1 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - - remark-parse@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 - micromark-util-types: 2.0.2 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-parse@8.0.3: - dependencies: - ccount: 1.1.0 - collapse-white-space: 1.0.6 - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - is-whitespace-character: 1.0.4 - is-word-character: 1.0.4 - markdown-escapes: 1.0.4 - parse-entities: 2.0.0 - repeat-string: 1.6.1 - state-toggle: 1.0.3 - trim: 0.0.1 - trim-trailing-lines: 1.1.4 - unherit: 1.1.3 - unist-util-remove-position: 2.0.1 - vfile-location: 3.2.0 - xtend: 4.0.2 - - remark-rehype@11.1.2: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 - unified: 11.0.5 - vfile: 6.0.3 - - remark-rehype@9.1.0: - dependencies: - '@types/hast': 2.3.10 - '@types/mdast': 3.0.15 - mdast-util-to-hast: 11.3.0 - unified: 10.1.2 - - remark-slug@6.1.0: - dependencies: - github-slugger: 1.5.0 - mdast-util-to-string: 1.1.0 - unist-util-visit: 2.0.3 - - remark-squeeze-paragraphs@4.0.0: - dependencies: - mdast-squeeze-paragraphs: 4.0.0 - - remark-stringify@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-to-markdown: 2.1.2 - unified: 11.0.5 - - remarkable@2.0.1: - dependencies: - argparse: 1.0.10 - autolinker: 3.16.2 - - remove-trailing-separator@1.1.0: {} - - renderkid@2.0.7: - dependencies: - css-select: 4.3.0 - dom-converter: 0.2.0 - htmlparser2: 6.1.0 - lodash: 4.17.21 - strip-ansi: 3.0.1 - - renderkid@3.0.0: - dependencies: - css-select: 4.3.0 - dom-converter: 0.2.0 - htmlparser2: 6.1.0 - lodash: 4.17.21 - strip-ansi: 6.0.1 - - repeat-string@1.6.1: {} - - repeating@2.0.1: - dependencies: - is-finite: 1.1.0 - - request-promise-core@1.1.4(request@2.88.2): - dependencies: - lodash: 4.17.21 - request: 2.88.2 - - request-promise-native@1.0.9(request@2.88.2): - dependencies: - request: 2.88.2 - request-promise-core: 1.1.4(request@2.88.2) - stealthy-require: 1.1.1 - tough-cookie: 2.5.0 - - request@2.88.2: - dependencies: - aws-sign2: 0.7.0 - aws4: 1.13.2 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 4.0.4 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.3 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - - require-directory@2.1.1: {} - - require-from-string@1.2.1: {} - - require-from-string@2.0.2: {} - - require-main-filename@1.0.1: {} - - require-main-filename@2.0.0: {} - - requires-port@1.0.0: {} - - reselect@5.1.1: {} - - resize-observer-polyfill@1.5.1: {} - - resolve-alpn@1.2.1: {} - - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 - - resolve-dir@1.0.1: - dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - - resolve-from@4.0.0: {} - - resolve-from@5.0.0: {} - - resolve.exports@2.0.3: {} - - resolve@1.1.7: {} - - resolve@1.17.0: - dependencies: - path-parse: 1.0.7 - - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - resolve@1.6.0: - dependencies: - path-parse: 1.0.7 - - resolve@2.0.0-next.5: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - responselike@3.0.0: - dependencies: - lowercase-keys: 3.0.0 - - restore-cursor@2.0.0: - dependencies: - onetime: 2.0.1 - signal-exit: 3.0.7 - - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - restore-cursor@5.1.0: - dependencies: - onetime: 7.0.0 - signal-exit: 4.1.0 - - ret@0.2.2: {} - - retry@0.10.1: {} - - retry@0.12.0: {} - - retry@0.13.1: {} - - reusify@1.1.0: {} - - rev-hash@3.0.0: {} - - rfdc@1.4.1: {} - - rimraf@2.6.3: - dependencies: - glob: 7.2.3 - - rimraf@2.7.1: - dependencies: - glob: 7.2.3 - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - - rimraf@6.0.1: - dependencies: - glob: 11.0.3 - package-json-from-dist: 1.0.1 - - rollup-plugin-import-css@3.5.8(rollup@4.44.0): - dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.44.0) - rollup: 4.44.0 - - rollup-plugin-peer-deps-external@2.2.4(rollup@4.44.0): - dependencies: - rollup: 4.44.0 - - rollup-plugin-postcss@4.0.2(postcss@8.5.6): - dependencies: - chalk: 4.1.2 - concat-with-sourcemaps: 1.1.0 - cssnano: 5.1.15(postcss@8.5.6) - import-cwd: 3.0.0 - p-queue: 6.6.2 - pify: 5.0.0 - postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6) - postcss-modules: 4.3.1(postcss@8.5.6) - promise.series: 0.2.0 - resolve: 1.22.10 - rollup-pluginutils: 2.8.2 - safe-identifier: 0.4.2 - style-inject: 0.3.0 - transitivePeerDependencies: - - ts-node - - rollup-plugin-scss@4.0.1: - dependencies: - rollup-pluginutils: 2.8.2 - - rollup-plugin-sourcemaps@0.6.3(@types/node@22.15.32)(rollup@1.32.1): - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@1.32.1) - rollup: 1.32.1 - source-map-resolve: 0.6.0 - optionalDependencies: - '@types/node': 22.15.32 - - rollup-plugin-svg@2.0.0: - dependencies: - rollup-pluginutils: 1.5.2 - - rollup-plugin-terser@5.3.1(rollup@1.32.1): - dependencies: - '@babel/code-frame': 7.27.1 - jest-worker: 24.9.0 - rollup: 1.32.1 - rollup-pluginutils: 2.8.2 - serialize-javascript: 4.0.0 - terser: 4.8.1 - - rollup-plugin-typescript2@0.27.3(rollup@1.32.1)(typescript@3.9.10): - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@1.32.1) - find-cache-dir: 3.3.2 - fs-extra: 8.1.0 - resolve: 1.17.0 - rollup: 1.32.1 - tslib: 2.0.1 - typescript: 3.9.10 - - rollup-plugin-typescript2@0.36.0(rollup@4.44.0)(typescript@5.8.3): - dependencies: - '@rollup/pluginutils': 4.2.1 - find-cache-dir: 3.3.2 - fs-extra: 10.1.0 - rollup: 4.44.0 - semver: 7.7.2 - tslib: 2.8.1 - typescript: 5.8.3 - - rollup-pluginutils@1.5.2: - dependencies: - estree-walker: 0.2.1 - minimatch: 3.1.2 - - rollup-pluginutils@2.8.2: - dependencies: - estree-walker: 0.6.1 - - rollup@1.32.1: - dependencies: - '@types/estree': 1.0.8 - '@types/node': 22.15.32 - acorn: 7.4.1 - - rollup@4.44.0: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.44.0 - '@rollup/rollup-android-arm64': 4.44.0 - '@rollup/rollup-darwin-arm64': 4.44.0 - '@rollup/rollup-darwin-x64': 4.44.0 - '@rollup/rollup-freebsd-arm64': 4.44.0 - '@rollup/rollup-freebsd-x64': 4.44.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.44.0 - '@rollup/rollup-linux-arm-musleabihf': 4.44.0 - '@rollup/rollup-linux-arm64-gnu': 4.44.0 - '@rollup/rollup-linux-arm64-musl': 4.44.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.44.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.44.0 - '@rollup/rollup-linux-riscv64-gnu': 4.44.0 - '@rollup/rollup-linux-riscv64-musl': 4.44.0 - '@rollup/rollup-linux-s390x-gnu': 4.44.0 - '@rollup/rollup-linux-x64-gnu': 4.44.0 - '@rollup/rollup-linux-x64-musl': 4.44.0 - '@rollup/rollup-win32-arm64-msvc': 4.44.0 - '@rollup/rollup-win32-ia32-msvc': 4.44.0 - '@rollup/rollup-win32-x64-msvc': 4.44.0 - fsevents: 2.3.3 - - router@2.2.0: - dependencies: - debug: 4.4.1(supports-color@8.1.1) - depd: 2.0.0 - is-promise: 4.0.0 - parseurl: 1.3.3 - path-to-regexp: 8.2.0 - transitivePeerDependencies: - - supports-color - - rsvp@4.8.5: {} - - run-applescript@7.0.0: {} - - run-async@2.4.1: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - run-queue@1.0.3: - dependencies: - aproba: 1.2.0 - - rx-lite-aggregates@4.0.8: - dependencies: - rx-lite: 4.0.8 - - rx-lite@4.0.8: {} - - rxjs@6.6.7: - dependencies: - tslib: 1.14.1 - - sade@1.8.1: - dependencies: - mri: 1.2.0 - - safe-array-concat@1.1.3: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - isarray: 2.0.5 - - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - - safe-identifier@0.4.2: {} - - safe-push-apply@1.0.0: - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - - safe-regex-test@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-regex: 1.2.1 - - safe-stable-stringify@2.5.0: {} - - safer-buffer@2.1.2: {} - - sane@1.6.0: - dependencies: - anymatch: 1.3.2 - exec-sh: 0.2.2 - fb-watchman: 1.9.2 - minimatch: 3.1.2 - minimist: 1.2.8 - walker: 1.0.8 - watch: 0.10.0 - - sane@4.1.0: - dependencies: - '@cnakazawa/watch': 1.0.4 - anymatch: 2.0.0 - capture-exit: 2.0.0 - exec-sh: 0.3.6 - execa: 1.0.0 - fb-watchman: 2.0.2 - micromatch: 4.0.8 - minimist: 1.2.8 - walker: 1.0.8 - - sanitize-filename@1.6.3: - dependencies: - truncate-utf8-bytes: 1.0.2 - - sass-graph@4.0.1: - dependencies: - glob: 7.2.3 - lodash: 4.17.21 - scss-tokenizer: 0.4.3 - yargs: 17.7.2 - - sass-loader@16.0.5(node-sass@9.0.0)(sass@1.89.2)(webpack@5.100.2): - dependencies: - neo-async: 2.6.2 - optionalDependencies: - node-sass: 9.0.0 - sass: 1.89.2 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - - sass@1.89.2: - dependencies: - chokidar: 4.0.3 - immutable: 5.1.3 - source-map-js: 1.2.1 - optionalDependencies: - '@parcel/watcher': 2.5.1 - - sax@1.2.4: {} - - sax@1.4.1: {} - - saxes@3.1.11: - dependencies: - xmlchars: 2.2.0 - - saxes@6.0.0: - dependencies: - xmlchars: 2.2.0 - - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - - scheduler@0.26.0: {} - - schema-utils@0.3.0: - dependencies: - ajv: 5.5.2 - - schema-utils@0.4.7: - dependencies: - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@2.7.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@2.7.1: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@3.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@4.3.2: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - - scss-tokenizer@0.4.3: - dependencies: - js-base64: 2.6.4 - source-map: 0.7.4 - - secretlint@9.3.4: - 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) - globby: 14.1.0 - read-pkg: 8.1.0 - transitivePeerDependencies: - - supports-color - - secure-compare@3.0.1: {} - - select-hose@2.0.0: {} - - selenium-webdriver@4.33.0: - dependencies: - '@bazel/runfiles': 6.3.1 - jszip: 3.10.1 - tmp: 0.2.3 - ws: 8.18.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - selfsigned@2.4.1: - dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 - - semver-diff@2.1.0: - dependencies: - semver: 5.7.2 - - semver@5.3.0: {} - - semver@5.7.2: {} - - semver@6.3.1: {} - - semver@7.7.2: {} - - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - send@1.2.0: - dependencies: - debug: 4.4.1(supports-color@8.1.1) - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 2.0.0 - http-errors: 2.0.0 - mime-types: 3.0.1 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.2 - transitivePeerDependencies: - - supports-color - - serialize-error@8.1.0: - dependencies: - type-fest: 0.20.2 - - serialize-javascript@1.9.1: {} - - serialize-javascript@4.0.0: - dependencies: - randombytes: 2.1.0 - - serialize-javascript@5.0.1: - dependencies: - randombytes: 2.1.0 - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - serve-favicon@2.5.1: - dependencies: - etag: 1.8.1 - fresh: 0.5.2 - ms: 2.1.3 - parseurl: 1.3.3 - safe-buffer: 5.2.1 - - serve-index@1.9.1: - dependencies: - accepts: 1.3.8 - batch: 0.6.1 - debug: 2.6.9 - escape-html: 1.0.3 - http-errors: 1.6.3 - mime-types: 2.1.35 - parseurl: 1.3.3 - transitivePeerDependencies: - - supports-color - - serve-static@1.16.2: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - - serve-static@2.2.0: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 1.2.0 - transitivePeerDependencies: - - supports-color - - serviceworker-cache-polyfill@4.0.0: {} - - set-blocking@2.0.0: {} - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - set-proto@1.0.0: - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - - set-value@4.1.0: - dependencies: - is-plain-object: 2.0.4 - is-primitive: 3.0.1 - - setimmediate@1.0.5: {} - - setprototypeof@1.1.0: {} - - setprototypeof@1.2.0: {} - - sha.js@2.4.11: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - shallow-clone@3.0.1: - dependencies: - kind-of: 6.0.3 - - shallowequal@1.1.0: {} - - shebang-command@1.2.0: - dependencies: - shebang-regex: 1.0.0 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@1.0.0: {} - - shebang-regex@3.0.0: {} - - shell-exec@1.0.2: {} - - shell-quote@1.6.1: - dependencies: - array-filter: 0.0.1 - array-map: 0.0.1 - array-reduce: 0.0.0 - jsonify: 0.0.1 - - shell-quote@1.8.3: {} - - shelljs@0.8.5: - dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - - shellwords@0.1.1: {} - - shimmer@1.2.1: {} - - short-unique-id@5.3.2: {} - - side-channel-list@1.0.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - - side-channel-weakmap@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - - side-channel@1.1.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - simple-concat@1.0.1: {} - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - 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.4.2 - lilconfig: 3.1.3 - nanospinner: 1.2.2 - picocolors: 1.1.1 - tinyglobby: 0.2.14 - - slash@1.0.0: {} - - slash@2.0.0: {} - - slash@3.0.0: {} - - slash@4.0.0: {} - - slash@5.1.0: {} - - slice-ansi@2.1.0: - dependencies: - ansi-styles: 3.2.1 - astral-regex: 1.0.0 - is-fullwidth-code-point: 2.0.0 - - slice-ansi@4.0.0: - dependencies: - ansi-styles: 4.3.0 - 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: - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 - - slugify@1.6.6: {} - - smart-buffer@4.2.0: {} - - sockjs-client@1.1.5: - dependencies: - debug: 2.6.9 - eventsource: 0.1.6 - faye-websocket: 0.11.4 - inherits: 2.0.4 - json3: 3.3.3 - url-parse: 1.5.10 - transitivePeerDependencies: - - supports-color - - sockjs@0.3.24: - dependencies: - faye-websocket: 0.11.4 - uuid: 8.3.2 - websocket-driver: 0.7.4 - - socks-proxy-agent@6.2.1: - dependencies: - agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) - socks: 2.8.5 - transitivePeerDependencies: - - supports-color - - socks-proxy-agent@7.0.0: - dependencies: - agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) - socks: 2.8.5 - transitivePeerDependencies: - - supports-color - - socks@2.8.5: - dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 - - sort-keys@1.1.2: - dependencies: - is-plain-obj: 1.1.0 - - sorted-array-functions@1.3.0: {} - - source-list-map@2.0.1: {} - - source-map-js@1.2.1: {} - - source-map-loader@0.2.4: - dependencies: - async: 2.6.4 - loader-utils: 1.4.2 - - source-map-loader@5.0.0(webpack@5.100.2): - dependencies: - iconv-lite: 0.6.3 - source-map-js: 1.2.1 - webpack: 5.100.2(webpack-cli@4.10.0) - - source-map-resolve@0.6.0: - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - - source-map-support@0.4.18: - dependencies: - source-map: 0.5.7 - - source-map-support@0.5.13: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.2.0: - dependencies: - amdefine: 1.0.1 - optional: true - - source-map@0.5.6: {} - - source-map@0.5.7: {} - - source-map@0.6.1: {} - - source-map@0.7.4: {} - - sourcemap-codec@1.4.8: {} - - space-separated-tokens@1.1.5: {} - - space-separated-tokens@2.0.2: {} - - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.21 - - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.21 - - spdx-license-ids@3.0.21: {} - - spdy-transport@3.0.0: - dependencies: - debug: 4.4.1(supports-color@8.1.1) - detect-node: 2.1.0 - hpack.js: 2.1.6 - obuf: 1.1.2 - readable-stream: 3.6.2 - wbuf: 1.7.3 - transitivePeerDependencies: - - supports-color - - spdy@4.0.2: - dependencies: - debug: 4.4.1(supports-color@8.1.1) - handle-thing: 2.0.1 - http-deceiver: 1.2.7 - select-hose: 2.0.0 - spdy-transport: 3.0.0 - transitivePeerDependencies: - - supports-color - - sprintf-js@1.0.3: {} - - sprintf-js@1.1.3: {} - - sshpk@1.18.0: - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 - - ssri@5.3.0: - dependencies: - safe-buffer: 5.2.1 - - ssri@8.0.1: - dependencies: - minipass: 3.3.6 - - ssri@9.0.1: - dependencies: - minipass: 3.3.6 - - stable@0.1.8: {} - - stack-chain@1.3.7: {} - - stack-generator@2.0.10: - dependencies: - stackframe: 1.3.4 - - stack-trace@0.0.10: {} - - stack-utils@1.0.5: - dependencies: - escape-string-regexp: 2.0.0 - - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 - - stackframe@1.3.4: {} - - stacktrace-gps@3.1.2: - dependencies: - source-map: 0.5.6 - stackframe: 1.3.4 - - stacktrace-js@2.0.2: - dependencies: - error-stack-parser: 2.1.4 - stack-generator: 2.0.10 - stacktrace-gps: 3.1.2 - - state-local@1.0.7: {} - - state-toggle@1.0.3: {} - - statuses@1.5.0: {} - - statuses@2.0.1: {} - - statuses@2.0.2: {} - - stdin-discarder@0.2.2: {} - - stdout-stream@1.4.1: - dependencies: - readable-stream: 2.3.8 - - stealthy-require@1.1.1: {} - - stop-iteration-iterator@1.1.0: - dependencies: - es-errors: 1.3.0 - internal-slot: 1.1.0 - - store2@2.14.4: {} - - storybook@8.6.14(prettier@3.6.2): - dependencies: - '@storybook/core': 8.6.14(prettier@3.6.2)(storybook@8.6.14(prettier@3.6.2)) - optionalDependencies: - prettier: 3.6.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - storybook@9.0.12(@testing-library/dom@10.4.0)(prettier@3.6.2): - dependencies: - '@storybook/global': 5.0.0 - '@testing-library/jest-dom': 6.6.3 - '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) - '@vitest/expect': 3.0.9 - '@vitest/spy': 3.0.9 - better-opn: 3.0.2 - esbuild: 0.25.5 - esbuild-register: 3.6.0(esbuild@0.25.5) - recast: 0.23.11 - semver: 7.7.2 - ws: 8.18.2 - optionalDependencies: - prettier: 3.6.2 - transitivePeerDependencies: - - '@testing-library/dom' - - bufferutil - - supports-color - - utf-8-validate - - storybook@9.0.17(@testing-library/dom@10.4.0)(prettier@3.6.2): - dependencies: - '@storybook/global': 5.0.0 - '@testing-library/jest-dom': 6.6.3 - '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) - '@vitest/expect': 3.2.4 - '@vitest/spy': 3.2.4 - better-opn: 3.0.2 - esbuild: 0.25.6 - esbuild-register: 3.6.0(esbuild@0.25.6) - recast: 0.23.11 - semver: 7.7.2 - ws: 8.18.3 - optionalDependencies: - prettier: 3.6.2 - transitivePeerDependencies: - - '@testing-library/dom' - - bufferutil - - supports-color - - utf-8-validate - - stream-each@1.2.3: - dependencies: - end-of-stream: 1.4.5 - stream-shift: 1.0.3 - - stream-shift@1.0.3: {} - - streamroller@3.1.5: - dependencies: - date-format: 4.0.14 - debug: 4.4.1(supports-color@8.1.1) - fs-extra: 8.1.0 - transitivePeerDependencies: - - supports-color - - strict-uri-encode@1.1.0: {} - - string-argv@0.3.2: {} - - string-hash@1.1.3: {} - - string-length@1.0.1: - dependencies: - strip-ansi: 3.0.1 - - string-length@3.1.0: - dependencies: - astral-regex: 1.0.0 - strip-ansi: 5.2.0 - - string-length@4.0.2: - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - - string-width@1.0.2: - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 - - string-width@2.1.1: - dependencies: - is-fullwidth-code-point: 2.0.0 - strip-ansi: 4.0.0 - - string-width@3.1.0: - dependencies: - emoji-regex: 7.0.3 - is-fullwidth-code-point: 2.0.0 - strip-ansi: 5.2.0 - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string-width@7.2.0: - dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 - strip-ansi: 7.1.0 - - string.fromcodepoint@0.2.1: {} - - string.prototype.codepointat@0.2.1: {} - - string.prototype.includes@2.0.1: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - - string.prototype.matchall@4.0.12: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.0 - - string.prototype.padend@3.1.6: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - - string.prototype.padstart@3.1.7: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - - string.prototype.repeat@1.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.24.0 - - string.prototype.trim@1.2.10: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - has-property-descriptors: 1.0.2 - - string.prototype.trimend@1.0.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - string_decoder@0.10.31: {} - - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - - strip-ansi@3.0.1: - dependencies: - ansi-regex: 2.1.1 - - strip-ansi@4.0.0: - dependencies: - ansi-regex: 3.0.1 - - strip-ansi@5.2.0: - dependencies: - ansi-regex: 4.1.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - - strip-bom@2.0.0: - dependencies: - is-utf8: 0.2.1 - - strip-bom@3.0.0: {} - - strip-bom@4.0.0: {} - - strip-eof@1.0.0: {} - - strip-final-newline@2.0.0: {} - - strip-final-newline@3.0.0: {} - - strip-indent@1.0.1: - dependencies: - get-stdin: 4.0.1 - - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - - strip-indent@4.0.0: - dependencies: - min-indent: 1.0.1 - - strip-json-comments@2.0.1: {} - - strip-json-comments@3.1.1: {} - - strip-outer@1.0.1: - dependencies: - escape-string-regexp: 1.0.5 - - strnum@1.1.2: {} - - strnum@2.1.1: {} - - strtok3@7.1.1: - dependencies: - '@tokenizer/token': 0.3.0 - peek-readable: 5.4.2 - - structured-source@4.0.0: - dependencies: - boundary: 2.0.0 - - style-inject@0.3.0: {} - - style-loader@0.19.0: - dependencies: - loader-utils: 1.4.2 - schema-utils: 0.3.0 - - style-loader@1.3.0(webpack@5.100.2): - dependencies: - loader-utils: 2.0.4 - schema-utils: 2.7.1 - webpack: 5.100.2(webpack-cli@4.10.0) - - style-loader@2.0.0(webpack@5.100.2): - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.100.2(webpack-cli@4.10.0) - - style-loader@3.3.4(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)): - dependencies: - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - - style-loader@3.3.4(webpack@5.100.2): - dependencies: - webpack: 5.100.2(webpack-cli@6.0.1) - - style-loader@4.0.0(webpack@5.100.2): - dependencies: - webpack: 5.100.2(webpack-cli@4.10.0) - - style-mod@4.1.2: {} - - style-to-js@1.1.17: - dependencies: - style-to-object: 1.0.9 - - style-to-object@0.3.0: - dependencies: - inline-style-parser: 0.1.1 - - style-to-object@1.0.9: - dependencies: - inline-style-parser: 0.2.4 - - style-value-types@5.0.0: - dependencies: - hey-listen: 1.0.8 - tslib: 2.8.1 - - stylehacks@5.1.1(postcss@8.5.6): - dependencies: - browserslist: 4.25.1 - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - stylelint-config-recommended@16.0.0(stylelint@16.21.0(typescript@5.8.3)): - dependencies: - stylelint: 16.21.0(typescript@5.8.3) - - stylelint-config-standard@38.0.0(stylelint@16.21.0(typescript@5.8.3)): - dependencies: - stylelint: 16.21.0(typescript@5.8.3) - stylelint-config-recommended: 16.0.0(stylelint@16.21.0(typescript@5.8.3)) - - stylelint@16.21.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 - 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) - fast-glob: 3.3.3 - fastest-levenshtein: 1.0.16 - file-entry-cache: 10.1.1 - global-modules: 2.0.0 - globby: 11.1.0 - globjoin: 0.1.4 - html-tags: 3.3.1 - ignore: 7.0.5 - imurmurhash: 0.1.4 - is-plain-object: 5.0.0 - known-css-properties: 0.37.0 - mathml-tag-names: 2.1.3 - meow: 13.2.0 - micromatch: 4.0.8 - normalize-path: 3.0.0 - picocolors: 1.1.1 - postcss: 8.5.6 - postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 7.0.1(postcss@8.5.6) - postcss-selector-parser: 7.1.0 - postcss-value-parser: 4.2.0 - resolve-from: 5.0.0 - string-width: 4.2.3 - supports-hyperlinks: 3.2.0 - svg-tags: 1.0.0 - table: 6.9.0 - write-file-atomic: 5.0.1 - transitivePeerDependencies: - - supports-color - - typescript - - stylis@4.2.0: {} - - subarg@1.0.0: - dependencies: - minimist: 1.2.8 - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.7 - ts-interface-checker: 0.1.13 - - supports-color@2.0.0: {} - - supports-color@3.2.3: - dependencies: - has-flag: 1.0.0 - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@6.1.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-hyperlinks@2.3.0: - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - - supports-hyperlinks@3.2.0: - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - svg-pathdata@1.0.4: - dependencies: - readable-stream: 2.0.6 - - svg-pathdata@6.0.3: {} - - svg-tags@1.0.0: {} - - svg-url-loader@8.0.0(webpack@5.100.2): - dependencies: - file-loader: 6.2.0(webpack@5.100.2) - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - - svg2ttf@4.3.0: - dependencies: - argparse: 1.0.10 - cubic2quad: 1.2.1 - lodash: 4.17.21 - microbuffer: 1.0.0 - svgpath: 2.6.0 - xmldom: '@xmldom/xmldom@0.8.10' - - svg2ttf@6.0.3: - dependencies: - '@xmldom/xmldom': 0.7.13 - argparse: 2.0.1 - cubic2quad: 1.2.1 - lodash: 4.17.21 - microbuffer: 1.0.0 - svgpath: 2.6.0 - - svgicons2svgfont@12.0.0: - dependencies: - commander: 9.5.0 - glob: 8.1.0 - sax: 1.4.1 - svg-pathdata: 6.0.3 - - svgicons2svgfont@5.0.2: - dependencies: - commander: 2.20.3 - neatequal: 1.0.0 - readable-stream: 2.3.8 - sax: 1.4.1 - string.fromcodepoint: 0.2.1 - string.prototype.codepointat: 0.2.1 - svg-pathdata: 1.0.4 - - svgo@0.7.2: - dependencies: - coa: 1.0.4 - colors: 1.1.2 - csso: 2.3.2 - js-yaml: 3.7.0 - mkdirp: 0.5.6 - sax: 1.2.4 - whet.extend: 0.9.9 - - svgo@2.8.0: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.1.1 - stable: 0.1.8 - - svgpath@2.6.0: {} - - sw-precache-webpack-plugin@0.11.4(webpack@5.100.2): - dependencies: - del: 2.2.2 - sw-precache: 5.2.1 - uglify-js: 3.19.3 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - - sw-precache@5.2.1: - dependencies: - dom-urls: 1.1.0 - es6-promise: 4.2.8 - glob: 7.2.3 - lodash.defaults: 4.2.0 - lodash.template: 4.5.0 - meow: 3.7.0 - mkdirp: 0.5.6 - pretty-bytes: 4.0.2 - sw-toolbox: 3.6.0 - update-notifier: 2.5.0 - - sw-toolbox@3.6.0: - dependencies: - path-to-regexp: 1.9.0 - serviceworker-cache-polyfill: 4.0.0 - - swagger-client@3.35.5: - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@scarf/scarf': 1.4.0 - '@swagger-api/apidom-core': 1.0.0-beta.43 - '@swagger-api/apidom-error': 1.0.0-beta.43 - '@swagger-api/apidom-json-pointer': 1.0.0-beta.43 - '@swagger-api/apidom-ns-openapi-3-1': 1.0.0-beta.43 - '@swagger-api/apidom-reference': 1.0.0-beta.43 - '@swaggerexpert/cookie': 2.0.2 - deepmerge: 4.3.1 - fast-json-patch: 3.1.1 - js-yaml: 4.1.0 - neotraverse: 0.6.18 - node-abort-controller: 3.1.1 - node-fetch-commonjs: 3.3.2 - openapi-path-templating: 2.2.1 - openapi-server-url-templating: 1.3.0 - ramda: 0.30.1 - ramda-adjunct: 5.1.0(ramda@0.30.1) - transitivePeerDependencies: - - debug - - 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.27.6 - '@scarf/scarf': 1.4.0 - base64-js: 1.5.1 - classnames: 2.5.1 - css.escape: 1.5.1 - deep-extend: 0.6.0 - dompurify: 3.2.4 - ieee754: 1.2.1 - immutable: 3.8.2 - js-file-download: 0.4.12 - js-yaml: 4.1.0 - lodash: 4.17.21 - prop-types: 15.8.1 - randexp: 0.5.3 - randombytes: 2.1.0 - react: 18.2.0 - react-copy-to-clipboard: 5.1.0(react@18.2.0) - react-debounce-input: 3.3.0(react@18.2.0) - react-dom: 18.2.0(react@18.2.0) - react-immutable-proptypes: 2.2.0(immutable@3.8.2) - 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) - 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.11 - swagger-client: 3.35.5 - url-parse: 1.5.10 - xml: 1.0.1 - xml-but-prettier: 1.0.1 - zenscroll: 4.0.2 - transitivePeerDependencies: - - '@types/react' - - debug - - swagger-ui-react@5.25.2(@types/react@18.2.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@babel/runtime-corejs3': 7.27.6 - '@scarf/scarf': 1.4.0 - base64-js: 1.5.1 - classnames: 2.5.1 - css.escape: 1.5.1 - deep-extend: 0.6.0 - dompurify: 3.2.4 - ieee754: 1.2.1 - immutable: 3.8.2 - js-file-download: 0.4.12 - js-yaml: 4.1.0 - lodash: 4.17.21 - prop-types: 15.8.1 - randexp: 0.5.3 - randombytes: 2.1.0 - react: 18.2.0 - react-copy-to-clipboard: 5.1.0(react@18.2.0) - react-debounce-input: 3.3.0(react@18.2.0) - react-dom: 18.2.0(react@18.2.0) - react-immutable-proptypes: 2.2.0(immutable@3.8.2) - 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) - 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.11 - swagger-client: 3.35.5 - url-parse: 1.5.10 - xml: 1.0.1 - xml-but-prettier: 1.0.1 - zenscroll: 4.0.2 - transitivePeerDependencies: - - '@types/react' - - debug - - swc-loader@0.2.6(@swc/core@1.12.5(@swc/helpers@0.5.17))(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)): - dependencies: - '@swc/core': 1.12.5(@swc/helpers@0.5.17) - '@swc/counter': 0.1.3 - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - - symbol-tree@3.2.4: {} - - symbol.prototype.description@1.0.7: - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-symbol-description: 1.1.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - object.getownpropertydescriptors: 2.1.8 - - synchronous-promise@2.0.17: {} - - system-architecture@0.1.0: {} - - tabbable@5.3.3: {} - - tabbable@6.2.0: {} - - table@5.4.6: - dependencies: - ajv: 6.12.6 - lodash: 4.17.21 - slice-ansi: 2.1.0 - string-width: 3.1.0 - - table@6.9.0: - dependencies: - ajv: 8.17.1 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - tailwindcss@3.4.17: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.3 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.7 - lilconfig: 3.1.3 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - 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-nested: 6.2.0(postcss@8.5.6) - postcss-selector-parser: 6.1.2 - resolve: 1.22.10 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - tailwindcss@4.1.10: {} - - tapable@0.2.9: {} - - tapable@1.1.3: {} - - tapable@2.2.2: {} - - tar-fs@1.16.5: - dependencies: - chownr: 1.1.4 - mkdirp: 0.5.6 - pump: 1.0.3 - tar-stream: 1.6.2 - - tar-fs@2.1.3: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.3 - tar-stream: 2.2.0 - - tar-stream@1.6.2: - dependencies: - bl: 1.2.3 - buffer-alloc: 1.2.0 - end-of-stream: 1.4.5 - fs-constants: 1.0.0 - readable-stream: 2.3.8 - to-buffer: 1.2.1 - xtend: 4.0.2 - - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.5 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - - tar@2.2.2: - dependencies: - block-stream: 0.0.9 - fstream: 1.0.12 - inherits: 2.0.4 - - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - targz@1.0.1: - dependencies: - tar-fs: 1.16.5 - - tcp-port-used@1.0.2: - dependencies: - debug: 4.3.1 - is2: 2.0.9 - transitivePeerDependencies: - - supports-color - - telejson@6.0.8: - dependencies: - '@types/is-function': 1.0.3 - global: 4.4.0 - is-function: 1.0.2 - is-regex: 1.2.1 - is-symbol: 1.1.1 - isobject: 4.0.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - - telejson@7.2.0: - dependencies: - memoizerific: 1.11.3 - - temp-dir@2.0.0: {} - - temp@0.8.4: - dependencies: - rimraf: 2.6.3 - - tempy@1.0.1: - dependencies: - del: 6.1.1 - is-stream: 2.0.1 - temp-dir: 2.0.0 - type-fest: 0.16.0 - unique-string: 2.0.0 - - term-size@1.2.0: - dependencies: - execa: 0.7.0 - - terminal-link@2.1.1: - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.3.0 - - terser-webpack-plugin@4.2.3(webpack@5.100.2): - 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.43.1 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-sources: 1.4.3 - transitivePeerDependencies: - - bluebird - - terser-webpack-plugin@5.3.14(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 4.3.2 - serialize-javascript: 6.0.2 - terser: 5.43.1 - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - optionalDependencies: - '@swc/core': 1.12.5(@swc/helpers@0.5.17) - esbuild: 0.25.6 - - terser-webpack-plugin@5.3.14(esbuild@0.25.5)(webpack@5.100.2): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 4.3.2 - serialize-javascript: 6.0.2 - terser: 5.43.1 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - optionalDependencies: - esbuild: 0.25.5 - - terser-webpack-plugin@5.3.14(webpack@5.100.2): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 4.3.2 - serialize-javascript: 6.0.2 - terser: 5.43.1 - webpack: 5.100.2(webpack-cli@4.10.0) - - terser@4.8.1: - dependencies: - acorn: 8.15.0 - commander: 2.20.3 - source-map: 0.6.1 - source-map-support: 0.5.21 - - terser@5.43.1: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.15.0 - commander: 2.20.3 - source-map-support: 0.5.21 - - test-exclude@4.2.3: - dependencies: - arrify: 1.0.1 - micromatch: 4.0.8 - object-assign: 4.1.1 - read-pkg-up: 1.0.1 - require-main-filename: 1.0.1 - - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - - test-exclude@7.0.1: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 - minimatch: 9.0.5 - - text-hex@1.0.0: {} - - text-table@0.2.0: {} - - textextensions@6.11.0: - dependencies: - editions: 6.21.0 - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - thingies@1.21.0(tslib@2.8.1): - dependencies: - tslib: 2.8.1 - - throat@3.2.0: {} - - throat@5.0.0: {} - - through2@2.0.5: - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - - through2@3.0.0: - dependencies: - readable-stream: 3.6.2 - xtend: 4.0.2 - - through@2.3.8: {} - - thunky@1.1.0: {} - - timed-out@4.0.1: {} - - timers-ext@0.1.8: - dependencies: - es5-ext: 0.10.64 - next-tick: 1.1.0 - - timezone-support@3.1.0: - dependencies: - moment-timezone: 0.5.39 - - tiny-case@1.0.3: {} - - tiny-glob@0.2.9: - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - - tiny-invariant@1.3.3: {} - - tinyexec@0.3.2: {} - - tinyglobby@0.2.14: - dependencies: - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 - - tinyrainbow@1.2.0: {} - - tinyrainbow@2.0.0: {} - - tinyspy@3.0.2: {} - - tinyspy@4.0.3: {} - - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - - tmp@0.2.3: {} - - tmpl@1.0.5: {} - - to-buffer@1.2.1: - dependencies: - isarray: 2.0.5 - safe-buffer: 5.2.1 - typed-array-buffer: 1.0.3 - - to-fast-properties@1.0.3: {} - - to-json-schema@0.2.5: - dependencies: - lodash.isequal: 4.5.0 - lodash.keys: 4.2.0 - lodash.merge: 4.6.2 - lodash.omit: 4.5.0 - lodash.without: 4.4.0 - lodash.xor: 4.5.0 - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tocbot@4.36.4: {} - - toggle-selection@1.0.6: {} - - toidentifier@1.0.1: {} - - token-types@5.0.1: - dependencies: - '@tokenizer/token': 0.3.0 - ieee754: 1.2.1 - - toml@3.0.0: {} - - toposort@1.0.7: {} - - toposort@2.0.2: {} - - tough-cookie@2.5.0: - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - - tough-cookie@3.0.1: - dependencies: - ip-regex: 2.1.0 - psl: 1.15.0 - punycode: 2.3.1 - - tough-cookie@4.1.4: - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - - tr46@0.0.3: {} - - tr46@1.0.1: - dependencies: - punycode: 2.3.1 - - tr46@3.0.0: - dependencies: - punycode: 2.3.1 - - traverse@0.3.9: {} - - tree-dump@1.0.3(tslib@2.8.1): - dependencies: - tslib: 2.8.1 - - tree-kill@1.2.2: {} - - tree-sitter-json@0.24.8(tree-sitter@0.21.1): - dependencies: - node-addon-api: 8.4.0 - node-gyp-build: 4.8.4 - optionalDependencies: - tree-sitter: 0.21.1 - optional: true - - tree-sitter@0.21.1: - dependencies: - node-addon-api: 8.4.0 - node-gyp-build: 4.8.4 - optional: true - - tree-sitter@0.22.4: - dependencies: - node-addon-api: 8.4.0 - node-gyp-build: 4.8.4 - optional: true - - trim-lines@3.0.1: {} - - trim-newlines@1.0.0: {} - - trim-newlines@3.0.1: {} - - trim-newlines@4.1.1: {} - - trim-repeated@1.0.0: - dependencies: - escape-string-regexp: 1.0.5 - - trim-right@1.0.1: {} - - trim-trailing-lines@1.1.4: {} - - trim@0.0.1: {} - - triple-beam@1.3.0: {} - - triple-beam@1.4.1: {} - - trough@1.0.5: {} - - trough@2.2.0: {} - - true-case-path@2.2.1: {} - - truncate-utf8-bytes@1.0.2: - dependencies: - utf8-byte-length: 1.0.5 - - ts-algebra@2.0.0: {} - - ts-api-utils@1.4.3(typescript@5.8.3): - dependencies: - typescript: 5.8.3 - - ts-api-utils@2.1.0(typescript@5.8.3): - dependencies: - typescript: 5.8.3 - - ts-dedent@2.2.0: {} - - ts-interface-checker@0.1.13: {} - - ts-jest@22.0.1(jest@20.0.4)(typescript@5.8.3): - dependencies: - babel-core: 6.26.3 - babel-plugin-istanbul: 4.1.6 - babel-plugin-transform-es2015-modules-commonjs: 6.26.2 - babel-preset-jest: 22.4.4 - cpx: 1.5.0 - fs-extra: 4.0.3 - jest: 20.0.4 - jest-config: 22.4.4 - pkg-dir: 2.0.0 - source-map-support: 0.5.21 - typescript: 5.8.3 - yargs: 10.1.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - ts-jest@25.5.1(jest@25.5.4)(typescript@3.9.10): - dependencies: - bs-logger: 0.2.6 - buffer-from: 1.1.2 - fast-json-stable-stringify: 2.1.0 - jest: 25.5.4 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - micromatch: 4.0.8 - mkdirp: 0.5.6 - semver: 6.3.1 - typescript: 3.9.10 - yargs-parser: 18.1.3 - - ts-jest@29.3.4(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(jest@29.7.0(@types/node@22.15.32)(babel-plugin-macros@3.1.0))(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.32)(babel-plugin-macros@3.1.0) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.7.2 - type-fest: 4.41.0 - typescript: 5.8.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.27.4 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.27.4) - - ts-loader@2.3.7: - dependencies: - chalk: 2.4.2 - enhanced-resolve: 3.4.1 - loader-utils: 1.4.2 - semver: 5.7.2 - - ts-loader@9.5.2(typescript@5.8.3)(webpack@5.100.2): - dependencies: - chalk: 4.1.2 - enhanced-resolve: 5.18.1 - micromatch: 4.0.8 - semver: 7.7.2 - source-map: 0.7.4 - typescript: 5.8.3 - webpack: 5.100.2(webpack-cli@4.10.0) - - ts-mixer@6.0.4: {} - - ts-morph@22.0.0: - dependencies: - '@ts-morph/common': 0.23.0 - code-block-writer: 13.0.3 - - ts-morph@26.0.0: - dependencies: - '@ts-morph/common': 0.27.0 - code-block-writer: 13.0.3 - - ts-pnp@1.2.0(typescript@4.9.5): - optionalDependencies: - typescript: 4.9.5 - - ts-pnp@1.2.0(typescript@5.8.3): - optionalDependencies: - typescript: 5.8.3 - - ts-toolbelt@9.6.0: {} - - tsconfig-paths-webpack-plugin@2.0.0: - dependencies: - chalk: 2.4.2 - tsconfig-paths: 3.15.0 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - - tsconfig-paths@4.2.0: - dependencies: - json5: 2.2.3 - minimist: 1.2.8 - strip-bom: 3.0.0 - - tsdx@0.14.1(@types/babel__core@7.20.5)(@types/node@22.15.32): - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-imports': 7.27.1 - '@babel/parser': 7.27.5 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.27.4) - '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@babel/traverse': 7.27.4 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.27.4)(@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) - '@rollup/plugin-node-resolve': 9.0.0(rollup@1.32.1) - '@rollup/plugin-replace': 2.4.2(rollup@1.32.1) - '@types/jest': 25.2.3 - '@typescript-eslint/eslint-plugin': 2.34.0(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@6.8.0)(typescript@3.9.10) - '@typescript-eslint/parser': 2.34.0(eslint@6.8.0)(typescript@3.9.10) - ansi-escapes: 4.3.2 - asyncro: 3.0.0 - babel-eslint: 10.1.0(eslint@6.8.0) - babel-plugin-annotate-pure-calls: 0.4.0(@babel/core@7.27.4) - babel-plugin-dev-expression: 0.2.3(@babel/core@7.27.4) - babel-plugin-macros: 2.8.0 - babel-plugin-polyfill-regenerator: 0.0.4(@babel/core@7.27.4) - babel-plugin-transform-rename-import: 2.3.0 - camelcase: 6.3.0 - chalk: 4.1.2 - enquirer: 2.4.1 - eslint: 6.8.0 - eslint-config-prettier: 6.15.0(eslint@6.8.0) - eslint-config-react-app: 5.2.1(@typescript-eslint/eslint-plugin@2.34.0(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@6.8.0)(typescript@3.9.10))(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(babel-eslint@10.1.0(eslint@6.8.0))(eslint-plugin-flowtype@3.13.0(eslint@6.8.0))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@6.8.0))(eslint-plugin-jsx-a11y@6.10.2(eslint@6.8.0))(eslint-plugin-react-hooks@2.5.1(eslint@6.8.0))(eslint-plugin-react@7.37.5(eslint@6.8.0))(eslint@6.8.0)(typescript@3.9.10) - eslint-plugin-flowtype: 3.13.0(eslint@6.8.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@2.34.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@6.8.0) - eslint-plugin-jsx-a11y: 6.10.2(eslint@6.8.0) - eslint-plugin-prettier: 3.4.1(eslint-config-prettier@6.15.0(eslint@6.8.0))(eslint@6.8.0)(prettier@1.19.1) - eslint-plugin-react: 7.37.5(eslint@6.8.0) - eslint-plugin-react-hooks: 2.5.1(eslint@6.8.0) - execa: 4.1.0 - fs-extra: 9.1.0 - jest: 25.5.4 - jest-watch-typeahead: 0.5.0 - jpjs: 1.2.1 - lodash.merge: 4.6.2 - ora: 4.1.1 - pascal-case: 3.1.2 - prettier: 1.19.1 - progress-estimator: 0.2.2 - regenerator-runtime: 0.13.11 - rollup: 1.32.1 - rollup-plugin-sourcemaps: 0.6.3(@types/node@22.15.32)(rollup@1.32.1) - 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 - shelljs: 0.8.5 - tiny-glob: 0.2.9 - ts-jest: 25.5.1(jest@25.5.4)(typescript@3.9.10) - tslib: 1.14.1 - typescript: 3.9.10 - transitivePeerDependencies: - - '@types/babel__core' - - '@types/node' - - bufferutil - - canvas - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - utf-8-validate - - tslib@1.14.1: {} - - tslib@2.0.1: {} - - tslib@2.8.1: {} - - tslint-config-prettier@1.18.0: {} - - tslint-react-hooks@2.2.2(tslint@6.1.3(typescript@4.9.5))(typescript@4.9.5): - dependencies: - tslint: 6.1.3(typescript@4.9.5) - typescript: 4.9.5 - - tslint-react-hooks@2.2.2(tslint@6.1.3(typescript@5.8.3))(typescript@5.8.3): - dependencies: - tslint: 6.1.3(typescript@5.8.3) - typescript: 5.8.3 - - tslint-react@3.6.0(tslint@5.20.1(typescript@5.8.3))(typescript@5.8.3): - dependencies: - tslint: 5.20.1(typescript@5.8.3) - tsutils: 2.29.0(typescript@5.8.3) - typescript: 5.8.3 - - tslint-react@4.2.0(tslint@6.1.3(typescript@4.9.5))(typescript@4.9.5): - dependencies: - tslint: 6.1.3(typescript@4.9.5) - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 - - tslint-react@5.0.0(tslint@6.1.3(typescript@4.9.5))(typescript@4.9.5): - dependencies: - tslint: 6.1.3(typescript@4.9.5) - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 - - tslint-react@5.0.0(tslint@6.1.3(typescript@5.8.3))(typescript@5.8.3): - dependencies: - tslint: 6.1.3(typescript@5.8.3) - tsutils: 3.21.0(typescript@5.8.3) - typescript: 5.8.3 - - tslint@5.20.1(typescript@5.8.3): - dependencies: - '@babel/code-frame': 7.27.1 - builtin-modules: 1.1.1 - chalk: 2.4.2 - commander: 2.20.3 - diff: 4.0.2 - glob: 7.2.3 - js-yaml: 3.14.1 - minimatch: 3.1.2 - mkdirp: 0.5.6 - resolve: 1.6.0 - semver: 5.7.2 - tslib: 1.14.1 - tsutils: 2.29.0(typescript@5.8.3) - typescript: 5.8.3 - - tslint@6.1.3(typescript@4.9.5): - dependencies: - '@babel/code-frame': 7.27.1 - builtin-modules: 1.1.1 - chalk: 2.4.2 - commander: 2.20.3 - diff: 4.0.2 - glob: 7.2.3 - js-yaml: 3.14.1 - minimatch: 3.1.2 - mkdirp: 0.5.6 - resolve: 1.22.10 - semver: 5.7.2 - tslib: 1.14.1 - tsutils: 2.29.0(typescript@4.9.5) - typescript: 4.9.5 - - tslint@6.1.3(typescript@5.8.3): - dependencies: - '@babel/code-frame': 7.27.1 - builtin-modules: 1.1.1 - chalk: 2.4.2 - commander: 2.20.3 - diff: 4.0.2 - glob: 7.2.3 - js-yaml: 3.14.1 - minimatch: 3.1.2 - mkdirp: 0.5.6 - resolve: 1.22.10 - semver: 5.7.2 - tslib: 1.14.1 - tsutils: 2.29.0(typescript@5.8.3) - typescript: 5.8.3 - - tsutils@2.29.0(typescript@4.9.5): - dependencies: - tslib: 1.14.1 - typescript: 4.9.5 - - tsutils@2.29.0(typescript@5.8.3): - dependencies: - tslib: 1.14.1 - typescript: 5.8.3 - - tsutils@3.21.0(typescript@3.9.10): - dependencies: - tslib: 1.14.1 - typescript: 3.9.10 - - tsutils@3.21.0(typescript@4.9.5): - dependencies: - tslib: 1.14.1 - typescript: 4.9.5 - - tsutils@3.21.0(typescript@5.8.3): - dependencies: - tslib: 1.14.1 - typescript: 5.8.3 - - tsyringe@4.10.0: - dependencies: - tslib: 1.14.1 - - ttf2eot@2.0.0: - dependencies: - 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.22.2 - node-gyp: 3.8.0 - - ttf2woff2@5.0.0: - dependencies: - bindings: 1.5.0 - bufferstreams: 3.0.0 - nan: 2.22.2 - node-gyp: 9.4.1 - transitivePeerDependencies: - - bluebird - - supports-color - - ttf2woff@2.0.2: - dependencies: - argparse: 1.0.10 - microbuffer: 1.0.0 - pako: 1.0.11 - - ttf2woff@3.0.0: - dependencies: - argparse: 2.0.1 - pako: 1.0.11 - - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - - tunnel@0.0.6: {} - - tweetnacl@0.14.5: {} - - type-check@0.3.2: - dependencies: - prelude-ls: 1.1.2 - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-detect@4.0.8: {} - - type-detect@4.1.0: {} - - type-fest@0.16.0: {} - - type-fest@0.18.1: {} - - type-fest@0.20.2: {} - - type-fest@0.21.3: {} - - type-fest@0.6.0: {} - - type-fest@0.8.1: {} - - type-fest@1.4.0: {} - - type-fest@2.19.0: {} - - type-fest@3.13.1: {} - - type-fest@4.41.0: {} - - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - - type-is@2.0.1: - dependencies: - content-type: 1.0.5 - media-typer: 1.1.0 - mime-types: 3.0.1 - - type@2.7.3: {} - - typed-array-buffer@1.0.3: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - - typed-array-byte-length@1.0.3: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - - typed-array-byte-offset@1.0.4: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.10 - - typed-array-length@1.0.7: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.1.0 - reflect.getprototypeof: 1.0.10 - - typed-rest-client@1.8.11: - dependencies: - qs: 6.14.0 - tunnel: 0.0.6 - underscore: 1.13.7 - - typedarray-to-buffer@3.1.5: - dependencies: - is-typedarray: 1.0.0 - - typedarray@0.0.6: {} - - types-ramda@0.30.1: - dependencies: - ts-toolbelt: 9.6.0 - - typescript@3.9.10: {} - - typescript@4.9.5: {} - - typescript@5.8.3: {} - - ua-parser-js@1.0.40: {} - - uc.micro@1.0.6: {} - - uc.micro@2.1.0: {} - - ufo@1.6.1: {} - - uglify-es@3.3.9: - dependencies: - commander: 2.13.0 - source-map: 0.6.1 - - uglify-js@3.19.3: {} - - uglify-js@3.4.10: - dependencies: - commander: 2.19.0 - source-map: 0.6.1 - - uglifyjs-webpack-plugin@1.2.5(webpack@5.100.2): - dependencies: - cacache: 10.0.4 - find-cache-dir: 1.0.0 - schema-utils: 0.4.7 - serialize-javascript: 1.9.1 - source-map: 0.6.1 - uglify-es: 3.3.9 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-sources: 1.4.3 - worker-farm: 1.7.0 - - unbox-primitive@1.1.0: - dependencies: - call-bound: 1.0.4 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - - underscore@1.13.7: {} - - undici-types@5.26.5: {} - - undici-types@6.21.0: {} - - undici-types@7.8.0: {} - - undici@7.10.0: {} - - unfetch@4.2.0: {} - - unherit@1.1.3: - dependencies: - inherits: 2.0.4 - xtend: 4.0.2 - - unicode-canonical-property-names-ecmascript@2.0.1: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.2.0: {} - - unicode-property-aliases-ecmascript@2.1.0: {} - - unicorn-magic@0.1.0: {} - - unicorn-magic@0.3.0: {} - - unified@10.1.2: - dependencies: - '@types/unist': 2.0.11 - bail: 2.0.2 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 5.3.7 - - unified@11.0.5: - dependencies: - '@types/unist': 3.0.3 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.3 - - unified@9.2.0: - dependencies: - '@types/unist': 2.0.11 - bail: 1.0.5 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 2.1.0 - trough: 1.0.5 - vfile: 4.2.1 - - union@0.5.0: - dependencies: - qs: 6.14.0 - - uniq@1.0.1: {} - - uniqs@2.0.0: {} - - unique-filename@1.1.1: - dependencies: - unique-slug: 2.0.2 - - unique-filename@2.0.1: - dependencies: - unique-slug: 3.0.0 - - unique-slug@2.0.2: - dependencies: - imurmurhash: 0.1.4 - - unique-slug@3.0.0: - dependencies: - imurmurhash: 0.1.4 - - unique-string@1.0.0: - dependencies: - crypto-random-string: 1.0.0 - - unique-string@2.0.0: - dependencies: - crypto-random-string: 2.0.0 - - unist-builder@2.0.3: {} - - unist-builder@3.0.1: - dependencies: - '@types/unist': 2.0.11 - - unist-util-generated@1.1.6: {} - - unist-util-generated@2.0.1: {} - - unist-util-is@4.1.0: {} - - unist-util-is@5.2.1: - dependencies: - '@types/unist': 2.0.11 - - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position@3.1.0: {} - - unist-util-position@4.0.4: - dependencies: - '@types/unist': 2.0.11 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-remove-position@2.0.1: - dependencies: - unist-util-visit: 2.0.3 - - unist-util-remove@2.1.0: - dependencies: - unist-util-is: 4.1.0 - - unist-util-stringify-position@2.0.3: - dependencies: - '@types/unist': 2.0.11 - - unist-util-stringify-position@3.0.3: - dependencies: - '@types/unist': 2.0.11 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-visit-parents@3.1.1: - dependencies: - '@types/unist': 2.0.11 - unist-util-is: 4.1.0 - - unist-util-visit-parents@5.1.3: - dependencies: - '@types/unist': 2.0.11 - unist-util-is: 5.2.1 - - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - - unist-util-visit@2.0.3: - dependencies: - '@types/unist': 2.0.11 - unist-util-is: 4.1.0 - unist-util-visit-parents: 3.1.1 - - unist-util-visit@4.1.2: - dependencies: - '@types/unist': 2.0.11 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - - 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 - - unit-compare@1.0.1: - dependencies: - moment: 2.30.1 - - universalify@0.1.2: {} - - universalify@0.2.0: {} - - universalify@2.0.1: {} - - unpipe@1.0.0: {} - - unplugin@1.16.1: - dependencies: - acorn: 8.15.0 - webpack-virtual-modules: 0.6.2 - - unraw@3.0.0: {} - - untildify@2.1.0: - dependencies: - os-homedir: 1.0.2 - optional: true - - untildify@4.0.0: {} - - unzip-response@2.0.1: {} - - unzipper@0.10.14: - dependencies: - big-integer: 1.6.52 - binary: 0.3.0 - bluebird: 3.4.7 - buffer-indexof-polyfill: 1.0.2 - duplexer2: 0.1.4 - fstream: 1.0.12 - graceful-fs: 4.2.11 - listenercount: 1.0.1 - readable-stream: 2.3.8 - setimmediate: 1.0.5 - - unzipper@0.12.3: - dependencies: - bluebird: 3.7.2 - duplexer2: 0.1.4 - fs-extra: 11.3.0 - graceful-fs: 4.2.11 - node-int64: 0.4.0 - - upath@2.0.1: {} - - update-browserslist-db@1.1.3(browserslist@4.25.0): - dependencies: - browserslist: 4.25.0 - escalade: 3.2.0 - picocolors: 1.1.1 - - update-browserslist-db@1.1.3(browserslist@4.25.1): - dependencies: - browserslist: 4.25.1 - escalade: 3.2.0 - picocolors: 1.1.1 - - update-notifier@2.5.0: - dependencies: - boxen: 1.3.0 - chalk: 2.4.2 - configstore: 3.1.5 - import-lazy: 2.1.0 - is-ci: 1.2.1 - is-installed-globally: 0.1.0 - is-npm: 1.0.0 - latest-version: 3.1.0 - semver-diff: 2.1.0 - xdg-basedir: 3.0.0 - - upper-case@1.1.3: {} - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - urijs@1.19.11: {} - - url-join@1.1.0: {} - - url-join@4.0.1: {} - - url-loader@0.6.2(file-loader@1.1.5(webpack@5.100.2)): - dependencies: - file-loader: 1.1.5(webpack@5.100.2) - 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.100.2))(webpack@5.100.2): - dependencies: - loader-utils: 2.0.4 - mime-types: 2.1.35 - schema-utils: 3.3.0 - webpack: 5.100.2(webpack-cli@4.10.0) - optionalDependencies: - file-loader: 6.2.0(webpack@5.100.2) - - url-parse-lax@1.0.0: - dependencies: - prepend-http: 1.0.4 - - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - - url@0.11.4: - dependencies: - punycode: 1.4.1 - qs: 6.14.0 - - use-callback-ref@1.3.3(@types/react@18.2.0)(react@18.2.0): - dependencies: - react: 18.2.0 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 18.2.0 - - use-composed-ref@1.4.0(@types/react@18.2.0)(react@18.2.0): - dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - use-isomorphic-layout-effect@1.2.1(@types/react@18.2.0)(react@18.2.0): - dependencies: - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.0 - - use-latest@1.3.0(@types/react@18.2.0)(react@18.2.0): - dependencies: - react: 18.2.0 - use-isomorphic-layout-effect: 1.2.1(@types/react@18.2.0)(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.0 - - use-resize-observer@9.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@juggle/resize-observer': 3.4.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - use-sidecar@1.1.3(@types/react@18.2.0)(react@18.2.0): - dependencies: - detect-node-es: 1.1.0 - react: 18.2.0 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 18.2.0 - - use-sync-external-store@1.5.0(react@18.2.0): - dependencies: - react: 18.2.0 - - use-sync-external-store@1.5.0(react@19.1.0): - dependencies: - react: 19.1.0 - - utf8-byte-length@1.0.5: {} - - util-deprecate@1.0.2: {} - - util.promisify@1.0.0: - dependencies: - define-properties: 1.2.1 - object.getownpropertydescriptors: 2.1.8 - - util@0.10.4: - dependencies: - inherits: 2.0.3 - - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.2.0 - is-generator-function: 1.1.0 - is-typed-array: 1.1.15 - which-typed-array: 1.1.19 - - utila@0.4.0: {} - - utils-merge@1.0.1: {} - - uuid-browser@3.1.0: {} - - uuid@11.1.0: {} - - uuid@3.4.0: {} - - uuid@8.3.2: {} - - uuid@9.0.1: {} - - uvu@0.5.6: - dependencies: - dequal: 2.0.3 - diff: 5.2.0 - kleur: 4.1.5 - sade: 1.8.1 - - v8-compile-cache@2.4.0: {} - - v8-to-istanbul@4.1.4: - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 1.9.0 - source-map: 0.7.4 - - v8-to-istanbul@9.3.0: - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - - varstream@0.3.2: - dependencies: - readable-stream: 1.1.14 - - vary@1.1.2: {} - - vendors@1.0.4: {} - - verror@1.10.0: - dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 - - version-range@4.14.0: {} - - vfile-location@3.2.0: {} - - vfile-location@4.1.0: - dependencies: - '@types/unist': 2.0.11 - vfile: 5.3.7 - - vfile-location@5.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile: 6.0.3 - - vfile-message@2.0.4: - dependencies: - '@types/unist': 2.0.11 - unist-util-stringify-position: 2.0.3 - - vfile-message@3.1.4: - dependencies: - '@types/unist': 2.0.11 - unist-util-stringify-position: 3.0.3 - - vfile-message@4.0.2: - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 - - vfile@4.2.1: - dependencies: - '@types/unist': 2.0.11 - is-buffer: 2.0.5 - unist-util-stringify-position: 2.0.3 - vfile-message: 2.0.4 - - vfile@5.3.7: - dependencies: - '@types/unist': 2.0.11 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - - vfile@6.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile-message: 4.0.2 - - vite@6.3.5(@types/node@24.0.14)(jiti@2.4.2)(sass@1.89.2)(terser@5.43.1)(yaml@2.8.0): - dependencies: - esbuild: 0.25.5 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.6 - rollup: 4.44.0 - tinyglobby: 0.2.14 - optionalDependencies: - '@types/node': 24.0.14 - fsevents: 2.3.3 - jiti: 2.4.2 - sass: 1.89.2 - terser: 5.43.1 - yaml: 2.8.0 - - vscode-debugadapter-testsupport@1.51.0: - dependencies: - vscode-debugprotocol: 1.51.0 - - vscode-debugadapter@1.51.0: - dependencies: - mkdirp: 1.0.4 - vscode-debugprotocol: 1.51.0 - - vscode-debugprotocol@1.51.0: {} - - vscode-extension-telemetry@0.1.7: - dependencies: - applicationinsights: 1.7.4 - - vscode-extension-tester-locators@3.12.2(monaco-page-objects@3.14.1(selenium-webdriver@4.33.0)(typescript@5.8.3))(selenium-webdriver@4.33.0): - dependencies: - monaco-page-objects: 3.14.1(selenium-webdriver@4.33.0)(typescript@5.8.3) - selenium-webdriver: 4.33.0 - - vscode-extension-tester@5.10.0(mocha@10.8.2)(typescript@5.8.3): - dependencies: - '@types/selenium-webdriver': 4.1.28 - '@vscode/vsce': 2.32.0 - commander: 11.1.0 - compare-versions: 6.1.1 - fs-extra: 11.3.0 - glob: 10.4.5 - got: 13.0.0 - hpagent: 1.2.0 - js-yaml: 4.1.0 - mocha: 10.8.2 - monaco-page-objects: 3.14.1(selenium-webdriver@4.33.0)(typescript@5.8.3) - sanitize-filename: 1.6.3 - selenium-webdriver: 4.33.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.33.0)(typescript@5.8.3))(selenium-webdriver@4.33.0) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - vscode-extension-tester@8.14.1(mocha@11.7.0)(typescript@5.8.3): - dependencies: - '@redhat-developer/locators': 1.13.0(@redhat-developer/page-objects@1.13.0(selenium-webdriver@4.33.0)(typescript@5.8.3))(selenium-webdriver@4.33.0) - '@redhat-developer/page-objects': 1.13.0(selenium-webdriver@4.33.0)(typescript@5.8.3) - '@types/selenium-webdriver': 4.1.28 - '@vscode/vsce': 3.4.2 - c8: 10.1.3 - commander: 13.1.0 - compare-versions: 6.1.1 - find-up: 7.0.0 - fs-extra: 11.3.0 - glob: 11.0.3 - got: 14.4.7 - hpagent: 1.2.0 - js-yaml: 4.1.0 - mocha: 11.7.0 - sanitize-filename: 1.6.3 - selenium-webdriver: 4.33.0 - targz: 1.0.1 - typescript: 5.8.3 - unzipper: 0.12.3 - transitivePeerDependencies: - - bufferutil - - monocart-coverage-reports - - supports-color - - utf-8-validate - - vscode-jsonrpc@6.0.0: {} - - vscode-jsonrpc@8.1.0: {} - - vscode-jsonrpc@8.2.0: {} - - vscode-jsonrpc@8.2.1: {} - - vscode-languageclient@7.0.0: - dependencies: - minimatch: 3.1.2 - semver: 7.7.2 - vscode-languageserver-protocol: 3.16.0 - - vscode-languageclient@8.1.0: - dependencies: - minimatch: 5.1.6 - semver: 7.7.2 - vscode-languageserver-protocol: 3.17.3 - - vscode-languageclient@9.0.1: - dependencies: - minimatch: 5.1.6 - semver: 7.7.2 - vscode-languageserver-protocol: 3.17.5 - - vscode-languageserver-protocol@3.16.0: - dependencies: - vscode-jsonrpc: 6.0.0 - vscode-languageserver-types: 3.16.0 - - vscode-languageserver-protocol@3.17.3: - dependencies: - vscode-jsonrpc: 8.1.0 - vscode-languageserver-types: 3.17.3 - - vscode-languageserver-protocol@3.17.5: - dependencies: - vscode-jsonrpc: 8.2.0 - vscode-languageserver-types: 3.17.5 - - vscode-languageserver-textdocument@1.0.12: {} - - vscode-languageserver-types@3.16.0: {} - - vscode-languageserver-types@3.17.3: {} - - vscode-languageserver-types@3.17.5: {} - - vscode-messenger-common@0.4.5: {} - - vscode-messenger-common@0.5.1: {} - - vscode-messenger-webview@0.5.1: - dependencies: - vscode-messenger-common: 0.5.1 - - vscode-messenger@0.4.5: - dependencies: - vscode-messenger-common: 0.4.5 - - vscode-messenger@0.5.1: - dependencies: - vscode-messenger-common: 0.5.1 - - vscode-test@1.6.1: - dependencies: - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - rimraf: 3.0.2 - unzipper: 0.10.14 - transitivePeerDependencies: - - supports-color - - vscode-uri@3.1.0: {} - - vscode-ws-jsonrpc@3.4.0: - dependencies: - vscode-jsonrpc: 8.2.1 - - w3c-hr-time@1.0.2: - dependencies: - browser-process-hrtime: 1.0.0 - - w3c-keyname@2.2.8: {} - - w3c-xmlserializer@1.1.2: - dependencies: - domexception: 1.0.1 - webidl-conversions: 4.0.2 - xml-name-validator: 3.0.0 - - w3c-xmlserializer@4.0.0: - dependencies: - xml-name-validator: 4.0.0 - - walker@1.0.8: - dependencies: - makeerror: 1.0.12 - - watch@0.10.0: {} - - watchpack@2.4.4: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - - wbuf@1.7.3: - dependencies: - minimalistic-assert: 1.0.1 - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - - web-namespaces@1.1.4: {} - - web-namespaces@2.0.1: {} - - web-streams-polyfill@3.3.3: {} - - web-tree-sitter@0.24.5: - optional: true - - webfonts-generator@0.4.0: - dependencies: - handlebars: 4.7.8 - mkdirp: 0.5.6 - q: 1.5.1 - svg2ttf: 4.3.0 - svgicons2svgfont: 5.0.2 - ttf2eot: 2.0.0 - ttf2woff: 2.0.2 - ttf2woff2: 2.0.3 - underscore: 1.13.7 - url-join: 1.1.0 - - webidl-conversions@3.0.1: {} - - webidl-conversions@4.0.2: {} - - webidl-conversions@7.0.0: {} - - webpack-cli@4.10.0(webpack-dev-server@5.2.2)(webpack@5.100.2): - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.100.2) - '@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 - commander: 7.2.0 - cross-spawn: 7.0.6 - fastest-levenshtein: 1.0.16 - import-local: 3.2.0 - interpret: 2.2.0 - rechoir: 0.7.1 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-merge: 5.10.0 - optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@4.10.0)(webpack@5.100.2) - - webpack-cli@4.10.0(webpack@5.100.2): - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.100.2) - '@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 - commander: 7.2.0 - cross-spawn: 7.0.6 - fastest-levenshtein: 1.0.16 - import-local: 3.2.0 - interpret: 2.2.0 - rechoir: 0.7.1 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-merge: 5.10.0 - - webpack-cli@5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2): - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.100.2) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.100.2) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.2)(webpack@5.100.2) - colorette: 2.0.20 - commander: 10.0.1 - cross-spawn: 7.0.6 - envinfo: 7.14.0 - fastest-levenshtein: 1.0.16 - import-local: 3.2.0 - interpret: 3.1.1 - rechoir: 0.8.0 - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-merge: 5.10.0 - optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@5.1.4)(webpack@5.100.2) - - webpack-cli@5.1.4(webpack@5.100.2): - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.100.2) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.100.2) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.100.2) - colorette: 2.0.20 - commander: 10.0.1 - cross-spawn: 7.0.6 - envinfo: 7.14.0 - fastest-levenshtein: 1.0.16 - import-local: 3.2.0 - interpret: 3.1.1 - rechoir: 0.8.0 - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-merge: 5.10.0 - - webpack-cli@6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2): - dependencies: - '@discoveryjs/json-ext': 0.6.3 - '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.100.2) - '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.100.2) - '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.2)(webpack@5.100.2) - colorette: 2.0.20 - commander: 12.1.0 - cross-spawn: 7.0.6 - envinfo: 7.14.0 - fastest-levenshtein: 1.0.16 - import-local: 3.2.0 - interpret: 3.1.1 - rechoir: 0.8.0 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-merge: 6.0.1 - optionalDependencies: - webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.100.2) - - webpack-cli@6.0.1(webpack@5.100.2): - dependencies: - '@discoveryjs/json-ext': 0.6.3 - '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.100.2) - '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.100.2) - '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack@5.100.2) - colorette: 2.0.20 - commander: 12.1.0 - cross-spawn: 7.0.6 - envinfo: 7.14.0 - fastest-levenshtein: 1.0.16 - import-local: 3.2.0 - interpret: 3.1.1 - rechoir: 0.8.0 - webpack: 5.100.2(webpack-cli@6.0.1) - webpack-merge: 6.0.1 - - webpack-dev-middleware@3.7.3(webpack@5.100.2): - dependencies: - memory-fs: 0.4.1 - mime: 2.6.0 - mkdirp: 0.5.6 - range-parser: 1.2.1 - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-log: 2.0.0 - - webpack-dev-middleware@4.3.0(webpack@5.100.2): - dependencies: - colorette: 1.4.0 - mem: 8.1.1 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 - schema-utils: 3.3.0 - webpack: 5.100.2(webpack-cli@4.10.0) - - webpack-dev-middleware@6.1.3(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)): - dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 - schema-utils: 4.3.2 - optionalDependencies: - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - - webpack-dev-middleware@6.1.3(webpack@5.100.2): - dependencies: - colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 - range-parser: 1.2.1 - schema-utils: 4.3.2 - optionalDependencies: - webpack: 5.100.2(webpack-cli@6.0.1) - - webpack-dev-middleware@7.4.2(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)): - dependencies: - colorette: 2.0.20 - memfs: 4.17.2 - mime-types: 2.1.35 - on-finished: 2.4.1 - range-parser: 1.2.1 - schema-utils: 4.3.2 - optionalDependencies: - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - optional: true - - webpack-dev-middleware@7.4.2(webpack@5.100.2): - dependencies: - colorette: 2.0.20 - memfs: 4.17.2 - mime-types: 2.1.35 - on-finished: 2.4.1 - range-parser: 1.2.1 - schema-utils: 4.3.2 - optionalDependencies: - webpack: 5.100.2(webpack-cli@4.10.0) - - webpack-dev-server@5.2.2(webpack-cli@4.10.0)(webpack@5.100.2): - 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/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 - '@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.0 - 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) - ipaddr.js: 2.2.0 - launch-editor: 2.10.0 - open: 10.1.2 - p-retry: 6.2.1 - schema-utils: 4.3.2 - 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.100.2) - ws: 8.18.2 - optionalDependencies: - webpack: 5.100.2(webpack-cli@4.10.0) - webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.100.2) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - webpack-dev-server@5.2.2(webpack-cli@5.1.4)(webpack@5.100.2): - 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/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 - '@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.0 - 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) - ipaddr.js: 2.2.0 - launch-editor: 2.10.0 - open: 10.1.2 - p-retry: 6.2.1 - schema-utils: 4.3.2 - 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.100.2) - ws: 8.18.2 - optionalDependencies: - webpack: 5.100.2(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - webpack-dev-server@5.2.2(webpack-cli@6.0.1)(webpack@5.100.2): - 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/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 - '@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.0 - 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) - ipaddr.js: 2.2.0 - launch-editor: 2.10.0 - open: 10.1.2 - p-retry: 6.2.1 - schema-utils: 4.3.2 - 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.100.2) - ws: 8.18.2 - optionalDependencies: - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - webpack-dev-server@5.2.2(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)): - 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/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 - '@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.0 - 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) - ipaddr.js: 2.2.0 - launch-editor: 2.10.0 - open: 10.1.2 - p-retry: 6.2.1 - schema-utils: 4.3.2 - 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.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - ws: 8.18.2 - optionalDependencies: - webpack: 5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - optional: true - - webpack-dev-server@5.2.2(webpack@5.100.2): - 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/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 - '@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.0 - 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) - ipaddr.js: 2.2.0 - launch-editor: 2.10.0 - open: 10.1.2 - p-retry: 6.2.1 - schema-utils: 4.3.2 - 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.100.2) - ws: 8.18.2 - optionalDependencies: - webpack: 5.100.2(webpack-cli@4.10.0) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - webpack-filter-warnings-plugin@1.2.1(webpack@5.100.2): - dependencies: - webpack: 5.100.2(webpack-cli@4.10.0) - - webpack-hot-middleware@2.26.1: - dependencies: - ansi-html-community: 0.0.8 - html-entities: 2.6.0 - strip-ansi: 6.0.1 - - webpack-log@2.0.0: - dependencies: - ansi-colors: 3.2.4 - uuid: 3.4.0 - - webpack-manifest-plugin@1.3.2(webpack@5.100.2): - dependencies: - fs-extra: 0.30.0 - lodash: 4.17.21 - webpack: 5.100.2(esbuild@0.25.5)(webpack-cli@6.0.1) - - webpack-merge-and-include-globally@2.3.4(webpack@5.100.2): - dependencies: - es6-promisify: 6.1.1 - glob: 7.2.3 - rev-hash: 3.0.0 - webpack: 5.100.2(webpack-cli@5.1.4) - - webpack-merge@5.10.0: - dependencies: - clone-deep: 4.0.1 - flat: 5.0.2 - wildcard: 2.0.1 - - webpack-merge@6.0.1: - dependencies: - clone-deep: 4.0.1 - flat: 5.0.2 - wildcard: 2.0.1 - - webpack-permissions-plugin@1.0.10: - dependencies: - filehound: 1.17.6 - - webpack-sources@1.4.3: - dependencies: - source-list-map: 2.0.1 - source-map: 0.6.1 - - webpack-sources@3.3.3: {} - - webpack-virtual-modules@0.2.2: - dependencies: - debug: 3.2.7 - transitivePeerDependencies: - - supports-color - - webpack-virtual-modules@0.4.6: {} - - webpack-virtual-modules@0.5.0: {} - - webpack-virtual-modules@0.6.2: {} - - webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6): - 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.25.1 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.2 - 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.0 - 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.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)(webpack@5.100.2(@swc/core@1.12.5(@swc/helpers@0.5.17))(esbuild@0.25.6)) - watchpack: 2.4.4 - webpack-sources: 3.3.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.100.2(esbuild@0.25.5)(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.25.1 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.2 - 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.0 - 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(esbuild@0.25.5)(webpack@5.100.2) - watchpack: 2.4.4 - webpack-sources: 3.3.3 - optionalDependencies: - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.100.2(webpack-cli@4.10.0): - 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.25.1 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.2 - 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.0 - 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(webpack@5.100.2) - watchpack: 2.4.4 - webpack-sources: 3.3.3 - optionalDependencies: - webpack-cli: 4.10.0(webpack-dev-server@5.2.2)(webpack@5.100.2) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.100.2(webpack-cli@5.1.4): - 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.25.1 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.2 - 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.0 - 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(webpack@5.100.2) - watchpack: 2.4.4 - webpack-sources: 3.3.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@5.2.2)(webpack@5.100.2) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.100.2(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.25.1 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.2 - 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.0 - 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(webpack@5.100.2) - watchpack: 2.4.4 - webpack-sources: 3.3.3 - optionalDependencies: - webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.100.2) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - websocket-driver@0.7.4: - dependencies: - http-parser-js: 0.5.10 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - - websocket-extensions@0.1.4: {} - - whatwg-encoding@1.0.5: - dependencies: - iconv-lite: 0.4.24 - - whatwg-encoding@2.0.0: - dependencies: - iconv-lite: 0.6.3 - - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - - whatwg-fetch@2.0.3: {} - - whatwg-mimetype@2.3.0: {} - - whatwg-mimetype@3.0.0: {} - - whatwg-mimetype@4.0.0: {} - - whatwg-url@11.0.0: - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - - whatwg-url@4.8.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - whatwg-url@6.5.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - - whatwg-url@7.1.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - - whet.extend@0.9.9: {} - - which-boxed-primitive@1.1.1: - dependencies: - is-bigint: 1.1.0 - is-boolean-object: 1.2.2 - is-number-object: 1.1.1 - is-string: 1.1.1 - is-symbol: 1.1.1 - - which-builtin-type@1.2.1: - dependencies: - call-bound: 1.0.4 - function.prototype.name: 1.1.8 - has-tostringtag: 1.0.2 - is-async-function: 2.1.1 - is-date-object: 1.1.0 - is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 - is-regex: 1.2.1 - is-weakref: 1.1.1 - isarray: 2.0.5 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.19 - - which-collection@1.0.2: - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.4 - - which-module@1.0.0: {} - - which-module@2.0.1: {} - - which-typed-array@1.1.19: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - for-each: 0.3.5 - get-proto: 1.0.1 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - - which@1.3.1: - dependencies: - isexe: 2.0.0 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - which@5.0.0: - dependencies: - isexe: 3.1.1 - - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - - widest-line@2.0.1: - dependencies: - string-width: 2.1.1 - - widest-line@3.1.0: - dependencies: - string-width: 4.2.3 - - wildcard@2.0.1: {} - - winston-transport@4.6.0: - dependencies: - logform: 2.7.0 - readable-stream: 3.6.2 - triple-beam: 1.4.1 - - winston@3.11.0: - dependencies: - '@colors/colors': 1.6.0 - '@dabh/diagnostics': 2.0.3 - async: 3.2.6 - is-stream: 2.0.1 - logform: 2.7.0 - one-time: 1.0.0 - readable-stream: 3.6.2 - safe-stable-stringify: 2.5.0 - stack-trace: 0.0.10 - triple-beam: 1.4.1 - winston-transport: 4.6.0 - - word-wrap@1.2.5: {} - - wordwrap@1.0.0: {} - - worker-farm@1.7.0: - dependencies: - errno: 0.1.8 - - worker-rpc@0.1.1: - dependencies: - microevent.ts: 0.1.1 - - workerpool@6.5.1: {} - - workerpool@9.3.2: {} - - wrap-ansi@2.1.0: - dependencies: - string-width: 1.0.2 - strip-ansi: 3.0.1 - - wrap-ansi@3.0.1: - dependencies: - string-width: 2.1.1 - strip-ansi: 4.0.0 - - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - wrap-ansi@9.0.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 7.2.0 - strip-ansi: 7.1.0 - - wrappy@1.0.2: {} - - write-file-atomic@2.4.3: - dependencies: - graceful-fs: 4.2.11 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - - write-file-atomic@3.0.3: - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - - write-file-atomic@4.0.2: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - - write-file-atomic@5.0.1: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 4.1.0 - - write@1.0.3: - dependencies: - mkdirp: 0.5.6 - - ws@5.2.4: - dependencies: - async-limiter: 1.0.1 - - ws@6.2.3: - dependencies: - async-limiter: 1.0.1 - - ws@7.5.10: {} - - ws@8.18.2: {} - - ws@8.18.3: {} - - x-default-browser@0.4.0: - optionalDependencies: - default-browser-id: 1.0.4 - - xdg-basedir@3.0.0: {} - - xml-but-prettier@1.0.1: - dependencies: - repeat-string: 1.6.1 - - xml-js@1.6.11: - dependencies: - sax: 1.4.1 - - xml-name-validator@2.0.1: {} - - xml-name-validator@3.0.0: {} - - xml-name-validator@4.0.0: {} - - xml2js@0.5.0: - dependencies: - sax: 1.4.1 - xmlbuilder: 11.0.1 - - xml2js@0.6.2: - dependencies: - sax: 1.4.1 - xmlbuilder: 11.0.1 - - xml@1.0.1: {} - - xmlbuilder2@3.1.1: - dependencies: - '@oozcitak/dom': 1.15.10 - '@oozcitak/infra': 1.0.8 - '@oozcitak/util': 8.3.8 - js-yaml: 3.14.1 - - xmlbuilder@11.0.1: {} - - xmlchars@2.2.0: {} - - xmlhttprequest@1.8.0: {} - - xstate@4.38.3: {} - - xtend@4.0.2: {} - - y18n@3.2.2: {} - - y18n@4.0.3: {} - - y18n@5.0.8: {} - - yallist@2.1.2: {} - - yallist@3.1.1: {} - - yallist@4.0.0: {} - - yaml@1.10.2: {} - - yaml@2.8.0: {} - - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - - yargs-parser@20.2.9: {} - - yargs-parser@21.1.1: {} - - yargs-parser@5.0.1: - dependencies: - camelcase: 3.0.0 - object.assign: 4.1.7 - - yargs-parser@8.1.0: - dependencies: - camelcase: 4.1.0 - - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - - yargs@10.1.2: - dependencies: - cliui: 4.1.0 - decamelize: 1.2.0 - find-up: 2.1.0 - get-caller-file: 1.0.3 - os-locale: 2.1.0 - require-directory: 2.1.1 - require-main-filename: 1.0.1 - set-blocking: 2.0.0 - string-width: 2.1.1 - which-module: 2.0.1 - y18n: 3.2.2 - yargs-parser: 8.1.0 - - yargs@15.4.1: - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - - yargs@16.2.0: - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yargs@7.1.2: - dependencies: - camelcase: 3.0.0 - cliui: 3.2.0 - decamelize: 1.2.0 - get-caller-file: 1.0.3 - os-locale: 1.4.0 - read-pkg-up: 1.0.1 - require-directory: 2.1.1 - require-main-filename: 1.0.1 - set-blocking: 2.0.0 - string-width: 1.0.2 - which-module: 1.0.0 - y18n: 3.2.2 - yargs-parser: 5.0.1 - - yarn@1.22.22: {} - - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - - yazl@2.5.1: - dependencies: - buffer-crc32: 0.2.13 - - yocto-queue@0.1.0: {} - - yocto-queue@1.2.1: {} - - yup@1.6.1: - dependencies: - property-expr: 2.0.6 - tiny-case: 1.0.3 - toposort: 2.0.2 - type-fest: 2.19.0 - - zenscroll@4.0.2: {} - - zod-to-json-schema@3.24.5(zod@3.25.67): - dependencies: - zod: 3.25.67 - - zod@3.25.67: {} - - zod@3.25.76: {} - - zustand@4.5.7(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0): - dependencies: - use-sync-external-store: 1.5.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.0 - immer: 9.0.21 - react: 18.2.0 - - zustand@5.0.5(@types/react@18.2.0)(immer@9.0.21)(react@18.2.0)(use-sync-external-store@1.5.0(react@18.2.0)): - optionalDependencies: - '@types/react': 18.2.0 - immer: 9.0.21 - react: 18.2.0 - use-sync-external-store: 1.5.0(react@18.2.0) - - zustand@5.0.5(@types/react@18.2.0)(immer@9.0.21)(react@19.1.0)(use-sync-external-store@1.5.0(react@19.1.0)): - optionalDependencies: - '@types/react': 18.2.0 - immer: 9.0.21 - react: 19.1.0 - use-sync-external-store: 1.5.0(react@19.1.0) - - zwitch@1.0.5: {} - - zwitch@2.0.4: {} diff --git a/workspaces/ballerina/ballerina-core/src/flow-model/BaseVisitor.ts b/workspaces/ballerina/ballerina-core/src/flow-model/BaseVisitor.ts index 7489e98ac0d..30fe83be8b2 100644 --- a/workspaces/ballerina/ballerina-core/src/flow-model/BaseVisitor.ts +++ b/workspaces/ballerina/ballerina-core/src/flow-model/BaseVisitor.ts @@ -90,6 +90,9 @@ export interface BaseVisitor { beginVisitAgentCall?(node: FlowNode, parent?: FlowNode): void; endVisitAgentCall?(node: FlowNode, parent?: FlowNode): void; + beginVisitVectorKnowledgeBaseCall?(node: FlowNode, parent?: FlowNode): void; + endVisitVectorKnowledgeBaseCall?(node: FlowNode, parent?: FlowNode): void; + beginVisitParallelFlow?(node: FlowNode, parent?: FlowNode): void; endVisitParallelFlow?(node: FlowNode, parent?: FlowNode): void; diff --git a/workspaces/ballerina/ballerina-core/src/interfaces/bi.ts b/workspaces/ballerina/ballerina-core/src/interfaces/bi.ts index 84e3500564c..9c1c2db2be4 100644 --- a/workspaces/ballerina/ballerina-core/src/interfaces/bi.ts +++ b/workspaces/ballerina/ballerina-core/src/interfaces/bi.ts @@ -86,6 +86,7 @@ export type NodeMetadata = { memory?: MemoryData; agent?: AgentData; paramsToHide?: string[]; // List of properties keys to to hide from forms + module?: string; }; export type ParentMetadata = { @@ -165,6 +166,7 @@ export type CodeData = { node?: NodeKind; org?: string; module?: string; + packageName?: string; object?: string; symbol?: string; lineRange?: ELineRange; @@ -233,6 +235,7 @@ export enum DIRECTORY_MAP { FUNCTION = "FUNCTION", LISTENER = "LISTENER", LOCAL_CONNECTORS = "localConnectors", + MODEL_PROVIDER = "MODEL_PROVIDER", NP_FUNCTION = "NP_FUNCTION", REMOTE = "REMOTE", RESOURCE = "RESOURCE", @@ -312,10 +315,13 @@ export type NodePropertyKey = | "enableModelContext" | "expression" | "functionName" + | "functionNameDescription" + | "isIsolated" | "maxIter" | "memory" | "method" | "model" + | "modelProvider" | "msg" | "parameters" | "path" @@ -330,8 +336,11 @@ export type NodePropertyKey = | "targetType" | "tools" | "type" + | "typeDescription" | "variable" | "verbose" + | "vectorStore" + | "embeddingModel" | "view"; export type BranchKind = "block" | "worker"; @@ -374,6 +383,16 @@ export type NodeKind = | "LOCK" | "LV_EXPRESSION" | "MATCH" + | "METHOD_CALL" + | "MODEL_PROVIDER" + | "MODEL_PROVIDERS" + | "VECTOR_STORE" + | "VECTOR_STORES" + | "VECTOR_KNOWLEDGE_BASE" + | "VECTOR_KNOWLEDGE_BASE_CALL" + | "VECTOR_KNOWLEDGE_BASES" + | "EMBEDDING_PROVIDER" + | "EMBEDDING_PROVIDERS" | "NEW_CONNECTION" | "NEW_DATA" | "NP_FUNCTION" 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 59b2649d1be..2c822f7056a 100644 --- a/workspaces/ballerina/ballerina-core/src/interfaces/extended-lang-client.ts +++ b/workspaces/ballerina/ballerina-core/src/interfaces/extended-lang-client.ts @@ -28,9 +28,10 @@ import { ConnectorRequest, ConnectorResponse } from "../rpc-types/connector-wiza import { SqFlow } from "../rpc-types/sequence-diagram/interfaces"; import { FieldType, FunctionModel, ListenerModel, ServiceClassModel, ServiceModel } from "./service"; import { CDModel } from "./component-diagram"; -import { DMModel, ExpandedDMModel, IntermediateClause, Mapping, VisualizableField, CustomFnMetadata } from "./inline-data-mapper"; +import { DMModel, ExpandedDMModel, IntermediateClause, Mapping, VisualizableField, CustomFnMetadata, ResultClauseType } from "./inline-data-mapper"; import { DataMapperMetadata, SCOPE } from "../state-machine-types"; import { Attachment } from "../rpc-types/ai-panel/interfaces"; +import { ToolParameters } from "../rpc-types/ai-agent/interfaces"; export interface DidOpenParams { textDocument: TextDocumentItem; @@ -289,6 +290,7 @@ export interface InitialIDMSourceResponse { textEdits: { [key: string]: TextEdit[]; }; + codedata?: CodeData; } export interface InlineDataMapperModelRequest { @@ -352,11 +354,13 @@ export interface AddArrayElementRequest { propertyKey?: string; } -export interface ConvertToQueryRequest{ +export interface ConvertToQueryRequest { filePath: string; codedata: CodeData; + mapping: Mapping; + clauseType: ResultClauseType; varName?: string; - targetField?: string; + targetField: string; propertyKey?: string; } @@ -387,7 +391,7 @@ export interface DeleteMappingRequest { targetField: string; } -export interface MapWithCustomFnRequest{ +export interface MapWithCustomFnRequest { filePath: string; codedata: CodeData; mapping: Mapping; @@ -834,9 +838,10 @@ export type SearchQueryParams = { limit?: number; offset?: number; includeAvailableFunctions?: string; + includeCurrentOrganizationInSearch?: boolean; } -export type SearchKind = 'FUNCTION' | 'CONNECTOR' | 'TYPE' | "NP_FUNCTION"; +export type SearchKind = 'FUNCTION' | 'CONNECTOR' | 'TYPE' | "NP_FUNCTION" | "MODEL_PROVIDER" | "VECTOR_STORE" | "EMBEDDING_PROVIDER" | "VECTOR_KNOWLEDGE_BASE"; export type BISearchRequest = { position: LineRange; @@ -1530,8 +1535,17 @@ export interface FunctionNodeResponse { // <-------- AI Agent Related -------> +export interface AiModuleOrgRequest { + projectPath: string; +} + +export interface AiModuleOrgResponse { + orgName: string; +} + export interface AINodesRequest { filePath: string; + orgName: string; } export interface AINodesResponse { agents?: CodeData[]; @@ -1539,6 +1553,7 @@ export interface AINodesResponse { } export interface MemoryManagersRequest { filePath: string; + orgName: string; } export interface MemoryManagersResponse { memoryManagers?: CodeData[]; @@ -1551,21 +1566,58 @@ export interface AIModelsResponse { export interface AIModelsRequest { agent: any; filePath?: string; + orgName: string; } export interface AIToolsRequest { filePath: string; + serviceUrl?: string; + configs?: Record; } + export interface AIToolsResponse { tools: string[]; } +export interface AIToolRequest { + toolName: string; + projectPath: string; +} + +export interface AIToolResponse { + name: string; + source: string; + toolParameters: Property; + connection: string; + description: string; + toolDescription: string; + diagram: FunctionNode; + output: { + [key: string]: TextEdit[]; + }; +} + +export interface McpToolsRequest { + serviceUrl?: string; + configs?: Record; + filePath?: string; +} + +export interface McpToolsResponse { + tools: Array<{ + name: string; + description?: string; + }>; + error?: string; +} + export interface AIGentToolsRequest { filePath: string; flowNode: FlowNode; toolName: string; description: string; connection: string; + toolParameters?: ToolParameters; } export interface AIGentToolsResponse { @@ -1660,7 +1712,8 @@ export enum ARTIFACT_TYPE { Types = "Types", NaturalFunctions = "Natural Functions", DataMappers = "Data Mappers", - Configurations = "Configurations" + Configurations = "Configurations", + Variables = "Variables" } export interface Artifacts { @@ -1750,6 +1803,7 @@ export interface BIInterface extends BaseLangClientInterface { getAllModels: (params: AIModelsRequest) => Promise; getModels: (params: AIModelsRequest) => Promise; getTools: (params: AIToolsRequest) => Promise; + getMcpTools: (params: McpToolsRequest) => Promise; genTool: (params: AIGentToolsRequest) => Promise; } diff --git a/workspaces/ballerina/ballerina-core/src/interfaces/inline-data-mapper.ts b/workspaces/ballerina/ballerina-core/src/interfaces/inline-data-mapper.ts index 9d58bc2e7d6..bd5c2e849fd 100644 --- a/workspaces/ballerina/ballerina-core/src/interfaces/inline-data-mapper.ts +++ b/workspaces/ballerina/ballerina-core/src/interfaces/inline-data-mapper.ts @@ -28,7 +28,7 @@ export enum TypeKind { Decimal = "decimal", Boolean = "boolean", Enum = "enum", - Unknown = "unknown", + Unknown = "$CompilationError$", Anydata = "anydata", Byte = "byte", Json = "json" @@ -71,6 +71,13 @@ export interface IDMDiagnostic { }; } +export interface ModuleInfo { + org?: string + packageName?: string + moduleName?: string + version?: string +} + export interface IOType { id: string; category?: InputCategory; @@ -84,6 +91,7 @@ export interface IOType { optional?: boolean; focusedMemberId?: string; isFocused?: boolean; + moduleInfo? : ModuleInfo; } export interface Mapping { @@ -151,7 +159,8 @@ export interface IOTypeField { export interface EnumMember { id: string; - value: string; + typeName: string; + optional?: boolean; } export interface MappingElement { diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/ai-agent/index.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/ai-agent/index.ts index bb09f5317b5..b8205a70249 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/ai-agent/index.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/ai-agent/index.ts @@ -16,16 +16,21 @@ * under the License. */ -import { AIGentToolsRequest, AIGentToolsResponse, AIModelsRequest, AINodesRequest, AINodesResponse, AIToolsRequest, AIToolsResponse, AIModelsResponse, MemoryManagersResponse, MemoryManagersRequest } from "../../interfaces/extended-lang-client"; -import { AIAgentRequest, AIAgentResponse, AIAgentToolsUpdateRequest } from "./interfaces"; +import { AiModuleOrgRequest, AiModuleOrgResponse, AIGentToolsRequest, AIGentToolsResponse, AIModelsRequest, AINodesRequest, AINodesResponse, AIToolsRequest, AIToolsResponse, AIModelsResponse, MemoryManagersResponse, MemoryManagersRequest, McpToolsRequest, McpToolsResponse, AIToolResponse, AIToolRequest } from "../../interfaces/extended-lang-client"; +import { AIAgentRequest, AIAgentResponse, AIAgentToolsUpdateRequest, McpToolUpdateRequest } from "./interfaces"; export interface AIAgentAPI { + getAiModuleOrg: (params: AiModuleOrgRequest) => Promise; getAllAgents: (params: AINodesRequest) => Promise; getAllModels: (params: AIModelsRequest) => Promise; getAllMemoryManagers: (params: MemoryManagersRequest) => Promise; getModels: (params: AIModelsRequest) => Promise; getTools: (params: AIToolsRequest) => Promise; + getTool: (params: AIToolRequest) => Promise; + getMcpTools: (params: McpToolsRequest) => Promise; genTool: (params: AIGentToolsRequest) => Promise; + configureDefaultModelProvider: () => Promise; createAIAgent: (params: AIAgentRequest) => Promise; updateAIAgentTools: (params: AIAgentToolsUpdateRequest) => Promise; + updateMCPToolKit: (params: McpToolUpdateRequest) => Promise; } diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/ai-agent/interfaces.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/ai-agent/interfaces.ts index 4ac529bea5d..e2194c847a1 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/ai-agent/interfaces.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/ai-agent/interfaces.ts @@ -18,7 +18,7 @@ */ import { NodePosition } from "@wso2/syntax-tree"; -import { CodeData, FlowNode } from "../../interfaces/bi"; +import { CodeData, FlowNode, Metadata } from "../../interfaces/bi"; export interface AgentTool { toolName: string; @@ -40,10 +40,21 @@ export interface AgentTool { connectionName: string; } +export interface ToolParameterFormValues { + variable: string; + type: string; + parameterDescription: string; +} + +export interface ToolParameterItem { + formValues: ToolParameterFormValues; +} + export interface AgentToolRequest { toolName: string; description: string; selectedCodeData: CodeData; // Codedata can be FUNCTION_CALL | REMOTE_ACTION_CALL + toolParameters?: ToolParameters; // Optional: Parameters for the tool, can be an object or array } export interface AIAgentRequest { @@ -66,3 +77,55 @@ export interface AIAgentResponse { position: NodePosition; } +export interface McpToolUpdateRequest { + agentFlowNode: FlowNode; + serviceUrl: string; + serverName: string; + selectedTools: string[]; + formValues?: FlowNode; // Optional: form values from AddMcpServer + updatedNode?: FlowNode; // Optional: updated node for toolkit edits + mcpTools?: any[]; // Optional: list of MCP tools + codedata?: CodeData; // Optional: code data for MCP toolkit +} + +export interface ToolParameters { + metadata: Metadata; + valueType: string; + valueTypeConstraint: ValueTypeConstraint; + value: ToolParametersValue; + optional: boolean; + editable: boolean; + advanced: boolean; + hidden?: boolean; +} + +export interface ToolParametersValue { + [key: string]: ValueTypeConstraint; +} + +export interface ValueTypeConstraint { + metadata: Metadata; + valueType: string; + value: ValueTypeConstraintValue; + optional: boolean; + editable: boolean; + advanced: boolean; + hidden?: boolean; +} + +export interface ValueTypeConstraintValue { + type: ValueType; + variable: ValueType; + parameterDescription: ValueType; +} + +export interface ValueType { + metadata: Metadata; + valueType: string; + valueTypeConstraint?: string; + value: string; + optional: boolean; + editable: boolean; + advanced: boolean; + hidden?: boolean; +} diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/ai-agent/rpc-type.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/ai-agent/rpc-type.ts index 23ff01bc74d..95be606d2d5 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/ai-agent/rpc-type.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/ai-agent/rpc-type.ts @@ -14,17 +14,24 @@ * 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 { AIGentToolsRequest, AIGentToolsResponse, AIModelsRequest, AINodesRequest, AINodesResponse, AIToolsRequest, AIToolsResponse, AIModelsResponse, MemoryManagersResponse, MemoryManagersRequest } from "../../interfaces/extended-lang-client"; -import { AIAgentRequest, AIAgentResponse, AIAgentToolsUpdateRequest } from "./interfaces"; -import { RequestType } from "vscode-messenger-common"; +import { AiModuleOrgRequest, AiModuleOrgResponse, AIGentToolsRequest, AIGentToolsResponse, AIModelsRequest, AINodesRequest, AINodesResponse, AIToolsRequest, AIToolsResponse, AIModelsResponse, MemoryManagersResponse, MemoryManagersRequest, McpToolsRequest, McpToolsResponse, AIToolResponse, AIToolRequest } from "../../interfaces/extended-lang-client"; +import { AIAgentRequest, AIAgentResponse, AIAgentToolsUpdateRequest, McpToolUpdateRequest } from "./interfaces"; +import { RequestType, NotificationType } from "vscode-messenger-common"; const _preFix = "ai-agent"; +export const getAiModuleOrg: RequestType = { method: `${_preFix}/getAiModuleOrg` }; export const getAllAgents: RequestType = { method: `${_preFix}/getAllAgents` }; export const getAllModels: RequestType = { method: `${_preFix}/getAllModels` }; export const getAllMemoryManagers: RequestType = { method: `${_preFix}/getAllMemoryManagers` }; export const getModels: RequestType = { method: `${_preFix}/getModels` }; export const getTools: RequestType = { method: `${_preFix}/getTools` }; +export const getTool: RequestType = { method: `${_preFix}/getTool` }; +export const getMcpTools: RequestType = { method: `${_preFix}/getMcpTools` }; export const genTool: RequestType = { method: `${_preFix}/genTool` }; +export const configureDefaultModelProvider: NotificationType = { method: `${_preFix}/configureDefaultModelProvider` }; export const createAIAgent: RequestType = { method: `${_preFix}/createAIAgent` }; export const updateAIAgentTools: RequestType = { method: `${_preFix}/updateAIAgentTools` }; +export const updateMCPToolKit: NotificationType = { method: `${_preFix}/updateMCPToolKit` }; diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/ai-panel/index.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/ai-panel/index.ts index 2b6de2c281b..a722377e4ae 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/ai-panel/index.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/ai-panel/index.ts @@ -17,7 +17,8 @@ * under the License. */ import { InlineAllDataMapperSourceRequest, MetadataWithAttachments } from "../../interfaces/extended-lang-client"; -import { AddToProjectRequest, GetFromFileRequest, DeleteFromProjectRequest, GenerateMappingsRequest, GenerateMappingsResponse, NotifyAIMappingsRequest, ProjectSource, ProjectDiagnostics, GenerateMappingsFromRecordRequest, GenerateMappingFromRecordResponse, PostProcessRequest, PostProcessResponse, GenerateTypesFromRecordRequest, GenerateTypesFromRecordResponse, FetchDataRequest, FetchDataResponse, TestGenerationRequest, TestGenerationResponse, TestGenerationMentions, AIChatSummary, DeveloperDocument, RequirementSpecification, LLMDiagnostics, GetModuleDirParams, AIPanelPrompt, AIMachineSnapshot, SubmitFeedbackRequest, CodeSegment } from "./interfaces"; +import { LoginMethod } from "../../state-machine-types"; +import { AddToProjectRequest, GetFromFileRequest, DeleteFromProjectRequest, GenerateMappingsRequest, GenerateMappingsResponse, NotifyAIMappingsRequest, ProjectSource, ProjectDiagnostics, GenerateMappingsFromRecordRequest, GenerateMappingFromRecordResponse, PostProcessRequest, PostProcessResponse, GenerateTypesFromRecordRequest, GenerateTypesFromRecordResponse, FetchDataRequest, FetchDataResponse, TestGenerationRequest, TestGenerationResponse, TestGenerationMentions, AIChatSummary, DeveloperDocument, RequirementSpecification, LLMDiagnostics, GetModuleDirParams, AIPanelPrompt, AIMachineSnapshot, SubmitFeedbackRequest, RelevantLibrariesAndFunctionsRequest, GenerateOpenAPIRequest, GenerateCodeRequest, TestPlanGenerationRequest, TestGeneratorIntermediaryState, RepairParams, RelevantLibrariesAndFunctionsResponse, CodeSegment } from "./interfaces"; export interface AIPanelAPI { // ================================== @@ -25,6 +26,7 @@ export interface AIPanelAPI { // ================================== getBackendUrl: () => Promise; getProjectUuid: () => Promise; + getLoginMethod: () => Promise; getAccessToken: () => Promise; getRefreshedAccessToken: () => Promise; getDefaultPrompt: () => Promise; @@ -36,7 +38,7 @@ export interface AIPanelAPI { deleteFromProject: (params: DeleteFromProjectRequest) => void; generateMappings: (params: GenerateMappingsRequest) => Promise; notifyAIMappings: (params: NotifyAIMappingsRequest) => Promise; - getProjectSource: (params: string) => Promise; + stopAIMappings: () => Promise; getShadowDiagnostics: (params: ProjectSource) => Promise; checkSyntaxError: (params: ProjectSource) => Promise; clearInitialPrompt: () => void; @@ -74,4 +76,12 @@ export interface AIPanelAPI { getModuleDirectory:(params: GetModuleDirParams) => Promise; getContentFromFile: (params: GetFromFileRequest) => Promise; submitFeedback: (params: SubmitFeedbackRequest) => Promise; + getRelevantLibrariesAndFunctions: (params: RelevantLibrariesAndFunctionsRequest) => Promise; + generateOpenAPI: (params: GenerateOpenAPIRequest) => void; + generateCode: (params: GenerateCodeRequest) => void; + repairGeneratedCode: (params: RepairParams) => void; + generateTestPlan: (params: TestPlanGenerationRequest) => void; + generateFunctionTests: (params: TestGeneratorIntermediaryState) => void; + generateHealthcareCode: (params: GenerateCodeRequest) => void; + abortAIGeneration: () => void; } 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 119af18e859..ac5b80a4290 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 @@ -87,12 +87,16 @@ export interface AddToProjectRequest { content: string; isTestCode: boolean; } + export interface GetFromFileRequest { filePath: string; } + export interface DeleteFromProjectRequest { filePath: string; } + +// Data-mapper related interfaces export interface GenerateMappingsRequest { position: NodePosition; filePath: string; @@ -111,51 +115,6 @@ export interface NotifyAIMappingsRequest { filePath: string; } -export interface ParameterMetadata { - inputs: object; - output: object; - inputMetadata: object; - outputMetadata: object; - mapping_fields?: object; - constants?: Record; - configurables?: Record; - variables?: Record; -} - -export interface RecordDefinitonObject { - recordFields: object; - recordFieldsMetadata: object; -} - -export interface MappingFileRecord { - mapping_fields: object; -} - -export interface ParameterDefinitions { - parameterMetadata: ParameterMetadata, - errorStatus: boolean -} - -export interface ParameterField { - isArrayType: boolean; - parameterName: string; - parameterType: string; - type: string; -} - -export interface FieldDescriptor { - type: string; - comment: string; -} - -export interface FieldConfig { - typeName: string; - type: string; - typeInstance: string; - nullable: boolean; - optional: boolean; -} - export interface CodeSegment { segmentText: string; filePath: string; @@ -168,7 +127,6 @@ export enum TestGenerationTarget { } export interface TestGenerationRequest { - backendUri: string; targetType: TestGenerationTarget; targetIdentifier: string; testPlan?: string; @@ -181,10 +139,23 @@ export interface TestGenerationResponse { testConfig?: string; } +export interface TestPlanGenerationRequest { + targetType: TestGenerationTarget; + targetSource: string; + target : string; +} + export interface TestGenerationMentions { mentions: string[]; } +export interface TestGeneratorIntermediaryState { + // content: [string, Attachment[]]; + resourceFunction: string; + testPlan: string; +} + + export interface DataMappingRecord { type: string; isArray: boolean; @@ -294,3 +265,82 @@ export interface FeedbackMessage { content: string; role : string; } + +export interface RelevantLibrariesAndFunctionsRequest { + query: string; +} + +export interface RelevantLibrariesAndFunctionsResponse { + libraries: any[]; +} + +export interface ChatEntry { + actor: string; + message: string; + isCodeGeneration?: boolean; +} + +export interface GenerateOpenAPIRequest { + query: string; + chatHistory: ChatEntry[]; +} + +export interface ChatEntry { + actor: string; + message: string; + isCodeGeneration?: boolean; +} + +export interface FileAttatchment { + fileName: string; + content: string; +} + +export type OperationType = "CODE_GENERATION" | "CODE_FOR_USER_REQUIREMENT" | "TESTS_FOR_USER_REQUIREMENT"; +export interface GenerateCodeRequest { + usecase: string; + chatHistory: ChatEntry[]; + operationType: OperationType; + fileAttachmentContents: FileAttatchment[]; +} + +export interface SourceFiles { + filePath: string; + content: string; +} + +export interface RepairParams { + previousMessages: any[]; + assistantResponse: string; + diagnostics: DiagnosticEntry[]; +} + +export interface RepairResponse { + repairResponse: string; + diagnostics: DiagnosticEntry[]; +} + +export type LibraryMode = "CORE" | "HEALTHCARE"; + +export interface CopilotAllLibrariesRequest { + mode: LibraryMode; +} +export interface MinifiedLibrary { + name: string; + description: string; +} +export interface CopilotCompactLibrariesResponse { + libraries: MinifiedLibrary[]; +} + +export interface CopilotFilterLibrariesRequest { + libNames: string[]; + mode: LibraryMode; +} + +export interface CopilotFilterLibrariesResponse { + libraries: any[]; +} + +export const GENERATE_TEST_AGAINST_THE_REQUIREMENT = "Generate tests against the requirements"; +export const GENERATE_CODE_AGAINST_THE_REQUIREMENT = "Generate code based on the requirements"; diff --git a/workspaces/ballerina/ballerina-core/src/rpc-types/ai-panel/rpc-type.ts b/workspaces/ballerina/ballerina-core/src/rpc-types/ai-panel/rpc-type.ts index 0ab66e8b0d5..1ba3d835f43 100644 --- a/workspaces/ballerina/ballerina-core/src/rpc-types/ai-panel/rpc-type.ts +++ b/workspaces/ballerina/ballerina-core/src/rpc-types/ai-panel/rpc-type.ts @@ -17,13 +17,15 @@ * * THIS FILE INCLUDES AUTO GENERATED CODE */ -import { InlineAllDataMapperSourceRequest, InlineDataMapperSourceResponse, MetadataWithAttachments } from "../../interfaces/extended-lang-client"; -import { AddToProjectRequest, GetFromFileRequest, DeleteFromProjectRequest, GenerateMappingsRequest, GenerateMappingsResponse, NotifyAIMappingsRequest, ProjectSource, ProjectDiagnostics, GenerateMappingsFromRecordRequest, GenerateMappingFromRecordResponse, PostProcessRequest, PostProcessResponse, GenerateTypesFromRecordRequest, GenerateTypesFromRecordResponse, FetchDataRequest, FetchDataResponse, TestGenerationRequest, TestGenerationResponse, TestGenerationMentions, AIChatSummary, DeveloperDocument, RequirementSpecification, LLMDiagnostics, GetModuleDirParams, AIPanelPrompt, AIMachineSnapshot, SubmitFeedbackRequest, CodeSegment } from "./interfaces"; +import { InlineAllDataMapperSourceRequest, MetadataWithAttachments } from "../../interfaces/extended-lang-client"; +import { LoginMethod } from "../../state-machine-types"; +import { AddToProjectRequest, GetFromFileRequest, DeleteFromProjectRequest, GenerateMappingsRequest, GenerateMappingsResponse, NotifyAIMappingsRequest, ProjectSource, ProjectDiagnostics, GenerateMappingsFromRecordRequest, GenerateMappingFromRecordResponse, PostProcessRequest, PostProcessResponse, GenerateTypesFromRecordRequest, GenerateTypesFromRecordResponse, FetchDataRequest, FetchDataResponse, TestGenerationRequest, TestGenerationResponse, TestGenerationMentions, AIChatSummary, DeveloperDocument, RequirementSpecification, LLMDiagnostics, GetModuleDirParams, AIPanelPrompt, AIMachineSnapshot, SubmitFeedbackRequest, RelevantLibrariesAndFunctionsRequest, GenerateOpenAPIRequest, GenerateCodeRequest, TestPlanGenerationRequest, TestGeneratorIntermediaryState, RepairParams, RelevantLibrariesAndFunctionsResponse, CodeSegment } from "./interfaces"; import { RequestType, NotificationType } from "vscode-messenger-common"; const _preFix = "ai-panel"; export const getBackendUrl: RequestType = { method: `${_preFix}/getBackendUrl` }; export const getProjectUuid: RequestType = { method: `${_preFix}/getProjectUuid` }; +export const getLoginMethod: RequestType = { method: `${_preFix}/getLoginMethod` }; export const getAccessToken: RequestType = { method: `${_preFix}/getAccessToken` }; export const getRefreshedAccessToken: RequestType = { method: `${_preFix}/getRefreshedAccessToken` }; export const getDefaultPrompt: RequestType = { method: `${_preFix}/getDefaultPrompt` }; @@ -35,7 +37,7 @@ export const getFileExists: RequestType = { method: export const deleteFromProject: NotificationType = { method: `${_preFix}/deleteFromProject` }; export const generateMappings: RequestType = { method: `${_preFix}/generateMappings` }; export const notifyAIMappings: RequestType = { method: `${_preFix}/notifyAIMappings` }; -export const getProjectSource: RequestType = { method: `${_preFix}/getProjectSource` }; +export const stopAIMappings: RequestType = { method: `${_preFix}/stopAIMappings` }; export const getShadowDiagnostics: RequestType = { method: `${_preFix}/getShadowDiagnostics` }; export const checkSyntaxError: RequestType = { method: `${_preFix}/checkSyntaxError` }; export const clearInitialPrompt: NotificationType = { method: `${_preFix}/clearInitialPrompt` }; @@ -72,3 +74,11 @@ export const createTestDirecoryIfNotExists: NotificationType = { method: export const getModuleDirectory: RequestType = { method: `${_preFix}/getModuleDirectory` }; export const getContentFromFile: RequestType = { method: `${_preFix}/getContentFromFile` }; export const submitFeedback: RequestType = { method: `${_preFix}/submitFeedback` }; +export const getRelevantLibrariesAndFunctions: RequestType = { method: `${_preFix}/getRelevantLibrariesAndFunctions` }; +export const generateOpenAPI: NotificationType = { method: `${_preFix}/generateOpenAPI` }; +export const generateCode: NotificationType = { method: `${_preFix}/generateCode` }; +export const repairGeneratedCode: NotificationType = { method: `${_preFix}/repairGeneratedCode` }; +export const generateTestPlan: NotificationType = { method: `${_preFix}/generateTestPlan` }; +export const generateFunctionTests: NotificationType = { method: `${_preFix}/generateFunctionTests` }; +export const generateHealthcareCode: NotificationType = { method: `${_preFix}/generateHealthcareCode` }; +export const abortAIGeneration: NotificationType = { method: `${_preFix}/abortAIGeneration` }; 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 9e0d9250ac6..8018c78d59a 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 @@ -119,6 +119,10 @@ export interface BIDiagramAPI { deleteFlowNode: (params: BISourceCodeRequest) => Promise; deleteByComponentInfo: (params: BIDeleteByComponentInfoRequest) => Promise; getAvailableNodes: (params: BIAvailableNodesRequest) => Promise; + getAvailableModelProviders: (params: BIAvailableNodesRequest) => Promise; + getAvailableVectorStores: (params: BIAvailableNodesRequest) => Promise; + getAvailableEmbeddingProviders: (params: BIAvailableNodesRequest) => Promise; + getAvailableVectorKnowledgeBases: (params: BIAvailableNodesRequest) => Promise; getEnclosedFunction: (params: BIGetEnclosedFunctionRequest) => Promise; getNodeTemplate: (params: BINodeTemplateRequest) => Promise; getAiSuggestions: (params: BIAiSuggestionsRequest) => Promise; 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 ffc81232a22..91ee5a70a44 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 @@ -121,6 +121,10 @@ export const getSourceCode: RequestType = { method: `${_preFix}/deleteFlowNode` }; export const deleteByComponentInfo: RequestType = { method: `${_preFix}/deleteByComponentInfo` }; export const getAvailableNodes: RequestType = { method: `${_preFix}/getAvailableNodes` }; +export const getAvailableModelProviders: RequestType = { method: `${_preFix}/getAvailableModelProviders` }; +export const getAvailableVectorStores: RequestType = { method: `${_preFix}/getAvailableVectorStores` }; +export const getAvailableEmbeddingProviders: RequestType = { method: `${_preFix}/getAvailableEmbeddingProviders` }; +export const getAvailableVectorKnowledgeBases: RequestType = { method: `${_preFix}/getAvailableVectorKnowledgeBases` }; export const getEnclosedFunction: RequestType = { method: `${_preFix}/getEnclosedFunction` }; export const getNodeTemplate: RequestType = { method: `${_preFix}/getNodeTemplate` }; export const getAiSuggestions: RequestType = { method: `${_preFix}/getAiSuggestions` }; 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 8072c2ab0c9..9bc819ee589 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 @@ -16,7 +16,7 @@ * under the License. */ -import { BallerinaPackagesParams, BallerinaProjectComponents, BallerinaSTParams, ComponentModels, ComponentModelsParams, ExecutorPositions, PartialST, PartialSTParams, STModifyParams, SymbolInfo, SymbolInfoParams, SyntaxTree, SyntaxTreeParams, TypeFromExpressionParams, TypeFromSymbolParams, TypesFromFnDefinitionParams } from "../../interfaces/extended-lang-client"; +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"; export interface LangClientAPI { @@ -27,6 +27,7 @@ export interface LangClientAPI { getBallerinaVersion: () => Promise; getCompletion: (params: CompletionRequest) => Promise; getDiagnostics: (params: SyntaxTreeParams) => Promise; + getProjectDiagnostics: (params: ProjectDiagnosticsRequest) => Promise; codeAction: (params: CodeActionRequest) => Promise; rename: (params: RenameRequest) => Promise; getDefinitionPosition: (params: DefinitionPositionRequest) => Promise; 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 4ad3422f853..bfb481eef1b 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 @@ -17,7 +17,7 @@ * * THIS FILE INCLUDES AUTO GENERATED CODE */ -import { BallerinaPackagesParams, BallerinaProjectComponents, BallerinaSTParams, ComponentModels, ComponentModelsParams, ExecutorPositions, PartialST, PartialSTParams, STModifyParams, SymbolInfo, SymbolInfoParams, SyntaxTree, SyntaxTreeParams, TypeFromExpressionParams, TypeFromSymbolParams, TypesFromFnDefinitionParams } from "../../interfaces/extended-lang-client"; +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 { RequestType, NotificationType } from "vscode-messenger-common"; @@ -29,6 +29,7 @@ export const getBallerinaProjectComponents: RequestType = { method: `${_preFix}/getBallerinaVersion` }; export const getCompletion: RequestType = { method: `${_preFix}/getCompletion` }; export const getDiagnostics: RequestType = { method: `${_preFix}/getDiagnostics` }; +export const getProjectDiagnostics: RequestType = { method: `${_preFix}/getProjectDiagnostics` }; export const codeAction: RequestType = { method: `${_preFix}/codeAction` }; export const rename: RequestType = { method: `${_preFix}/rename` }; export const getDefinitionPosition: RequestType = { method: `${_preFix}/getDefinitionPosition` }; diff --git a/workspaces/ballerina/ballerina-core/src/state-machine-types.ts b/workspaces/ballerina/ballerina-core/src/state-machine-types.ts index b6ab7aaf0a6..4a329063405 100644 --- a/workspaces/ballerina/ballerina-core/src/state-machine-types.ts +++ b/workspaces/ballerina/ballerina-core/src/state-machine-types.ts @@ -18,9 +18,11 @@ 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 { CodeData, DIRECTORY_MAP, ProjectStructureArtifactResponse, ProjectStructureResponse } from "./interfaces/bi"; +import { DiagnosticEntry, TestGeneratorIntermediaryState } from "./rpc-types/ai-panel/interfaces"; export type MachineStateValue = | 'initialize' @@ -169,8 +171,54 @@ export interface DownloadProgress { step?: number; } +export type ChatNotify = + | ChatStart + | IntermidaryState + | ChatContent + | CodeDiagnostics + | CodeMessages + | ChatStop + | ChatError; + +export interface ChatStart { + type: "start"; +} + +export interface IntermidaryState { + type: "intermediary_state"; + state: TestGeneratorIntermediaryState; // Smells off. Must revist later. +} + +//TODO: Maybe rename content_block to content_append? +export interface ChatContent { + type: "content_block" | "content_replace"; + content: string; +} + +export interface CodeDiagnostics { + type: "diagnostics"; + diagnostics: DiagnosticEntry[]; +} + +//TODO: I'm not sure about messages, maybe revisit later. +export interface CodeMessages { + type: "messages"; + messages: any[]; +} + +export interface ChatStop { + type: "stop"; + command: Command | undefined; +} + +export interface ChatError { + type: "error"; + content: string; +} + export const stateChanged: NotificationType = { method: 'stateChanged' }; export const onDownloadProgress: NotificationType = { method: 'onDownloadProgress' }; +export const onChatNotify: NotificationType = { method: 'onChatNotify' }; export const projectContentUpdated: NotificationType = { method: 'projectContentUpdated' }; export const getVisualizerLocation: RequestType = { method: 'getVisualizerLocation' }; export const webviewReady: NotificationType = { method: `webviewReady` }; @@ -190,42 +238,72 @@ export const breakpointChanged: NotificationType = { method: 'breakpoin export type AIMachineStateValue = | 'Initialize' // (checking auth, first load) | 'Unauthenticated' // (show login window) - | 'Authenticating' // (waiting for SSO login result after redirect) + | { Authenticating: 'determineFlow' | 'ssoFlow' | 'apiKeyFlow' | 'validatingApiKey' } // hierarchical substates | 'Authenticated' // (ready, main view) | 'Disabled'; // (optional: if AI Chat is globally unavailable) export enum AIMachineEventType { CHECK_AUTH = 'CHECK_AUTH', LOGIN = 'LOGIN', + AUTH_WITH_API_KEY = 'AUTH_WITH_API_KEY', + SUBMIT_API_KEY = 'SUBMIT_API_KEY', LOGOUT = 'LOGOUT', SILENT_LOGOUT = "SILENT_LOGOUT", - LOGIN_SUCCESS = 'LOGIN_SUCCESS', + COMPLETE_AUTH = 'COMPLETE_AUTH', CANCEL_LOGIN = 'CANCEL_LOGIN', RETRY = 'RETRY', DISPOSE = 'DISPOSE', } -export type AIMachineEventValue = - | { type: AIMachineEventType.CHECK_AUTH } - | { type: AIMachineEventType.LOGIN } - | { type: AIMachineEventType.LOGOUT } - | { type: AIMachineEventType.SILENT_LOGOUT } - | { type: AIMachineEventType.LOGIN_SUCCESS } - | { type: AIMachineEventType.CANCEL_LOGIN } - | { type: AIMachineEventType.RETRY } - | { type: AIMachineEventType.DISPOSE }; +export type AIMachineEventMap = { + [AIMachineEventType.CHECK_AUTH]: undefined; + [AIMachineEventType.LOGIN]: undefined; + [AIMachineEventType.AUTH_WITH_API_KEY]: undefined; + [AIMachineEventType.SUBMIT_API_KEY]: { apiKey: string }; + [AIMachineEventType.LOGOUT]: undefined; + [AIMachineEventType.SILENT_LOGOUT]: undefined; + [AIMachineEventType.COMPLETE_AUTH]: undefined; + [AIMachineEventType.CANCEL_LOGIN]: undefined; + [AIMachineEventType.RETRY]: undefined; + [AIMachineEventType.DISPOSE]: undefined; +}; -interface AIUsageTokens { - maxUsage: number; - remainingTokens: number; +export type AIMachineSendableEvent = + | { [K in keyof AIMachineEventMap]: AIMachineEventMap[K] extends undefined + ? { type: K } + : { type: K; payload: AIMachineEventMap[K] } + }[keyof AIMachineEventMap]; + +export enum LoginMethod { + BI_INTEL = 'biIntel', + ANTHROPIC_KEY = 'anthropic_key' } -export interface AIUserToken { +interface BIIntelSecrets { accessToken: string; - usageTokens?: AIUsageTokens; + refreshToken: string; +} + +interface AnthropicKeySecrets { + apiKey: string; +} + +export type AuthCredentials = + | { + loginMethod: LoginMethod.BI_INTEL; + secrets: BIIntelSecrets; + } + | { + loginMethod: LoginMethod.ANTHROPIC_KEY; + secrets: AnthropicKeySecrets; + }; + +export interface AIUserToken { + token: string; // For BI Intel, this is the access token and for Anthropic, this is the API key } export interface AIMachineContext { + loginMethod?: LoginMethod; userToken?: AIUserToken; errorMessage?: string; } @@ -238,5 +316,5 @@ export enum ColorThemeKind { } export const aiStateChanged: NotificationType = { method: 'aiStateChanged' }; -export const sendAIStateEvent: RequestType = { method: 'sendAIStateEvent' }; +export const sendAIStateEvent: RequestType = { method: 'sendAIStateEvent' }; export const currentThemeChanged: NotificationType = { method: 'currentThemeChanged' }; diff --git a/workspaces/ballerina/ballerina-extension/.env.example b/workspaces/ballerina/ballerina-extension/.env.example index 425c38e65e9..e48ddcef710 100644 --- a/workspaces/ballerina/ballerina-extension/.env.example +++ b/workspaces/ballerina/ballerina-extension/.env.example @@ -1,4 +1,4 @@ -BALLERINA_ROOT_URL=https://dev-tools.wso2.com/ballerina-copilot/v2.0 +BALLERINA_ROOT_URL=https://dev-tools.wso2.com/ballerina-copilot BALLERINA_AUTH_ORG= BALLERINA_AUTH_CLIENT_ID= -BALLERINA_AUTH_REDIRECT_URL=https://eae690d5-80c3-4fb7-9bc5-e8d747cca11b.e1-us-east-azure.choreoapps.dev \ No newline at end of file +BALLERINA_AUTH_REDIRECT_URL=https://eae690d5-80c3-4fb7-9bc5-e8d747cca11b.e1-us-east-azure.choreoapps.dev diff --git a/workspaces/ballerina/ballerina-extension/CHANGELOG.md b/workspaces/ballerina/ballerina-extension/CHANGELOG.md index d77992aac0d..4f36f470ed0 100644 --- a/workspaces/ballerina/ballerina-extension/CHANGELOG.md +++ b/workspaces/ballerina/ballerina-extension/CHANGELOG.md @@ -2,6 +2,45 @@ All notable changes to the "Ballerina" extension will be documented in this file. + +## **5.3.1** (2025-08-13) + +### Fixed + +- Resolved issues affecting Inline Data Mapper functionality and flow diagram rendering + + +## **5.3.0** (2025-07-29) + +### Major Updates + +- **Enhanced Inline Data Mapper:** Redesigned for improved user experience with AI-driven mapping suggestions and a sub-mapping form. +- **AI Copilot & RAG Workflows:** Upgraded AI Copilot now uses ballerina/ai packages, with low-code support added for advanced RAG workflows. + +### Added + +- **AI Capabilities:** + - Support for Anthropic's Claude Sonnet v4 for code generation. + - Added Vector Knowledge Base node for RAG workflows. + - Configuration options for default AI model providers in the Flow Diagram. +- **Editor & IDE Features:** + - New VSCode setting to manage the visibility of the Sequence Diagram. + - Option to include the current organization in search results. + +### Changes + +- **Data Mapper:** Improved search, label positioning, and performance. Now refreshes automatically when code changes. +- **AI & Copilot:** Streamlined flows for user-friendliness and enhanced agent capabilities with new packages. +- **UI/UX:** Refined diagram rendering and title components for a more responsive interface. + +### Fixed + +- **Data Mapper:** Corrected rendering issues and various bugs in mapping generation and type resolution. +- **AI & Copilot:** Resolved re-rendering bugs and authentication flow issues. +- **Configuration:** Fixed issues with Config.toml management and fast-run command failures. +- **IDE Stability:** Addressed UI freezing, improved state management, and enhanced project handling in multi-root workspaces. + + ## **5.2.0** (2025-07-14) ### Major Features diff --git a/workspaces/ballerina/ballerina-extension/package.json b/workspaces/ballerina/ballerina-extension/package.json index f5643893c98..81ffc3eb098 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.2.1", + "version": "5.3.1", "publisher": "wso2", "icon": "resources/images/ballerina.png", "homepage": "https://wso2.com/ballerina/vscode/docs", @@ -212,6 +212,14 @@ "type": "boolean", "default": true, "description": "Enable AI suggestions in the Flow Diagram View." + }, + "ballerina.includeCurrentOrganizationInSearch": { + "type": "boolean", + "default": false, + "description": "Include components from the current organization in the search. This queries the Ballerina Central using the organization specified in the `Ballerina.toml`.", + "tags": [ + "experimental" + ] } } }, @@ -327,11 +335,6 @@ } ], "commands": [ - { - "command": "ballerina.update-ballerina-dev-pack", - "title": "Update Ballerina Nightly Build", - "category": "Ballerina" - }, { "command": "ballerina.showExamples", "title": "Show Examples", @@ -465,6 +468,11 @@ "title": "Check drift between code and documentation (Experimental)", "category": "Ballerina" }, + { + "command": "ballerina.configureWso2DefaultModelProvider", + "title": "Configure default WSO2 model provider", + "category": "Ballerina" + }, { "command": "ballerina.configureDefaultModelForNaturalFunctions", "title": "Configure default model for natural functions (Experimental)", @@ -1103,7 +1111,9 @@ }, "dependencies": { "@types/lodash": "^4.14.200", - "@vscode/test-electron": "^2.4.0", + "@ai-sdk/anthropic": "^1.2.12", + "ai": "^4.3.16", + "@vscode/test-electron": "^2.5.2", "@vscode/vsce": "^2.22.0", "@wso2/ballerina-core": "workspace:*", "@wso2/ballerina-visualizer": "workspace:*", @@ -1136,7 +1146,8 @@ "xstate": "^4.38.3", "uuid": "^11.1.0", "jwt-decode": "^4.0.0", - "dotenv": "~16.5.0" + "dotenv": "~16.5.0", + "zod": "^3.25.74" }, "devDependencies": { "@sentry/webpack-plugin": "^1.20.1", diff --git a/workspaces/ballerina/ballerina-extension/src/RPCLayer.ts b/workspaces/ballerina/ballerina-extension/src/RPCLayer.ts index 225b46ed581..573e1298dc2 100644 --- a/workspaces/ballerina/ballerina-extension/src/RPCLayer.ts +++ b/workspaces/ballerina/ballerina-extension/src/RPCLayer.ts @@ -19,7 +19,7 @@ import { WebviewView, WebviewPanel, window } from 'vscode'; import { Messenger } from 'vscode-messenger'; import { StateMachine } from './stateMachine'; -import { stateChanged, getVisualizerLocation, VisualizerLocation, projectContentUpdated, aiStateChanged, sendAIStateEvent, popupStateChanged, getPopupVisualizerState, PopupVisualizerLocation, breakpointChanged, AIMachineEventType, ArtifactData, onArtifactUpdatedNotification, onArtifactUpdatedRequest, currentThemeChanged } from '@wso2/ballerina-core'; +import { stateChanged, getVisualizerLocation, VisualizerLocation, projectContentUpdated, aiStateChanged, sendAIStateEvent, popupStateChanged, getPopupVisualizerState, PopupVisualizerLocation, breakpointChanged, AIMachineEventType, ArtifactData, onArtifactUpdatedNotification, onArtifactUpdatedRequest, currentThemeChanged, AIMachineSendableEvent } from '@wso2/ballerina-core'; import { VisualizerWebview } from './views/visualizer/webview'; import { registerVisualizerRpcHandlers } from './rpc-managers/visualizer/rpc-handler'; import { registerLangClientRpcHandlers } from './rpc-managers/lang-client/rpc-handler'; @@ -94,7 +94,7 @@ export class RPCLayer { // ----- AI Webview RPC Methods registerAiPanelRpcHandlers(RPCLayer._messenger); - RPCLayer._messenger.onRequest(sendAIStateEvent, (event: AIMachineEventType) => AIStateMachine.sendEvent(event)); + RPCLayer._messenger.onRequest(sendAIStateEvent, (event: AIMachineEventType | AIMachineSendableEvent) => AIStateMachine.sendEvent(event)); // ----- Inline Data Mapper Webview RPC Methods registerInlineDataMapperRpcHandlers(RPCLayer._messenger); 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 4cd647f7d66..d484b167161 100644 --- a/workspaces/ballerina/ballerina-extension/src/core/extended-language-client.ts +++ b/workspaces/ballerina/ballerina-extension/src/core/extended-language-client.ts @@ -183,6 +183,8 @@ import { FunctionModelRequest, FunctionModelResponse, TypeDataWithReferences, + AiModuleOrgRequest, + AiModuleOrgResponse, AINodesResponse, AIModelsRequest, AIToolsRequest, @@ -223,7 +225,6 @@ import { PropertyResponse, OpenConfigTomlRequest, UpdateConfigVariableRequestV2, - GetConfigVariableNodeTemplateRequest, UpdateConfigVariableResponseV2, DeleteConfigVariableRequestV2, DeleteConfigVariableResponseV2, @@ -231,6 +232,13 @@ import { ResourceReturnTypesResponse, JsonToTypeRequest, JsonToTypeResponse, + McpToolsRequest, + McpToolsResponse, + CopilotCompactLibrariesResponse, + CopilotAllLibrariesRequest, + CopilotFilterLibrariesResponse, + CopilotFilterLibrariesRequest, + GetConfigVariableNodeTemplateRequest, FunctionFromSourceRequest, FunctionFromSourceResponse, GetInlineDataMapperCodedataRequest, @@ -238,7 +246,9 @@ import { GetSubMappingCodedataRequest, AddSubMappingRequest, DeleteMappingRequest, - MapWithCustomFnRequest + MapWithCustomFnRequest, + AIToolResponse, + AIToolRequest } from "@wso2/ballerina-core"; import { BallerinaExtension } from "./index"; import { debug, handlePullModuleProgress } from "../utils"; @@ -303,6 +313,10 @@ enum EXTENDED_APIS { BI_DELETE_NODE = 'flowDesignService/deleteFlowNode', BI_DELETE_BY_COMPONENT_INFO = 'flowDesignService/deleteComponent', BI_AVAILABLE_NODES = 'flowDesignService/getAvailableNodes', + BI_AVAILABLE_MODEL_PROVIDERS = 'flowDesignService/getAvailableModelProviders', + BI_AVAILABLE_VECTOR_STORES = 'flowDesignService/getAvailableVectorStores', + BI_AVAILABLE_EMBEDDING_PROVIDERS = 'flowDesignService/getAvailableEmbeddingProviders', + BI_AVAILABLE_VECTOR_KNOWLEDGE_BASES = 'flowDesignService/getAvailableVectorKnowledgeBases', BI_NODE_TEMPLATE = 'flowDesignService/getNodeTemplate', BI_GEN_OPEN_API = 'flowDesignService/generateServiceFromOpenApiContract', BI_MODULE_NODES = 'flowDesignService/getModuleNodes', @@ -383,11 +397,14 @@ enum EXTENDED_APIS { BI_ADD_TEST_FUNCTION = 'testManagerService/addTestFunction', BI_UPDATE_TEST_FUNCTION = 'testManagerService/updateTestFunction', BI_EDIT_FUNCTION_NODE = 'flowDesignService/functionDefinition', + BI_AI_AGENT_ORG = 'agentManager/getAiModuleOrg', BI_AI_ALL_AGENTS = 'agentManager/getAllAgents', BI_AI_ALL_MODELS = 'agentManager/getAllModels', BI_AI_ALL_MEMORY_MANAGERS = 'agentManager/getAllMemoryManagers', BI_AI_GET_MODELS = 'agentManager/getModels', BI_AI_GET_TOOLS = 'agentManager/getTools', + BI_AI_GET_TOOL = 'agentManager/getTool', + BI_AI_GET_MCP_TOOLS = 'agentManager/getMcpTools', BI_AI_GEN_TOOLS = 'agentManager/genTool', BI_IS_ICP_ENABLED = 'icpService/isIcpEnabled', BI_ADD_ICP = 'icpService/addICP', @@ -397,7 +414,9 @@ enum EXTENDED_APIS { OPEN_API_GENERATED_MODULES = 'openAPIService/getModules', OPEN_API_CLIENT_DELETE = 'openAPIService/deleteModule', GET_ARTIFACTS = 'designModelService/artifacts', - PUBLISH_ARTIFACTS = 'designModelService/publishArtifacts' + PUBLISH_ARTIFACTS = 'designModelService/publishArtifacts', + COPILOT_ALL_LIBRARIES = 'copilotLibraryManager/getLibrariesList', + COPILOT_FILTER_LIBRARIES = 'copilotLibraryManager/getFilteredLibraries' } enum EXTENDED_APIS_ORG { @@ -919,6 +938,22 @@ export class ExtendedLangClient extends LanguageClient implements ExtendedLangCl return this.sendRequest(EXTENDED_APIS.BI_AVAILABLE_NODES, params); } + async getAvailableModelProviders(params: BIAvailableNodesRequest): Promise { + return this.sendRequest(EXTENDED_APIS.BI_AVAILABLE_MODEL_PROVIDERS, params); + } + + async getAvailableVectorStores(params: BIAvailableNodesRequest): Promise { + return this.sendRequest(EXTENDED_APIS.BI_AVAILABLE_VECTOR_STORES, params); + } + + async getAvailableEmbeddingProviders(params: BIAvailableNodesRequest): Promise { + return this.sendRequest(EXTENDED_APIS.BI_AVAILABLE_EMBEDDING_PROVIDERS, params); + } + + async getAvailableVectorKnowledgeBases(params: BIAvailableNodesRequest): Promise { + return this.sendRequest(EXTENDED_APIS.BI_AVAILABLE_VECTOR_KNOWLEDGE_BASES, params); + } + async getEnclosedFunctionDef(params: BIGetEnclosedFunctionRequest): Promise { return this.sendRequest(EXTENDED_APIS.BI_GET_ENCLOSED_FUNCTION, params); } @@ -1152,6 +1187,10 @@ export class ExtendedLangClient extends LanguageClient implements ExtendedLangCl return this.sendRequest(EXTENDED_APIS.BI_ADD_FUNCTION, params); } + async getAiModuleOrg(params: AiModuleOrgRequest): Promise { + return this.sendRequest(EXTENDED_APIS.BI_AI_AGENT_ORG, params); + } + async getAllAgents(params: AINodesRequest): Promise { return this.sendRequest(EXTENDED_APIS.BI_AI_ALL_AGENTS, params); } @@ -1172,6 +1211,14 @@ export class ExtendedLangClient extends LanguageClient implements ExtendedLangCl return this.sendRequest(EXTENDED_APIS.BI_AI_GET_TOOLS, params); } + async getTool(params: AIToolRequest): Promise { + return this.sendRequest(EXTENDED_APIS.BI_AI_GET_TOOL, params); + } + + async getMcpTools(params: McpToolsRequest): Promise { + return this.sendRequest(EXTENDED_APIS.BI_AI_GET_MCP_TOOLS, params); + } + async genTool(params: AIGentToolsRequest): Promise { return this.sendRequest(EXTENDED_APIS.BI_AI_GEN_TOOLS, params); } @@ -1192,6 +1239,15 @@ export class ExtendedLangClient extends LanguageClient implements ExtendedLangCl return this.sendRequest(EXTENDED_APIS.OPEN_API_CLIENT_DELETE, params); } + async getCopilotCompactLibraries(params: CopilotAllLibrariesRequest): Promise { + return this.sendRequest(EXTENDED_APIS.COPILOT_ALL_LIBRARIES, params); + } + + async getCopilotFilteredLibraries(params: CopilotFilterLibrariesRequest): Promise { + return this.sendRequest(EXTENDED_APIS.COPILOT_FILTER_LIBRARIES, params); + } + + // <------------ BI APIS END ---------------> diff --git a/workspaces/ballerina/ballerina-extension/src/core/extension.ts b/workspaces/ballerina/ballerina-extension/src/core/extension.ts index 28c1e3abe41..1cd54047dcb 100644 --- a/workspaces/ballerina/ballerina-extension/src/core/extension.ts +++ b/workspaces/ballerina/ballerina-extension/src/core/extension.ts @@ -47,7 +47,8 @@ import { DEFINE_BALLERINA_INTEGRATOR_SCOPE, SHOW_LIBRARY_CONFIG_VARIABLES, LANG_SERVER_PATH, - USE_BALLERINA_CLI_LANG_SERVER + USE_BALLERINA_CLI_LANG_SERVER, + INCLUDE_CURRENT_ORGANIZATION_IN_SEARCH } from "./preferences"; import TelemetryReporter from "vscode-extension-telemetry"; @@ -84,7 +85,6 @@ export enum WEBVIEW_TYPE { BBE, CONFIGURABLE } - export interface ConstructIdentifier { filePath: string; kind: string; @@ -247,10 +247,6 @@ export class BallerinaExtension { this.installBallerina(); }); - commands.registerCommand('ballerina.update-ballerina-dev-pack', () => { // Update developer pack from ballerina dev build and set to ballerina-home and enable plugin dev mode - this.updateBallerinaDeveloperPack(true); - }); - commands.registerCommand('ballerina.update-ballerina', () => { // Update release pack from ballerina update tool with terminal this.updateBallerina(); }); @@ -1242,213 +1238,6 @@ export class BallerinaExtension { } } - async updateBallerinaDeveloperPack(restartWindow?: boolean) { - try { - if (this.langClient?.isRunning()) { - window.showInformationMessage(`Stopping the ballerina language server...`); - await this.langClient.stop(); - await new Promise(resolve => setTimeout(resolve, 15000)); // Wait for 15 seconds - } - - window.showInformationMessage(`Updating Ballerina version`); - // Remove the existing Ballerina version - fs.rmSync(this.ballerinaInstallationDir, { recursive: true, force: true }); - - await this.downloadAndUnzipBallerina(restartWindow); - - await this.setBallerinaHomeAndCommand(true); - - await this.setExecutablePermissions(); - - let res: DownloadProgress = { - message: `Success..`, - success: true, - step: 6 // This is the last step - }; - RPCLayer._messenger.sendNotification(onDownloadProgress, { type: 'webview', webviewType: VisualizerWebview.viewType }, res); - - console.log('Ballerina home has been set successfully.'); - if (restartWindow) { - commands.executeCommand('workbench.action.reloadWindow'); - } else { - window.showInformationMessage("Ballerina has been set up successfully"); - } - } catch (error) { - console.error('Error downloading or unzipping the Ballerina:', error); - window.showErrorMessage('Error downloading or unzipping the Ballerina:', error); - } - } - - private async downloadAndUnzipBallerina(restartWindow?: boolean) { - try { - // Get the latest successful daily build run and artifacts - let res: DownloadProgress = { - downloadedSize: 0, - message: "Fetching Ballerina release details..", - percentage: 0, - success: false, - totalSize: 0, - step: 1 - }; - RPCLayer._messenger.sendNotification(onDownloadProgress, { type: 'webview', webviewType: VisualizerWebview.viewType }, res); - const releasesResponse = await axios.get(this.ballerinaIntegratorReleaseUrl); - const releases = releasesResponse.data; - const tags = releases.map((release: any) => release.tag_name).filter((tag: string) => tag.includes("bi-pack")); - if (tags.length === 0) { - throw new Error('No Ballerina distribution found in the releases'); - } - const latestTag = tags[0]; - console.log(`Latest release tag: ${latestTag}`); - - // Get the latest successful daily build run and artifacts - res = { - downloadedSize: 0, - message: "Fetching latest ballerina distribution details..", - percentage: 0, - success: false, - totalSize: 0, - step: 2 - }; - RPCLayer._messenger.sendNotification(onDownloadProgress, { type: 'webview', webviewType: VisualizerWebview.viewType }, res); - const biReleaseResponse = await axios.get(`${this.ballerinaIntegratorReleaseUrl}/tags/${latestTag}`); - const biRelease = biReleaseResponse.data; - this.ballerinaIntegratorVersion = biRelease.tag_name.replace('v', '').split('-')[0]; - console.log(`Latest release version: ${this.ballerinaIntegratorVersion}`); - - const platform = os.platform(); - const asset = biRelease.assets.find((asset: any) => { - if (platform === 'win32') { - return asset.name.endsWith('windows.zip'); - } else if (platform === 'linux') { - return asset.name.endsWith('linux.zip'); - } else if (platform === 'darwin') { - if (os.arch() === 'arm64') { - return asset.name.endsWith('macos-arm.zip'); - } else { - return asset.name.endsWith('macos.zip'); - } - } - }); - if (!asset) { - throw new Error('No artifact found in the release ' + this.ballerinaIntegratorVersion); - } - const artifactUrl = asset.browser_download_url; - - // Create destination folder if it doesn't exist - if (!fs.existsSync(this.getBallerinaUserHome())) { - fs.mkdirSync(this.getBallerinaUserHome(), { recursive: true }); - } - - // Download the artifact and save it to the user home directory - console.log(`Downloading artifact from ${artifactUrl}`); - let response; - try { - res = { - downloadedSize: 0, - message: "Download starting...", - percentage: 0, - success: false, - totalSize: 0, - step: 3 - }; - RPCLayer._messenger.sendNotification(onDownloadProgress, { type: 'webview', webviewType: VisualizerWebview.viewType }, res); - const sizeMB = 1024 * 1024; - await window.withProgress( - { - location: ProgressLocation.Notification, - title: `Downloading Ballerina distribution`, - cancellable: false, - }, - async (progress) => { - let lastPercentageReported = 0; - - response = await axios({ - url: artifactUrl, - method: 'GET', - responseType: 'arraybuffer', - onDownloadProgress: (progressEvent) => { - const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total); - console.log(`Total Size: ${progressEvent.total / sizeMB}MB`); - console.log(`Download progress: ${percentCompleted}%`); - - if (percentCompleted > lastPercentageReported) { - progress.report({ increment: percentCompleted - lastPercentageReported, message: `${percentCompleted}% of ${Math.round(progressEvent.total / sizeMB)}MB` }); - lastPercentageReported = percentCompleted; - } - - // Sizes will be sent as MB - res = { - downloadedSize: progressEvent.loaded / sizeMB, - message: "Downloading...", - percentage: percentCompleted, - success: false, - totalSize: progressEvent.total / sizeMB, - step: 2 - }; - RPCLayer._messenger.sendNotification(onDownloadProgress, { type: 'webview', webviewType: VisualizerWebview.viewType }, res); - } - }); - if (restartWindow) { - window.showInformationMessage("Download complete. Please wait..."); - } - return; - } - ); - // ... existing code to handle the response ... - } catch (error) { - // Sizes will be sent as MB - res = { - ...res, - message: `Failed: ${error}`, - success: false, - step: -1 // Error step - }; - RPCLayer._messenger.sendNotification(onDownloadProgress, { type: 'webview', webviewType: VisualizerWebview.viewType }, res); - console.error('Error downloading artifact:', error); - } - const zipFilePath = path.join(this.getBallerinaUserHome(), asset.name); - await fs.writeFileSync(zipFilePath, response.data); - console.log(`Downloaded artifact to ${zipFilePath}`); - - if (restartWindow) { - window.showInformationMessage("Setting the Ballerina distribution Home location..."); - } - res = { - ...res, - message: `Setting the Ballerina distribution Home location...`, - success: false, - step: 4 - }; - RPCLayer._messenger.sendNotification(onDownloadProgress, { type: 'webview', webviewType: VisualizerWebview.viewType }, res); - // Unzip the artifact - const zip = new AdmZip(zipFilePath); - zip.extractAllTo(this.getBallerinaUserHome(), true); - console.log(`Unzipped artifact to ${this.getBallerinaUserHome()}`); - - // Rename the root folder to the new name - const tempRootPath = path.join(this.getBallerinaUserHome(), asset.name.replace('.zip', '')); - fs.renameSync(tempRootPath, this.ballerinaInstallationDir); - - if (restartWindow) { - window.showInformationMessage("Cleaning up the temp files..."); - } - res = { - ...res, - message: `Cleaning up the temp files...`, - success: false, - step: 5 - }; - RPCLayer._messenger.sendNotification(onDownloadProgress, { type: 'webview', webviewType: VisualizerWebview.viewType }, res); - // Cleanup: Remove the downloaded zip file - fs.rmSync(zipFilePath); - - console.log('Cleanup complete.'); - } catch (error) { - console.error('Error downloading or unzipping Ballerina version:', error); - window.showErrorMessage('Error downloading or unzipping Ballerina version:', error); - } - } - private async setBallerinaHomeAndCommand(isDev?: boolean) { let exeExtension = ""; if (isWindows()) { @@ -1933,6 +1722,10 @@ export class BallerinaExtension { return workspace.getConfiguration().get(SHOW_LIBRARY_CONFIG_VARIABLES); } + public getIncludeCurrentOrgComponents(): boolean { + return workspace.getConfiguration().get(INCLUDE_CURRENT_ORGANIZATION_IN_SEARCH); + } + public getDocumentContext(): DocumentContext { return this.documentContext; } diff --git a/workspaces/ballerina/ballerina-extension/src/core/preferences.ts b/workspaces/ballerina/ballerina-extension/src/core/preferences.ts index 3121b3afab9..b8e62863575 100644 --- a/workspaces/ballerina/ballerina-extension/src/core/preferences.ts +++ b/workspaces/ballerina/ballerina-extension/src/core/preferences.ts @@ -38,3 +38,4 @@ export const DEFINE_BALLERINA_INTEGRATOR_SCOPE = "ballerina.scope"; export const SHOW_LIBRARY_CONFIG_VARIABLES = "ballerina.showLibraryConfigVariables"; // this setting is not visible to the extension user export const LANG_SERVER_PATH = "ballerina.langServerPath"; // this setting is not visible to the extension user export const USE_BALLERINA_CLI_LANG_SERVER = "ballerina.useDistributionLanguageServer"; +export const INCLUDE_CURRENT_ORGANIZATION_IN_SEARCH = "ballerina.includeCurrentOrganizationInSearch"; diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/activator.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/activator.ts index 07df9a8c2a6..49f20d0cf09 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/activator.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/activator.ts @@ -16,8 +16,18 @@ * under the License. */ +import { commands, window } from 'vscode'; import { BallerinaExtension, ExtendedLangClient } from '../../core'; import { activateCopilotLoginCommand, resetBIAuth } from './completions'; +import { generateCodeCore } from './service/code/code'; +import { GenerateCodeRequest } from '@wso2/ballerina-core'; +import { CopilotEventHandler } from './service/event'; +import { addConfigFile, getConfigFilePath } from './utils'; +import { StateMachine } from "../../stateMachine"; +import { CONFIGURE_DEFAULT_MODEL_COMMAND, DEFAULT_PROVIDER_ADDED, LOGIN_REQUIRED_WARNING_FOR_DEFAULT_MODEL, SIGN_IN_BI_COPILOT } from './constants'; +import { REFRESH_TOKEN_NOT_AVAILABLE_ERROR_MESSAGE, TOKEN_REFRESH_ONLY_SUPPORTED_FOR_BI_INTEL } from '../..//utils/ai/auth'; +import { AIStateMachine } from '../../views/ai-panel/aiMachine'; +import { AIMachineEventType } from '@wso2/ballerina-core'; export let langClient: ExtendedLangClient; @@ -25,4 +35,34 @@ export function activateAIFeatures(ballerinaExternalInstance: BallerinaExtension langClient = ballerinaExternalInstance.langClient; activateCopilotLoginCommand(); resetBIAuth(); + // Register a command in test environment to test the AI features + if (process.env.AI_TEST_ENV) { + commands.registerCommand('ballerina.test.ai.generateCodeCore', async (params: GenerateCodeRequest, testEventHandler: CopilotEventHandler) => { + await generateCodeCore(params, testEventHandler); + }); + } + + const projectPath = StateMachine.context().projectUri; + + commands.registerCommand(CONFIGURE_DEFAULT_MODEL_COMMAND, async (...args: any[]) => { + const configPath = await getConfigFilePath(ballerinaExternalInstance, projectPath); + if (configPath !== null) { + try { + const result = await addConfigFile(configPath); + if (result) { + window.showInformationMessage(DEFAULT_PROVIDER_ADDED); + } + } catch (error) { + if ((error as Error).message === REFRESH_TOKEN_NOT_AVAILABLE_ERROR_MESSAGE || (error as Error).message === TOKEN_REFRESH_ONLY_SUPPORTED_FOR_BI_INTEL) { + window.showWarningMessage(LOGIN_REQUIRED_WARNING_FOR_DEFAULT_MODEL, SIGN_IN_BI_COPILOT).then(selection => { + if (selection === SIGN_IN_BI_COPILOT) { + AIStateMachine.service().send(AIMachineEventType.LOGIN); + } + }); + } else { + window.showErrorMessage((error as Error).message); + } + } + } + }); } diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/completions.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/completions.ts index 8e1a7379817..d143bc84852 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/completions.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/completions.ts @@ -24,6 +24,10 @@ import { } from "./../telemetry"; import { PALETTE_COMMANDS } from "./../project/cmds/cmd-runner"; import { loginGithubCopilot } from '../../utils/ai/auth'; +import { RPCLayer } from "../../RPCLayer"; +// import { VisualizerWebview } from "../../views/visualizer/webview"; +import { AiPanelWebview } from "../../views/ai-panel/webview"; +import { ChatNotify, onChatNotify } from "@wso2/ballerina-core"; export function activateCopilotLoginCommand() { commands.registerCommand(PALETTE_COMMANDS.LOGIN_COPILOT, async () => { diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/constants.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/constants.ts new file mode 100644 index 00000000000..cac0303deb7 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/constants.ts @@ -0,0 +1,27 @@ +/** + * 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 CONFIG_FILE_NAME = "Config.toml"; +export const CONFIGURE_DEFAULT_MODEL_COMMAND = "ballerina.configureWso2DefaultModelProvider"; +export const OPEN_AI_PANEL_COMMAND = "ballerina.open.ai.panel"; +export const SIGN_IN_BI_COPILOT = "Sign in to BI Copilot"; +export const PROGRESS_BAR_MESSAGE_FROM_WSO2_DEFAULT_MODEL = "Fetching and saving access token for WSO2 default model provider."; +export const ERROR_NO_BALLERINA_SOURCES = "No Ballerina sources"; +export const LOGIN_REQUIRED_WARNING = "Please sign in to BI Copilot to use this feature."; +export const LOGIN_REQUIRED_WARNING_FOR_DEFAULT_MODEL = "Please sign in to BI Copilot to configure the WSO2 default model provider."; +export const DEFAULT_PROVIDER_ADDED = "WSO2 default model provider configuration values were added to the Config.toml file."; diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/dataMapping.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/dataMapping.ts index 0a08698caaf..df465995ab5 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/dataMapping.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/dataMapping.ts @@ -24,7 +24,7 @@ import * as fs from 'fs'; import * as os from 'os'; import { Uri, workspace } from "vscode"; import { langClient } from "./activator"; -import { getFunction, isErrorCode, processMappings, typesFileParameterDefinitions } from "../../rpc-managers/ai-panel/utils"; +import { getFunction, processMappings, typesFileParameterDefinitions } from "../../rpc-managers/ai-panel/utils"; import { MODIFIYING_ERROR } from "../../views/ai-panel/errorCodes"; import { writeBallerinaFileDidOpen } from "../../utils/modification"; @@ -103,9 +103,6 @@ async function getUpdatedFunctionSource( fileUri, file ); - if (isErrorCode(processedST)) { - throw new Error((processedST as ErrorCode).message); - } const { parseSuccess, source, syntaxTree } = processedST as SyntaxTree; if (!parseSuccess) { diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/ask/ask.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/ask/ask.ts new file mode 100644 index 00000000000..e9009e71d00 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/ask/ask.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 { generateText } from "ai"; +import { BACKEND_URL } from "../../utils"; +import { selectRequiredFunctions } from "../libs/funcs"; +import { GenerationType, getSelectedLibraries } from "../libs/libs"; +import { Library, LibraryWithUrl } from "../libs/libs_types"; +import { getAnthropicClient, ANTHROPIC_HAIKU, fetchWithAuth } from "../connection"; +import { z } from 'zod'; +import { tool } from 'ai'; +import { AIPanelAbortController } from "../../../../../src/rpc-managers/ai-panel/utils"; + +interface Document { + document: string; + metadata: { + doc_link?: string; + // filename?: string; + // [key: string]: any; + }; +} + +interface ApiDocResult { + library_link: string; + [key: string]: any; +} + +interface Tool { + name: string; + description: string; + input_schema: { + type: string; + properties: { + [key: string]: { + type: string; + description: string; + }; + }; + required: string[]; + }; +} + +interface ToolCall { + name: string; + input: { + [key: string]: any; + }; +} + +interface ResponseSchema { + content: string; + references: string[]; +} + +interface DocChunk { + page_content: string; + doc_link: string; +} + + +// Tool definitions +const tools = { + extract_learn_pages: tool({ + description: "Retrieves information about Ballerina language concepts, features, tools, and implementation details from the Ballerina Learn Pages. This includes guidance on syntax, usage, best practices, and examples for addressing various use cases.", + parameters: z.object({ + query: z.string().describe("A question or query requiring information about Ballerina language concepts, features, tools, best practices, or practical use cases related to implementing solutions using the language.") + }) + }), + extract_central_api_docs: tool({ + description: "Retrieves technical details about Ballerina libraries, modules, clients, functions, type definitions, parameters, return types, and records.", + parameters: z.object({ + query: z.string().describe("A question or query requiring information about Ballerina libraries, including clients, functions, constructors, type definitions, parameters, and return types") + }) + }) +}; + +async function extractLearnPages(query: string): Promise { + const docs: Document[] = await fetchDocumentationFromVectorStore(query); + return docs; +} + +async function fetchDocumentationFromVectorStore(query: string): Promise { + try { + const response = await fetchWithAuth(`${BACKEND_URL}/learn-docs-api/v1.0/topK`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + query: query + }), + signal: AIPanelAbortController.getInstance().signal, + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json() as Document[]; + + // Transform the response to match Document interface + return data; + } catch (error) { + console.error('Error fetching from vector store:', error); + // Return empty array on error to prevent breaking the flow + return []; + } +} + +async function extractCentralApiDocs(query: string): Promise { + const selectedLibs: string[] = await getSelectedLibraries(query, GenerationType.CODE_GENERATION); + const relevantTrimmedFuncs: Library[] = await selectRequiredFunctions(query, selectedLibs, GenerationType.CODE_GENERATION); + const apiDocs: LibraryWithUrl[] = relevantTrimmedFuncs.map(lib => { + return { + ...lib, + library_link: `https://central.ballerina.io/${lib.name.replace(/'/g, '')}/` + } as LibraryWithUrl; + }); + + return apiDocs; +} + +// TODO: Consider structured outputs +export async function getAskResponse(question: string): Promise { + try { + // First, try to get tool calls from Claude + const toolCallsResponse: ToolCall[] = await getToolCallsFromClaude(question); + + let centralContext: ApiDocResult[] = []; + let documentationContext: Document[] = []; + + // Execute the tools if we got tool calls + if (toolCallsResponse && toolCallsResponse.length > 0) { + for (const toolCall of toolCallsResponse) { + if (toolCall.name === "extract_learn_pages") { + const docs = await extractLearnPages(toolCall.input.query); + documentationContext.push(...docs); + } else if (toolCall.name === "extract_central_api_docs") { + const apiDocs = await extractCentralApiDocs(toolCall.input.query); + centralContext.push(...apiDocs); + } + } + } else { + // If no tool calls, force extract_learn_pages + const docs = await extractLearnPages(question); + documentationContext.push(...docs); + } + + // Build document chunks + const docChunks: { [key: string]: DocChunk } = {}; + if (documentationContext.length > 0) { + documentationContext.forEach((doc, index) => { + const docLink = doc.metadata.doc_link || ""; + docChunks[`chunk${index + 1}`] = { + page_content: doc.document, + doc_link: docLink + }; + }); + } + + // Build system message + const systemMessage = buildLlmMessage(docChunks, documentationContext, centralContext); + + // Get final response from Claude + const finalResponse = await getFinalResponseFromClaude(systemMessage, question); + + // Extract library links + const libraryLinks: string[] = []; + if (centralContext.length > 0) { + centralContext.forEach(lib => { + libraryLinks.push(lib.library_link); + }); + } + + // Extract doc IDs and add corresponding links + const docIdPattern = /(.*?)<\/doc_id>/g; + const docIds: string[] = []; + let match; + while ((match = docIdPattern.exec(finalResponse)) !== null) { + docIds.push(match[1]); + } + + // Add documentation links for referenced chunks + docIds.forEach(id => { + if (docChunks[id] && docChunks[id].doc_link.length > 0) { + libraryLinks.push(docChunks[id].doc_link); + } + }); + + // Clean response + const filteredResponse = finalResponse.replace(/.*?<\/doc_id>/g, '').trim(); + + // Format links + const formattedLinks = libraryLinks.map(link => `<${link}>`); + + return { + content: filteredResponse, + references: formattedLinks + }; + + } catch (error) { + console.error('Error in assistantToolCall:', error); + throw new Error(`Failed to process question: ${error instanceof Error ? error.message : 'Unknown error'}`); + } +} + +async function getToolCallsFromClaude(question: string): Promise { + const { text, toolCalls } = await generateText({ + model: await getAnthropicClient(ANTHROPIC_HAIKU), + maxTokens: 8192, + tools: tools, + messages: [ + { + role: "user", + content: question + } + ], + maxSteps: 1, // Limit to one step to get tool calls only + abortSignal: AIPanelAbortController.getInstance().signal + }); + + if (toolCalls && toolCalls.length > 0) { + return toolCalls.map(toolCall => ({ + name: toolCall.toolName, + input: toolCall.args + })); + } + + return []; +} + +async function getFinalResponseFromClaude(systemMessage: string, question: string): Promise { + const { text } = await generateText({ + model: await getAnthropicClient(ANTHROPIC_HAIKU), + maxTokens: 8192, + system: systemMessage, + messages: [ + { + role: "user", + content: question + } + ], + abortSignal: AIPanelAbortController.getInstance().signal + }); + + return text; +} + +function buildLlmMessage( + docChunks: { [key: string]: DocChunk }, + documentationContext: Document[], + centralContext: ApiDocResult[] +): string { + const documentationSection = documentationContext.length > 0 + ? `Information from Ballerina Learn Pages: This section includes content sourced from the Ballerina Learn pages, consisting of document chunks that cover various topics. These chunks also include sample code examples that are necessary for explaining Ballerina concepts effectively. Out of the given document chunks, you must include the chunk number(eg:- chunk1,chunk2...) of all the document chunks that you used to formulate the answer within tags and include it at the end of your response. Only include one chunk number per tag. Document chunks ${JSON.stringify(docChunks)}` + : ""; + + const centralSection = centralContext.length > 0 + ? `Information from the Ballerina API Documentation: This section provides detailed information about type definitions, clients, functions, function parameters, return types, and other library-specific details essential for answering questions related to the Ballerina programming language. ${JSON.stringify(centralContext)}` + : ""; + + return `You are an AI assistant specialized in answering questions about the Ballerina programming language. Your task is to provide precise, accurate, and helpful answers based solely on the information provided below. The information provided below comes from reliable and authoritative sources on the Ballerina programming language. For every response, include your reasoning or derivation inside tags. The content within these tags should explain how you arrived at the answer. + +INFORMATION SOURCES: + +${documentationSection} + +${centralSection} + +After thoroughly reviewing the provided information sources, assign a relevancy score on a scale from 1 to 5, indicating how well the sources support answering the user's query. + +If the relevancy score is 5, provide a clear and complete answer. + +If the relevancy score is 3 or 4, clearly state that the Ballerina sources do not directly address the user's query. However, provide an answer based on the information that is available in the sources. The response should explicitly mention that the Ballerina sources do not cover the query directly, followed by a clear explanation of what related information is available in the sources. Do not attempt to infer or generate an answer that is not supported by the provided information. Only include details that are stated in the Ballerina sources and are relevant to the query. + +If the score is 1 or 2, politely decline to answer by stating that, couldn't find any information relevant to this in the Ballerina sources. + +The reasoning behind the assignment of relevancy score and the chosen response approach must be included within the tags at the beginning of the response. + +IMPORTANT INSTRUCTIONS +- The response generated must only be based on the information sources provided. +- Do not include any links in the response. + +Structure your final response so that it begins with the reasoning enclosed within tags. After the thinking section, provide the final answer outside the tags.`; +} 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 new file mode 100644 index 00000000000..73d399641a0 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/code/code.ts @@ -0,0 +1,408 @@ +// 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 { CoreMessage, generateText, streamText } from "ai"; +import { getAnthropicClient, ANTHROPIC_SONNET_4 } from "../connection"; +import { GenerationType, getRelevantLibrariesAndFunctions } from "../libs/libs"; +import { getRewrittenPrompt, populateHistory, transformProjectSource, getErrorMessage, extractResourceDocumentContent } from "../utils"; +import { getMaximizedSelectedLibs, selectRequiredFunctions, toMaximizedLibrariesFromLibJson } from "./../libs/funcs"; +import { GetFunctionResponse } from "./../libs/funcs_inter_types"; +import { LANGLIBS } from "./../libs/langlibs"; +import { Library } from "./../libs/libs_types"; +import { + ChatNotify, + DiagnosticEntry, + FileAttatchment, + GenerateCodeRequest, + onChatNotify, + OperationType, + PostProcessResponse, + ProjectDiagnostics, + ProjectSource, + RepairParams, + RepairResponse, + SourceFiles, + Command +} from "@wso2/ballerina-core"; +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"; + +// 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); + const prompt = getRewrittenPrompt(params, sourceFiles); + const relevantTrimmedFuncs: Library[] = ( + await getRelevantLibrariesAndFunctions({ query: prompt }, GenerationType.CODE_GENERATION) + ).libraries; + + const historyMessages = populateHistory(params.chatHistory); + const allMessages: CoreMessage[] = [ + { + role: "system", + content: getSystemPromptPrefix(relevantTrimmedFuncs, sourceFiles, params.operationType), + }, + { + role: "system", + content: getSystemPromptSuffix(LANGLIBS), + providerOptions: { + anthropic: { cacheControl: { type: "ephemeral" } }, + }, + }, + ...historyMessages, + { + role: "user", + content: getUserPrompt(prompt, sourceFiles, params.fileAttachmentContents, packageName, params.operationType), + providerOptions: { + anthropic: { cacheControl: { type: "ephemeral" } }, + }, + }, + ]; + + const { fullStream } = streamText({ + model: await getAnthropicClient(ANTHROPIC_SONNET_4), + maxTokens: 4096*4, + temperature: 0, + messages: allMessages, + abortSignal: AIPanelAbortController.getInstance().signal, + }); + + eventHandler({ type: "start" }); + let assistantResponse: string = ""; + for await (const part of fullStream) { + switch (part.type) { + case "text-delta": { + const textPart = part.textDelta; + assistantResponse += textPart; + eventHandler({ type: "content_block", content: textPart }); + break; + } + case "error": { + const error = part.error; + console.error("Error during Code generation:", error); + eventHandler({ type: "error", content: getErrorMessage(error) }); + break; + } + case "finish": { + const finishReason = part.finishReason; + console.log("Finish reason: ", finishReason); + if (finishReason === "error") { + // Already handled in error case. + break; + } + const postProcessedResp: PostProcessResponse = await postProcess({ + assistant_response: assistantResponse, + }); + assistantResponse = postProcessedResp.assistant_response; + let diagnostics: DiagnosticEntry[] = postProcessedResp.diagnostics.diagnostics; + + const MAX_REPAIR_ATTEMPTS = 3; + let repair_attempt = 0; + let diagnosticFixResp = assistantResponse; //TODO: Check if we need this variable + while ( + hasCodeBlocks(diagnosticFixResp) && + diagnostics.length > 0 && + repair_attempt < MAX_REPAIR_ATTEMPTS + ) { + console.log("Repair iteration: ", repair_attempt); + console.log("Diagnotsics trynna fix: ", diagnostics); + + const repairedResponse: RepairResponse = await repairCode( + { + previousMessages: allMessages, + assistantResponse: diagnosticFixResp, + diagnostics: diagnostics, + } + ); + diagnosticFixResp = repairedResponse.repairResponse; + diagnostics = repairedResponse.diagnostics; + repair_attempt++; + } + console.log("Final Diagnostics ", diagnostics); + eventHandler({ type: "content_replace", content: diagnosticFixResp }); + eventHandler({ type: "diagnostics", diagnostics: diagnostics }); + eventHandler({ type: "messages", messages: allMessages }); + eventHandler({ type: "stop", command: Command.Code }); + break; + } + } + } +} + +// Main public function that uses the default event handler +export async function generateCode(params: GenerateCodeRequest): Promise { + const eventHandler = createWebviewEventHandler(Command.Code); + try { + await generateCodeCore(params, eventHandler); + } catch (error) { + console.error("Error during code generation:", error); + eventHandler({ type: "error", content: getErrorMessage(error) }); + } +} + +function getSystemPromptPrefix(apidocs: Library[], sourceFiles: SourceFiles[], op: OperationType): string { + + if (op === "CODE_FOR_USER_REQUIREMENT") { + return getRequirementAnalysisCodeGenPrefix(apidocs, extractResourceDocumentContent(sourceFiles)); + } else if (op === "TESTS_FOR_USER_REQUIREMENT") { + return getRequirementAnalysisTestGenPrefix(apidocs, extractResourceDocumentContent(sourceFiles)); + } + return `You are an expert assistant who specializes in writing Ballerina code. 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: + +1. API_DOCS: A JSON string containing the API documentation for various Ballerina libraries and their functions, types, and clients. + +${JSON.stringify(apidocs)} + +`; +} + +function getSystemPromptSuffix(langlibs: Library[]) { + return `2. Langlibs + +${JSON.stringify(langlibs)} + + +If the query doesn't require code examples, answer the code by utilzing the api documentation. +If the query requires code, Follow these steps to generate the Ballerina code: + +1. Carefully analyze the provided API documentation: + - Identify the available libraries, clients, their functions and their relavant types. + +2. Thoroughly read and understand the given query: + - Identify the main requirements and objectives of the integration. + - Determine which libraries, functions and their relavant records and types from the API documentation which are needed to achieve the query and forget about unused API docs. + - Note the libraries needed to achieve the query and plan the control flow of the applicaiton based input and output parameters of each function of the connector according to the API documentation. + +3. Plan your code structure: + - Decide which libraries need to be imported (Avoid importing lang.string, lang.boolean, lang.float, lang.decimal, lang.int, lang.map langlibs as they are already imported by default). + - Determine the necessary client initialization. + - Define Types needed for the query in the types.bal file. + - Outline the service OR main function for the query. + - Outline the required function usages as noted in Step 2. + - Based on the types of identified functions, plan the data flow. Transform data as necessary. + +4. Generate the Ballerina code: + - Start with the required import statements. + - Define required configurables for the query. Use only string, int, boolean types in configurable variables. + - Initialize any necessary clients with the correct configuration at the module level(before any function or service declarations). + - Implement the main function OR service to address the query requirements. + - Use defined connectors based on the query by following the API documentation. + - Use only the functions, types, and clients specified in the API documentation. + - Use dot donation to access a normal function. Use -> to access a remote function or resource function. + - Ensure proper error handling and type checking. + - Do not invoke methods on json access expressions. Always Use seperate statements. + - Use langlibs ONLY IF REQUIRED. + +5. Review and refine your code: + - Check that all query requirements are met. + - Verify that you're only using elements from the provided API documentation. + - Ensure the code follows Ballerina best practices and conventions. + +Provide a brief explanation of how your code addresses the query and then output your generated ballerina code. + +Important reminders: +- Only use the libraries, functions, types, services and clients specified in the provided API documentation. +- Always strictly respect the types given in the API Docs. +- Do not introduce any additional libraries or functions not mentioned in the API docs. +- Only use specified fields in records according to the api docs. this applies to array types of that record as well. +- Ensure your code is syntactically correct and follows Ballerina conventions. +- Do not use dynamic listener registrations. +- Do not write code in a way that requires updating/assigning values of function parameters. +- ALWAYS Use two words camel case identifiers (variable, function parameter, resource function parameter and field names). +- If the library name contains a . Always use an alias in the import statement. (import org/package.one as one;) +- Treat generated connectors/clients inside the generated folder as submodules. +- A submodule MUST BE imported before being used. The import statement should only contain the package name and submodule name. For package my_pkg, folder strucutre generated/fooApi the import should be \`import my_pkg.fooApi;\` +- If the return parameter typedesc default value is marked as <> in the given API docs, define a custom record in the code that represents the data structure based on the use case and assign to it. +- Whenever you have a Json variable, NEVER access or manipulate Json variables. ALWAYS define a record and convert the Json to that record and use it. +- When invoking resource function from a client, use the correct paths with accessor and paramters. (eg: exampleClient->/path1/["param"]/path2.get(key="value")) +- When you are accessing a field of a record, always assign it into new variable and use that variable in the next statement. +- Avoid long comments in the code. Use // for single line comments. +- Always use named arguments when providing values to any parameter. (eg: .get(key="value")) +- Mention types EXPLICITLY in variable declarations and foreach statements. +- Do not modify the README.md file unless asked to be modified explicitly in the query. +- Do not add/modify toml files(Config.toml/Ballerina.toml) unless asked. +- In the library API documentation if the service type is specified as generic, adhere to the instructions specified there on writing the service. +- For GraphQL service related queries, If the user haven't specified their own GraphQL Scehma, Write the proposed GraphQL schema for the user query right after explanation before generating the ballerina code. Use same names as the GraphQL Schema when defining record types. + +Begin your response with the explanation, once the entire explanation is finished only, include codeblock segments(if any) in the end of the response. +The explanation should explain the control flow decided in step 2, along with the selected libraries and their functions. + +Each file which needs modifications, should have a codeblock segment and it MUST have complete file content with the proposed change. +The codeblock segments should only have .bal contents and it should not generate or modify any other file types. Politely decline if the query requests for such cases. + +Example Codeblock segment: + +\`\`\`ballerina +//code goes here +\`\`\` + +`; +} + +function getUserPrompt( + usecase: string, + existingCode: SourceFiles[], + 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")}`; + } + + return `QUERY: The query you need to answer using the provided api documentation. + +${usecase} + + +Existing Code: Users existing code. + +${stringifyExistingCode(existingCode, op)} + + +Current Package name: ${packageName} + +${fileInstructions} + +`; +} + +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 { + return await repairCodeCore(params, eventHandler); + } catch (error) { + console.error("Error during code repair:", error); + eventHandler({ type: "error", content: getErrorMessage(error) }); + } +} + +// Core repair function that emits events +export async function repairCodeCore(params: RepairParams, eventHandler: CopilotEventHandler): Promise { + eventHandler({ type: "start" }); + const resp = await repairCode(params); + eventHandler({ type: "content_replace", content: resp.repairResponse }); + console.log("Manual Repair Diagnostics left: ", resp.diagnostics); + eventHandler({ type: "diagnostics", diagnostics: resp.diagnostics }); + eventHandler({ type: "stop", command: undefined }); + return resp; +} + +export async function repairCode(params: RepairParams): Promise { + const allMessages: CoreMessage[] = [ + ...params.previousMessages, + { + role: "assistant", + content: params.assistantResponse, + }, + { + role: "user", + content: + "Generated code returns following errors. Double-check all functions, types, record field access against the API documentation again. Fix the compiler errors and return the new response. \n Errors: \n " + + params.diagnostics.map((d) => d.message).join("\n"), + }, + ]; + + const { text, usage, providerMetadata } = await generateText({ + model: await getAnthropicClient(ANTHROPIC_SONNET_4), + maxTokens: 4096 * 4, + temperature: 0, + messages: allMessages, + abortSignal: AIPanelAbortController.getInstance().signal + + }); + + // replace original response with new code blocks + let diagnosticFixResp = replaceCodeBlocks(params.assistantResponse, text); + const postProcessResp: PostProcessResponse = await postProcess({ + assistant_response: diagnosticFixResp, + }); + diagnosticFixResp = postProcessResp.assistant_response; + console.log("After auto repair, Diagnostics : ", postProcessResp.diagnostics.diagnostics); + + return { repairResponse: diagnosticFixResp, 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; + } + + existingCodeStr = existingCodeStr + "filepath : " + filePath + "\n"; + existingCodeStr = existingCodeStr + file.content + "\n"; + } + return existingCodeStr; +} + +export function hasCodeBlocks(text: string) { + const codeBlockRegex = /]*>[\s\S]*?<\/code>/i; + return codeBlockRegex.test(text); +} + +export function replaceCodeBlocks(originalResp: string, newResp: string): string { + // Create a map to store new code blocks by filename + const newCodeBlocks = new Map(); + + // Extract code blocks from newResp + const newCodeRegex = /\s*```ballerina\s*([\s\S]*?)```\s*<\/code>/g; + let match; + while ((match = newCodeRegex.exec(newResp)) !== null) { + newCodeBlocks.set(match[1], match[2].trim()); + } + + // Replace code blocks in originalResp + const updatedResp = originalResp.replace( + /\s*```ballerina\s*([\s\S]*?)```\s*<\/code>/g, + (match, filename, content) => { + const newContent = newCodeBlocks.get(filename); + if (newContent !== undefined) { + return `\n\`\`\`ballerina\n${newContent}\n\`\`\`\n`; + } + return match; // If no new content, keep the original + } + ); + + // Remove replaced code blocks from newCodeBlocks + const originalCodeRegex = //g; + while ((match = originalCodeRegex.exec(originalResp)) !== null) { + newCodeBlocks.delete(match[1]); + } + + // Append any remaining new code blocks + let finalResp = updatedResp; + newCodeBlocks.forEach((content, filename) => { + finalResp += `\n\n\n\`\`\`ballerina\n${content}\n\`\`\`\n`; + }); + + return finalResp; +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/code/np_prompts.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/code/np_prompts.ts new file mode 100644 index 00000000000..edd5c9a7bbe --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/code/np_prompts.ts @@ -0,0 +1,359 @@ +// 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 { Library } from "../libs/libs_types"; + +export const REQUIREMENTS_DOCUMENT_KEY: string = "user_requirements_file"; + +export function getRequirementAnalysisCodeGenPrefix(apidocs: Library[], requirementAnalysisDocument: string) { + return `You are an expert assistant specializing in the Ballerina programming language. Your goal is to provide accurate and functional Ballerina code in response to queries while adhering to the constraints outlined in the given API documentation. + +You are tasked with generating Ballerina code based on a requirement analysis document for a system. The document contains an overview of the system and its use cases. Your objective is to create a Ballerina implementation that reflects the requirements described in the document. + +First, carefully read and analyze the following requirement analysis document and provide an accurate Ballerina program based on this document: + + +${requirementAnalysisDocument} + + +You will be provided with the following inputs: + +1. **API_DOCS**: A JSON string containing the API documentation for various Ballerina libraries, including their functions, types, and clients. + +${JSON.stringify(apidocs)} + + +### **Instructions for Handling Missing or Empty Requirement Specification:** +1. If the requirement specification is **missing** (i.e., the \`\` tag is not present in the input) or its content is **empty** (i.e., the content inside the tag is blank), respond with the following message: + \`"No requirement specification file found in the natural-programming directory. First, place your requirement specification file there to generate code based on the requirements."\` + Do not proceed with code generation in this case. + +2. If the requirement specification is present and contains valid content, proceed to analyze the document and generate Ballerina code based on the requirements described in it. Use the provided \`API_DOCS\` to ensure the generated code adheres to the correct API usage. + +Please add the proper API documentation for each function, service, resource, varaible declarations, type definitions and classes in the generated Ballerina code. + +### **Output Format:** +- If the requirement specification is missing or empty, return the message as specified above. +- If the requirement specification is valid, generate Ballerina code that reflects the requirements described in the document. + +--- + +### Example Scenarios + +#### **Example 1: Requirement Specification Missing** +##### **Input:** +\`\`\`xml + + + + +{ + "ballerina/io": { + "functions": { + "println": { + "description": "Prints a string to the console.", + "parameters": ["string"] + } + } + } +} + +\`\`\` + +##### **Expected Output:** +\`\`\` +No requirement specification file found in the natural-programming directory. First, place your requirement specification file there to generate code based on the requirements. +\`\`\` + +#### **Example 2: Requirement Specification Present** +##### **Input:** +\`\`\`xml + +The system should print "Hello, World!" to the console when executed. + + + +{ + "ballerina/io": { + "functions": { + "println": { + "description": "Prints a string to the console.", + "parameters": ["string"] + } + } + } +} + +\`\`\` + +##### **Expected Output:** +\`\`\`ballerina +import ballerina/io; + +public function main() { + io:println("Hello, World!"); +} +\`\`\` +`; +} + + + +export function getRequirementAnalysisTestGenPrefix(apidocs: Library[], requirementAnalysisDocument: string) { + return `**Objective**: +You are an expert test automation engineer specializing in generating test artifacts for Ballerina entities. Your task is to create comprehensive test implementations based on the provided requirement specification, service interfaces, and a test plan written in the console. + +**Inputs**: +1. **Requirement Document**: ${requirementAnalysisDocument} +3. **API_DOCS**: A JSON string that includes API documentation for different Ballerina libraries, covering their functions, types, and clients. +\`\`\`json +${JSON.stringify(apidocs)} +\`\`\` + +**Output Requirements**: +1. **Executable Test Suite** (Ballerina test code) +2. **Test Plan Summary** (Brief summary of the test plan for reference in the console) + +**Processing Steps**: + +[PHASE 1: TEST PLAN Generation] +1. Analyze requirement specifications to identify: + - Core functional requirements + - Business rules and constraints + - Success criteria + - Error conditions + - Performance expectations + - Non-functional requirements + - Data requirements + - Security requirements + - Integration points + +2. Examine Ballerina source code to extract interfaces such as: + - Service/resource endpoints + - Public functions + - Public class methods + - Input parameters and types + - Return types and response structures + - Documented error types + - Configurable variables +3. Write test plan that containing: + - Test objectives mapping to functional requirements + - Test objectives mapping to non functional requirements + - For each and every interface extracted in step 2, generate: + - Happy path scenarios + - Negative test scenarios + - Boundary/edge cases + - Data requirements + - Success metrics + - error handling scenarios + +[PHASE 2: TEST IMPLEMENTATION] +1. Identify the imports required for the test module. + +2. Create Ballerina test module with: + - Network client configurations (if required, e.g., HTTP, GraphQL, WebSocket, etc.) + - Test data factories + - Reusable validation functions + +3. Implement test cases that: + - Verify functional requirement compliance + - Verify non-functional requirement compliance + - Validate interface contracts implemented in the source code + - Assert business rules and constraints according to the requirement document + - Assert error scenarios according to the requirement document + - Check error handling according to the requirement document + +**Strict Rules**: +1. Tests MUST NOT depend on implementation details of the Ballerina code. +2. All test cases MUST trace to the requirement document. +3. Interface analysis MUST BE LIMITED to: + - Function signatures + - Class method signatures + - Resource/method signatures + - Remote function signatures + - Type definitions + - Configurable variable declarations + - Error type definitions + +**Output Format**: +\`\`\`markdown +# Test Plan Summary (For Console) +[Starting foreach identified interface] + - **Service Name**: [Service Name] + - **Key Features**: [Brief description of key features] + - **Test Scenarios**: [Number of scenarios] + - [Scenario 1]: [Brief description] + - [Scenario 2]: [Brief description] + - [Scenario 3]: [Brief description] + - **Risk Areas**: [Key risk 1], [Key risk 2] + +# Test Implementation Files +\`\`\`toml +[Required configuration entries] +\`\`\` +\`\`\`ballerina +import ballerina/test; +import ballerina/http; + +// Test client setup (if required) +final http:Client clientEp = check new ("http://localhost:9090"); + +// Test cases for each identified scenario +@test:Config {} +function testCreateResource() returns error? { + // Implementation +} +\`\`\` +\`\`\` + +**Implementation Guidelines**: +1. Test Code MUST: + - Validate functions and resources according to the requirement document. + - Validate input and output types according to the requirement document. + - Validate error handling according to the requirement document. + - Validate response schemas according to the requirement document. + - Check status codes according to the requirement document. + - Verify error payload structures according to the requirement document. + - Maintain test data isolation according to the requirement document. + +2. For HTTP methods (if used inside the tests): + - GET: Validate response structure and status. + - POST: Verify resource creation, location headers, validate response structure and status. + - PUT: Check idempotency, update verification, validate response structure and status. + - DELETE: Confirm resource removal, validate response structure and status. + +3. Assertion Requirements: + - Use \`test:assertEquals\` for exact matches. + - Verify error codes match the requirement document. + - Check response headers when required. + - Validate business rule compliance. + +**Example**: + +### **Input: Test Plan Written in Console** +\`\`\`markdown +# Test Plan for Inventory Management Service + +## Key Features +- Create, retrieve, update, and delete inventory items. +- Validate stock adjustments to prevent negative quantities. + +## Test Scenarios +1. **Create Inventory Item**: Verify item creation with valid payload. +2. **Create Item with Invalid Data**: Test validation rules for missing/invalid fields. +3. **Retrieve Item Details**: Verify item retrieval by ID. +4. **Update Stock Quantity**: Test stock adjustment logic. +5. **Delete Item**: Validate item removal. + +## Risk Areas +- Data validation failures. +- Concurrency issues during stock updates. +\`\`\` + +--- + +### **Output: Test Implementation** +\`\`\`toml +# tsts/Config.toml +host = "http://localhost:9090" +\`\`\` + +\`\`\`ballerina +// tests/inventory_test.bal +import ballerina/test; +import ballerina/http; + +configurable string host = "http://localhost:9090"; +final http:Client inventoryClient = check new (host); + +@test:Config {} +function testItemCreation() returns error? { + // Happy path + map newItem = { + name: "Premium Widget", + category: "Hardware", + quantity: 100, + price: 29.99 + }; + + http:Response response = check inventoryClient->post("/inventory", newItem); + test:assertEquals(response.statusCode, http:STATUS_CREATED); + + json createdItem = check response.getJsonPayload(); + test:assertTrue(createdItem.id?.length() > 0); +} + +@test:Config {} +function testInvalidItemCreation() returns error? { + // Negative test + map badItem = { + name: "Missing Fields", + quantity: -5 + }; + + http:Response response = check inventoryClient->post("/inventory", badItem); + test:assertEquals(response.statusCode, http:STATUS_BAD_REQUEST); + + json error = check response.getJsonPayload(); + test:assertEquals(error.message, "Invalid item data"); +} + +@test:Config {dependsOn: ["testItemCreation"]} +function testStockManagement() returns error? { + // Setup + string itemId = createTestItem().id; + + // Test valid adjustment + http:Response updateResp = check inventoryClient->patch( + "/inventory/\${itemId}/stock", + {adjustment: 10} + ); + test:assertEquals(updateResp.statusCode, http:STATUS_OK); + + json updatedItem = check updateResp.getJsonPayload(); + test:assertEquals(updatedItem.quantity, 110); + + // Test over-deduction + http:Response conflictResp = check inventoryClient->patch( + "/inventory/\${itemId}/stock", + {adjustment: -200} + ); + test:assertEquals(conflictResp.statusCode, http:STATUS_CONFLICT); +} + +@test:Config {dependsOn: ["testStockManagement"]} +function testItemDeletion() returns error? { + string itemId = createTestItem().id; + + // Delete item + http:Response deleteResp = check inventoryClient->delete("/inventory/\${itemId}"); + test:assertEquals(deleteResp.statusCode, http:STATUS_NO_CONTENT); + + // Verify deletion + http:Response getResp = check inventoryClient->get("/inventory/\${itemId}"); + test:assertEquals(getResp.statusCode, http:STATUS_NOT_FOUND); +} +\`\`\` + +**Validation Checks**: + +1. Verify **100% test coverage for all functional and non-functional requirements in requirements document**. +2. Verify interface parameters are properly exercised. +3. Ensure error tests match documented error codes. +4. Validate test data matches interface types. +5. All code files should be inside the \`tests\` directory, e.g., \`tests/inventory_test.bal\`, \`tests/test_utils.bal\`, \`tests/Config.toml\`, etc. +`; +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/connection.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/connection.ts new file mode 100644 index 00000000000..01553b83af6 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/connection.ts @@ -0,0 +1,110 @@ +// 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 { createAnthropic } from "@ai-sdk/anthropic"; +import { getAccessToken, getLoginMethod, getRefreshedAccessToken } from "../../../utils/ai/auth"; +import { AIStateMachine } from "../../../views/ai-panel/aiMachine"; +import { BACKEND_URL } from "../utils"; +import { AIMachineEventType, LoginMethod } from "@wso2/ballerina-core"; + +export const ANTHROPIC_HAIKU = "claude-3-5-haiku-20241022"; +export const ANTHROPIC_SONNET_4 = "claude-sonnet-4-20250514"; +export const ANTHROPIC_SONNET_3_5 = "claude-3-5-sonnet-20241022"; + +type AnthropicModel = + | typeof ANTHROPIC_HAIKU + | typeof ANTHROPIC_SONNET_4 + | typeof ANTHROPIC_SONNET_3_5; + +let cachedAnthropic: ReturnType | null = null; +let cachedAuthMethod: LoginMethod | null = null; + +/** + * Reusable fetch function that handles authentication with token refresh + * @param input - The URL, Request object, or string to fetch + * @param options - Fetch options + * @returns Promise + */ +export async function fetchWithAuth(input: string | URL | Request, options: RequestInit = {}): Promise { + try { + const accessToken = await getAccessToken(); + + // Ensure headers object exists + options.headers = { + ...options.headers, + 'Authorization': `Bearer ${accessToken}`, + 'User-Agent': 'Ballerina-VSCode-Plugin', + 'Connection': 'keep-alive', + }; + + let response = await fetch(input, options); + console.log("Response status: ", response.status); + + // Handle token expiration + if (response.status === 401) { + console.log("Token expired. Refreshing token..."); + const newToken = await getRefreshedAccessToken(); + if (newToken) { + options.headers = { + ...options.headers, + 'Authorization': `Bearer ${newToken}`, + }; + response = await fetch(input, options); + } else { + AIStateMachine.service().send(AIMachineEventType.LOGOUT); + return; + } + } + + return response; + } catch (error: any) { + if (error?.message === "TOKEN_EXPIRED") { + AIStateMachine.service().send(AIMachineEventType.LOGOUT); + } + return; + } +} + +/** + * Returns a singleton Anthropic client instance. + * Re-initializes the client if the login method has changed. + */ +export const getAnthropicClient = async (model: AnthropicModel) => { + const loginMethod = await getLoginMethod(); + + // Recreate client if login method has changed or no cached instance + if (!cachedAnthropic || cachedAuthMethod !== loginMethod) { + if (loginMethod === LoginMethod.BI_INTEL) { + cachedAnthropic = createAnthropic({ + baseURL: BACKEND_URL + "/intelligence-api/v1.0/claude", + apiKey: "xx", // dummy value; real auth is via fetchWithAuth + fetch: fetchWithAuth, + }); + } else if (loginMethod === LoginMethod.ANTHROPIC_KEY) { + const apiKey = await getAccessToken(); + cachedAnthropic = createAnthropic({ + baseURL: "https://api.anthropic.com/v1", + apiKey: apiKey, + }); + } else { + throw new Error(`Unsupported login method: ${loginMethod}`); + } + + cachedAuthMethod = loginMethod; + } + + return cachedAnthropic(model); +}; diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/constant.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/constant.ts new file mode 100644 index 00000000000..2de7e713fb2 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/constant.ts @@ -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. + +// ============================================================================= +// OPERATION TYPE CONSTANTS +// ============================================================================= +const DIRECT = "DIRECT"; +const LENGTH = "LENGTH"; +const SPLIT = "SPLIT"; +const ADDITION = "ADDITION"; +const SUBTRACTION = "SUBTRACTION"; +const MULTIPLICATION = "MULTIPLICATION"; +const DIVISION = "DIVISION"; +const MODULAR = "MODULAR"; +const EQUAL = "EQUAL"; +const NOTEQUAL = "NOTEQUAL"; +const LESS_THAN = "LESS_THAN"; +const LESS_THAN_OR_EQUAL = "LESS_THAN_OR_EQUAL"; +const AND = "AND"; +const OR = "OR"; +const REPLACE_ALL = "REPLACE_ALL"; +const AVERAGE = "AVERAGE"; +const MAXIMUM = "MAXIMUM"; +const MINIMUM = "MINIMUM"; +const SUMMATION = "SUMMATION"; +const ABSOLUTE = "ABSOLUTE"; + +// Parameter constants +const PARAMETER_1 = "PARAMETER_1"; +const PARAMETER_2 = "PARAMETER_2"; +const PARAMETER_3 = "PARAMETER_3"; +const NAME = "NAME"; + + +// ============================================================================= +// EXPORTS +// ============================================================================= + +// Export operation constants for external use +export { + DIRECT, + LENGTH, + SPLIT, + ADDITION, + SUBTRACTION, + MULTIPLICATION, + DIVISION, + MODULAR, + EQUAL, + NOTEQUAL, + LESS_THAN, + LESS_THAN_OR_EQUAL, + AND, + OR, + REPLACE_ALL, + AVERAGE, + MAXIMUM, + MINIMUM, + SUMMATION, + ABSOLUTE, + PARAMETER_1, + PARAMETER_2, + PARAMETER_3, + NAME +}; 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 new file mode 100644 index 00000000000..fdbbc67a4ec --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/context_api.ts @@ -0,0 +1,528 @@ +// 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 { generateText, CoreMessage } from "ai"; +import { getAnthropicClient, ANTHROPIC_SONNET_4 } from "../connection"; +import { AIPanelAbortController } from "../../../../../src/rpc-managers/ai-panel/utils"; + +// 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); + } else if (request.text) { + const message = await processText(request.text, request.processType); + const fileContent = request.isRequirementAnalysis + ? message + : extractBallerinaCode(message, request.processType); + return { fileContent }; + } else { + throw new Error("No file 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); + + 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 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)}`); + } +} + +// Extract Ballerina code or mapping fields from the response +function extractBallerinaCode(message: string, processType: ProcessType): string { + if (processType === "records") { + const ballerinaCodeMatch = message.match(/([\s\S]*?)<\/ballerina_code>/); + if (ballerinaCodeMatch) { + return ballerinaCodeMatch[1].trim(); + } + console.log("No Ballerina code found."); + } else { + const mappingFieldsMatch = message.match(/([\s\S]*?)<\/mapping_fields>/); + if (mappingFieldsMatch) { + return mappingFieldsMatch[1].trim(); + } + console.log("No mapping fields found."); + } + return ""; +} + +// Get requirements content from response +function getRequirementsContent(message: any): string { + if (typeof message === "string") { + return message; + } + // Handle different response structures + if (message?.content?.[0]?.text) { + return message.content[0].text; + } + if (message?.fileContent?.content?.[0]?.text) { + return message.fileContent.content[0].text; + } + return String(message); +} + +// Get file extension from filename +function getFileExtension(fileName: string): string { + const extension = fileName.toLowerCase().split('.').pop(); + return extension || ""; +} + +// Prompt generation functions +function getMappingInstructionPrompt(): string { + return `You are an AI assistant specialized in generating data field mappings for data integration and transformation tasks. +Your goal is to create a detailed mapping between input and output data fields based on the provided content. + +Important: + - Use clear and concise descriptions in the "MAPPING_TIP" field. + - Include all relevant input fields for each output field. + - Do not take any assumptions based on data types and mappings. + - Do not include any mappings you are unsure about. + - Consider all provided information, including comments and conditions. + - Final output has only Ballerina code within tags. + +Please follow these instructions carefully: + +1. Read and analyze the content thoroughly. +2. Identify all input and output fields, including their correct path names, exact data types, and any relevant attributes or descriptions in the content. +3. If it is an image, Input records appear on the left side of the image, and output records appear on the right side. +4. 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. +5. If it is an image, Consider only lines that connect input and output fields from left to right, including any mapping details shown in text or diagram lines. +6. Create mappings that follow a left-to-right direction from input to output records. +7. Ensure all input fields and their subfields are mapped to their corresponding output fields/subfields. +8. Include mappings for array to array fields. +9. For nested fields, focus on mapping the subfields rather than the parent nested field. +10. Document all mapping operations, data transformations, and type conversions from input field(s) to output field(s). +11. Include details about complex operations that involve multiple input fields to construct a single output field value. +12. Document any nested mappings, operations, or data transformations required for the mapping. +13. Do not map anything if you are unsure about the correct mapping. + +Before generating the final output, wrap your thought process inside tags: + +1. Analyze the content: + - List all input fields and their exact data types (e.g., 1.1 field1: SI, 1.2 field2: int ). + - List all output fields and their exact data types (e.g., 1.1 field1: SI, 1.2 field2: int ) + - Note any comments, conditions, or additional information provided + +2. Plan the mappings: + - Identify direct field mappings + - Identify fields requiring transformations or type conversions + - Identify and list complex mappings involving multiple input fields + - Note any array to array mappings + - Consider nested field mappings + +3. Identify complex transformations: + - List and describe any complex transformations or mappings + - Provide examples of how these transformations would work + +4. Review the mapping plan: + - Ensure all input fields are accounted for + - Check for any ambiguities or uncertainties + - Verify that all provided information has been considered + +After your analysis, provide the mapping in the following JSON format in tags: + +{ + "mapping_fields": { + "output_field_name": { + "MAPPING_TIP": "Describe the mapping, including any transformations or special considerations", + "INPUT_FIELDS": ["input_field_name_1", "input_field_name_2", "input_field_name_3", ...] // Add more input fields as needed + }, + // Add more output fields as needed + } +} + +Simple example for the required format: + +{ + "mapping_fields" : { + "id": { + "MAPPING_TIP": "Direct mapping from Person.id to Student.id", + "INPUT_FIELDS": ["person.id"] + }, + "name": { + "MAPPING_TIP": "Direct mapping from Person.name to Student.name", + "INPUT_FIELDS": ["person.name"] + }, + "age": { + "MAPPING_TIP": "Direct mapping from Person.age to Student.age", + "INPUT_FIELDS": ["person.age"] + }, + "weight": { + "MAPPING_TIP": "Direct mapping from Person.weight to Student.weight with type conversion from string to float", + "INPUT_FIELDS": ["person.weight"] + } + } +} + +Generate only Ballerina code with in tags based on the provided content. +`; +} + +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; +}; + +type RecordName3 record { + FieldDataType4 fieldName4; + RecordName4 nestedField; +}; + + +Sample example for the required format: + +type Person record { + int? id?; + string firstName; + string? lastName; + int? age; + string country?; + College? college?; +}; + +type College record { + Course[] courses; +}; + +type Course record { + string? id?; + decimal credits?; + Address? address; +}; + +type Student record { + string id; + string firstName; + float? age; + record { + int id; + float credits?; + Address address; + }[] courses; +}; + +type A record { + Person[] person; +}; + +type B record { + Student[] student?; +}; + +type Address record { + string? city?; + string street; + string? zipcode; +}; + +Generate only Ballerina code with in tags based on the provided content.`; +} + +function getRequirementsPrompt(): string { + return `You are tasked with providing a comprehensive explanation of the content in a file. +Your goal is to thoroughly extract all the information present in the file, +including both textual content and visual elements such as diagrams and images. + +Carefully analyze all the information provided in the file content above. +This may include text, diagrams, images, and any other visual or textual elements. + +For the textual content: +1. Extract the complete content and identify the main points and key ideas presented in the text. +2. Identify and explain all important concepts, definitions, or arguments. +3. Identify any significant data, statistics, or numerical information. + +For diagrams and images: +1. Extract each visual element in detail, including its layout, components, and any labels or captions with preserving all the information as it is. +2. Extract the purpose or significance of each diagram or image in relation to the overall content. +3. Interpret any data visualizations, charts, or graphs, providing insights on the information they convey. + +Provide a comprehensive explanation of the entire file content, integrating your analysis of both the textual and visual elements. Ensure that your explanation: +1. Covers all major aspects of the content +2. Highlights relationships between different parts of the content +3. Offers insights into the overall message or purpose of the document + +Present your explanation in a clear, well-structured format. Use paragraphs to separate different topics or aspects of the content. If appropriate, use bullet points or numbered lists to organize information. + +Begin your response with an introductory paragraph that briefly outlines what the file contains and its main subject matter. End with a concluding paragraph that summarizes the key takeaways from the file content. + +No need of unnecessary greetings or any other unrelated texts needed in the begining and the end. Just give the comprehensive explanation. No additional information is needed. + +Write your comprehensive explanation as a text. +`; +} + +function getPromptForProcessType(processType: ProcessType): string { + switch (processType) { + case "mapping_instruction": + return getMappingInstructionPrompt(); + case "records": + return getRecordsPrompt(); + case "requirements": + return getRequirementsPrompt(); + default: + throw new Error(`Unsupported process type: ${processType}`); + } +} + +// Claude API integration functions +async function extractionUsingClaude({ pdfData, processType }: { pdfData: string; processType: ProcessType }): Promise { + const promptText = getPromptForProcessType(processType); + + const messages: CoreMessage[] = [ + { + role: "user", + content: [ + { + type: "file", + data: pdfData, + mimeType: "application/pdf" + }, + { + type: "text", + text: promptText + } + ] + } + ]; + + const { text } = await generateText({ + model: await getAnthropicClient(ANTHROPIC_SONNET_4), + maxTokens: 8192, + temperature: 0, + messages: messages, + abortSignal: AIPanelAbortController.getInstance().signal + }); + + return text; +} + +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: CoreMessage[] = [ + { + role: "user", + content: [ + { + type: "image", + image: imgData, + mimeType: mimeType + }, + { + type: "text", + text: promptText + } + ] + } + ]; + + const { text } = await generateText({ + model: await getAnthropicClient(ANTHROPIC_SONNET_4), + maxTokens: 8192, + temperature: 0, + messages: messages, + abortSignal: AIPanelAbortController.getInstance().signal + }); + + return text; +} + +async function textExtractionUsingClaude({ + textContent, + processType +}: { + textContent: string; + processType: ProcessType; +}): Promise { + const promptText = getPromptForProcessType(processType); + + const messages: CoreMessage[] = [ + { + role: "user", + content: promptText + "\n\n" + textContent + } + ]; + + const { text } = await generateText({ + model: await getAnthropicClient(ANTHROPIC_SONNET_4), + maxTokens: 8192, + temperature: 0, + messages: messages, + abortSignal: AIPanelAbortController.getInstance().signal + }); + + return text; +} + +// Utility functions for specific use cases +export async function generateMappingInstruction(input: { file?: FileData; text?: string }): Promise { + return await processDataMapperInput({ + ...input, + processType: "mapping_instruction" + }); +} + +export async function generateRecord(input: { file?: FileData; text?: string }): Promise { + return await processDataMapperInput({ + ...input, + processType: "records" + }); +} + +export async function extractRequirements(input: { file?: FileData; text?: string }): Promise { + return await processDataMapperInput({ + ...input, + processType: "requirements", + isRequirementAnalysis: true + }); +} 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 new file mode 100644 index 00000000000..5d4e01fb7fc --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/datamapper.ts @@ -0,0 +1,899 @@ +// 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 { generateText, CoreMessage, generateObject } from "ai"; +import { getDataMappingPrompt } from "./prompt"; +import { getAnthropicClient, ANTHROPIC_SONNET_4 } from "../connection"; +import { + Payload, + DatamapperResponse, + AIDataMappings, + MappingJson, + MappingRecord, + Inputs, + MappingOperation, + FieldMetadata, + MetadataField, + MetadataType, + Metadata, + ParameterMetadata, + MappingFields, + Operation, + Structure, + ChatResponse, +} from "./types"; +import { MappingSchema } from "./schema"; +import { AIPanelAbortController } from "../../../../../src/rpc-managers/ai-panel/utils"; +import { ADDITION, DIRECT, DIVISION, LENGTH, MODULAR, MULTIPLICATION, NAME, PARAMETER_1, PARAMETER_2, SPLIT, SUBTRACTION } from "./constant"; + +// Operations table - In a real implementation, this would be loaded from JSON files +const operationsTable: Map = new Map([ + [ + DIRECT, + { + name: DIRECT, + structure: { + operation: "DIRECT", + outputType: ["int", "float", "decimal", "string", "boolean"], + inputType: ["int", "float", "decimal", "string", "boolean"], + imports: {}, + errorReturned: false, + expression: "${LHS} : ${PA_1}", + }, + }, + ], + [ + ADDITION, + { + name: ADDITION, + structure: { + operation: "ADDITION", + outputType: ["int", "float", "decimal"], + inputType: ["int", "float", "decimal"], + imports: {}, + errorReturned: false, + expression: "+", + }, + }, + ], + [ + DIVISION, + { + name: DIVISION, + structure: { + operation: "DIVISION", + outputType: ["int", "float", "decimal"], + inputType: ["int", "float", "decimal"], + imports: {}, + errorReturned: false, + expression: "/", + }, + }, + ], + [ + LENGTH, + { + name: LENGTH, + structure: { + operation: "LENGTH", + outputType: ["int"], + inputType: ["string[]", "int[]", "float[]", "decimal[]", "boolean[]", "record[]"], + imports: {}, + errorReturned: false, + expression: "${LHS} : ${RHS}.length()", + }, + }, + ], + [ + MODULAR, + { + name: MODULAR, + structure: { + operation: "MODULAR", + outputType: ["int"], + inputType: ["int"], + imports: {}, + errorReturned: false, + expression: "%", + }, + }, + ], + [ + MULTIPLICATION, + { + name: MULTIPLICATION, + structure: { + operation: "MULTIPLICATION", + outputType: ["int", "float", "decimal"], + inputType: ["int", "float", "decimal"], + imports: {}, + errorReturned: false, + expression: "*", + }, + }, + ], + [ + SPLIT, + { + name: SPLIT, + structure: { + operation: "SPLIT", + outputType: ["string[]", "string"], + inputType: ["string"], + imports: { org: "ballerina", package: "lang.regexp" }, + errorReturned: false, + expression: "${LHS} : re `,`.split(${RHS})", + }, + }, + ], + [ + SUBTRACTION, + { + name: SUBTRACTION, + structure: { + operation: "SUBTRACTION", + outputType: ["int", "float", "decimal"], + inputType: ["int", "float", "decimal"], + imports: {}, + errorReturned: false, + expression: "-", + }, + }, + ], +]); + +// ============================================================================= +// MAIN ORCHESTRATOR FUNCTION +// ============================================================================= + +/** + * Main function for AI-powered data mapping generation + * Coordinates the entire data mapping workflow with retry logic and error handling + */ +async function mapData(payload: Payload): Promise { + const maxRetries = 6; + let retries = 0; + + while (retries < maxRetries) { + if (retries > 1) { + console.debug("Retrying to generate mappings for the payload."); + } + + try { + // Extract existing mapping field hints + const mappingFields: { [key: string]: MappingFields } = payload.mapping_fields || {}; + + // STEP 1: Generate AI-powered mappings using Claude + const generatedMappings = await getAutoMappings(payload.inputs, payload.output, mappingFields); + + // STEP 2: Prepare metadata for validation + const input: Inputs = { + input: payload.inputMetadata, + output: payload.outputMetadata, + }; + + // STEP 3: Validate and process AI-generated mappings + const evaluateMappingsResult = await evaluateMappings([], generatedMappings, operationsTable, input); + + if (evaluateMappingsResult) { + // STEP 4: Extract and structure the validated mappings + const mappings = extractMappings(evaluateMappingsResult); + return mappings; + } else { + throw new Error("Failed to generate mappings for the payload."); + } + } catch (error) { + console.error(`Error occurred while generating mappings: ${error}`); + retries += 1; + continue; + } + } + + throw new Error("Failed to generate mappings for the payload after all retries."); +} + +// ============================================================================= +// MAPPING EXTRACTION FUNCTION +// ============================================================================= + +/** + * Recursive mapping extraction and structuring function + * Processes AI-generated and validated mappings into clean, hierarchical structure + */ +function extractMappings(evaluateMappingsResult: MappingJson): DatamapperResponse { + const mappings: { [key: string]: MappingJson } = {}; + + // Guard clause: Ensure we have map-type data (not single mapping record) + if (isMappingRecord(evaluateMappingsResult)) { + throw new Error("EvaluateMappingsResult is a MappingRecord, expected map structure."); + } + + // Process nested mapping structure + if (typeof evaluateMappingsResult === "object" && evaluateMappingsResult !== null) { + for (const [key, value] of Object.entries(evaluateMappingsResult)) { + if (isMappingRecord(value)) { + // Direct mapping record - add to results + mappings[key] = value; + } else if (typeof value === "object" && value !== null) { + // Nested mapping structure - recursively process + const nestedMappingsResult = extractMappings(value as MappingJson); + mappings[key] = nestedMappingsResult.mappings; + } + } + } + + return { mappings }; +} + +// ============================================================================= +// AI-POWERED DATA MAPPING GENERATION +// ============================================================================= + +/** + * Generates intelligent data transformation mappings by analyzing input and output schemas + */ +async function getAutoMappings( + inputJsonRecord: { [key: string]: any }, + outputJsonRecord: { [key: string]: any }, + mappingFields: { [key: string]: MappingFields } +): Promise { + // STEP 1: Construct AI prompt with schema information + const prompt = getDataMappingPrompt( + JSON.stringify(inputJsonRecord), + JSON.stringify(outputJsonRecord), + JSON.stringify(mappingFields) + ); + + // STEP 3: Call Claude API using AI SDK + const messages: CoreMessage[] = [ + { role: "user", content: prompt } + ]; + + try { + const { object } = await generateObject({ + model: await getAnthropicClient(ANTHROPIC_SONNET_4), + maxTokens: 4096, + temperature: 0, + messages: messages, + schema: MappingSchema, + abortSignal: AIPanelAbortController.getInstance().signal, + }); + + const generatedMappings = object.generatedMappings as AIDataMappings; + return generatedMappings; + } catch (error) { + console.error("Failed to parse response:", error); + throw new Error(`Failed to parse mapping response: ${error}`); + } +} + +// ============================================================================= +// MAPPING VALIDATION AND PROCESSING ENGINE +// ============================================================================= + +/** + * Recursively validates and processes AI-generated mappings against supported operations + */ +async function evaluateMappings( + path: string[], + input: AIDataMappings, + operations: Map, + initialRecords: Inputs +): Promise { + const returnRec: { [key: string]: MappingJson } = {}; + + if (isMapping(input)) { + // STEP 1: Extract operation record from AI-generated mapping + const operationRecord = input.OPERATION; + const parametersTypes: { [key: string]: ParameterMetadata } = {}; + let validParameters = false; + + // STEP 2: Process and validate each parameter in the operation + for (const subKey of Object.keys(operationRecord)) { + if (subKey !== NAME) { + const subPathString = operationRecord[subKey as keyof MappingOperation] as string; + if (!subPathString) { + continue; + } + + // Extract operation details and input path + const operationName = operationRecord.NAME; + const paths = subPathString.split("."); + if (paths.length <= 1) { + continue; + } + + // STEP 3: Validate input record instance exists + const recordInstance = paths.shift()!; + if (!initialRecords.input[recordInstance]) { + continue; + } + + // STEP 4: Extract and validate field type metadata + const inputFields = initialRecords.input[recordInstance]; + const inputType = getTypeMetadataOfField(inputFields, [...paths].reverse(), subKey, operationName); + if (!inputType) { + continue; + } + + // STEP 5: Store validated parameter metadata + parametersTypes[subKey] = { + type: inputType.type, + input: subPathString, + optional: inputType.optional, + nullable: inputType.nullable, + }; + validParameters = true; + } + } + + // STEP 6: Validate operation if parameters are valid + if (validParameters) { + const outputFields = initialRecords.output; + const outputType = getTypeMetadataOfField(outputFields, [...path].reverse()); + if (!outputType) { + return null; + } + + // STEP 7: Perform comprehensive operation validation + const mapping = validateMappingOperation( + operationRecord, + operations, + parametersTypes, + outputType, + path[path.length - 1], + initialRecords.input + ); + return mapping; + } + return null; + } else if (typeof input === "object" && input !== null) { + // STEP 8: Recursively process nested mapping structures + for (const [key, value] of Object.entries(input)) { + if (value === null || value === undefined) { + continue; + } + + // Process nested mapping with extended path + const newPath = [...path, key]; + const temporaryRecord = await evaluateMappings( + newPath, + value as AIDataMappings, + operations, + initialRecords + ); + + if (temporaryRecord) { + if ( + isMappingRecord(temporaryRecord) || + (typeof temporaryRecord === "object" && Object.keys(temporaryRecord).length > 0) + ) { + returnRec[key] = temporaryRecord; + } + } + } + return returnRec; + } else { + throw new Error("Invalid input type"); + } +} + +// ============================================================================= +// OPERATION-SPECIFIC VALIDATION ENGINE +// ============================================================================= + +/** + * Validates individual mapping operations against their specific requirements + */ +function validateMappingOperation( + mapping: MappingOperation, + operations: Map, + inputType: { [key: string]: ParameterMetadata }, + outputType: FieldMetadata, + name: string, + inputs: { [key: string]: Metadata } +): MappingJson | null { + const operation = mapping.NAME; + + // STEP 1: Verify operation exists in operations database + const op = operations.get(operation); + if (!op) { + return null; + } + + // STEP 2: Validate DIRECT mapping operation + if (op.name === DIRECT) { + const paramOne = inputType[PARAMETER_1]; + if (!paramOne) { + return null; + } + + const paths = paramOne.input.split("."); + if (paths.length === 0) { + throw new Error("Invalid path in input type for DIRECT operation"); + } + + const recordInstance = paths[0]; + if (!inputs[recordInstance]) { + throw new Error("Record instance not found in inputs for DIRECT operation"); + } + + return { + operation: DIRECT, + targetType: outputType.type, + parameters: [paramOne.input], + }; + + // STEP 3: Validate LENGTH operation + } else if (op.name === LENGTH) { + const paramOne = inputType[PARAMETER_1]; + if (!paramOne) { + throw new Error("Parameter 1 not found in input type for LENGTH operation"); + } + + const pathString = paramOne.input; + if (outputType.type === "int" || outputType.type === "int|()") { + const paths = pathString.split("."); + if (paths.length === 0) { + throw new Error("Invalid path in input type for LENGTH operation"); + } + + const recordInstance = paths[0]; + if (!inputs[recordInstance]) { + throw new Error("Record instance not found in inputs for LENGTH operation"); + } + + return { + operation: LENGTH, + targetType: outputType.type, + parameters: [pathString], + }; + } else { + throw new Error("Invalid input or output type for LENGTH operation"); + } + + // STEP 4: Validate SPLIT operation + } else if (op.name === SPLIT) { + let paramOne: ParameterMetadata, paramTwo: string | MappingJson; + if (inputType[PARAMETER_1] && mapping.PARAMETER_2) { + paramOne = inputType[PARAMETER_1]; + paramTwo = mapping.PARAMETER_2; + } else if (inputType[PARAMETER_2] && mapping.PARAMETER_1) { + paramOne = inputType[PARAMETER_2]; + paramTwo = mapping.PARAMETER_1; + } else { + throw new Error("Required parameters not found in input type for SPLIT operation"); + } + + if ( + paramOne.type !== "regex" || + !( + outputType.type === "string[]" || + outputType.type === "string[]|()" || + outputType.type === "(string|())[]" || + outputType.type === "(string|())[]|()" + ) + ) { + throw new Error("Invalid input or output type for SPLIT operation"); + } + + const paths = paramOne.input.split("."); + if (paths.length === 0) { + throw new Error("Invalid path in input type for SPLIT operation"); + } + + const recordInstance = paths[0]; + if (!inputs[recordInstance]) { + throw new Error("Record instance not found in inputs for SPLIT operation"); + } + + return { + operation: "SPLIT", + targetType: outputType.type, + parameters: [paramOne.input, paramTwo], + }; + } + + return null; +} + +// ============================================================================= +// TYPE METADATA EXTRACTION ENGINE +// ============================================================================= + +/** + * Extracts type information from schema metadata for validation purposes + */ +function getTypeMetadataOfField( + input: MetadataType, + pathParameters: string[], + paramName?: string, + operationName?: string +): FieldMetadata | null { + // STEP 1: Handle special parameter types (e.g., regex for SPLIT operation) + if (paramName && operationName) { + if (operationName === SPLIT && paramName === PARAMETER_2) { + return { type: "regex", optional: false, nullable: false }; + } + } + + // STEP 2: Process nested field path navigation + if (pathParameters.length > 0) { + let modifiedInputs: { [key: string]: MetadataField } | undefined; + + // Extract field map from different metadata types + if ("fields" in input && input.fields && typeof input.fields === "object" && !("typeName" in input.fields)) { + modifiedInputs = input.fields as { [key: string]: MetadataField }; + } else if ( + "members" in input && + input.members && + typeof input.members === "object" && + !("typeName" in input.members) + ) { + modifiedInputs = input.members as { [key: string]: MetadataField }; + } else if (typeof input === "object" && !("typeName" in input)) { + modifiedInputs = input as { [key: string]: MetadataField }; + } + + if (!modifiedInputs) { + throw new Error("No fields found in MetadataField"); + } + + // STEP 3: Navigate to next level in field hierarchy + const index = pathParameters.pop()!; + const temporaryRecord = modifiedInputs[index]; + if (temporaryRecord) { + return getTypeMetadataOfField(temporaryRecord, pathParameters, paramName, operationName); + } else { + return null; + } + } else { + // STEP 4: Extract final field type metadata + try { + if ("typeName" in input && "optional" in input && "nullable" in input) { + const metadataField = input as MetadataField; + return { + type: metadataField.typeName, + optional: metadataField.optional, + nullable: metadataField.nullable, + }; + } else { + throw new Error("Invalid metadata structure"); + } + } catch (error) { + throw new Error(`Error occurred while getting the type metadata of the field: ${error}`); + } + } +} + +// ============================================================================= +// UTILITY FUNCTIONS +// ============================================================================= + +/** + * Type guard to check if value is a MappingRecord + */ +function isMappingRecord(value: any): value is MappingRecord { + return value && typeof value === "object" && "operation" in value && "targetType" in value && "parameters" in value; +} + +/** + * Type guard to check if value is a Mapping + */ +function isMapping(value: any): value is { OPERATION: MappingOperation } { + return value && typeof value === "object" && "OPERATION" in value; +} + +// ============================================================================= +// MAIN EXPORT FUNCTION +// ============================================================================= + +/** + * Main export function for generating auto mappings + * This function matches the original signature and provides a simple interface + */ +export async function generateAutoMappings(payload?: Payload): Promise { + if (!payload) { + throw new Error("Payload is required for generating auto mappings"); + } + try { + return await mapData(payload); + } catch (error) { + console.error(`Error generating auto mappings: ${error}`); + throw new Error(`Failed to generate auto mappings: ${error}`); + } +} + +/** + * Helper function to create a sample payload for testing + */ +export function createSamplePayload(): Payload { + return { + inputs: { + person: { + id: { type: "string", comment: "Unique identifier for the person" }, + firstName: { type: "string", comment: "First name of the person" }, + lastName: { type: "string", comment: "Last name of the person" }, + age: { type: "int", comment: "Age of the person" }, + country: { type: "string", comment: "Country of the person" }, + courses: { + id: { type: "string", comment: "Unique identifier for the course" }, + name: { type: "string", comment: "Name of the course" }, + credits: { type: "int", comment: "Credits of the course" }, + }, + }, + }, + output: { + id: { type: "string", comment: "Unique identifier for the student" }, + firstName: { type: "string", comment: "First name of the student" }, + age: { type: "int", comment: "Age of the student" }, + country: { type: "string", comment: "Country of the student" }, + courses: { + id: { type: "string", comment: "Unique identifier for the course" }, + name: { type: "string", comment: "Name of the course" }, + credits: { type: "int", comment: "Credits of the course" }, + }, + }, + inputMetadata: { + person: { + parameterType: "Person", + parameterName: "person", + isArrayType: false, + type: "record", + fields: { + id: { + type: "string", + typeInstance: "id", + typeName: "string", + nullable: false, + optional: false, + }, + firstName: { + type: "string", + typeInstance: "firstName", + typeName: "string", + nullable: false, + optional: false, + }, + lastName: { + type: "string", + typeInstance: "lastName", + typeName: "string", + nullable: false, + optional: false, + }, + age: { + type: "int", + typeInstance: "age", + typeName: "int", + nullable: false, + optional: false, + }, + country: { + type: "string", + typeInstance: "country", + typeName: "string", + nullable: false, + optional: false, + }, + courses: { + type: "record[]", + typeInstance: "courses", + typeName: "record[]", + nullable: false, + optional: false, + fields: { + id: { + type: "string", + typeInstance: "id", + typeName: "string", + nullable: false, + optional: false, + }, + name: { + type: "string", + typeInstance: "name", + typeName: "string", + nullable: false, + optional: false, + }, + credits: { + type: "int", + typeInstance: "credits", + typeName: "int", + nullable: false, + optional: false, + }, + }, + }, + }, + }, + }, + outputMetadata: { + id: { + type: "string", + typeInstance: "id", + typeName: "string", + nullable: false, + optional: false, + }, + firstName: { + type: "string", + typeInstance: "firstName", + typeName: "string", + nullable: false, + optional: false, + }, + age: { + type: "int", + typeInstance: "age", + typeName: "int", + nullable: false, + optional: false, + }, + country: { + type: "string", + typeInstance: "country", + typeName: "string", + nullable: false, + optional: false, + }, + courses: { + type: "record[]", + typeInstance: "courses", + typeName: "record[]", + nullable: false, + optional: false, + fields: { + id: { + type: "string", + typeInstance: "id", + typeName: "string", + nullable: false, + optional: false, + }, + name: { + type: "string", + typeInstance: "name", + typeName: "string", + nullable: false, + optional: false, + }, + credits: { + type: "int", + typeInstance: "credits", + typeName: "int", + nullable: false, + optional: false, + }, + }, + }, + }, + }; +} + +/** + * Helper function to validate the structure of a mapping response + */ +export function validateMappingResponse(response: DatamapperResponse): boolean { + if (!response || !response.mappings) { + return false; + } + + for (const [key, mapping] of Object.entries(response.mappings)) { + if (!isValidMapping(mapping)) { + console.warn(`Invalid mapping found for key: ${key}`); + return false; + } + } + + return true; +} + +/** + * Recursive function to validate a mapping structure + */ +function isValidMapping(mapping: MappingJson): boolean { + if (isMappingRecord(mapping)) { + return Boolean( + mapping.operation && mapping.targetType && mapping.parameters && Array.isArray(mapping.parameters) + ); + } + + if (typeof mapping === "object" && mapping !== null) { + return Object.values(mapping).every((value) => isValidMapping(value)); + } + + return false; +} + +// ============================================================================= +// EXPORTS +// ============================================================================= + +export { + operationsTable +}; +// Default export for the main function +export default generateAutoMappings; + +/* +// Example Usage: +async function testDataMapping() { + try { + // Create sample payload + const payload = createSamplePayload(); + + // Generate mappings + const response = await generateAutoMappings(payload); + + // Validate response + const isValid = validateMappingResponse(response); + + if (isValid) { + console.log("Generated mappings:", JSON.stringify(response, null, 2)); + } else { + console.error("Invalid mapping response"); + } + + // Expected output structure: + // { + // "mappings": { + // "id": { + // "operation": "DIRECT", + // "targetType": "string", + // "parameters": ["person.id"] + // }, + // "firstName": { + // "operation": "DIRECT", + // "targetType": "string", + // "parameters": ["person.firstName"] + // }, + // "age": { + // "operation": "DIRECT", + // "targetType": "int", + // "parameters": ["person.age"] + // }, + // "courses": { + // "id": { + // "operation": "DIRECT", + // "targetType": "string", + // "parameters": ["person.courses.id"] + // }, + // "name": { + // "operation": "DIRECT", + // "targetType": "string", + // "parameters": ["person.courses.name"] + // }, + // "credits": { + // "operation": "DIRECT", + // "targetType": "int", + // "parameters": ["person.courses.credits"] + // } + // }, + // "country": { + // "operation": "DIRECT", + // "targetType": "string", + // "parameters": ["person.country"] + // } + // } + // } + + } catch (error) { + console.error("Error generating mappings:", error); + } +} +*/ diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/inline_datamapper.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/inline_datamapper.ts new file mode 100644 index 00000000000..cd60958d769 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/inline_datamapper.ts @@ -0,0 +1,564 @@ +// 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 { CoreMessage, generateObject } from "ai"; +import { getAnthropicClient, ANTHROPIC_SONNET_4 } from "../connection"; +import { + DatamapperResponse, + AIDataMappings, + MappingJson, + MappingRecord, + MappingOperation, + FieldMetadata, + ParameterMetadata, + MappingFields, + Mapping, + InlineInputs, + InlineDataMapping +} from "./types"; +import { MappingSchema } from "./schema"; +import { AIPanelAbortController } from "../../../../../src/rpc-managers/ai-panel/utils"; +import { ADDITION, DIRECT, DIVISION, LENGTH, MODULAR, MULTIPLICATION, NAME, PARAMETER_1, PARAMETER_2, SPLIT, SUBTRACTION } from "./constant"; +import { operationsTable } from "./datamapper"; +import { getInlineDataMappingPrompt } from "./inline_prompt"; +import { ExpandedDMModel, InlineDataMapperModelResponse, IOType } from "@wso2/ballerina-core"; + +// ============================================================================= +// UTILITY FUNCTIONS FOR SCHEMA PROCESSING +// ============================================================================= + +/** + * Finds a schema type by path in the input schemas array + */ +function findSchemaTypeByPath(inputs: IOType[], path: string): IOType | null { + for (const inputSchema of inputs) { + if (inputSchema.id === path) { + return inputSchema; + } + + // Recursively search in fields + const fields = inputSchema.fields; + if (fields && Array.isArray(fields)) { + const found = findSchemaTypeByPath(fields, path); + if (found) { + return found; + } + } + + // Recursively search in member + const member = inputSchema.member; + if (member) { + const found = findSchemaTypeByPath([member], path); + if (found) { + return found; + } + } + } + return null; +} + +/** + * Removes array indices from path to normalize field paths + */ +function removeArrayIndicesFromPath(path: string): string { + const pathParts = path.split('.'); + const cleanParts: string[] = []; + + for (const part of pathParts) { + // Skip numeric indices + if (!isNaN(parseInt(part))) { + continue; + } + cleanParts.push(part); + } + + return cleanParts.join('.'); +} + +/** + * Removes output record prefix from field name + */ +function removeOutputRecordPrefix(fieldName: string, output: IOType): string { + const outputRecordName = output.variableName; + if (outputRecordName) { + const prefix = outputRecordName + "."; + if (fieldName.startsWith(prefix)) { + return fieldName.substring(prefix.length); + } + } + return fieldName; +} + +// ============================================================================= +// INLINE MAPPING EVALUATION FUNCTIONS +// ============================================================================= + +/** + * Main function to evaluate inline mappings with enhanced schema support + */ +async function evaluateInlineMappings( + path: string[], + llmGeneratedMappings: AIDataMappings, + initialRecords: InlineInputs +): Promise { + if (isMapping(llmGeneratedMappings)) { + return await processMappingOperation(path, llmGeneratedMappings, initialRecords); + } else { + return await processNestedMappings(path, llmGeneratedMappings as { [key: string]: AIDataMappings }, initialRecords); + } +} + +/** + * Processes individual mapping operations with inline schema validation + */ +async function processMappingOperation( + path: string[], + llmGeneratedMappings: Mapping, + initialRecords: InlineInputs +): Promise { + try { + const operationRecord = llmGeneratedMappings.OPERATION; + const parametersTypes: { [key: string]: ParameterMetadata } = {}; + let validParameters = false; + + for (const subKey of Object.keys(operationRecord)) { + if (subKey === NAME) { + continue; + } + + const subPathString = operationRecord[subKey as keyof MappingOperation] as string; + if (!subPathString) { + continue; + } + + const operationName = operationRecord.NAME; + const inputType = findSchemaTypeByPath(initialRecords.input, subPathString); + if (!inputType) { + continue; + } + + const fieldMetadata = getFieldMetadataFromSchemaType(inputType, subKey, operationName); + if (!fieldMetadata) { + continue; + } + + parametersTypes[subKey] = { + type: fieldMetadata.type, + input: subPathString, + optional: fieldMetadata.optional, + nullable: fieldMetadata.nullable + }; + validParameters = true; + } + + if (validParameters) { + const outputType = getOutputFieldMetadata(initialRecords.output, path); + if (!outputType) { + return null; + } + + const mapping = validateInlineMappingOperation( + operationRecord, + parametersTypes, + outputType, + path[path.length - 1], + initialRecords.input + ); + return mapping; + } + return null; + } catch (error) { + console.error('Error processing mapping operation:', error); + return null; + } +} + +/** + * Processes nested mapping structures + */ +async function processNestedMappings( + path: string[], + llmGeneratedMappings: { [key: string]: AIDataMappings }, + initialRecords: InlineInputs +): Promise { + const returnRec: { [key: string]: MappingJson } = {}; + + for (const [key, value] of Object.entries(llmGeneratedMappings)) { + if (value === null || value === undefined) { + continue; + } + + const newPath = [...path]; + const cleanKey = removeOutputRecordPrefix(key, initialRecords.output); + newPath.push(key); + + const temporaryRecord = await evaluateInlineMappings(newPath, value, initialRecords); + if (temporaryRecord) { + if (isMappingRecord(temporaryRecord) || + (typeof temporaryRecord === 'object' && Object.keys(temporaryRecord).length > 0)) { + returnRec[cleanKey] = temporaryRecord; + } + } + } + + return convertFlatToNestedMap(returnRec); +} + +// ============================================================================= +// INLINE MAPPING OPERATION VALIDATION +// ============================================================================= + +/** + * Validates inline mapping operations with enhanced error handling + */ +function validateInlineMappingOperation( + mapping: MappingOperation, + inputType: { [key: string]: ParameterMetadata }, + outputType: FieldMetadata, + name: string, + inputs: IOType[] +): MappingJson | null { + const operation = mapping.NAME; + const op = operationsTable.get(operation); + + if (!op) { + return null; + } + + switch (op.name) { + case DIRECT: { + const param = inputType[PARAMETER_1]; + if (!param) { + return null; + } + + if (!findSchemaTypeByPath(inputs, param.input)) { + throw new Error(`Input path not found for DIRECT operation: ${param.input}`); + } + + return { + operation: DIRECT, + targetType: outputType.type, + parameters: [removeArrayIndicesFromPath(param.input)] + }; + } + + case LENGTH: { + const param = inputType[PARAMETER_1]; + if (!param) { + throw new Error("Parameter 1 not found in input type for LENGTH operation"); + } + + if (!(outputType.type === "int" || outputType.type === "int|()")) { + throw new Error("Invalid output type for LENGTH operation"); + } + + if (!findSchemaTypeByPath(inputs, param.input)) { + throw new Error(`Input path not found for LENGTH operation: ${param.input}`); + } + + return { + operation: LENGTH, + targetType: outputType.type, + parameters: [removeArrayIndicesFromPath(param.input)] + }; + } + + case SPLIT: { + const paramOne = inputType[PARAMETER_1]; + const paramTwo = mapping.PARAMETER_2; + + if (!paramOne || !paramTwo) { + throw new Error("Required parameters not found in input type for SPLIT operation"); + } + + if (paramOne.type !== "regex" || + !(outputType.type === "string[]" || outputType.type === "string[]|()" || + outputType.type === "(string|())[]" || outputType.type === "(string|())[]|()")) { + throw new Error("Invalid input or output type for SPLIT operation"); + } + + if (!findSchemaTypeByPath(inputs, paramOne.input)) { + throw new Error(`Input path not found for SPLIT operation: ${paramOne.input}`); + } + + return { + operation: SPLIT, + targetType: outputType.type, + parameters: [removeArrayIndicesFromPath(paramOne.input), paramTwo] + }; + } + + default: + return null; + } +} + +// ============================================================================= +// FIELD METADATA EXTRACTION FUNCTIONS +// ============================================================================= + +/** + * Extracts field metadata from schema type with enhanced type checking + */ +function getFieldMetadataFromSchemaType( + inputType: IOType, + paramName?: string, + operationName?: string +): FieldMetadata | null { + if (paramName && operationName) { + if (operationName === SPLIT && paramName === PARAMETER_2) { + return { type: "regex", optional: false, nullable: false }; + } + } + + const kind = inputType.kind; + const typeName = inputType.typeName; + + if (!kind || !typeName) { + throw new Error("Missing kind or typeName in SchemaType"); + } + + const typeString = typeName; + const isOptional = false; // TODO: Handle optional types + let isNullable = false; // TODO: Handle nullable types + + // Check if type is nullable (contains ? or ()) + if (typeName.includes("?") || typeName.includes("()")) { + isNullable = true; + } + + return { + type: typeString, + optional: isOptional, + nullable: isNullable + }; +} + +/** + * Gets output field metadata from schema type + */ +function getOutputFieldMetadata(output: IOType, path: string[]): FieldMetadata | null { + let current = output; + + for (const pathSegment of path) { + const found = findFieldInSchemaType(current, pathSegment); + if (!found) { + return null; + } + current = found; + } + + return getFieldMetadataFromSchemaType(current); +} + +/** + * Finds a field within a schema type structure + */ +function findFieldInSchemaType(schemaType: IOType, fieldId: string): IOType | null { + const fields = schemaType.fields; + if (fields && Array.isArray(fields)) { + for (const field of fields) { + if (field.id === fieldId || field.variableName === fieldId) { + return field; + } + + const found = findFieldInSchemaType(field, fieldId); + if (found) { + return found; + } + } + } + + const member = schemaType.member; + if (member) { + if (member.id === fieldId || member.variableName === fieldId) { + return member; + } + return findFieldInSchemaType(member, fieldId); + } + + return null; +} + +/** + * Converts flat mapping structure to nested format + */ +function convertFlatToNestedMap(flatMap: { [key: string]: MappingJson }): { [key: string]: MappingJson } { + const nested: { [key: string]: MappingJson } = {}; + + for (const [flatKey, value] of Object.entries(flatMap)) { + const parts = flatKey.split('.'); + let current = nested; + + for (let i = 0; i < parts.length - 1; i++) { + const part = parts[i]; + if (!(part in current)) { + current[part] = {}; + } else if (typeof current[part] !== 'object' || current[part] === null) { + current[part] = {}; + } + current = current[part] as { [key: string]: MappingJson }; + } + + const lastPart = parts[parts.length - 1]; + current[lastPart] = value; + } + + return nested; +} + +// ============================================================================= +// ENHANCED MAIN ORCHESTRATOR FUNCTION +// ============================================================================= + +/** + * Enhanced main function for AI-powered data mapping generation with inline schema support + */ +async function mapInlineData(payload: InlineDataMapperModelResponse): Promise { + const maxRetries = 3; + let retries = 0; + let lastError: Error; + + while (retries < maxRetries) { + if (retries > 0) { + console.debug("Retrying to generate mappings for the payload."); + } + + try { + // Extract existing mapping field hints + const mappingFields: { [key: string]: MappingFields } = payload.mappingsModel.mapping_fields || {}; + + // STEP 1: Generate AI-powered mappings using Claude + const generatedMappings = await getInlineMappings((payload.mappingsModel as ExpandedDMModel)?.inputs, (payload.mappingsModel as ExpandedDMModel)?.output, payload.mappingsModel.mappings, mappingFields); + + if (Object.keys(generatedMappings).length === 0) { + const error = new Error("No valid fields were identified for mapping between the given input and output records."); + lastError = error; + retries += 1; + continue; + } + + // STEP 2: Prepare inline inputs for validation + const inlineInputs: InlineInputs = { + input: (payload.mappingsModel as ExpandedDMModel)?.inputs, + output: (payload.mappingsModel as ExpandedDMModel)?.output + }; + + // STEP 3: Validate and process AI-generated mappings with inline schema + const evaluateMappingsResult = await evaluateInlineMappings([], generatedMappings, inlineInputs); + + if (evaluateMappingsResult) { + // STEP 4: Extract and structure the validated mappings + const mappings = extractMappings(evaluateMappingsResult); + return mappings; + } else { + throw new Error("Failed to generate mappings for the payload."); + } + } catch (error) { + console.error(`Error occurred while generating mappings: ${error}`); + lastError = error as Error; + retries += 1; + continue; + } + } + throw lastError; +} + +// Import all existing functions from the original implementation +async function getInlineMappings( + inputJsonRecord: IOType[], + outputJsonRecord: IOType, + userMappings: InlineDataMapping[], + mappingTips: { [key: string]: MappingFields } +): Promise { + const prompt = getInlineDataMappingPrompt( + JSON.stringify(inputJsonRecord), + JSON.stringify(outputJsonRecord), + JSON.stringify(userMappings), + JSON.stringify(mappingTips) + ); + + const messages: CoreMessage[] = [ + { role: "user", content: prompt } + ]; + + try { + const { object } = await generateObject({ + model: await getAnthropicClient(ANTHROPIC_SONNET_4), + maxTokens: 4096, + temperature: 0, + messages: messages, + schema: MappingSchema, + abortSignal: AIPanelAbortController.getInstance().signal, + }); + + const generatedMappings = object.generatedMappings as AIDataMappings; + return generatedMappings; + } catch (error) { + console.error("Failed to parse response:", error); + throw new Error(`Failed to parse mapping response: ${error}`); + } +} + +function extractMappings(evaluateMappingsResult: MappingJson): DatamapperResponse { + const mappings: { [key: string]: MappingJson } = {}; + + if (isMappingRecord(evaluateMappingsResult)) { + throw new Error("EvaluateMappingsResult is a MappingRecord, expected map structure."); + } + + if (typeof evaluateMappingsResult === "object" && evaluateMappingsResult !== null) { + for (const [key, value] of Object.entries(evaluateMappingsResult)) { + if (isMappingRecord(value)) { + mappings[key] = value; + } else if (typeof value === "object" && value !== null) { + const nestedMappingsResult = extractMappings(value as MappingJson); + mappings[key] = nestedMappingsResult.mappings; + } + } + } + + return { mappings }; +} + +// ============================================================================= +// UTILITY FUNCTIONS +// ============================================================================= + +function isMappingRecord(value: any): value is MappingRecord { + return value && typeof value === "object" && "operation" in value && "targetType" in value && "parameters" in value; +} + +function isMapping(value: any): value is { OPERATION: MappingOperation } { + return value && typeof value === "object" && "OPERATION" in value; +} + +// ============================================================================= +// MAIN EXPORT FUNCTION +// ============================================================================= + +export async function generateInlineAutoMappings(payload?: InlineDataMapperModelResponse): Promise { + if (!payload) { + throw new Error("Payload is required for generating auto mappings"); + } + try { + return await mapInlineData(payload); + } catch (error) { + console.error(`Error generating auto mappings: ${error}`); + throw error; + } +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/inline_prompt.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/inline_prompt.ts new file mode 100644 index 00000000000..0918903a181 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/inline_prompt.ts @@ -0,0 +1,146 @@ +// 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. + +/** + * Generates the inline data mapping prompt for AI + */ +export function getInlineDataMappingPrompt(inputJson: string, outputJson: string, userMappings: string, mappingTips: string): string { + return `You are an assistant that can help to map attributes between multiple JSON objects (data-mapping). + +## Instructions + +Before starting the mapping process, consider the mappings provided by the user mappings and mapping tips below. Use the user's and mapping tips as a guide/tip to do the mapping process, ensuring that they are relevant to input and output JSON. Only use the tips in user's mappings and mapping tips that have input and output records and their fields and subfields are in input and output JSON. Otherwise omit the irrelevant mapping guides. + +## Input JSON + +${inputJson} + +## Output JSON + +${outputJson} + +## User's Mappings + +${userMappings} + +## Mapping Tips + +${mappingTips} + +## Mapping Rules + +Follow these rules during data mapping: + +1. One or more input JSON can be given +2. Only a single output JSON can be given +3. Mapping the fields requires performing operations on the data. Most common operation is to do a one-to-one mapping with no transformations +4. One or more fields in the input JSON may be required to construct the output field value in-case we have complex operations that require multiple input fields +5. Some input fields may not participate in any mappings if they are irrelevant to the output field +6. Some output fields may not participate in any mappings if they are irrelevant to the input field +7. Field access uses dot notation for JSON format. To access subfield "abc" from object "xyz", use "xyz.abc". For accessing fields with IDs like "input.contactInfo.email", use the exact ID path as provided in the schema. +8. Strictly follow data types accepted and returned by the operations when mapping input fields +9. When mapping, you must use operators which return the expected data type +10. When Mapping, consider the information mentioned in the comments +11. DO NOT use the value in the field "optional" when mapping the fields +12. DO NOT map anything if you aren't sure +13. If both input and output are records type, DO mapping for all its fields and subfields but DO NOT map in the root level +14. Consider constants, configurables, variables, enum values, and module variables when mapping fields +15. Constants, variables, module variables and configurables can be mapped directly using their defined values +16. Enum values should be mapped using their exact enum identifiers +17. Consider both user's mappings and mapping tips when determining field relationships and transformations +18. Mapping tips provide additional mapping context from previous operations or related mappings that can be used as reference + +## Available Operations + +### 0) Direct Mapping +- ${"DIRECT(x)"} - used to substitute with x without any transformations +- **For input fields, variables, and module variables: use field path (e.g., "input.fieldName")** +- **For constants and configurables: use their defined values** +- **For enums: use their exact enum identifiers** + +### 1) Arithmetic Expressions +- ${"ADDITION(x, y, z, ...)"} - add variables x, y and z and so on +- ${"SUBTRACTION(x, y)"} - subtract y from x +- ${"MULTIPLICATION(x, y, z, ...)"} - multiply x, y and z and so on +- ${"DIVISION(x, y)"} - divide x by y +- ${"MODULAR(x, y)"} - get the modular division between x and y i.e. x%y + +### 2) Equality Expressions +- ${"EQUAL(x, y)"} - return true if x and y are equal +- ${"NOTEQUAL(x, y)"} - return true if x and y are not equal + +### 3) Relational Expressions +- ${"LESS_THAN(x, y)"} - return true if x is less than y +- ${"LESS_THAN_OR_EQUAL(x, y)"} - return true if x is less than or equals to y + +### 4) Logical Expressions +- ${"AND(x, y)"} - return x AND y value +- ${"OR(x, y)"} - return x OR y value + +### 5) Member Access Expressions +- ${"x[y]"} - access y th element of x array object in the json + +### 6) Regex Operations +- ${"SPLIT(regex, text)"} - Split the string text based on the regex and returns an array of strings (string[]) + - Example: ${"SPLIT(\",\", \"word1, word2, word3\")"} will return a string array ["word1", "word2", "word3"] + - Example: ${"SPLIT(\" \", \"word1 word2 word3\")"} will return a string array ["word1", "word2", "word3"] +- ${"REPLACE_ALL(regex, text, replacement)"} - Replace all the instances of regex in the text using string replacement + - Example: ${"REPLACE_ALL(\" \", \"word1 word2 word3\", \"\")"} will return a string "word1word2word3" + +For above two operations, regex value must be one or combination of the following: [" ", "_", "-", "\\n", ",", "\\."], here "\\" is used to escape special characters. + +### 7) Numerical Operations +- ${"AVERAGE(x, TYPE)"} - get the average over x. x is a single array of variables of TYPE (ex - [12, 13, 14]) when TYPE is INTEGER. TYPE can be either INT, DECIMAL, or FLOAT +- ${"MAXIMUM(x, TYPE)"} - get the maximum over x. x is an array of variables of TYPE(ex - [12, 13, 14]) when TYPE is INTEGER. TYPE can be either INT, DECIMAL, or FLOAT +- ${"MINIMUM(x, TYPE)"} - get the minimum over x. x is a single array of variables of TYPE (ex - [12, 13, 14]) when TYPE is INTEGER. TYPE can be either INT, DECIMAL, or FLOAT +- ${"SUMMATION(x, TYPE)"} - get the summation over x. x is a single array of variables of TYPE(ex - [12, 13, 14]) when TYPE is INTEGER. TYPE can be either INT, DECIMAL, or FLOAT +- ${"ABSOLUTE(x, TYPE)"} - get the absolute value of the given variable of TYPE, x. TYPE can be either INT, DECIMAL, or FLOAT + +### 8) Array Operations +- ${"LENGTH(x)"} - Get the length of an array named x + +## Response Format + +Always use the following json format to respond without any markdown formatting: + +{ + "": { + "OPERATION": { + "NAME": "", + "PARAMETER_1": "", + "PARAMETER_2": "" + // ...additional parameters as needed + } + } + // ...additional fields as needed +} + +## IMPORTANT NOTES: + +- **DO NOT RETURN ANYTHING OTHER THAN THE MAPPING JSON!** +- **DO NOT ENCLOSE THE RESULT JSON WITH ANYTHING.** +- **DO NOT USE MARKDOWN CODE BLOCKS OR BACKTICKS.** +- **RETURN ONLY RAW JSON WITHOUT ANY FORMATTING OR WRAPPER.** +- **FOR DIRECT MAPPINGS:** + - **Input fields, variables, constants, configurables and module variables: use field ID/path from the input schema** + - **Enum values: use their exact enum identifiers** + - **DEFAULT VALUES AND NULL LIKE VALUES MUST NOT BE MAPPED DIRECT.** +- **Use the exact field IDs as provided in the input/output schema (e.g., "input.contactInfo.email", "output.salaryInfo.baseSalary")** +- **Consider mapping tips as additional reference for understanding field relationships and mapping patterns** +`; +} + + diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/prompt.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/prompt.ts new file mode 100644 index 00000000000..2a123808886 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/prompt.ts @@ -0,0 +1,348 @@ +// 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. + +/** + * Generates the main data mapping prompt for AI + */ +export function getDataMappingPrompt(inputJson: string, outputJson: string, mappingFields: string): string { + return `You are an assistant that can help to map attributes between multiple json (a.k.a data-mapping). +Before starting the mapping process, consider the mappings provided by the user below. +Use the user's mappings as a guide/tip to do the mapping process, ensuring that they are relevant to input and output json. +Only use the tips in user's mappings that is input and output records and their fields and subfields are in input and output json. Otherwise omit the irrelevant user's mapping guides. +Also, use the below rules to do the data mapping. + +Following rules should be followed during data mapping. +1) One or more input json can be given +2) Only a single output json can be given +3) Mapping the fields requires performing operations on the data. Most common operation is to do a one-to-one mapping with no transformations. +4) One or more fields in the input json may be required to construct the output field value in-case we have complex operations that require multiple input fields. +5) Some input fields may not participate in any mappings if they are irrelevant to the output field. +6) Some output fields may not participate in any mappings if they are irrelevant to the input field. +7) Accessing the subfield "abc" from object "xyz" can be denoted as "xyz.abc". If the field contains a single quote at the beginning of the field name, include that field with the single quote in front of it in the path. +8) Strictly follow data types accepted and returned by the operations when mapping input fields. +9) When mapping, you must use operators which return the expected data type. +10) When Mapping, consider the information mentioned in the comments. +11) DO NOT use the value in the field "optional" when mapping the fields. +12) DO NOT map anything if you aren't sure. +13) If both input and output are records type, DO mapping for all its fields and subfields but DO NOT map in the root level. + +Following operations/transformations can be used during a mapping between input and output fields. Use ONLY the operations listed below. +0) Direct Mapping + DIRECT(x) used to substitute with x without any transformations +1) Arithmetic Expressions + 1.1) ADDITION(x, y, z, ...) : add variables x, y and z and so on + 1.2) SUBTRACTION(x, y) : subtract y from x + 1.3) MULTIPLICATION(x, y, z, ...) : multiply x, y and z and so on + 1.4) DIVISION(x, y) : divide x by y + 1.5) MODULAR(x, y) : get the modular division between x and y i.e. x%y +2) Equality Expressions + 2.1) EQUAL(x, y) : return true if x and y are equal + 2.2) NOTEQUAL(x, y) : return true if x and y are not equal +3) Relational Expressions + 3.1) LESS_THAN(x, y) : return true if x is less than y + 3.2) LESS_THAN_OR_EQUAL(x, y) : return true if x is less than or equals to y +4) Logical Expressions + 4.1) AND(x, y) : return x AND y value + 4.2) OR(x, y) : return x OR y value +5) Member Access Expressions + 5.1) x[y] : access y th element of x array object in the json +6) Regex Operations + 6.1) SPLIT(text, regex) : Split the string text based on the regex and returns an array of strings (string[]). + Example: + SPLIT("word1, word2, word3", ",") will return a string array ["word1", "word2", "word3"]. + SPLIT("word1 word2 word3", " ") will return a string array ["word1", "word2", "word3"]. + 6.2) REPLACE_ALL(text, regex, replacement) : Replace all the instances of regex in the text using string replacement. + Example - REPLACE_ALL("word1 word2 word3", " ", "") will return a string "word1word2word3" + For above two operations, regex value must be one or combination of the following : [" ", "_", "-", "\n", ",", "\." ], here "\" is used to escape special characters. + +7) Numerical Operations + 7.1) AVERAGE(x, TYPE) : get the average over x. x is a single array of variables of TYPE (ex - [12, 13, 14]) when TYPE is INTEGER .TYPE can be either INT, DECIMAL, or FLOAT. + 7.2) MAXIMUM(x, TYPE) : get the maximum over x. x is an array of variables of TYPE(ex - [12, 13, 14]) when TYPE is INTEGER .TYPE can be either INT, DECIMAL, or FLOAT. + 7.3) MINIMUM(x, TYPE) : get the minimum over x. x is a single array of variables of TYPE (ex - [12, 13, 14]) when TYPE is INTEGER .TYPE can be either INT, DECIMAL, or FLOAT. + 7.4) SUMMATION(x, TYPE) : get the summation over x. x is a single array of variables of TYPE(ex - [12, 13, 14]) when TYPE is INTEGER .TYPE can be either INT, DECIMAL, or FLOAT. + 7.5) ABSOLUTE(x, TYPE) : get the absolute value of the given variable of TYPE, x .TYPE can be either INT, DECIMAL, or FLOAT. + +8) Array Operations + 8.1) LENGTH(x) : Get the length of an array named x + +Always use the following json format to respond. +\`\`\` +{ + "": { + "OPERATION": { + "NAME": "", + "PARAMETER_1" : , + "PARAMETER_2" : , + ... + ... + ... + } + }, + ... +} +\`\`\` +Following is an example of the input, output and the mapping: + +Example Input json : + +\`\`\` +{ + "studentDetails": { + "id":{ + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"student id" + }, + "tags":{ + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"student tags" + }, + "bio":{ + "firstName": { + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"first name of the student" + }, + "lastName":{ + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"Last name of the student" + }, + "age":{ + "type":"int", + "optional" : false, + "nullable" : false, + "comment":"age in years" + } + }, + "address":{ + "address1": { + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"address line 1" + }, + "address2":{ + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"address line 2" + }, + "city":{ + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"city of the address" + }, + "country":{ + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"country of residence" + }, + "zip":{ + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"zip code" + } + }, + "academicDetails": { + "major":{ + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"major of the degree" + }, + "subjects":{ + "type":"string[]", + "optional" : false, + "nullable" : false, + "comment":"enrolled subjects" + } + } + }, + "studentProgress": { + "studentId":{ + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"student id" + }, + "currentLevel":{ + "type": "string", + "optional" : false, + "nullable" : false, + "comment": "current grade of the student" + } + } +} + +\`\`\` + +Example Output json : + +\`\`\` +{ + "studentId":{ + "type":"int", + "optional" : true, + "nullable" : true, + "comment":"reservation id" + }, + "studentTags":{ + "type":"string[]", + "optional" : false, + "nullable" : false, + "comment":"student tags" + }, + "bio":{ + "fullName": { + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"full name of the student" + }, + "age":{ + "type":"int", + "optional" : false, + "nullable" : false, + "comment":"age in years" + } + }, + "address":{ + "type":"string", + "optional" : false, + "nullable" : false, + "comment":"address of the student" + }, + "AcademicMajor":{ + "type":"string", + "optional" : true, + "comment":"major of the degree" + }, + "subjects":{ + "type":"string[]", + "optional" : false, + "nullable" : false, + "comment":"enrolled subjects" + }, + "currentLevel": { + "type": "string", + "optional" : true, + "nullable" : true, + "comment": "current grade of the student" + } +} + +\`\`\` + +Example Mapping: +\`\`\` +{ + "studentId": { + "OPERATION": { + "NAME": "DIRECT", + "PARAMETER_1": "studentDetails.id", + "PARAMETER_2": "INT" + } + }, + "studentTags": { + "OPERATION": { + "NAME": "SPLIT", + "PARAMETER_1": "studentDetails.tags", + "PARAMETER_2": "," + } + }, + "bio": { + "fullName": { + "OPERATION": { + "NAME": "ADDITION", + "PARAMETER_1": "studentDetails.bio.firstName", + "PARAMETER_2": " ", + "PARAMETER_3": "studentDetails.bio.lastName" + } + }, + "age": { + "OPERATION": { + "NAME": "DIRECT", + "PARAMETER_1": "studentDetails.bio.age" + } + } + }, + "address": { + "OPERATION": { + "NAME": "ADDITION", + "PARAMETER_1": "studentDetails.address.address1", + "PARAMETER_2": ", ", + "PARAMETER_3": "studentDetails.address.address2", + "PARAMETER_4": ", ", + "PARAMETER_5": "studentDetails.address.country", + "PARAMETER_6": ", ", + "PARAMETER_7": "studentDetails.address.zip" + } + }, + "academicMajor": { + "OPERATION": { + "NAME": "DIRECT", + "PARAMETER_1": "studentDetails.academicDetails.major" + } + }, + "subjects": { + "OPERATION": { + "NAME": "DIRECT", + "PARAMETER_1": "studentDetails.academicDetails.subjects" + } + }, + "currentLevel": { + "OPERATION": { + "NAME": "DIRECT", + "PARAMETER_1": "studentDetails.studentProgress.currentLevel" + } + } +} + +\`\`\` +Now using the above rules find the mappings for the following input and output records. + +IMPORTANT : +DO NOT RETURN ANYTHING OTHER THAN THE MAPPING JSON! +DO NOT ENCLOSE THE RESULT JSON WITH ANYTHING. +FOR DIRECT MAPPINGS THE PARAMETER MUST BE A FIELD PATH IN THE INPUT. DEFAULT VALUES AND NULL LIKE VALUES MUST NOT BE MAPPED DIRECT. + +User's mappings +\`\`\` +${mappingFields} +\`\`\` + + +Input json +\`\`\` +${inputJson} +\`\`\` + + +Output json +\`\`\` +${outputJson} +\`\`\` +`; +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/schema.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/schema.ts new file mode 100644 index 00000000000..eae58bd7d50 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/schema.ts @@ -0,0 +1,61 @@ +// 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 { z } from 'zod'; + +// Schema for individual operation +const OperationSchema = z.object({ + NAME: z.string(), + PARAMETER_1: z.union([z.string(), z.number()]).optional(), + PARAMETER_2: z.union([z.string(), z.number()]).optional(), + PARAMETER_3: z.union([z.string(), z.number()]).optional(), + PARAMETER_4: z.union([z.string(), z.number()]).optional(), + PARAMETER_5: z.union([z.string(), z.number()]).optional(), + PARAMETER_6: z.union([z.string(), z.number()]).optional(), + PARAMETER_7: z.union([z.string(), z.number()]).optional(), + PARAMETER_8: z.union([z.string(), z.number()]).optional(), + PARAMETER_9: z.union([z.string(), z.number()]).optional(), + PARAMETER_10: z.union([z.string(), z.number()]).optional(), +}); + +// Schema for a field mapping that contains an operation +const FieldMappingSchema = z.object({ + OPERATION: OperationSchema +}); + +// Schema for nested field mappings (like bio.fullName, bio.age) +const NestedFieldMappingSchema = z.record( + z.string(), + z.union([ + FieldMappingSchema, + z.lazy(() => NestedFieldMappingSchema) + ]) +); + +// Main schema for the complete data mapping +export const DataMappingSchema = z.record( + z.string(), + z.union([ + FieldMappingSchema, + NestedFieldMappingSchema + ]) +); + +// Top-level schema for the data mapping +export const MappingSchema = z.object({ + generatedMappings: DataMappingSchema +}); + 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 new file mode 100644 index 00000000000..28c761ba9f5 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/datamapper/types.ts @@ -0,0 +1,178 @@ +// 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 { IOType } from "@wso2/ballerina-core"; + +// ============================================================================= +// OPERATION TYPES +// ============================================================================= + +export type OperationType = string; + +// ============================================================================= +// MAPPING TYPES +// ============================================================================= + +export interface MappingRecord { + operation: OperationType; + targetType: string; + parameters: string[]; +} + +export type MappingJson = MappingRecord | { [key: string]: MappingJson }; + +export interface DatamapperResponse { + mappings: { [key: string]: MappingJson }; +} + +export interface Payload { + inputs: { [key: string]: RecordField }; + output: { [key: string]: RecordField }; + inputMetadata: { [key: string]: Metadata }; + outputMetadata: { [key: string]: MetadataField }; + mapping_fields?: { [key: string]: MappingFields }; +} + +// ============================================================================= +// FIELD AND METADATA TYPES +// ============================================================================= + +export interface SimpleField { + type: string; + comment: string; +} + +export interface MappingOperation { + NAME: OperationType; + PARAMETER_1: string; + PARAMETER_2?: string; + PARAMETER_3?: string; + PARAMETER_4?: string; +} + +export type RecordField = SimpleField | { [key: string]: RecordField }; + +export interface Mapping { + OPERATION: MappingOperation; +} + +export type AIDataMappings = (Mapping) | { [key: string]: AIDataMappings }; + +export interface Metadata { + parameterName: string; + parameterType: string; + type: string; + isArrayType?: boolean; + fields: { [key: string]: MetadataField }; +} + +export interface MetadataField { + type: string; + typeInstance: string; + typeName: string; + nullable: boolean; + optional: boolean; + fields?: { [key: string]: MetadataField }; + members?: { [key: string]: MetadataField }; +} + +// ============================================================================= +// MAPPING HINT TYPES +// ============================================================================= + +export interface MappingField { + MAPPING_TIP: string; + INPUT_FIELDS: string[]; +} + +export type MappingFields = MappingField | { [key: string]: MappingFields }; + +export type MetadataType = Metadata | MetadataField | { [key: string]: MetadataField }; + +export interface Inputs { + input: { [key: string]: Metadata }; + output: { [key: string]: MetadataField }; +} + +// ============================================================================= +// OPERATION METADATA STRUCTURES +// ============================================================================= + +export interface FieldMetadata { + type: string; + optional: boolean; + nullable: boolean; +} + +export interface ParameterMetadata extends FieldMetadata { + input: string; +} + +export interface Structure { + operation: string; + outputType: string[]; + inputType: string[]; + imports: { + org?: string; + package?: string; + }; + errorReturned: boolean; + expression: string; +} + +export interface Operation { + readonly name: string; + structure: Structure; +} + +// ============================================================================= +// API RESPONSE TYPES +// ============================================================================= + +export interface ChatMessage { + role: string; + content: string; +} + +export interface ChatChoice { + message: ChatMessage; + index: number; + finish_reason: string; +} + +export interface ChatResponse { + choices: ChatChoice[]; + usage?: { + prompt_tokens: number; + completion_tokens: number; + total_tokens: number; + }; +} + +// ============================================================================= +// INLINE DATAMAPPING TYPES +// ============================================================================= + +export interface InlineDataMapping { + output: string; + inputs?: string[]; + expression: string; +} + +export interface InlineInputs { + input: IOType[]; + output: IOType; +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/event.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/event.ts new file mode 100644 index 00000000000..f8f57417b3e --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/event.ts @@ -0,0 +1,55 @@ +// 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 { ChatNotify, ChatContent, Command } from "@wso2/ballerina-core"; +import { sendContentAppendNotification, sendContentReplaceNotification, sendDiagnosticMessageNotification, sendErrorNotification, sendMessagesNotification, sendMessageStartNotification, sendMessageStopNotification, sendTestGenIntermidateStateNotification } from "./utils"; + +export type CopilotEventHandler = (event: ChatNotify) => void; + +// Event listener that handles events and sends notifications +export function createWebviewEventHandler(command: Command): CopilotEventHandler { + return (event: ChatNotify) => { + switch (event.type) { + case 'start': + sendMessageStartNotification(); + break; + case 'content_block': + sendContentAppendNotification(event.content); + break; + case 'content_replace': + sendContentReplaceNotification(event.content); + break; + case 'error': + sendErrorNotification(event.content); + break; + case 'stop': + sendMessageStopNotification(command); + break; + case 'intermediary_state': + sendTestGenIntermidateStateNotification(event.state); + break; + case 'messages': + sendMessagesNotification(event.messages); + break; + case 'diagnostics': + sendDiagnosticMessageNotification(event.diagnostics); + break; + default: + console.warn(`Unhandled event type: ${event}`); + break; + } + }; +} 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 new file mode 100644 index 00000000000..df736b7f877 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/healthcare/healthcare.ts @@ -0,0 +1,380 @@ +// 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 { CoreMessage, generateObject, streamText } from "ai"; +import { getAnthropicClient, ANTHROPIC_HAIKU, ANTHROPIC_SONNET_4 } from "../connection"; +import { GenerationType, getRelevantLibrariesAndFunctions } from "../libs/libs"; +import { getRewrittenPrompt, populateHistory, transformProjectSource, getErrorMessage } from "../utils"; +import { libraryContains } from "../libs/funcs"; +import { LANGLIBS } from "../libs/langlibs"; +import { + GetTypeResponse, + GetTypesRequest, + GetTypesResponse, + getTypesResponseSchema, + Library, + MiniType, + TypeDefinition, +} from "../libs/libs_types"; +import { + FileAttatchment, + GenerateCodeRequest, + ProjectSource, + SourceFiles, + OperationType, + Command +} from "@wso2/ballerina-core"; +import { getProjectSource } from "../../../../rpc-managers/ai-panel/rpc-manager"; +import { CopilotEventHandler, createWebviewEventHandler } from "../event"; +import { AIPanelAbortController } from "../../../../../src/rpc-managers/ai-panel/utils"; +import { stringifyExistingCode } from "../code/code"; + + +// Core healthcare code generation function that emits events +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 relevantTrimmedFuncs: Library[] = ( + await getRelevantLibrariesAndFunctions({ query: prompt }, GenerationType.HEALTHCARE_GENERATION) + ).libraries; + + const historyMessages = populateHistory(params.chatHistory); + + const allMessages: CoreMessage[] = [ + { + role: "system", + content: getSystemPromptPrefix(relevantTrimmedFuncs, sourceFiles), + }, + { + role: "system", + content: getSystemPromptSuffix(LANGLIBS), + providerOptions: { + anthropic: { cacheControl: { type: "ephemeral" } }, + }, + }, + ...historyMessages, + { + role: "user", + content: getUserPrompt(prompt, sourceFiles, params.fileAttachmentContents, packageName, params.operationType), + providerOptions: { + anthropic: { cacheControl: { type: "ephemeral" } }, + }, + }, + ]; + + const { fullStream } = streamText({ + model: await getAnthropicClient(ANTHROPIC_SONNET_4), + maxTokens: 4096 * 2, + temperature: 0, + messages: allMessages, + abortSignal: AIPanelAbortController.getInstance().signal, + }); + + eventHandler({ type: "start" }); + let assistantResponse: string = ""; + for await (const part of fullStream) { + switch (part.type) { + case "text-delta": { + const textPart = part.textDelta; + assistantResponse += textPart; + eventHandler({ type: "content_block", content: textPart }); + break; + } + case "error": { + const error = part.error; + console.error("Error during Code generation:", error); + eventHandler({ type: "error", content: getErrorMessage(error) }); + break; + } + case "finish": { + const finishReason = part.finishReason; + console.log("Finish reason: ", finishReason); + if (finishReason === "error") { + // Already handled in error case. + break; + } + eventHandler({ type: "stop", command: Command.Healthcare }); + break; + } + } + } +} + +// Main public function that uses the default event handler +export async function generateHealthcareCode(params: GenerateCodeRequest): Promise { + const eventHandler = createWebviewEventHandler(Command.Healthcare); + try { + await generateHealthcareCodeCore(params, eventHandler); + } catch (error) { + console.error("Error during healthcare generation:", error); + eventHandler({ type: "error", content: getErrorMessage(error) }); + } +} + +export function getSystemPromptPrefix(apidocs: Library[], sourceFiles: SourceFiles[]): 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: + +1. API_DOCS: A JSON string containing the API documentation for various Ballerina libraries and their functions, types, and clients. + +${JSON.stringify(apidocs)} + +`; +} + +function getSystemPromptSuffix(langlibs: Library[]) { + return `2. Langlibs + +${JSON.stringify(langlibs)} + + +If the query doesn't require code examples, answer the code by utilzing the api documentation. +If the query requires code, Follow these steps to generate the Ballerina code: + +1. Carefully analyze the provided API documentation: + - Identify the available libraries, clients, their functions and their relavant types. + +2. Thoroughly read and understand the given query: + - Identify the main requirements and objectives of the integration. + - Determine which libraries, functions and their relavant records and types from the API documentation which are needed to achieve the query and forget about unused API docs. + - Note the libraries needed to achieve the query and plan the control flow of the applicaiton based input and output parameters of each function of the connector according to the API documentation. + +3. Plan your code structure: + - Decide which libraries need to be imported (Avoid importing lang.string, lang.boolean, lang.float, lang.decimal, lang.int, lang.map langlibs as they are already imported by default). + - Determine the necessary client initialization. + - Define Types needed for the query in the types.bal file. + - Outline the service OR main function for the query. + - Outline the required function usages as noted in Step 2. + - Based on the types of identified functions, plan the data flow. Transform data as necessary. + - Note the special Ballerina libraries that you ALWAYS have to import into your code: + + import ballerinax/health.fhir.r4.international401 as international401; + import ballerinax/health.fhir.r4 as r4; + import ballerinax/health.fhir.r4.parser as parser; + import ballerina/io as io; + import ballerinax/health.hl7v2 as hl7v2; + import ballerinax/health.hl7v2commons as hl7v2commons; + + +4. Generate the Ballerina code: + - Start with the required import statements. + - Define required configurables for the query. Use only string, int, boolean types in configurable variables. + - Initialize any necessary clients with the correct configuration at the module level(before any function or service declarations). + - Implement the main function OR service to address the query requirements. + - Use defined connectors based on the query by following the API documentation. + - Use only the functions, types, and clients specified in the API documentation. + - Use dot donation to access a normal function. Use -> to access a remote function or resource function. + - Ensure proper error handling and type checking. + - Do not invoke methods on json access expressions. Always Use seperate statements. + - Use langlibs ONLY IF REQUIRED. + +5. Review and refine your code: + - Check that all query requirements are met. + - Verify that you're only using elements from the provided API documentation. + - Ensure the code follows Ballerina best practices and conventions. + +Provide a brief explanation of how your code addresses the query and then output your generated ballerina code. + +Important reminders: +- Only use the libraries, functions, types, services and clients specified in the provided API documentation. +- Always strictly respect the types given in the API Docs. +- Do not introduce any additional libraries or functions not mentioned in the API docs. +- Only use specified fields in records according to the api docs. this applies to array types of that record as well. +- Ensure your code is syntactically correct and follows Ballerina conventions. +- Do not use dynamic listener registrations. +- Do not write code in a way that requires updating/assigning values of function parameters. +- ALWAYS Use two words camel case identifiers (variable, function parameter, resource function parameter and field names). +- If the library name contains a . Always use an alias in the import statement. (import org/package.one as one;) +- Treat generated connectors/clients inside the generated folder as submodules. +- A submodule MUST BE imported before being used. The import statement should only contain the package name and submodule name. For package my_pkg, folder strucutre generated/fooApi the import should be \`import my_pkg.fooApi;\` +- If the return parameter typedesc default value is marked as <> in the given API docs, define a custom record in the code that represents the data structure based on the use case and assign to it. +- Whenever you have a Json variable, NEVER access or manipulate Json variables. ALWAYS define a record and convert the Json to that record and use it. +- When invoking resource function from a client, use the correct paths with accessor and paramters. (eg: exampleClient->/path1/["param"]/path2.get(key="value")) +- When you are accessing a field of a record, always assign it into new variable and use that variable in the next statement. +- Avoid long comments in the code. Use // for single line comments. +- Always use named arguments when providing values to any parameter. (eg: .get(key="value")) +- Mention types EXPLICITLY in variable declarations and foreach statements. +- Do not modify the README.md file unless asked to be modified explicitly in the query. +- Do not add/modify toml files(Config.toml/Ballerina.toml) unless asked. +- In the library API documentation if the service type is specified as generic, adhere to the instructions specified there on writing the service. +- ALWAYS use payload bindings when implementing the resource functions of the services. + \`\`\ + import ballerina/http; + type Album readonly & record {| + string title; + string artist; + |}; + table key(title) albums = table []; + service / on new http:Listener(9090) { + // The \`album\` parameter in the payload annotation represents the entity body of the inbound request. + resource function post albums(Album album) returns Album { + albums.add(album); + return album; + } + } + \`\`\ + - Note the use of \`Album\` instead of a json payload. + +Begin your response with the explanation, once the entire explanation is finished only, include codeblock segments(if any) in the end of the response. +The explanation should explain the control flow decided in step 2, along with the selected libraries and their functions. + +Each file which needs modifications, should have a codeblock segment and it MUST have complete file content with the proposed change. +The codeblock segments should only have .bal contents and it should not generate or modify any other file types. Politely decline if the query requests for such cases. + +Example Codeblock segments: + If the generated code is a service, use an appropriate name for the file. Use \`service\` as a prefix to the file name. Example: + + \`\`\ballerina + //code goes here + \`\`\ + + + If the generated code is a main function, use an appropriate name for the file. Use \`main\` as a prefix to the file name. Example: + + \`\`\ballerina + //code goes here + \`\`\ + +`; +} + +function getUserPrompt( + usecase: string, + existingCode: SourceFiles[], + 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")}`; + } + + return `QUERY: The query you need to answer using the provided api documentation. + +${usecase} + + +Existing Code: Users existing code. + +${stringifyExistingCode(existingCode, op)} + + +Current Package name: ${packageName} + +${fileInstructions} + +`; +} + +export async function getRequiredTypesFromLibJson( + libraries: string[], + prompt: string, + librariesJson: Library[] +): Promise { + if (librariesJson.length === 0) { + return []; + } + + const typeDefs: GetTypesRequest[] = librariesJson + .filter((lib) => libraryContains(lib.name, libraries)) + .map((lib) => ({ + name: lib.name, + description: lib.description, + types: filteredTypes(lib.typeDefs), + })); + + if (typeDefs.length === 0) { + return []; + } + + const getLibSystemPrompt = `You are an assistant tasked with selecting the Ballerina types needed to solve a given question based on a set of Ballerina libraries given in the context as a JSON. + +Objective: Create a JSON output that includes a minimized version of the context JSON, containing only the selected libraries and types necessary to achieve a given question. + +Context Format: A JSON Object that represents a library with its name and types. + +Library Context JSON: +\`\`\`json +${JSON.stringify(typeDefs)} +\`\`\` + +Think step-by-step to choose the required types in order to solve the given question. +1. Identify the unique entities that are required to answer the question. Create a small description for each identified entitiy to better explain their role. +2. When selecting the necessary Ballerina types that represents those entities, consider the following factors: +2.1 Take the description of the types from the context as a way to understand the entity represented by it. +2.2 Compare the types descriptions against the descriptions you generated for each identity and find the mapping types for each entity. +2.3 Find the Ballerina libraries of the selected types using the given context. Use ONLY the given context to find the libraries. +3. For each selected type, find which fields of those types are required to answer the given question by referring to the given context. For each selected field; +3.1 Understands the types of those fields by referring to the context. +3.2 Context json has a link element which indicates the library name. +3.3 Make sure that you select those types and add to the output. When selecting those types pay attention to following: +3.3.1 For each new type, search the context and find the library which defines the new type. Use ONLY the given context to find the libraries. +3.3.2 Add the found library and the types to the output. +4. Once you select the types, please cross check and make sure they are placed under the correct library. +4.1 Go through each library and make sure they exist in the given context json. +4.2 Go through each library and verify the types by referring to the context. +4.2 Fix any issues found and try to re-identify the correct library the problematic type belongs to by referring to the context. +4.3 IT IS A MUST that you do these verification steps. +5. Simplify the type details as per the below rules. +5.1 Include only the type name in the context object. +5.2 Include the name of the type as SAME as the original context. +6. For each selected type, Quote the original type from the context in the thinking field. +7. Respond using the Output format with the selected functions. + +`; + const getLibUserPrompt = "QUESTION\n```\n" + prompt + "\n```"; + + const messages: CoreMessage[] = [ + { role: "system", content: getLibSystemPrompt }, + { role: "user", content: getLibUserPrompt }, + ]; + try { + const { object } = await generateObject({ + model: await getAnthropicClient(ANTHROPIC_HAIKU), + maxTokens: 8192, + temperature: 0, + messages: messages, + schema: getTypesResponseSchema, + abortSignal: AIPanelAbortController.getInstance().signal, + }); + + const libList = object as GetTypesResponse; + return libList.libraries; + } catch (error) { + throw new Error(`Failed to parse bulk functions response: ${error}`); + } +} + +function filteredTypes(typeDefinitions: TypeDefinition[]): MiniType[] { + return typeDefinitions.map((typeDef) => ({ + name: typeDef.name, + description: typeDef.description, + })); +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/funcs.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/funcs.ts new file mode 100644 index 00000000000..d898a0b36b4 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/funcs.ts @@ -0,0 +1,659 @@ +// 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 { generateObject, CoreMessage } from "ai"; + +import { GetFunctionResponse, GetFunctionsRequest, GetFunctionsResponse, getFunctionsResponseSchema, MinifiedClient, MinifiedRemoteFunction, MinifiedResourceFunction } from "./funcs_inter_types"; +import { Client, GetTypeResponse, Library, RemoteFunction, ResourceFunction } from "./libs_types"; +import { TypeDefinition, AbstractFunction, Type, RecordTypeDefinition } from "./libs_types"; +import { getAnthropicClient, ANTHROPIC_HAIKU } from "../connection"; +import { GenerationType } from "./libs"; +import { getRequiredTypesFromLibJson } from "../healthcare/healthcare"; +import { langClient } from "../../activator"; +import { getGenerationMode } from "../utils"; +import { AIPanelAbortController } from "../../../../../src/rpc-managers/ai-panel/utils"; + + +export async function selectRequiredFunctions(prompt: string, selectedLibNames: string[], generationType: GenerationType): Promise { + const selectedLibs: Library[] = await getMaximizedSelectedLibs(selectedLibNames, generationType); + const functionsResponse: GetFunctionResponse[] = await getRequiredFunctions(selectedLibNames, prompt, selectedLibs); + let typeLibraries: Library[] = []; + if (generationType === GenerationType.HEALTHCARE_GENERATION) { + const resp: GetTypeResponse[] = await getRequiredTypesFromLibJson(selectedLibNames, prompt, selectedLibs); + typeLibraries = toTypesToLibraries(resp, selectedLibs); + } + const maximizedLibraries: Library[] = toMaximizedLibrariesFromLibJson(functionsResponse, selectedLibs); + + // Merge typeLibraries and maximizedLibraries without duplicates + const mergedLibraries = mergeLibrariesWithoutDuplicates(maximizedLibraries, typeLibraries); + + return mergedLibraries; +} + +function getClientFunctionCount(clients: MinifiedClient[]): number { + return clients.reduce((count, client) => count + client.functions.length, 0); +} + +function toTypesToLibraries(types: GetTypeResponse[], fullLibs: Library[]): Library[] { + const librariesWithTypes: Library[] = []; + + for (const minifiedSelectedLib of types) { + try { + const fullDefOfSelectedLib = getLibraryByNameFromLibJson(minifiedSelectedLib.libName, fullLibs); + if (!fullDefOfSelectedLib) { + continue; + } + + const filteredTypes = selectTypes(fullDefOfSelectedLib.typeDefs, minifiedSelectedLib); + + librariesWithTypes.push({ + name: fullDefOfSelectedLib.name, + description: fullDefOfSelectedLib.description, + typeDefs: filteredTypes, + services: fullDefOfSelectedLib.services, + clients: [] + }); + } catch (error) { + console.error(`Error processing library ${minifiedSelectedLib.libName}:`, error); + } + } + + return librariesWithTypes; +} + +function getLibraryByNameFromLibJson(libName: string, librariesJson: Library[]): Library | null { + return librariesJson.find(lib => lib.name === libName) || null; +} + +function selectTypes(fullDefOfSelectedLib: any[], minifiedSelectedLib: GetTypeResponse): any[] { + const typesResult = minifiedSelectedLib.types; + if (!typesResult) { + return []; + } + + const output: any[] = []; + + if (fullDefOfSelectedLib.length === 0) { + throw new Error("Complete type list is not available"); + } + + for (const miniType of typesResult) { + const miniTypeName = miniType.name; + + for (const item of fullDefOfSelectedLib) { + if (item.name === miniTypeName) { + output.push(item); + break; + } + } + } + + return output; +} + +async function getRequiredFunctions(libraries: string[], prompt: string, librariesJson: Library[]): Promise { + if (librariesJson.length === 0) { + return []; + } + const startTime = Date.now(); + + const libraryList: GetFunctionsRequest[] = librariesJson + .filter(lib => libraryContains(lib.name, libraries)) + .map(lib => ({ + name: lib.name, + description: lib.description, + clients: filteredClients(lib.clients), + functions: filteredNormalFunctions(lib.functions) + })); + + const largeLibs = libraryList.filter(lib => getClientFunctionCount(lib.clients) >= 100); + const smallLibs = libraryList.filter(lib => !largeLibs.includes(lib)); + + console.log(`[Parallel Execution Plan] Large libraries: ${largeLibs.length} (${largeLibs.map(lib => lib.name).join(', ')}), Small libraries: ${smallLibs.length} (${smallLibs.map(lib => lib.name).join(', ')})`); + + // Create promises for large libraries (each processed individually) + const largeLiberiesPromises: Promise[] = largeLibs.map(funcItem => + getSuggestedFunctions(prompt, [funcItem]) + ); + + // Create promise for small libraries (processed in bulk) + const smallLibrariesPromise = smallLibs.length !== 0 + ? getSuggestedFunctions(prompt, smallLibs) + : Promise.resolve([]); + + console.log(`[Parallel Execution Start] Starting ${largeLiberiesPromises.length} large library requests + 1 small libraries bulk request`); + const parallelStartTime = Date.now(); + + // Wait for all promises to complete + const [smallLibResults, ...largeLibResults] = await Promise.all([ + smallLibrariesPromise, + ...largeLiberiesPromises + ]); + + const parallelEndTime = Date.now(); + const parallelDuration = (parallelEndTime - parallelStartTime) / 1000; + + console.log(`[Parallel Execution Complete] Total parallel execution time: ${parallelDuration}s`); + + // Flatten the results + const collectiveResp: GetFunctionResponse[] = [ + ...smallLibResults, + ...largeLibResults.flat() + ]; + const endTime = Date.now(); + const totalDuration = (endTime - startTime) / 1000; + + console.log(`[getRequiredFunctions Complete] Total function count: ${collectiveResp.reduce((total, lib) => total + (lib.clients?.reduce((clientTotal, client) => clientTotal + client.functions.length, 0) || 0) + (lib.functions?.length || 0), 0)}, Total duration: ${totalDuration}s, Preparation time: ${(parallelStartTime - startTime) / 1000}s, Parallel time: ${parallelDuration}s`); + + return collectiveResp; +} + +async function getSuggestedFunctions(prompt: string, libraryList: GetFunctionsRequest[]): Promise { + const startTime = Date.now(); + const libraryNames = libraryList.map(lib => lib.name).join(', '); + const functionCount = libraryList.reduce((total, lib) => total + getClientFunctionCount(lib.clients) + (lib.functions?.length || 0), 0); + + console.log(`[AI Request Start] Libraries: [${libraryNames}], Function Count: ${functionCount}`); + + const getLibSystemPrompt = "You are an AI assistant tasked with filtering and removing unwanted functions and clients from a given set of libraries and clients based on a user query. Your goal is to return only the relevant libraries, clients, and functions that match the user's needs."; + const getLibUserPrompt = ` +You will be provided with a list of libraries, clients, and their functions and user query. + + +${prompt} + + + +${JSON.stringify(libraryList)} + + +To process the user query and filter the libraries, clients, and functions, follow these steps: + +1. Analyze the user query to understand the specific requirements or needs. +2. Review the list of libraries, clients, and their functions. +3. Identify which libraries, clients, and functions are relevant to the user query. +4. Remove any libraries, clients, and functions that are not directly related to the user's needs. +5. Organize the remaining relevant information. + +Ensure that you only include libraries, clients, and functions that are directly relevant to the user query. If no relevant results are found, return an empty array for the libraries. + +Now, based on the provided libraries, clients, and functions, and the user query, please filter and return the relevant information. +`; + + const messages: CoreMessage[] = [ + { role: "system", content: getLibSystemPrompt }, + { role: "user", content: getLibUserPrompt } + ]; + try { + const { object } = await generateObject({ + model: await getAnthropicClient(ANTHROPIC_HAIKU), + maxTokens: 8192, + temperature: 0, + messages: messages, + schema: getFunctionsResponseSchema, + abortSignal: AIPanelAbortController.getInstance().signal + }); + + const libList = object as GetFunctionsResponse; + const endTime = Date.now(); + const duration = (endTime - startTime) / 1000; + + console.log(`[AI Request Complete] Libraries: [${libraryNames}], Duration: ${duration}s, Selected Functions: ${libList.libraries.reduce((total, lib) => total + (lib.clients?.reduce((clientTotal, client) => clientTotal + client.functions.length, 0) || 0) + (lib.functions?.length || 0), 0)}`); + + printSelectedFunctions(libList.libraries); + return libList.libraries; + } catch (error) { + const endTime = Date.now(); + const duration = (endTime - startTime) / 1000; + console.error(`[AI Request Failed] Libraries: [${libraryNames}], Duration: ${duration}s, Error: ${error}`); + throw new Error(`Failed to parse bulk functions response: ${error}`); + } +} + +function printSelectedFunctions(libraries: GetFunctionResponse[]): void { + console.log("Selected functions:", JSON.stringify(libraries, null, 2)); +} + +export function libraryContains(library: string, libraries: string[]): boolean { + return libraries.includes(library); +} + +function filteredClients(clients: Client[]): MinifiedClient[] { + return clients.map(cli => ({ + name: cli.name, + description: cli.description, + functions: filteredFunctions(cli.functions) + })); +} + +function filteredFunctions(functions: (RemoteFunction | ResourceFunction)[]): (MinifiedRemoteFunction | MinifiedResourceFunction)[] { + const output: (MinifiedRemoteFunction | MinifiedResourceFunction)[] = []; + + for (const item of functions) { + if ('accessor' in item) { // ResourceFunction + const res: MinifiedResourceFunction = { + accessor: item.accessor, + paths: item.paths, + parameters: item.parameters.map(param => param.name), + returnType: item.return.type.name + }; + output.push(res); + } else { // RemoteFunction + if (item.type !== "Constructor") { + const rem: MinifiedRemoteFunction = { + name: item.name, + parameters: item.parameters.map(param => param.name), + returnType: item.return.type.name + }; + output.push(rem); + } + } + } + + return output; +} + +function filteredNormalFunctions(functions?: RemoteFunction[]): MinifiedRemoteFunction[] | undefined { + if (!functions) { + return undefined; + } + + return functions.map(item => ({ + name: item.name, + parameters: item.parameters.map(param => param.name), + returnType: item.return.type.name + })); +} + +export async function getMaximizedSelectedLibs(libNames:string[], generationType: GenerationType): Promise { + const result = await langClient.getCopilotFilteredLibraries({ + libNames: libNames, + mode: getGenerationMode(generationType) + }) as { libraries: Library[] }; + return result.libraries as Library[]; +} + +export function toMaximizedLibrariesFromLibJson(functionResponses: GetFunctionResponse[], originalLibraries: Library[]): Library[] { + const minifiedLibrariesWithoutRecords: Library[] = []; + + for (const funcResponse of functionResponses) { + // Find the original library to get complete information + const originalLib = originalLibraries.find(lib => lib.name === funcResponse.name); + if (!originalLib) { + continue; + } + + const filteredClients = selectClients(originalLib.clients, funcResponse); + const filteredFunctions = selectFunctions(originalLib.functions, funcResponse); + + const maximizedLib: Library = { + name: funcResponse.name, + description: originalLib.description, + clients: filteredClients, + functions: filteredFunctions, + // Get only the type definitions that are actually used by the selected functions and clients + typeDefs: getOwnTypeDefsForLib(filteredClients, filteredFunctions, originalLib.typeDefs), + services: originalLib.services + }; + + minifiedLibrariesWithoutRecords.push(maximizedLib); + } + + // Handle external type references + const externalRecordsRefs = getExternalTypeDefsRefs(minifiedLibrariesWithoutRecords); + getExternalRecords(minifiedLibrariesWithoutRecords, externalRecordsRefs, originalLibraries); + + return minifiedLibrariesWithoutRecords; +} + +function mergeLibrariesWithoutDuplicates(maximizedLibraries: Library[], typeLibraries: Library[]): Library[] { + const finalLibraries: Library[] = maximizedLibraries; + + for (const typeLib of typeLibraries) { + const finalLib = findLibraryByName(typeLib.name, finalLibraries); + if (finalLib) { + finalLib.typeDefs.push(...typeLib.typeDefs); + } else { + finalLibraries.push(typeLib); + } + } + + return finalLibraries; +} + +function findLibraryByName(name: string, libraries: Library[]): Library | null { + return libraries.find(lib => lib.name === name) || null; +} + +// Helper functions for type definition handling + +function selectClients(originalClients: Client[], funcResponse: GetFunctionResponse): Client[] { + if (!funcResponse.clients) { + return []; + } + + const newClients: Client[] = []; + + for (const minClient of funcResponse.clients) { + const originalClient = originalClients.find(c => c.name === minClient.name); + if (!originalClient) { + continue; + } + + const completeClient: Client = { + name: originalClient.name, + description: originalClient.description, + functions: [] + }; + + const output: (RemoteFunction | ResourceFunction)[] = []; + + // Add constructor if there are functions to add + if (minClient.functions.length > 0) { + const constructor = getConstructor(originalClient.functions); + if (constructor) { + output.push(constructor); + } + } + + // Add selected functions + for (const minFunc of minClient.functions) { + const completeFunc = getCompleteFuncForMiniFunc(minFunc, originalClient.functions); + if (completeFunc) { + output.push(completeFunc); + } + } + + completeClient.functions = output; + newClients.push(completeClient); + } + + return newClients; +} + +function selectFunctions(originalFunctions: RemoteFunction[] | undefined, funcResponse: GetFunctionResponse): RemoteFunction[] | undefined { + if (!funcResponse.functions || !originalFunctions) { + return undefined; + } + + const output: RemoteFunction[] = []; + + for (const minFunc of funcResponse.functions) { + const originalFunc = originalFunctions.find(f => f.name === minFunc.name); + if (originalFunc) { + output.push(originalFunc); + } + } + + return output.length > 0 ? output : undefined; +} + +function getConstructor(functions: (RemoteFunction | ResourceFunction)[]): RemoteFunction | null { + for (const func of functions) { + if ('type' in func && func.type === "Constructor") { + return func as RemoteFunction; + } + } + return null; +} + +function getCompleteFuncForMiniFunc( + minFunc: MinifiedRemoteFunction | MinifiedResourceFunction, + fullFunctions: (RemoteFunction | ResourceFunction)[] +): (RemoteFunction | ResourceFunction) | null { + if ('name' in minFunc) { + // MinifiedRemoteFunction + return fullFunctions.find(f => 'name' in f && f.name === minFunc.name) || null; + } else { + // MinifiedResourceFunction + return fullFunctions.find(f => + 'accessor' in f && + f.accessor === minFunc.accessor && + JSON.stringify(f.paths) === JSON.stringify(minFunc.paths) + ) || null; + } +} + +function getOwnTypeDefsForLib( + clients: Client[], + functions: RemoteFunction[] | undefined, + allTypeDefs: TypeDefinition[] +): TypeDefinition[] { + const allFunctions: AbstractFunction[] = []; + + // Collect all functions from clients + for (const client of clients) { + allFunctions.push(...client.functions); + } + + // Add standalone functions + if (functions) { + allFunctions.push(...functions); + } + + return getOwnRecordRefs(allFunctions, allTypeDefs); +} + +function getOwnRecordRefs(functions: AbstractFunction[], allTypeDefs: TypeDefinition[]): TypeDefinition[] { + const ownRecords = new Map(); + + // Process all functions to find type references + for (const func of functions) { + // Check parameter types + for (const param of func.parameters) { + addInternalRecord(param.type, ownRecords, allTypeDefs); + } + + // Check return type + addInternalRecord(func.return.type, ownRecords, allTypeDefs); + } + + // Recursively process found type definitions to include dependent types + const processedTypes = new Set(); + const typesToProcess = Array.from(ownRecords.values()); + + while (typesToProcess.length > 0) { + const typeDef = typesToProcess.shift()!; + + if (processedTypes.has(typeDef.name)) { + continue; + } + + processedTypes.add(typeDef.name); + + if (typeDef.type === 'record') { + const recordDef = typeDef as RecordTypeDefinition; + for (const field of recordDef.fields) { + const foundTypes = addInternalRecord(field.type, ownRecords, allTypeDefs); + typesToProcess.push(...foundTypes); + } + } + // TODO: Handle EnumTypeDefinition and UnionTypeDefinition + } + + return Array.from(ownRecords.values()); +} + +function addInternalRecord( + paramType: Type, + ownRecords: Map, + allTypeDefs: TypeDefinition[] +): TypeDefinition[] { + const foundTypes: TypeDefinition[] = []; + + if (!paramType.links) { + return foundTypes; + } + + for (const link of paramType.links) { + if (link.category === "internal") { + if (isIgnoredRecordName(link.recordName)) { + continue; + } + + const typeDefResult = getTypeDefByName(link.recordName, allTypeDefs); + if (typeDefResult) { + ownRecords.set(link.recordName, typeDefResult); + foundTypes.push(typeDefResult); + } else { + console.warn(`Type ${link.recordName} definition not found.`); + } + } + } + + return foundTypes; +} + +function isIgnoredRecordName(recordName: string): boolean { + const ignoredRecords = [ + "CodeScanningAnalysisToolGuid", + "AlertDismissedAt", + "AlertFixedAt", + "AlertAutoDismissedAt", + "NullableAlertUpdatedAt", + "ActionsCanApprovePullRequestReviews", + "CodeScanningAlertDismissedComment", + "ActionsEnabled", + "PreventSelfReview", + "SecretScanningAlertResolutionComment", + "Conference_enum_update_status", + "Message_enum_schedule_type", + "Message_enum_update_status", + "Siprec_enum_update_status", + "Stream_enum_update_status" + ]; + return ignoredRecords.includes(recordName); +} + +function getTypeDefByName(name: string, typeDefs: TypeDefinition[]): TypeDefinition | null { + return typeDefs.find(def => def.name === name) || null; +} + +function getExternalTypeDefsRefs(libraries: Library[]): Map { + const externalRecords = new Map(); + + for (const lib of libraries) { + const allFunctions: AbstractFunction[] = []; + + // Collect all functions from clients + for (const client of lib.clients) { + allFunctions.push(...client.functions); + } + + // Add standalone functions + if (lib.functions) { + allFunctions.push(...lib.functions); + } + + getExternalTypeDefRefs(externalRecords, allFunctions, lib.typeDefs); + } + + return externalRecords; +} + +function getExternalTypeDefRefs( + externalRecords: Map, + functions: AbstractFunction[], + allTypeDefs: TypeDefinition[] +): void { + // Check function parameters and return types + for (const func of functions) { + for (const param of func.parameters) { + addExternalRecord(param.type, externalRecords); + } + addExternalRecord(func.return.type, externalRecords); + } + + // Check type definition fields + for (const typeDef of allTypeDefs) { + if (typeDef.type === 'record') { + const recordDef = typeDef as RecordTypeDefinition; + for (const field of recordDef.fields) { + addExternalRecord(field.type, externalRecords); + } + } + // TODO: Handle EnumTypeDefinition and UnionTypeDefinition + } +} + +function addExternalRecord(paramType: Type, externalRecords: Map): void { + if (!paramType.links) { + return; + } + + for (const link of paramType.links) { + if (link.category === "external" && link.libraryName) { + addLibraryRecords(externalRecords, link.libraryName, link.recordName); + } + } +} + +function addLibraryRecords(externalRecords: Map, libraryName: string, recordName: string): void { + if (externalRecords.has(libraryName)) { + const records = externalRecords.get(libraryName)!; + if (!records.includes(recordName)) { + records.push(recordName); + } + } else { + externalRecords.set(libraryName, [recordName]); + } +} + +function getExternalRecords( + newLibraries: Library[], + libRefs: Map, + originalLibraries: Library[] +): void { + for (const [libName, recordNames] of libRefs.entries()) { + if (libName.startsWith("ballerina/lang.int")) { + // TODO: find a proper solution + continue; + } + + const library = originalLibraries.find(lib => lib.name === libName); + if (!library) { + console.warn(`Library ${libName} is not found in the context. Skipping the library.`); + continue; + } + + for (const recordName of recordNames) { + const typeDef = getTypeDefByName(recordName, library.typeDefs); + if (!typeDef) { + console.warn(`Record ${recordName} is not found in the context. Skipping the record.`); + continue; + } + + let newLibrary = newLibraries.find(lib => lib.name === libName); + if (!newLibrary) { + newLibrary = { + name: libName, + description: library.description, + clients: [], + functions: undefined, + typeDefs: [typeDef], + services: library.services + }; + newLibraries.push(newLibrary); + } else { + // Check if type definition already exists + const existingTypeDef = newLibrary.typeDefs.find(def => def.name === recordName); + if (!existingTypeDef) { + newLibrary.typeDefs.push(typeDef); + } + } + } + } +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/funcs_inter_types.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/funcs_inter_types.ts new file mode 100644 index 00000000000..df21446528d --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/funcs_inter_types.ts @@ -0,0 +1,152 @@ +// 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 { jsonSchema } from 'ai'; + +export interface GetFunctionsRequest { + name: string; + description: string; + clients: MinifiedClient[]; + functions?: MinifiedRemoteFunction[]; +} + +export interface MinifiedClient { + name: string; + description?: string; + functions: (MinifiedRemoteFunction | MinifiedResourceFunction)[]; +} + +export interface MinifiedRemoteFunction extends MiniFunction { + name: string; +} + +export interface MiniFunction { + parameters?: string[]; + returnType?: string; +} + +export interface MinifiedResourceFunction extends MiniFunction { + accessor: string; + paths: (PathParameter | string)[]; +} + +export interface GetFunctionsResponse { + libraries: GetFunctionResponse[]; +} + +export interface GetFunctionResponse { + name: string; + clients?: MinifiedClient[]; + functions?: MinifiedRemoteFunction[]; +} + +export interface PathParameter { + name: string; + type: string; +} + +export const getFunctionsResponseSchema = jsonSchema({ + type: 'object', + properties: { + libraries: { + type: 'array', + items: { + type: 'object', + properties: { + name: { type: 'string' }, + clients: { + type: 'array', + items: { + type: 'object', + properties: { + name: { type: 'string' }, + description: { type: 'string' }, + functions: { + type: 'array', + items: { + oneOf: [ + { + type: 'object', + properties: { + name: { type: 'string' }, + parameters: { + type: 'array', + items: { type: 'string' } + }, + returnType: { type: 'string' } + }, + required: ['name'] + }, + { + type: 'object', + properties: { + accessor: { type: 'string' }, + paths: { + type: 'array', + items: { + oneOf: [ + { type: 'string' }, + { + type: 'object', + properties: { + name: { type: 'string' }, + type: { type: 'string' } + }, + required: ['name', 'type'] + } + ] + } + }, + parameters: { + type: 'array', + items: { type: 'string' } + }, + returnType: { type: 'string' } + }, + required: ['accessor', 'paths'] + } + ] + } + } + }, + required: ['name', 'functions'] + } + }, + functions: { + type: 'array', + items: { + type: 'object', + properties: { + name: { type: 'string' }, + parameters: { + type: 'array', + items: { type: 'string' } + }, + returnType: { type: 'string' } + }, + required: ['name'] + } + } + }, + required: ['name'] + } + } + }, + required: ['libraries'] +}); + + + diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/langlibs.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/langlibs.ts new file mode 100644 index 00000000000..a015e741375 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/langlibs.ts @@ -0,0 +1,20 @@ +// 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 { Library } from "./libs_types"; + +export const LANGLIBS : Library[] = [{"name":"ballerina/lang.runtime", "description":"The `lang.runtime` module provides functions related to the language runtime that are not specific to a particular basic type.", "typeDefs":[{"functions":[], "name":"DynamicListener", "description":"", "type":"Class"}, {"functions":[], "name":"StackFrame", "description":"", "type":"Class"}], "clients":[], "functions":[{"name":"sleep", "type":"Normal Function", "description":"Halts the current strand for a predefined amount of time.\n\n```ballerina\nruntime:sleep(5);\n```", "parameters":[{"name":"seconds", "description":"An amount of time to sleep in seconds", "type":{"name":"decimal"}}], "return":{"type":{"name":"nil"}}}]}, {"name":"ballerina/lang.value", "description":"The `lang.value` module provides functions that work on values of more than one basic type.", "typeDefs":[{"members":[], "name":"Cloneable", "description":"The type of value to which `clone` and `cloneReadOnly` can be applied.", "type":"Union"}, {"members":[], "name":"JsonFloat", "description":"Subtype of `json` that allows only float numbers.", "type":"Union"}, {"members":[], "name":"JsonDecimal", "description":"Subtype of `json` that allows only decimal numbers.", "type":"Union"}, {"members":[], "name":"Type", "description":"", "type":"Union"}], "clients":[], "functions":[{"name":"cloneWithType", "type":"Normal Function", "description":"Constructs a value with a specified type by cloning another value.\n\nWhen parameter `v` is a structural value, the inherent type of the value to be constructed\ncomes from parameter `t`. When parameter `t` is a union, it must be possible to determine which\nmember of the union to use for the inherent type by following the same rules\nthat are used by list constructor expressions and mapping constructor expressions\nwith the contextually expected type. If not, then an error is returned.\nThe `cloneWithType` operation is recursively applied to each member of parameter `v` using\nthe type descriptor that the inherent type requires for that member.\n\nLike the Clone abstract operation, this does a deep copy, but differs in\nthe following respects:\n- the inherent type of any structural values constructed comes from the specified\ntype descriptor rather than the value being constructed\n- the read-only bit of values and fields comes from the specified type descriptor\n- the graph structure of `v` is not preserved; the result will always be a tree;\nan error will be returned if `v` has cycles\n- immutable structural values are copied rather being returned as is; all\nstructural values in the result will be mutable.\n- numeric values can be converted using the NumericConvert abstract operation\n- if a record type descriptor specifies default values, these will be used\nto supply any missing members\n\n```ballerina\nanydata[] arr = [1, 2, 3, 4];\nint[] intArray = check arr.cloneWithType();\nintArray ⇒ [1,2,3,4]\narr === intArray ⇒ false\ntype Vowels string:Char[];\nstring[] vowels = [\"a\", \"e\", \"i\", \"o\", \"u\"];\nvowels.cloneWithType(Vowels) ⇒ [\"a\",\"e\",\"i\",\"o\",\"u\"]\nvowels.cloneWithType(string) ⇒ error\n```", "parameters":[{"name":"v", "description":"the value to be cloned", "type":{"name":"anydata"}}, {"name":"t", "description":"the type for the cloned to be constructed", "type":{"name":"typedesc"}, "default":"<>"}], "return":{"description":"a new value that belongs to parameter `t`, or an error if this cannot be done", "type":{"name":"t|error"}}}, {"name":"ensureType", "type":"Normal Function", "description":"Safely casts a value to a type.\n\nThis casts a value to a type in the same way as a type cast expression,\nbut returns an error if the cast cannot be done, rather than panicking.\n\n```ballerina\njson student = {name: \"Jo\", subjects: [\"CS1212\", \"CS2021\"]};\njson[] subjects = check student.subjects.ensureType();\nsubjects ⇒ [\"CS1212\",\"CS2021\"]\nanydata vowel = \"I\";\nvowel.ensureType(string:Char) ⇒ I;\nvowel.ensureType(int) ⇒ error\n```", "parameters":[{"name":"v", "description":"the value to be cast", "type":{"name":"any|error"}}, {"name":"t", "description":"a typedesc for the type to which to cast it", "type":{"name":"typedesc"}, "default":"<>"}], "return":{"description":"`v` cast to the type described by parameter `t`, or an error, if the cast cannot be done", "type":{"name":"t|error"}}}, {"name":"fromJsonString", "type":"Normal Function", "description":"Parses a string in JSON format and returns the value that it represents.\n\nNumbers in the JSON string are converted into Ballerina values of type\ndecimal except in the following two cases:\nif the JSON number starts with `-` and is numerically equal to zero, then it is\nconverted into float value of `-0.0`;\notherwise, if the JSON number is syntactically an integer and is in the range representable\nby a Ballerina int, then it is converted into a Ballerina int.\nA JSON number is considered syntactically an integer if it contains neither\na decimal point nor an exponent.\n\nReturns an error if the string cannot be parsed.\n\n```ballerina\n\"{\\\"id\\\": 12, \\\"name\\\": \\\"John\\\"}\".fromJsonString() ⇒ {\"id\":12,\"name\":\"John\"}\n\"{12: 12}\".fromJsonString() ⇒ error\n```", "parameters":[{"name":"str", "description":"string in JSON format", "type":{"name":"string"}}], "return":{"description":"`str` parsed to json or error", "type":{"name":"json|error"}}}, {"name":"fromJsonStringWithType", "type":"Normal Function", "description":"Converts a string in JSON format to a user-specified type.\n\nThis is a combination of function `fromJsonString` followed by function `fromJsonWithType`.\n\n```ballerina\nint[] intArray = check \"[1, 2, 3, 4]\".fromJsonStringWithType(); \nintArray ⇒ [1,2,3,4]\n\"2022\".fromJsonStringWithType(int) ⇒ 2022\n\"2022\".fromJsonStringWithType(boolean) ⇒ error\n```", "parameters":[{"name":"str", "description":"string in JSON format", "type":{"name":"string"}}, {"name":"t", "description":"type to convert to", "type":{"name":"typedesc"}, "default":"<>"}], "return":{"description":"value belonging to type parameter `t` or error if this cannot be done", "type":{"name":"t|error"}}}, {"name":"toJson", "type":"Normal Function", "description":"Converts a value of type `anydata` to `json`.\n\nThis does a deep copy of parameter `v` converting values that do\nnot belong to json into values that do.\nA value of type `xml` is converted into a string as if\nby the `toString` function.\nA value of type `table` is converted into a list of\nmappings one for each row.\nThe inherent type of arrays in the return value will be\n`json[]` and of mappings will be `map`.\nA new copy is made of all structural values, including\nimmutable values.\nThis panics if parameter `v` has cycles.\n\n```ballerina\nanydata student = {name: \"Jo\", age: 11};\nstudent.toJson() ⇒ {\"name\":\"Jo\",\"age\":11}\nanydata[] array = [];\narray.push(array);\narray.toJson() ⇒ panic\n```", "parameters":[{"name":"v", "description":"anydata value", "type":{"name":"anydata"}}], "return":{"description":"representation of `v` as value of type json", "type":{"name":"json"}}}, {"name":"toJsonString", "type":"Normal Function", "description":"Returns the string that represents a anydata value in JSON format.\n\nparameter `v` is first converted to `json` as if by the function `toJson`.\n\n```ballerina\nanydata marks = {\"Alice\": 90, \"Bob\": 85, \"Jo\": 91};\nmarks.toJsonString() ⇒ {\"Alice\":90, \"Bob\":85, \"Jo\":91}\n```", "parameters":[{"name":"v", "description":"anydata value", "type":{"name":"anydata"}}], "return":{"description":"string representation of parameter `v` converted to `json`", "type":{"name":"string"}}}, {"name":"toString", "type":"Normal Function", "description":"Performs a direct conversion of a value to a string.\n\nThe conversion is direct in the sense that when applied to a value that is already\na string it leaves the value unchanged.\n\nThe details of the conversion are specified by the ToString abstract operation\ndefined in the Ballerina Language Specification, using the direct style.\n\n```ballerina\ndecimal value = 12.12d;\nvalue.toString() ⇒ 12.12\nanydata[] data = [1, \"Sam\", 12.3f, 12.12d, {value: 12}];\ndata.toString() ⇒ [1,\"Sam\",12.3,12.12,{\"value\":12}]\n```", "parameters":[{"name":"v", "description":"the value to be converted to a string", "type":{"name":"(any)"}}], "return":{"description":"a string resulting from the conversion", "type":{"name":"string"}}}]}, {"name":"ballerina/lang.string", "description":"The `lang.string` module corresponds to the `string` basic type.", "typeDefs":[{"name":"Char", "description":"Built-in subtype of string containing strings of length 1.", "type":"string"}], "clients":[], "functions":[{"name":"'join", "type":"Normal Function", "description":"Joins zero or more strings together with a separator.\n\n```ballerina\nstring:'join(\" \", \"Ballerina\", \"is\", \"a\", \"programming\", \"language\") ⇒ Ballerina is a programming language\nstring[] array = [\"John\", \"23\", \"USA\", \"Computer Science\", \"Swimmer\"];\nstring:'join(\",\", ...array) ⇒ John,23,USA,Computer Science,Swimmer\n```", "parameters":[{"name":"separator", "description":"separator string", "type":{"name":"string"}}, {"name":"strs", "description":"strings to be joined", "type":{"name":"strs"}}], "return":{"description":"a string consisting of all of parameter `strs` concatenated in order\nwith parameter `separator` in between them", "type":{"name":"string"}}}, {"name":"codePointCompare", "type":"Normal Function", "description":"Lexicographically compares strings using their Unicode code points.\n\nThis orders strings in a consistent and well-defined way,\nbut the ordering will often not be consistent with cultural expectations\nfor sorted order.\n\n```ballerina\n\"Austria\".codePointCompare(\"Australia\") ⇒ 1\n```", "parameters":[{"name":"str1", "description":"the first string to be compared", "type":{"name":"string"}}, {"name":"str2", "description":"the second string to be compared", "type":{"name":"string"}}], "return":{"description":"an int that is less than, equal to or greater than zero,\naccording as parameter `str1` is less than, equal to or greater than parameter `str2`", "type":{"name":"int"}}}, {"name":"endsWith", "type":"Normal Function", "description":"Tests whether a string ends with another string.\n\n```ballerina\n\"Welcome to the Ballerina programming language\".endsWith(\"language\") ⇒ true\n```", "parameters":[{"name":"str", "description":"the string to be tested", "type":{"name":"string"}}, {"name":"substr", "description":"the ending string", "type":{"name":"string"}}], "return":{"description":"true if parameter `str` ends with parameter `substr`; false otherwise", "type":{"name":"boolean"}}}, {"name":"fromBytes", "type":"Normal Function", "description":"Constructs a string from its UTF-8 representation in bytes.\n\n```ballerina\nstring:fromBytes([72, 101, 108, 108, 111, 32, 66, 97, 108, 108, 101, 114, 105, 110, 97, 33]) ⇒ Hello, World!\nstring:fromBytes([149, 169, 224]) ⇒ error\n```", "parameters":[{"name":"bytes", "description":"UTF-8 byte array", "type":{"name":"byte[]"}}], "return":{"description":"parameter `bytes` converted to string or error", "type":{"name":"string|error"}}}, {"name":"fromCodePointInt", "type":"Normal Function", "description":"Constructs a single character string from a code point.\n\nAn int is a valid code point if it is in the range 0 to 0x10FFFF inclusive,\nbut not in the range 0xD800 or 0xDFFF inclusive.\n\n```ballerina\nstring:fromCodePointInt(97) ⇒ a\nstring:fromCodePointInt(1114113) ⇒ error\n```", "parameters":[{"name":"codePoint", "description":"an int specifying a code point", "type":{"name":"int"}}], "return":{"description":"a single character string whose code point is parameter `codePoint`; or an error\nif parameter `codePoint` is not a valid code point", "type":{"name":"Char|error", "links":[{"category":"internal", "recordName":"Char"}]}}}, {"name":"fromCodePointInts", "type":"Normal Function", "description":"Constructs a string from an array of code points.\n\nAn int is a valid code point if it is in the range 0 to 0x10FFFF inclusive,\nbut not in the range 0xD800 or 0xDFFF inclusive.\n\n```ballerina\nstring:fromCodePointInts([66, 97, 108, 108, 101, 114, 105, 110, 97]) ⇒ Ballerina\nstring:fromCodePointInts([1114113, 1114114, 1114115]) ⇒ error\n```", "parameters":[{"name":"codePoints", "description":"an array of ints, each specifying a code point", "type":{"name":"int[]"}}], "return":{"description":"a string with a character for each code point in parameter `codePoints`; or an error\nif any member of parameter `codePoints` is not a valid code point", "type":{"name":"string|error"}}}, {"name":"getCodePoint", "type":"Normal Function", "description":"Returns the code point of a character in a string.\n\n```ballerina\n\"Hello, World!\".getCodePoint(3) ⇒ 108\n```", "parameters":[{"name":"str", "description":"the string", "type":{"name":"string"}}, {"name":"index", "description":"an index in parameter `str`", "type":{"name":"int"}}], "return":{"description":"the Unicode code point of the character at parameter `index` in parameter `str`", "type":{"name":"int"}}}, {"name":"includes", "type":"Normal Function", "description":"Tests whether a string includes another string.\n\n```ballerina\n\"Hello World, from Ballerina\".includes(\"Bal\") ⇒ true\n\"Hello World! from Ballerina\".includes(\"Hello\", 10) ⇒ false\n```", "parameters":[{"name":"str", "description":"the string in which to search", "type":{"name":"string"}}, {"name":"substr", "description":"the string to search for", "type":{"name":"string"}}, {"name":"startIndex", "description":"index to start searching from", "type":{"name":"int"}, "default":"0"}], "return":{"description":"`true` if there is an occurrence of parameter `substr` in parameter `str` at an index >= parameter `startIndex`,\nor `false` otherwise", "type":{"name":"boolean"}}}, {"name":"indexOf", "type":"Normal Function", "description":"Finds the first occurrence of one string in another string.\n\n```ballerina\n\"New Zealand\".indexOf(\"land\") ⇒ 7\n\"Ballerinalang is a unique programming language\".indexOf(\"lang\", 15) ⇒ 38\n```", "parameters":[{"name":"str", "description":"the string in which to search", "type":{"name":"string"}}, {"name":"substr", "description":"the string to search for", "type":{"name":"string"}}, {"name":"startIndex", "description":"index to start searching from", "type":{"name":"int"}, "default":"0"}], "return":{"description":"index of the first occurrence of parameter `substr` in parameter `str` that is >= parameter `startIndex`,\nor `()` if there is no such occurrence", "type":{"name":"int?"}}}, {"name":"length", "type":"Normal Function", "description":"Returns the length of the string.\n\n```ballerina\n\"Hello, World!\".length() ⇒ 13;\n```", "parameters":[{"name":"str", "description":"the string", "type":{"name":"string"}}], "return":{"description":"the number of characters (code points) in parameter `str`", "type":{"name":"int"}}}, {"name":"startsWith", "type":"Normal Function", "description":"Tests whether a string starts with another string.\n\n```ballerina\n\"Welcome to the Ballerina programming language\".startsWith(\"Welcome\") ⇒ true\n```", "parameters":[{"name":"str", "description":"the string to be tested", "type":{"name":"string"}}, {"name":"substr", "description":"the starting string", "type":{"name":"string"}}], "return":{"description":"true if parameter `str` starts with parameter `substr`; false otherwise", "type":{"name":"boolean"}}}, {"name":"substring", "type":"Normal Function", "description":"Returns a substring of a string.\n\n```ballerina\n\"Hello, my name is John\".substring(7) ⇒ my name is John\n\"Hello, my name is John Anderson\".substring(18, 22) ⇒ John\n```", "parameters":[{"name":"str", "description":"source string.", "type":{"name":"string"}}, {"name":"startIndex", "description":"the starting index, inclusive", "type":{"name":"int"}}, {"name":"endIndex", "description":"the ending index, exclusive", "type":{"name":"int"}, "default":"str.length()"}], "return":{"description":"substring consisting of characters with index >= `startIndex` and < `endIndex`", "type":{"name":"string"}}}, {"name":"toBytes", "type":"Normal Function", "description":"Represents a string as an array of bytes using UTF-8.\n\n```ballerina\n\"Hello, World!\".toBytes() ⇒ [72,101,108,108,111,44,32,87,111,114,108,100,33]\n```", "parameters":[{"name":"str", "description":"the string", "type":{"name":"string"}}], "return":{"description":"UTF-8 byte array", "type":{"name":"byte[]"}}}, {"name":"toCodePointInt", "type":"Normal Function", "description":"Converts a single character string to a code point.\n\n```ballerina\nstring:toCodePointInt(\"a\") ⇒ 97\n```", "parameters":[{"name":"ch", "description":"a single character string", "type":{"name":"Char", "links":[{"category":"internal", "recordName":"Char"}]}}], "return":{"description":"the code point of parameter `ch`", "type":{"name":"int"}}}, {"name":"toCodePointInts", "type":"Normal Function", "description":"Converts a string to an array of code points.\n\n```ballerina\n\"Hello, world 🌎\".toCodePointInts() ⇒ [72,101,108,108,111,44,32,119,111,114,108,100,32,127758]\n```", "parameters":[{"name":"str", "description":"the string", "type":{"name":"string"}}], "return":{"description":"an array with a code point for each character of parameter `str`", "type":{"name":"int[]"}}}, {"name":"toLowerAscii", "type":"Normal Function", "description":"Converts occurrences of A-Z to a-z.\n\nOther characters are left unchanged.\n\n```ballerina\n\"HELLO, World!\".toLowerAscii() ⇒ hello, world!\n```", "parameters":[{"name":"str", "description":"the string to be converted", "type":{"name":"string"}}], "return":{"description":"parameter `str` with any occurrences of A-Z converted to a-z", "type":{"name":"string"}}}, {"name":"toUpperAscii", "type":"Normal Function", "description":"Converts occurrences of a-z to A-Z.\n\nOther characters are left unchanged.\n\n```ballerina\n\"hello, World!\".toUpperAscii() ⇒ HELLO, WORLD!\n```", "parameters":[{"name":"str", "description":"the string to be converted", "type":{"name":"string"}}], "return":{"description":"parameter `str` with any occurrences of a-z converted to A-Z", "type":{"name":"string"}}}, {"name":"trim", "type":"Normal Function", "description":"Removes ASCII white space characters from the start and end of a string.\n\nThe ASCII white space characters are 0x9...0xD, 0x20.\n\n```ballerina\n\" Hello World \".trim() + \"!\" ⇒ Hello World!\n```", "parameters":[{"name":"str", "description":"the string", "type":{"name":"string"}}], "return":{"description":"parameter `str` with leading or trailing ASCII white space characters removed", "type":{"name":"string"}}}]}, {"name":"ballerina/lang.boolean", "description":"The `lang.boolean` module corresponds to the `boolean` basic type.", "typeDefs":[], "clients":[], "functions":[{"name":"fromString", "type":"Normal Function", "description":"Converts a string to a boolean.\n\nReturns the boolean of which parameter `s` is a string representation.\nThe accepted representations are `true`, `false`\n(in any combination of lower- and upper-case),\nand also `1` for true and `0` for `false`.\nThis is the inverse of function ``value:toString`` applied to a `boolean`.\n\n```ballerina\nboolean:fromString(\"true\") ⇒ true\nboolean:fromString(\"0\") ⇒ false\nboolean:fromString(\"01\") ⇒ error\n```", "parameters":[{"name":"s", "description":"string representing a boolean value", "type":{"name":"string"}}], "return":{"description":"boolean that parameter `s` represents, or an error if there is no such boolean", "type":{"name":"boolean|error"}}}]}, {"name":"ballerina/lang.error", "description":"The `lang.error` module corresponds to the `error` basic type.", "typeDefs":[{"fields":[{"name":"", "description":"Rest field", "type":{"name":"Cloneable"}}], "name":"Detail", "description":"The type to which error detail records must belong.", "type":"Record"}, {"name":"NoMessage", "description":"Error type representing the no message error in worker interactions.", "type":"error"}, {"name":"Retriable", "description":"A type of error which can be retried.", "type":"error"}, {"functions":[], "name":"DefaultRetryManager", "description":"", "type":"Class"}, {"functions":[], "name":"RetryManager", "description":"", "type":"Class"}, {"functions":[], "name":"StackFrame", "description":"", "type":"Class"}, {"members":[], "name":"Cloneable", "description":"Type for value that can be cloned.\nThis is the same as in lang.value, but is copied here to avoid a dependency.", "type":"Union"}], "clients":[], "functions":[{"name":"message", "type":"Normal Function", "description":"Returns the error's message.\n\n```ballerina\nerror(\"IO error\").message() ⇒ IO error\n```", "parameters":[{"name":"e", "description":"the error value", "type":{"name":"error"}}], "return":{"description":"error message", "type":{"name":"string"}}}]}, {"name":"ballerina/lang.float", "description":"The `lang.float` module corresponds to the `float` basic type.", "typeDefs":[{"value":"2.718281828459045", "varType":{"name":"float"}, "name":"E", "description":"Euler's number.", "type":"Constant"}, {"value":"1.0/0.0", "varType":{"name":"float"}, "name":"Infinity", "description":"IEEE positive infinity.", "type":"Constant"}, {"value":"0.0/0.0", "varType":{"name":"float"}, "name":"NaN", "description":"IEEE not-a-number value.", "type":"Constant"}, {"value":"3.141592653589793", "varType":{"name":"float"}, "name":"PI", "description":"The number π.", "type":"Constant"}], "clients":[], "functions":[{"name":"fromString", "type":"Normal Function", "description":"Returns the float value represented by a string.\n\nparameter `s` must follow the syntax of DecimalFloatingPointNumber as defined by the Ballerina specification\nwith the following modifications\n- the DecimalFloatingPointNumber may have a leading `+` or `-` sign\n- `NaN` is allowed\n- `Infinity` is allowed with an optional leading `+` or `-` sign\n- a FloatingPointTypeSuffix is not allowed\nThis is the inverse of function ``value:toString`` applied to an `float`.\n\n```ballerina\nfloat:fromString(\"0.2453\") ⇒ 0.2453\nfloat:fromString(\"-10\") ⇒ -10.0\nfloat:fromString(\"123f\") ⇒ error\n```", "parameters":[{"name":"s", "description":"string representation of a float", "type":{"name":"string"}}], "return":{"description":"float value or error", "type":{"name":"float|error"}}}]}, {"name":"ballerina/lang.decimal", "description":"The `lang.decimal` module corresponds to the `decimal` basic type.", "typeDefs":[], "clients":[], "functions":[{"name":"fromString", "type":"Normal Function", "description":"Returns the decimal value represented by a string.\n\n`s` must follow the syntax of DecimalFloatingPointNumber as defined by the Ballerina specification\nwith the following modifications\n- the DecimalFloatingPointLiteral may have a leading `+` or `-` sign\n- a FloatingPointTypeSuffix is not allowed\nThis is the inverse of function ``value:toString`` applied to an `decimal`.\n\n```ballerina\ndecimal:fromString(\"0.2453\") ⇒ 0.2453\ndecimal:fromString(\"-10\") ⇒ -10\ndecimal:fromString(\"123d\") ⇒ error\n```", "parameters":[{"name":"s", "description":"string representation of a decimal", "type":{"name":"string"}}], "return":{"description":"decimal representation of the argument or error", "type":{"name":"decimal|error"}}}]}, {"name":"ballerina/lang.int", "description":"The `lang.int` module corresponds to the `int` basic type.", "typeDefs":[{"name":"Signed32", "description":"Built-in subtype that allows signed integers that can be represented in 32 bits using two's complement.\nThis allows an int between -2^31 and 2^31 - 1 inclusive,\ni.e., between -2,147,483,648 and 2,147,483,647 inclusive.", "type":"int"}, {"name":"Signed16", "description":"Built-in subtype that allows non-negative integers that can be represented in 16 bits using two's complement.\nThis allows an int between -2^15 and 2^15 - 1 inclusive,\ni.e., between -32,768 and 32,767 inclusive.", "type":"int"}, {"name":"Signed8", "description":"Built-in subtype that allows non-negative integers that can be represented in 8 bits using two's complement.\nThis allows an int between -2^7 and 2^7 - 1 inclusive,\ni.e., between -128 and 127 inclusive.", "type":"int"}, {"name":"Unsigned32", "description":"Built-in subtype that allows non-negative integers that can be represented in 32 bits.\nThis allows an int between 0 and 2^32 - 1 inclusive,\ni.e., between 0 and 4,294,967,295 inclusive.", "type":"int"}, {"name":"Unsigned16", "description":"Built-in subtype that allows non-negative integers that can be represented in 16 bits.\nThis allows an int between 0 and 2^16 - 1 inclusive,\ni.e., between 0 and 65,535 inclusive.", "type":"int"}, {"name":"Unsigned8", "description":"Built-in subtype that allows non-negative integers that can be represented in 8 bits.\nThis allows an int between 0 and 2^8 - 1 inclusive,\ni.e., between 0 and 255 inclusive.\nThis is the same as `byte`.", "type":"int"}, {"value":"9223372036854775807", "varType":{"name":"int"}, "name":"MAX_VALUE", "description":"Maximum value of type `int`.", "type":"Constant"}, {"value":"-9223372036854775807 - 1", "varType":{"name":"int"}, "name":"MIN_VALUE", "description":"Minimum value of type `int`.", "type":"Constant"}, {"value":"32767", "varType":{"name":"int"}, "name":"SIGNED16_MAX_VALUE", "description":"Maximum value of type `Signed16`.", "type":"Constant"}, {"value":"-32768", "varType":{"name":"int"}, "name":"SIGNED16_MIN_VALUE", "description":"Minimum value of type `Signed16`.", "type":"Constant"}, {"value":"2147483647", "varType":{"name":"int"}, "name":"SIGNED32_MAX_VALUE", "description":"Maximum value of type `Signed32`.", "type":"Constant"}, {"value":"-2147483648", "varType":{"name":"int"}, "name":"SIGNED32_MIN_VALUE", "description":"Minimum value of type `Signed32`.", "type":"Constant"}, {"value":"127", "varType":{"name":"int"}, "name":"SIGNED8_MAX_VALUE", "description":"Maximum value of type `Signed8`.", "type":"Constant"}, {"value":"-128", "varType":{"name":"int"}, "name":"SIGNED8_MIN_VALUE", "description":"Minimum value of type `Signed8`.", "type":"Constant"}, {"value":"65535", "varType":{"name":"int"}, "name":"UNSIGNED16_MAX_VALUE", "description":"Maximum value of type `Unsigned16`.", "type":"Constant"}, {"value":"4294967295", "varType":{"name":"int"}, "name":"UNSIGNED32_MAX_VALUE", "description":"Maximum value of type `Unsigned32`.", "type":"Constant"}, {"value":"255", "varType":{"name":"int"}, "name":"UNSIGNED8_MAX_VALUE", "description":"Maximum value of type `Unsigned8`.", "type":"Constant"}], "clients":[], "functions":[{"name":"fromString", "type":"Normal Function", "description":"Returns the integer of a string that represents in decimal.\n\nReturns error if parameter `s` is not the decimal representation of an integer.\nThe first character may be `+` or `-`.\nThis is the inverse of function ``value:toString`` applied to an `int`.\n\n```ballerina\nint:fromString(\"76\") ⇒ 76\nint:fromString(\"-120\") ⇒ -120\nint:fromString(\"0xFFFF\") ⇒ error\n```", "parameters":[{"name":"s", "description":"string representation of a integer value", "type":{"name":"string"}}], "return":{"description":"int representation of the argument or error", "type":{"name":"int|error"}}}]}, {"name":"ballerina/lang.map", "description":"The `lang.map` module corresponds to the `mapping` basic type.", "typeDefs":[{"members":[], "name":"Type", "description":"A type parameter that is a subtype of `any|error`.\nHas the special semantic that when used in a declaration\nall uses in the declaration must refer to same type.", "type":"Union"}, {"members":[], "name":"Type1", "description":"A type parameter that is a subtype of `any|error`.\nHas the special semantic that when used in a declaration\nall uses in the declaration must refer to same type.", "type":"Union"}], "clients":[], "functions":[{"name":"get", "type":"Normal Function", "description":"Returns the member of a map with given key.\n\nThis for use in a case where it is known that the map has a specific key,\nand accordingly panics if parameter `m` does not have a member with parameter `k` key.\n\n```ballerina\nmap marks = {\"Carl\": 85, \"Bob\": 50, \"Max\": 60};\nmarks.get(\"Carl\") ⇒ 85\nmarks.get(\"John\") ⇒ panic\n```", "parameters":[{"name":"m", "description":"the map", "type":{"name":"map"}}, {"name":"k", "description":"the key", "type":{"name":"string"}}], "return":{"description":"member with parameter `k` key", "type":{"name":"any|error"}}}, {"name":"hasKey", "type":"Normal Function", "description":"Tests whether a map value has a member with a given key.\n\n```ballerina\nmap marks = {\"Carl\": 85, \"Bob\": 50, \"Max\": 60};\nmarks.hasKey(\"Carl\") ⇒ true\nmarks.hasKey(\"John\") ⇒ false\n```", "parameters":[{"name":"m", "description":"the map", "type":{"name":"map"}}, {"name":"k", "description":"the key", "type":{"name":"string"}}], "return":{"description":"true if parameter `m` has a member with key parameter `k`", "type":{"name":"boolean"}}}, {"name":"keys", "type":"Normal Function", "description":"Returns a list of all the keys of a map.\n\n```ballerina\n{\"Carl\": 85, \"Bob\": 50, \"Max\": 60}.keys() ⇒ [\"Carl\",\"Bob\",\"Max\"]\n```", "parameters":[{"name":"m", "description":"the map", "type":{"name":"map"}}], "return":{"description":"a new list of all keys", "type":{"name":"string[]"}}}, {"name":"length", "type":"Normal Function", "description":"Returns number of members of a map.\n\n```ballerina\n{\"Carl\": 85, \"Bob\": 50, \"Max\": 60}.length() ⇒ 3\n```", "parameters":[{"name":"m", "description":"the map", "type":{"name":"map"}}], "return":{"description":"number of members in parameter `m`", "type":{"name":"int"}}}, {"name":"remove", "type":"Normal Function", "description":"Removes a member of a map.\n\nThis removes the member of parameter `m` with key parameter `k` and returns it.\nIt panics if there is no such member.\n\n```ballerina\nmap marks = {\"Carl\": 85, \"Bob\": 50, \"Max\": 60};\nmarks.remove(\"Carl\") ⇒ 85\nmarks ⇒ {\"Bob\":50,\"Max\":60}\nmarks.remove(\"John\") ⇒ panic\n```", "parameters":[{"name":"m", "description":"the map", "type":{"name":"map"}}, {"name":"k", "description":"the key", "type":{"name":"string"}}], "return":{"description":"the member of parameter `m` that had key parameter `k`", "type":{"name":"any|error"}}}, {"name":"removeAll", "type":"Normal Function", "description":"Removes all members of a map.\n\nThis panics if any member cannot be removed.\n\n```ballerina\nmap marks = {\"Carl\": 85, \"Bob\": 50, \"Max\": 60};\nmarks.removeAll();\nmarks ⇒ {}\nmap values = {x: 10, y: 20};\nvalues.removeAll() ⇒ panic;\n```", "parameters":[{"name":"m", "description":"the map", "type":{"name":"map"}}], "return":{"type":{"name":"() "}}}, {"name":"removeIfHasKey", "type":"Normal Function", "description":"Removes a member of a map with a given key, if the map has member with the key.\n\nIf parameter `m` has a member with key parameter `k`, it removes and returns it;\notherwise it returns `()`.\n\n```ballerina\nmap marks = {\"Carl\": 85, \"Bob\": 50, \"Max\": 60};\nmarks.removeIfHasKey(\"Carl\") ⇒ 85\nmarks ⇒ {\"Bob\":50,\"Max\":60}\nmarks.removeIfHasKey(\"John\") is () ⇒ true\n```", "parameters":[{"name":"m", "description":"the map", "type":{"name":"map"}}, {"name":"k", "description":"the key", "type":{"name":"string"}}], "return":{"description":"the member of parameter `m` that had key parameter `k`, or `()` if parameter `m` does not have a key parameter `k`", "type":{"name":"any|error?"}}}, {"name":"toArray", "type":"Normal Function", "description":"Returns a list of all the members of a map.\n\n```ballerina\n{\"Carl\": 85, \"Bob\": 50, \"Max\": 60}.toArray() ⇒ [85,50,60]\n```", "parameters":[{"name":"m", "description":"the map", "type":{"name":"map"}}], "return":{"description":"an array whose members are the members of parameter `m`", "type":{"name":"any|error[]"}}}]}, {"name":"ballerina/lang.regexp", "description":"The `lang.regexp` module corresponds to the `regexp` basic type.", "typeDefs":[{"functions":[], "name":"Span", "description":"", "type":"Class"}, {"members":[], "name":"Replacement", "description":"The replacement for the match of a regular expression found within a string.\nA string value specifies that the replacement is a fixed string.\nA function that specifies that the replacement is constructed by calling a function for each match.", "type":"Union"}, {"members":[], "name":"Groups", "description":"A list providing detailed information about the match of a regular expression within string.\nEach member of the list identifies the `Span` within the string matched\nby each of the regular expression's capturing groups.\nThe member with index 0 corresponds to the entire regular expression.\nThe group with index i, where i > 1,is the i-th capturing group;\nthis will be nil if the match of the regular expression did not use\na match of the capturing group.\nThe capturing groups within a regular expression are ordered by the position\nof their opening parenthesis.", "type":"IntersectionType"}], "clients":[], "functions":[{"name":"find", "type":"Normal Function", "description":"Returns the first match of a regular expression within a string.\n\n```ballerina\nstring:RegExp r = re `World`;\nr.find(\"Not A Match\") is () ⇒ true\nr.find(\"Hello World\") is regexp:Span ⇒ true\nr.find(\"Hello World\", 6) is regexp:Span ⇒ true\n```", "parameters":[{"name":"re", "description":"the regular expression", "type":{"name":"RegExp", "links":[{"category":"internal", "recordName":"RegExp"}]}}, {"name":"str", "description":"the string in which to look for a match of `re`", "type":{"name":"string"}}, {"name":"startIndex", "description":"the index within `str` at which to start looking for a match", "type":{"name":"int"}, "default":"0"}], "return":{"description":"a `Span` describing the match, or nil if no match was found", "type":{"name":"Span?", "links":[{"category":"internal", "recordName":"Span"}]}}}, {"name":"findAll", "type":"Normal Function", "description":"Returns a list of all the matches of a regular expression within a string.\nAfter one match is found, it looks for the next match starting where the previous\nmatch ended, so the list of matches will be non-overlapping.\n\n```ballerina\nstring:RegExp r = re `[bB].tt[a-z]*`;\nr.findAll(\"Not A Match\").length() ⇒ 0\nr.findAll(\"Butter was bought by Betty but the butter was bitter.\").length() ⇒ 4\nr.findAll(\"Butter was bought by Betty but the butter was bitter.\", 7).length() ⇒ 3\n```", "parameters":[{"name":"re", "description":"the regular expression", "type":{"name":"RegExp", "links":[{"category":"internal", "recordName":"RegExp"}]}}, {"name":"str", "description":"the string in which to look for matches of `re`", "type":{"name":"string"}}, {"name":"startIndex", "description":"the index within `str` at which to start looking for matches", "type":{"name":"int"}, "default":"0"}], "return":{"description":"a list containing a `Span` for each match found", "type":{"name":"Span[]", "links":[{"category":"internal", "recordName":"Span"}]}}}, {"name":"findAllGroups", "type":"Normal Function", "description":"Returns the `Groups` of all the matches of a regular expression within a string.\nAfter one match is found, it looks for the next match starting where the previous\nmatch ended, so the list of matches will be non-overlapping.\n\n```ballerina\nstring:RegExp r = re `(([a-z]u)(bble))`;\nr.findAllGroups(\"Not A Match\").length() ⇒ 0\nr.findAllGroups(\"rubble, trouble, bubble, hubble\").length() ⇒ 3\nr.findAllGroups(\"rubble, trouble, bubble, hubble\", 7).length() ⇒ 2\n```", "parameters":[{"name":"re", "description":"the regular expression", "type":{"name":"RegExp", "links":[{"category":"internal", "recordName":"RegExp"}]}}, {"name":"str", "description":"the string in which to look for matches of `re`", "type":{"name":"string"}}, {"name":"startIndex", "description":"the index within `str` at which to start looking for matches", "type":{"name":"int"}, "default":"0"}], "return":{"description":"a list containing a `Group` for each match found", "type":{"name":"Groups[]", "links":[{"category":"internal", "recordName":"Groups"}]}}}, {"name":"findGroups", "type":"Normal Function", "description":"Returns the `Groups` for the first match of a regular expression within a string.\n\n```ballerina\nstring:RegExp r = re `([bB].tt[a-z]*)`;\nr.findGroups(\"Not A Match\") is () ⇒ true\nr.findGroups(\"Butter was bought by Betty but the butter was bitter.\") is regexp:Groups ⇒ true\nr.findGroups(\"Butter was bought by Betty but the butter was bitter.\", 7) is regexp:Groups ⇒ true\n```", "parameters":[{"name":"re", "description":"the regular expression", "type":{"name":"RegExp", "links":[{"category":"internal", "recordName":"RegExp"}]}}, {"name":"str", "description":"the string in which to look for a match of `re`", "type":{"name":"string"}}, {"name":"startIndex", "description":"the index within `str` at which to start looking for a match", "type":{"name":"int"}, "default":"0"}], "return":{"description":"a `Groups` list describing the match, or nil if no match was found", "type":{"name":"Groups?", "links":[{"category":"internal", "recordName":"Groups"}]}}}, {"name":"fromString", "type":"Normal Function", "description":"Constructs a regular expression from a string.\nThe syntax of the regular expression is the same as accepted by the `re` tagged data template expression.\n\n```ballerina\nregexp:fromString(\"AB+C*D{1,4}\") ⇒ re `AB+C*D{1,4}`\nregexp:fromString(\"AB+^*\") ⇒ error\n```", "parameters":[{"name":"str", "description":"the string representation of a regular expression", "type":{"name":"string"}}], "return":{"description":"the regular expression, or an error value if `str` is not a valid regular expression", "type":{"name":"RegExp|error", "links":[{"category":"internal", "recordName":"RegExp"}]}}}, {"name":"fullMatchGroups", "type":"Normal Function", "description":"Returns the `Groups` of the match of a regular expression that is a full match of a string.\nA match of the regular expression in a string is a full match if it\nstarts at index 0 and ends at index `n`, where `n` is the length of the string.\n\n```ballerina\nstring:RegExp r = re `([0-9]+)×([0-9]+)`;\nr.fullMatchGroups(\"test: 1440×900\") is () ⇒ true\nr.fullMatchGroups(\"1440×900\") is regexp:Groups ⇒ true\n```", "parameters":[{"name":"re", "description":"the regular expression", "type":{"name":"RegExp", "links":[{"category":"internal", "recordName":"RegExp"}]}}, {"name":"str", "description":"the string in which to look for a match of `re`", "type":{"name":"string"}}], "return":{"description":"a `Groups` list describing the match, or nil if there is not a full match; the\nfirst `Span` in the list will be all of `str`", "type":{"name":"Groups?", "links":[{"category":"internal", "recordName":"Groups"}]}}}, {"name":"isFullMatch", "type":"Normal Function", "description":"Tests whether there is full match of regular expression with a string.\nA match of a regular expression in a string is a full match if it\nstarts at index 0 and ends at index `n`, where `n` is the length of the string.\n\n```ballerina\nstring:RegExp r = re `A|Th.*ch|^`;\nr.isFullMatch(\"This is a Match\") ⇒ true\nr.isFullMatch(\"Not a complete Match\") ⇒ false\n```", "parameters":[{"name":"re", "description":"the regular expression", "type":{"name":"RegExp", "links":[{"category":"internal", "recordName":"RegExp"}]}}, {"name":"str", "description":"the string", "type":{"name":"string"}}], "return":{"description":"true if there is full match of `re` with `str`, and false otherwise", "type":{"name":"boolean"}}}, {"name":"matchAt", "type":"Normal Function", "description":"Tests whether there is a match of a regular expression at a specific index in the string.\n\n```ballerina\nstring:RegExp r = re `World`;\nr.matchAt(\"Hello World\") is () ⇒ true\nr.matchAt(\"Hello World\", 6) is regexp:Span ⇒ true\n```", "parameters":[{"name":"re", "description":"the regular expression", "type":{"name":"RegExp", "links":[{"category":"internal", "recordName":"RegExp"}]}}, {"name":"str", "description":"the string in which to look for a match of `re`", "type":{"name":"string"}}, {"name":"startIndex", "description":"the index within `str` at which to look for a match; defaults to zero", "type":{"name":"int"}, "default":"0"}], "return":{"description":"a `Span` describing the match, or nil if `re` did not match at that index; the startIndex of the\n`Span` will always be equal to `startIndex`", "type":{"name":"Span?", "links":[{"category":"internal", "recordName":"Span"}]}}}, {"name":"matchGroupsAt", "type":"Normal Function", "description":"Returns the `Groups` of the match of a regular expression at a specific index in the string.\n\n```ballerina\nstring:RegExp r = re `([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])?`;\nr.matchGroupsAt(\"time: 14:35:59\") is () ⇒ true\nr.matchGroupsAt(\"time: 14:35:59\", 6) is regexp:Groups ⇒ true\n```", "parameters":[{"name":"re", "description":"the regular expression", "type":{"name":"RegExp", "links":[{"category":"internal", "recordName":"RegExp"}]}}, {"name":"str", "description":"the string in which to look for a match of `re`", "type":{"name":"string"}}, {"name":"startIndex", "description":"the index within `str` at which to look for a match; defaults to zero", "type":{"name":"int"}, "default":"0"}], "return":{"description":"a `Groups` list describing the match, or nil if `re` did not match at that index; the startIndex of the\nfirst `Span` in the list will always be equal to the `startIndex` of the first member of the list", "type":{"name":"Groups?", "links":[{"category":"internal", "recordName":"Groups"}]}}}, {"name":"replace", "type":"Normal Function", "description":"Replaces the first match of a regular expression.\n\n```ballerina\nstring:RegExp r = re `0+`;\nr.replace(\"10010011\", \"*\") ⇒ 1*10011\nr.replace(\"10010011\", \"*\", 4) ⇒ 1001*11\nr.replace(\"122111\", \"*\") ⇒ 122111\nr.replace(\"10010011\", replaceFunction) ⇒ 1*10011\nr.replace(\"10010011\", replaceFunction, 4) ⇒ 1001*11\nisolated function replaceFunction(regexp:Groups groups) returns string => \"*\";\n```", "parameters":[{"name":"re", "description":"the regular expression", "type":{"name":"RegExp", "links":[{"category":"internal", "recordName":"RegExp"}]}}, {"name":"str", "description":"the string in which to perform the replacements", "type":{"name":"string"}}, {"name":"replacement", "description":"a `Replacement` that gives the replacement for the match", "type":{"name":"Replacement", "links":[{"category":"internal", "recordName":"Replacement"}]}}, {"name":"startIndex", "description":"the index within `str` at which to start looking for a match; defaults to zero", "type":{"name":"int"}, "default":"0"}], "return":{"description":"`str` with the first match, if any, replaced by the string specified by `replacement`", "type":{"name":"string"}}}, {"name":"replaceAll", "type":"Normal Function", "description":"Replaces all matches of a regular expression.\nAfter one match is found, it looks for the next match starting where the previous\nmatch ended, so the matches will be non-overlapping.\n\n```ballerina\nstring:RegExp r = re `0+`;\nr.replaceAll(\"10010011\", \"*\") ⇒ 1*1*11\nr.replaceAll(\"10010011\", \"*\", 4) ⇒ 1001*11\nr.replaceAll(\"122111\", \"*\") ⇒ 122111\nr.replaceAll(\"10010011\", replaceFunction) ⇒ 121211\nr.replaceAll(\"10010011\", replaceFunction, 4) ⇒ 1001211\nisolated function replaceFunction(regexp:Groups groups) returns string => groups[0].substring().length().toString();\n```", "parameters":[{"name":"re", "description":"the regular expression", "type":{"name":"RegExp", "links":[{"category":"internal", "recordName":"RegExp"}]}}, {"name":"str", "description":"the string in which to perform the replacements", "type":{"name":"string"}}, {"name":"replacement", "description":"a `Replacement` that gives the replacement for each match", "type":{"name":"Replacement", "links":[{"category":"internal", "recordName":"Replacement"}]}}, {"name":"startIndex", "description":"the index within `str` at which to start looking for matches; defaults to zero", "type":{"name":"int"}, "default":"0"}], "return":{"description":"`str` with every match replaced by the string specified by `replacement`", "type":{"name":"string"}}}, {"name":"split", "type":"Normal Function", "description":"Splits a string into substrings separated by matches of a regular expression.\nThis finds the the non-overlapping matches of a regular expression and\nreturns a list of substrings of `str` that occur before the first match,\nbetween matches, or after the last match. If there are no matches, then\n`[str]` will be returned.\n\n```ballerina\nstring:RegExp r = re `,`;\nr.split(\"abc,cde,efg\") ⇒ [\"abc\",\"cde\",\"efg\"]\nr.split(\"abc cde efg\") ⇒ [\"abc cde efg\"]\n```", "parameters":[{"name":"re", "description":"the regular expression that specifies the separator", "type":{"name":"RegExp", "links":[{"category":"internal", "recordName":"RegExp"}]}}, {"name":"str", "description":"the string to be split", "type":{"name":"string"}}], "return":{"description":"a list of substrings of `str` separated by matches of `re`", "type":{"name":"string[]"}}}]}]; + diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/libs.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/libs.ts new file mode 100644 index 00000000000..a0dc70913f6 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/libs.ts @@ -0,0 +1,148 @@ +// 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 { generateObject, CoreMessage } from "ai"; +import { z } from "zod"; +import { + MinifiedLibrary, + RelevantLibrariesAndFunctionsRequest, + RelevantLibrariesAndFunctionsResponse, +} from "@wso2/ballerina-core"; +import { Library } from "./libs_types"; +import { selectRequiredFunctions } from "./funcs"; +import { getAnthropicClient, ANTHROPIC_HAIKU } from "../connection"; +import { langClient } from "../../activator"; +import { getGenerationMode } from "../utils"; +import { AIPanelAbortController } from "../../../../../src/rpc-managers/ai-panel/utils"; + +interface LibraryListResponse { + libraries: string[]; +} + +const LibraryListSchema = z.object({ + libraries: z.array(z.string()), +}); + +// export async function getRelevantLibs(params: GenerateCodeParams): Promise { +// // const prompt = getReadmeQuery(params); +// const selectedLibs: string[] = await getSelectedLibraries(prompt); +// return selectRequiredFunctions(prompt, selectedLibs) +// } + +export enum GenerationType { + CODE_GENERATION = "CODE_GENERATION", + HEALTHCARE_GENERATION = "HEALTHCARE_GENERATION", +} + +export async function getRelevantLibrariesAndFunctions( + params: RelevantLibrariesAndFunctionsRequest, + generationType: GenerationType +): Promise { + const selectedLibs: string[] = await getSelectedLibraries(params.query, generationType); + const relevantTrimmedFuncs: Library[] = await selectRequiredFunctions(params.query, selectedLibs, generationType); + return { + libraries: relevantTrimmedFuncs, + }; +} + +export async function getSelectedLibraries(prompt: string, generationType: GenerationType): Promise { + const allLibraries = await getAllLibraries(generationType); + if (allLibraries.length === 0) { + return []; + } + const messages: CoreMessage[] = [ + { + role: "system", + content: getSystemPrompt(allLibraries), + providerOptions: { + anthropic: { cacheControl: { type: "ephemeral" } }, + }, + }, + { + role: "user", + content: getUserPrompt(prompt, generationType), + }, + ]; + + //TODO: Add thinking and test with claude haiku + const startTime = Date.now(); + const { object } = await generateObject({ + model: await getAnthropicClient(ANTHROPIC_HAIKU), + maxTokens: 4096, + temperature: 0, + messages: messages, + schema: LibraryListSchema, + abortSignal: AIPanelAbortController.getInstance().signal, + }); + const endTime = Date.now(); + console.log(`Library selection took ${endTime - startTime}ms`); + + console.log("Selected libraries:", object.libraries); + return object.libraries; +} + +function getSystemPrompt(libraryList: MinifiedLibrary[]): string { + return `You are an assistant tasked with selecting all the Ballerina libraries needed to answer a specific question from a given set of libraries provided in the context as a JSON. RESPOND ONLY WITH A JSON. +# Library Context JSON +${JSON.stringify(libraryList)}`; +} + +function getUserPrompt(prompt: string, generationType: GenerationType): string { + return ` +# QUESTION +${prompt} + +# Example +Context: +[ + { + "name": "ballerinax/azure.openai.chat", + "description": "Provides a Ballerina client for the Azure OpenAI Chat API." + }, + { + "name": "ballerinax/github", + "description": "Provides a Ballerina client for the GitHub API." + }, + { + "name": "ballerinax/slack", + "description": "Provides a Ballerina client for the Slack API." + }, + { + "name": "ballerinax/http", + "description": "Allows to intract with HTTP services." + } + +] +Question: +Write an application to read github issue, summarize them and post the summary to a slack channel. + +Response: +{ + "libraries": ["ballerinax/github", "ballerinax/slack", "ballerinax/azure.openai.chat"] +} +${ + generationType === GenerationType.CODE_GENERATION + ? "" + : " ALWAYS include `ballerinax/health.base`, `ballerinax/health.fhir.r4`, `ballerinax/health.fhir.r4.parser`, `ballerinax/health.fhir.r4utils`, `ballerinax/health.fhir.r4.international401`, `ballerinax/health.hl7v2commons` and `ballerinax/health.hl7v2` libraries in the selection in addition to what you selected." +}`; +} + +export async function getAllLibraries(generationType: GenerationType): Promise { + const result = (await langClient.getCopilotCompactLibraries({ + mode: getGenerationMode(generationType), + })) as { libraries: MinifiedLibrary[] }; + return result.libraries as MinifiedLibrary[]; +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/libs_types.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/libs_types.ts new file mode 100644 index 00000000000..6ff8c85fd5c --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/libs/libs_types.ts @@ -0,0 +1,220 @@ +// 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 { jsonSchema } from "ai"; + +export interface Type { + name: string; + links?: Link[]; +} + +export interface Link { + category: Category; + recordName: string; + libraryName?: string; +} + +export type Category = "internal" | "external"; + +export interface Parameter { + name: string; + description: string; + type: Type; + default?: string; +} + +export interface ParameterDef { + description: string; + type: Type; + default?: string; + optional: boolean; +} + +export interface Return { + description?: string; + type: Type; +} + +export interface EnumValue { + name: string; + description: string; +} + +export interface Field { + name: string; + description: string; + type: Type; + default?: string; +} + +export interface UnionValue { + name: string; + type: Type; +} + +export interface PathParameter { + name: string; + type: string; +} + +export interface TypeDefinitionBase { + name: string; + description: string; + type: string; +} + +export interface ConstantTypeDefinition extends TypeDefinitionBase { + value: string; + varType: Type; +} + +export interface RecordTypeDefinition extends TypeDefinitionBase { + fields: Field[]; +} + +export interface EnumTypeDefinition extends TypeDefinitionBase { + members: EnumValue[]; +} + +export interface UnionTypeDefinition extends TypeDefinitionBase { + members: UnionValue[]; +} + +export interface ClassTypeDefinition extends TypeDefinitionBase { + functions: any[]; +} + +export type TypeDefinition = + | RecordTypeDefinition + | EnumTypeDefinition + | UnionTypeDefinition + | ClassTypeDefinition + | TypeDefinitionBase + | ConstantTypeDefinition; + +export interface AbstractFunction { + type: string; + description: string; + parameters: Parameter[]; + return: Return; +} + +export interface ResourceFunction extends AbstractFunction { + accessor: string; + paths: (PathParameter | string)[]; +} + +export interface RemoteFunction extends AbstractFunction { + name: string; +} + +export interface ServiceRemoteFunction { + type: "remote" | "resource"; + description: string; + parameters: ParameterDef[]; + return: Return; + optional: boolean; +} + +export interface Client { + name: string; + description: string; + functions: (RemoteFunction | ResourceFunction)[]; +} + +export interface Listener { + name: string; + parameters: Parameter[]; +} + +export interface Service { + listener: Listener; + type: "generic" | "fixed"; +} + +export interface GenericService extends Service { + instructions: string; + type: "generic"; +} + +export interface FixedService extends Service { + type: "fixed"; + methods: ServiceRemoteFunction[]; +} + +export interface Library { + name: string; + description: string; + typeDefs: TypeDefinition[]; + clients: Client[]; + functions?: RemoteFunction[]; + services?: Service[]; +} + + +export interface LibraryWithUrl extends Library { + library_link: string; +} + +export interface MiniType { + name: string; + description: string; +} + +export interface GetTypesRequest { + name: string; + description: string; + types: MiniType[]; + +} + +export interface GetTypeResponse { + libName: string; + types: MiniType[]; +} + +export interface GetTypesResponse { + libraries: GetTypeResponse[]; +} + + +export const getTypesResponseSchema = jsonSchema({ + type: 'object', + properties: { + libraries: { + type: 'array', + items: { + type: 'object', + properties: { + libName: { type: 'string' }, + types: { + type: 'array', + items: { + type: 'object', + properties: { + name: { type: 'string' }, + description: { type: 'string' } + }, + required: ['name', 'description'] + } + } + }, + required: ['libName', 'types'] + } + } + }, + required: ['libraries'] +}); diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/openapi/openapi.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/openapi/openapi.ts new file mode 100644 index 00000000000..6f6cf2cb37c --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/openapi/openapi.ts @@ -0,0 +1,115 @@ +// 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 { GenerateOpenAPIRequest, Command } from "@wso2/ballerina-core"; +import { streamText } from "ai"; +import { getAnthropicClient, ANTHROPIC_HAIKU } from "../connection"; +import { getErrorMessage, populateHistory } from "../utils"; +import { CopilotEventHandler, createWebviewEventHandler } from "../event"; +import { AIPanelAbortController } from "../../../../../src/rpc-managers/ai-panel/utils"; + +// Core OpenAPI generation function that emits events +export async function generateOpenAPISpecCore( + params: GenerateOpenAPIRequest, + eventHandler: CopilotEventHandler +): Promise { + // Populate chat history and add user message + const historyMessages = populateHistory(params.chatHistory); + const { fullStream } = streamText({ + model: await getAnthropicClient(ANTHROPIC_HAIKU), + maxTokens: 8192, + temperature: 0, + messages: [ + { + role: "system", + content: getSystemPrompt(), + providerOptions: { + anthropic: { cacheControl: { type: "ephemeral" } }, + }, + }, + ...historyMessages, + { + role: "user", + content: getUserPrompt(params.query), + }, + ], + abortSignal: AIPanelAbortController.getInstance().signal, + }); + + eventHandler({ type: "start" }); + + for await (const part of fullStream) { + switch (part.type) { + case "text-delta": { + const textPart = part.textDelta; + eventHandler({ type: "content_block", content: textPart }); + break; + } + case "error": { + const error = part.error; + console.error("Error during OpenAPI generation:", error); + eventHandler({ type: "error", content: getErrorMessage(error) }); + break; + } + case "finish": { + const finishReason = part.finishReason; + eventHandler({ type: "stop", command: Command.OpenAPI }); + break; + } + } + } +} + +// Main public function that uses the default event handler +export async function generateOpenAPISpec(params: GenerateOpenAPIRequest): Promise { + const eventHandler = createWebviewEventHandler(Command.OpenAPI); + try { + await generateOpenAPISpecCore(params, eventHandler); + } catch (error) { + console.error("Error during openapi generation:", error); + eventHandler({ type: "error", content: getErrorMessage(error) }); + } +} + +function getSystemPrompt() { + return `You are an expert architect who specializes in API Design. +For a given user scenario, you need to design the optimal OpenAPI Specification. + +Think step by step to design the perfect OpenAPI Spec. +1. Analyze the given scenario and understand the scenario. +2. Identify the resources, input types, and output types needed. +3. Write the OpenAPI Spec according to REST conventions. + +Politely reject any queries which are not related to OpenAPI Specification Design. + +* Always generate the Complete self contained OpenAPI Spec even if the user ask to modify part of the spec. + +Begin with a short description on the response and end with the OpenAPI spec. + +Example Output: +Short description about the response. + +${"```"}yaml +//openapi spec goes here +${"```"} + +`; +} + +function getUserPrompt(query: string): string { + return `User Scenario: +${query}`; +} 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 new file mode 100644 index 00000000000..f163a14c390 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/function_tests.ts @@ -0,0 +1,118 @@ +// 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 { 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 { CopilotEventHandler, createWebviewEventHandler } from "../event"; + +// 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({ + type: "content_block", + content: `\n\n**Initiating test generation for the function ${functionIdentifier}, following the _outlined test plan_. Please wait...**`, + }); + eventHandler({ + type: "content_block", + content: `\n\nGenerating tests for the function ${functionIdentifier}. This may take a moment.`, + }); + + const projectRoot = await getBallerinaProjectRoot(); + const response = await generateTest(projectRoot, { + targetType: TestGenerationTarget.Function, + targetIdentifier: functionIdentifier, + testPlan: params.testPlan, + }); + + eventHandler({ + type: "content_block", + content: `\nAnalyzing generated tests for potential issues.`, + }); + + let existingSource = ""; + try { + // existingSource = await rpcClient.getAiPanelRpcClient().getFromFile({ filePath: testPath }); + const projectFsPath = URI.parse(testPath).fsPath; + existingSource = await fs.promises.readFile(projectFsPath, "utf-8"); + } catch { + // File doesn't exist + } + const generatedFullSource = existingSource + ? existingSource + "\n\n// >>>>>>>>>>>>>>TEST CASES NEED TO BE FIXED <<<<<<<<<<<<<<<\n\n" + response.testSource + : response.testSource; + + const diagnostics = await getDiagnostics(projectRoot, { + testSource: generatedFullSource, + }); + + console.log(diagnostics); + + let testCode = response.testSource; + const testConfig = response.testConfig; + + if (diagnostics.diagnostics.length > 0) { + eventHandler({ + type: "content_block", + content: `\nRefining tests based on feedback to ensure accuracy and reliability.`, + }); + + const fixedCode = await generateTest(projectRoot, { + targetType: TestGenerationTarget.Function, + targetIdentifier: functionIdentifier, + testPlan: params.testPlan, + diagnostics: diagnostics, + existingTests: generatedFullSource, + }); + testCode = fixedCode.testSource; + } + + eventHandler({ + type: "content_block", + content: `\n\nTest generation completed. Displaying the generated tests for the function ${functionIdentifier} below:`, + }); + eventHandler({ + type: "content_block", + content: `\n\n\n\`\`\`ballerina\n${testCode}\n\`\`\`\n`, + }); + if (testConfig) { + eventHandler({ + type: "content_block", + content: `\n\n\n\`\`\`ballerina\n${testConfig}\n\`\`\`\n`, + }); + } + + eventHandler({ type: "stop", command: Command.Tests }); +} + +// Main public function that uses the default event handler +export async function generateFunctionTests(params: TestGeneratorIntermediaryState): Promise { + const eventHandler = createWebviewEventHandler(Command.Tests); + try { + await generateFunctionTestsCore(params, eventHandler); + } catch (error) { + console.error("Error during function test generation:", error); + eventHandler({ type: "error", content: getErrorMessage(error) }); + } +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/prompts.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/prompts.ts new file mode 100644 index 00000000000..bc6bb07fba5 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/prompts.ts @@ -0,0 +1,786 @@ +// 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 { TestGenerationRequest1, ProjectSource, Diagnostic } from "./test"; +import { CoreMessage } from "ai"; +import { flattenProjectToText, getExternalTypesAsJsonSchema, getTypesAsJsonSchema, getDiagnosticsAsText, extractSectionToFix } from "./utils"; + +// ============================================== +// SYSTEM PROMPTS +// ============================================== + +export function getServiceTestGenerationSystemPrompt(): string { + return `You are an expert Ballerina developer specializing in test automation. Your task is to analyze Ballerina source code and generate comprehensive and compilable test cases that cover functionality, edge cases, and error scenarios.`; +} + +export function getServiceTestGenAssistant1Prompt(): string { + return `I have analyzed both the Ballerina service implementation and the OpenAPI component definitions. I understand: + - All HTTP endpoints and their respective methods + - The request/response payload structures + - External type definitions from OpenAPI components + - How the service uses the OpenAPI-defined types + - Parameter handling (path params, query params) + - Service configurations and listener setup + - Error scenarios and status code mappings + - External service dependencies + +I am ready to generate appropriate test cases for this service. +`; +} + +export function getServiceTestDiagnosticsSystemPrompt(): string { + return `You are an expert Ballerina developer, code debugger and fixer with deep knowledge of JSON schemas and test generation. Your task is to analyze the provided Ballerina codebase, JSON schema, generated test file, and its diagnostics, then provide corrected test code that resolves all issues. Follow these guidelines: + +1. Carefully review each diagnostic and its corresponding line number. +2. Identify the root cause of each issue. +3. Apply best practices and maintain code style consistency when making corrections. +4. Provide the full corrected code, not just the changed lines. +5. If any fixes introduce new variables or functions, ensure they're properly integrated. +6. Verify that your fixes don't introduce new issues.`; +} + +export function getFunctionTestGenerationSystemPrompt(): string { + return `You are an expert Ballerina developer, code debugger and fixer with deep knowledge of JSON schemas and test generation. Your task is to analyze the provided Ballerina codebase, JSON schema, generated test file, and its diagnostics, then provide corrected test code that resolves all issues. Follow these guidelines: + +1. Carefully review each diagnostic and its corresponding line number. +2. Identify the root cause of each issue. +3. Apply best practices and maintain code style consistency when making corrections. +4. Provide the full corrected code, not just the changed lines. +5. If any fixes introduce new variables or functions, ensure they're properly integrated. +6. Verify that your fixes don't introduce new issues.`; +} + +// ============================================== +// SERVICE TEST GEN PROMPTS +// ============================================== + +export function getServiceTestGenUser1Prompt(sourceCode: string, typeSchemas: string): string { + return `I will provide you with: + 1. A Ballerina service implementation + 2. OpenAPI component specifications containing type definitions used by the service + +Please carefully analyze and understand: + - The HTTP endpoints and their methods (GET, POST, PUT, DELETE, PATCH, etc.) + - Request/response payload structures and types + - External type definitions from the OpenAPI components section + - Mapping between service types and OpenAPI-defined types + - Path parameters and query parameters + - Service configuration and listener details + - Error handling and response status codes + - Service dependencies and external service calls + +1. Ballerina Source Code (The first line of the source contains the commented file path and name): +[BEGIN_SOURCE] +${sourceCode} +[END_SOURCE] + + +2. Type Schemas for External Libraries: +[BEGIN_SCHEMAS] +${typeSchemas} +[END_SCHEMAS] +`; +} + +export function getServiceTestGenUser2Prompt(serviceName: string): string { + return `Generate comprehensive test cases for ALL resource functions in the Ballerina service named as ${serviceName}. Your response MUST follow this exact structure: + +Note: In the response don't mention the fact that you are following a defined structure. And don't break the response into sections, just give the response in a natuaral flow. + +1. CONFIGURATION GENERATION (enclosed in tags and use \`\`\`toml{content}\`\`\`); +Generate a Config.toml for the configurable variables in the source code +Note: If there are no any configurable variables just ignore this section + +2. TEST IMPLEMENTATION (enclosed in tags and use \`\`\`ballerina{code}\`\`\`): +Generated test code following these strict guidelines: + +A. Test File Structure: + - Start with necessary imports, including \`ballerina/http\`, \`ballerina/test\` any other imports that is required. + - Define an HTTP Client at the module level named \`clientEp\` + - Include @test:BeforeSuite and @test:AfterSuite if needed + - Organize tests logically: create, read, update, delete + - Create helper functions only when improving readability + - Don't redefine existing types from OpenAPI components + +B. Test Function Generation: + - MUST generate AT LEAST ONE test case for EACH resource function + - Use \`@test:Config {}\` annotation for each test function, with dependsOn property when applicable. + - Ensure each test function returns \`error?\` and use \`check\` keyword for error propagation. + - Use proper HTTP method invocation syntax as per the provided example. + - GET: + - Ballerina Resource -> resource function get books/[string isbn]() returns Book|Error + - Resource invocation -> {Type} {variableName} = check clientEp->/books/[{isbn}](); + - Example -> Book book = check clientEp->/books/[12345678](); + - POST: + - Ballerina Resource -> resource function post books(@http:Payload Book newBook) returns string|error + - Resource invocation -> {Type} {variableName} = clientEp->/books.post({payload}); + - Example -> Book book = check clientEp->/books.post(definedBook); + - PUT: + - Ballerina Resource -> resource function put books/[string isbn](@http:Payload Book updatedBook, @http:Query string name) returns string|error + - Resource invocation -> {Type} {variableName} = clientEp->/books/[{isbn}].put({payload}, name = {value}); + - Example -> Book book = check clientEp->/books/isbn\-number.put(definedUpdatedBook, name = "BookName"); + - DELETE: + - Ballerina Resource -> resource function delete books(@http:Query string isbn) returns string|error + - Resource invocation -> {Type} {variableName} = clientEp->/books.delete(isbn = {value}); + - PATCH: + - Ballerina Resource -> resource function patch books/[string isbn](@http:Payload Book updatedBook, @http:Query string name) returns string|error + - Resource invocation -> {Type} {variableName} = clientEp->/books/[{isbn}].patch({payload}, name = {value}); + - For non-annotated resource function parameters, treat records as body params and others as query params. + - When generating negative test cases, focus only on scenarios that are explicitly handled in the existing code base and avoid generating tests for theoretical edge cases not addressed in the current codebase. + +C. Response Handling: + - Use direct data binding for positive test cases based on source code or type schemas. + - For negative test cases, use \`http:Response\` variables and check status codes. + - Check for \`x-ballerina-type\` extension in type schemas and if those types were used in the code, include necessary imports. + - Always assign responses to variables with specific types. + +D. Assertions and Validation: + - Use only \`test:assertEquals(actualVar, expectedVar, msg)\` for assertions. + - When asserting decimals, use \`d\` at the end of the decimal literal (e.g., 123.45d). + - Provide clear and descriptive messages for each assertion. + +E. Code Quality: + - Follow Ballerina naming conventions and best practices. + - Add comments explaining the purpose of each test and any complex logic. + - Ensure the generated code is comprehensive, robust, maintainable, and clear. + +3. COMPLETION STATUS (enclosed in tags): +Indicate "DONE" if all resource functions are covered, or "CONTINUE" if more tests are pending. + +Important Notes: +- Generate tests for EVERY single resource function in the service +- If response length limits prevent complete coverage, generate as many tests as possible +- Remaining tests can be requested in subsequent prompts +- If there are any remaining tests to be generated don't mention that as a comment as part of the generated code. +`; +} + +export function getServiceTestGenUser2WithPlanPrompt(serviceName: string, testPlan: string): string { + return `Generate comprehensive test cases for ALL resource functions in the Ballerina service named as ${serviceName}, based on the provided test plan. + +The test implementation MUST: + 1. Address each test scenario in the test plan sequentially + 2. Implement exact test conditions specified in the test plan + 3. Validate all expected outcomes mentioned in the test plan + 4. Follow any specific test data requirements provided in the test plan + 5. Not deviate from or add scenarios not mentioned in the test plan + +[BEGIN_TEST_PLAN] +${testPlan} +[END_TEST_PLAN] + +1. CONFIGURATION GENERATION (enclosed in tags and use \`\`\`toml{content}\`\`\`); +Generate a Config.toml for the configurable variables in the source code +Note: If there are no any configurable variables just ignore this section + +2. TEST IMPLEMENTATION (enclosed in tags and use \`\`\`ballerina{code}\`\`\`): +Generated test code following these strict guidelines: + +A. Test File Structure: + - Start with necessary imports, including \`ballerina/http\`, \`ballerina/test\` any other imports that is required. + - Define an HTTP Client at the module level named \`clientEp\` + - Include @test:BeforeSuite and @test:AfterSuite if needed + - Organize tests logically: create, read, update, delete + - Create helper functions only when improving readability + - Don't redefine existing types from OpenAPI components + +B. Test Function Generation: + - MUST strictly follow the test scenarios outlined in the provided test plan + - Generate individual test functions for EACH test scenario mentioned in the test plan + - Name test functions to clearly indicate which test plan scenario they cover + - Include comments referencing the specific test plan scenario being implemented + - Ensure test implementation covers all acceptance criteria mentioned in each test scenario + - For each test scenario in the test plan: + - Implement the exact test conditions specified + - Validate all expected outcomes mentioned + - Handle any specific error cases noted + - Follow any specific test data requirements + - Use \`@test:Config {}\` annotation for each test function, with dependsOn property when applicable + - Ensure each test function returns \`error?\` and use \`check\` keyword for error propagation + - Use proper HTTP method invocation syntax as per the provided example + - GET: + - Ballerina Resource -> resource function get books/[string isbn]() returns Book|Error + - Resource invocation -> {Type} {variableName} = check clientEp->/books/[{isbn}](); + - Example -> Book book = check clientEp->/books/[12345678](); + - POST: + - Ballerina Resource -> resource function post books(@http:Payload Book newBook) returns string|error + - Resource invocation -> {Type} {variableName} = clientEp->/books.post({payload}); + - Example -> Book book = check clientEp->/books.post(definedBook); + - PUT: + - Ballerina Resource -> resource function put books/[string isbn](@http:Payload Book updatedBook, @http:Query string name) returns string|error + - Resource invocation -> {Type} {variableName} = clientEp->/books/[{isbn}].put({payload}, name = {value}); + - Example -> Book book = check clientEp->/books/isbn\-number.put(definedUpdatedBook, name = "BookName"); + - DELETE: + - Ballerina Resource -> resource function delete books(@http:Query string isbn) returns string|error + - Resource invocation -> {Type} {variableName} = clientEp->/books.delete(isbn = {value}); + - PATCH: + - Ballerina Resource -> resource function patch books/[string isbn](@http:Payload Book updatedBook, @http:Query string name) returns string|error + - Resource invocation -> {Type} {variableName} = clientEp->/books/[{isbn}].patch({payload}, name = {value}); + - For non-annotated resource function parameters, treat records as body params and others as query params + - When generating negative test cases, implement only those scenarios explicitly mentioned in the test plan + +C. Response Handling: + - Use direct data binding for positive test cases based on source code or type schemas. + - For negative test cases, use \`http:Response\` variables and check status codes. + - Check for \`x-ballerina-type\` extension in type schemas and if those types were used in the code, include necessary imports. + - Always assign responses to variables with specific types. + +D. Assertions and Validation: + - Use only \`test:assertEquals(actualVar, expectedVar, msg)\` for assertions. + - When asserting decimals, use \`d\` at the end of the decimal literal (e.g., 123.45d). + - Provide clear and descriptive messages for each assertion. + +E. Code Quality: + - Follow Ballerina naming conventions and best practices. + - Add comments explaining the purpose of each test and any complex logic. + - Ensure the generated code is comprehensive, robust, maintainable, and clear. + +3. COMPLETION STATUS (enclosed in tags): +Indicate "DONE" if all resource functions are covered, or "CONTINUE" if more tests are pending. + +Important Notes: +- Generate tests for EVERY single resource function in the service +- If response length limits prevent complete coverage, generate as many tests as possible +- Remaining tests can be requested in subsequent prompts +- If there are any remaining tests to be generated don't mention that as a comment as part of the generated code. +`; +} + +export function getServiceTestDiagnosticsAssistant1Prompt(): string { + return `Thank you for providing the Ballerina codebase and JSON schema. I've carefully analyzed both components and am now prepared to receive the generated test file and its diagnostics. This information will allow me to understand the context fully and identify any inconsistencies or issues between the test file, the codebase, and the schema. + +Please proceed with sharing the generated test file and the diagnostics in your next message. Once I have all the information, I'll be able to provide a comprehensive fix for the test file, ensuring it aligns with the codebase and conforms to the JSON schema. +`; +} + +export function getServiceTestDiagnosticsUser2Prompt(diagnostics: string, sourceCode: string): string { + return `Here's the second part of the information: + +3. Generated Test File: +[GENERATED_TEST_FILE] +\`\`\`ballerina +${sourceCode} +\`\`\` +[GENERATED_TEST_FILE] + +4. Diagnostics: +[BEGIN_DIAGNOSTICS] +${diagnostics} +[END_DIAGNOSTICS] + +5. StatusCode responses +- http:Continue +- http:SwitchingProtocols +- http:Processing +- http:EarlyHints +- http:Ok +- http:Created +- http:Accepted +- http:NonAuthoritativeInformation +- http:NoContent +- http:ResetContent +- http:PartialContent +- http:MultiStatus +- http:AlreadyReported +- http:IMUsed +- http:MultipleChoices +- http:MovedPermanently +- http:Found +- http:SeeOther +- http:NotModified +- http:UseProxy +- http:TemporaryRedirect +- http:PermanentRedirect +- http:BadRequest +- http:Unauthorized +- http:PaymentRequired +- http:Forbidden +- http:NotFound +- http:MethodNotAllowed +- http:NotAcceptable +- http:ProxyAuthenticationRequired +- http:RequestTimeout +- http:Conflict +- http:Gone +- http:LengthRequired +- http:PreconditionFailed +- http:PayloadTooLarge +- http:UriTooLong +- http:UnsupportedMediaType +- http:RangeNotSatisfiable +- http:ExpectationFailed +- http:MisdirectedRequest +- http:UnprocessableEntity +- http:Locked +- http:FailedDependency +- http:TooEarly +- http:PreconditionRequired +- http:UnavailableDueToLegalReasons +- http:UpgradeRequired +- http:TooManyRequests +- http:RequestHeaderFieldsTooLarge +- http:InternalServerError +- http:NotImplemented +- http:BadGateway +- http:ServiceUnavailable +- http:GatewayTimeout +- http:HttpVersionNotSupported +- http:VariantAlsoNegotiates +- http:InsufficientStorage +- http:LoopDetected +- http:NotExtended +- http:NetworkAuthorizationRequired +- http:NetworkAuthenticationRequired + +Task: +Analyze the provided test file, diagnostics and the status code responses, then produce a corrected version of the entire test file that resolves all identified issues. Ensure that the fixed test file is compatible with the given Ballerina codebase and JSON schema. + +Key Considerations: +1. Data Binding Rules: + a. For records that contains Ballerina status code response as inclusions (e.g., \`*http:Ok\`, \`*http:Created\`, \`*http:NotFound\`), bind data to the \`body\` field: + Example: + \`\`\`ballerina + type RecordType record {| + *http:Ok; + Body body; + |}; + + // Service code + service /test on new http:Listener(8080) { + resource function get name() returns RecordType|error { + return { + // values + body: { + // values + } + } + } + } + + // When data binding, + final http:Client clientEP = check new ("http://localhost:8080/test"); + Body body = check clientEP->/name; + \`\`\` + Bind to 'Body' instead of 'RecordType'. + + b. For pure Ballerina status code responses, bind data to \`http:Response\`. + + c. In positive test cases, always bind data directly to the expected type(Except for the above mentioned cases). + +2. Error Handling: Use check expressions instead of error unions, as the function returns an error type. + +3. Make sure to remove any unused imports. + +4. Maintain Existing Correctness: When fixing issues, ensure that you don't introduce new problems or revert correct implementations. + +Output: +Provide the complete, corrected test file with all issues resolved, incorporating the above considerations. Include clear comments explaining significant changes or complex logic. + +Additional Instructions: +- Prioritize code correctness and adherence to Ballerina best practices. +- Ensure all imports are correct and necessary. +- Verify that all test cases are properly implemented and cover the required scenarios. +- Double-check that the corrected code addresses all points in the diagnostics. +`; +} + +// ============================================== +// FUNCTION TEST GEN PROMPTS +// ============================================== + +export function getFunctionTestGenUserPrompt(resourceFunction: string, serviceCode: string, testPlan: string, typeSchemas: string): string { + return `Generate comprehensive test cases for the below resource function, based on the provided test plan, service implementation and types.: + +[BEGIN_RESOURCE_FUNCTION] +${resourceFunction} +[END_RESOURCE_FUNCTION] + +Service Implementation Context: +[BEGIN_SERVICE_CODE] +${serviceCode} +[END_SERVICE_CODE] + +Types Declared in the Source as Json Schema: +[BEGIN_SCHEMAS] +${typeSchemas} +[END_SCHEMAS] + +The test implementation MUST: + 1. Address each test scenario in the test plan sequentially + 2. Implement exact test conditions specified in the test plan + 3. Validate all expected outcomes mentioned in the test plan + 4. Follow any specific test data requirements provided in the test plan + 5. Not deviate from or add scenarios not mentioned in the test plan + +[BEGIN_TEST_PLAN] +${testPlan} +[END_TEST_PLAN] + +1. CONFIGURATION GENERATION (enclosed in tags and use \`\`\`toml{content}\`\`\`); +Generate a Config.toml for the configurable variables in the source code +Note: If there are no any configurable variables just ignore this section + +2. TEST IMPLEMENTATION (enclosed in tags and use \`\`\`ballerina{code}\`\`\`): +Generated test code following these strict guidelines: + +A. Test File Structure: + - Start with necessary imports, including \`ballerina/http\`, \`ballerina/test\` any other imports that is required + - Define an HTTP Client at the module level named \`clientEp\` + - Create helper functions only when improving readability + - Don't redefine any additional record types + +B. Test Function Generation: + - MUST strictly follow the test scenarios outlined in the provided test plan + - Generate individual test functions for EACH test scenario mentioned in the test plan + - Name test functions to clearly indicate which test plan scenario they cover + - Include comments referencing the specific test plan scenario being implemented + - Ensure test implementation covers all acceptance criteria mentioned in each test scenario + - For each test scenario in the test plan: + - Implement the exact test conditions specified + - Validate all expected outcomes mentioned + - Handle any specific error cases noted + - Follow any specific test data requirements + - Use \`@test:Config {}\` annotation for each test function, with dependsOn property when applicable + - Ensure each test function returns \`error?\` and use \`check\` keyword for error propagation + - Use proper HTTP method invocation syntax as per the provided example + - GET: + - Ballerina Resource -> resource function get books/[string isbn]() returns Book|Error + - Resource invocation -> {Type} {variableName} = check clientEp->/books/[{isbn}](); + - Example -> Book book = check clientEp->/books/[12345678](); + - POST: + - Ballerina Resource -> resource function post books(@http:Payload Book newBook) returns string|error + - Resource invocation -> {Type} {variableName} = clientEp->/books.post({payload}); + - Example -> Book book = check clientEp->/books.post(definedBook); + - PUT: + - Ballerina Resource -> resource function put books/[string isbn](@http:Payload Book updatedBook, @http:Query string name) returns string|error + - Resource invocation -> {Type} {variableName} = clientEp->/books/[{isbn}].put({payload}, name = {value}); + - Example -> Book book = check clientEp->/books/isbn\-number.put(definedUpdatedBook, name = "BookName"); + - DELETE: + - Ballerina Resource -> resource function delete books(@http:Query string isbn) returns string|error + - Resource invocation -> {Type} {variableName} = clientEp->/books.delete(isbn = {value}); + - PATCH: + - Ballerina Resource -> resource function patch books/[string isbn](@http:Payload Book updatedBook, @http:Query string name) returns string|error + - Resource invocation -> {Type} {variableName} = clientEp->/books/[{isbn}].patch({payload}, name = {value}); + - For non-annotated resource function parameters, treat records as body params and others as query params + - When generating negative test cases, implement only those scenarios explicitly mentioned in the test plan + - Do not generate types if the type is already defined in the schemas. + - NEVER implement custom mock classes; if mocking is necessary, use Ballerina's built-in test mocking syntax: + \`\`\`ballerina + // Create mock client + clientEndpoint = test:mock(http:Client); + + // Stub method behavior + test:prepare(clientEndpoint).when("methodName").thenReturn(mockResponse()); + + // Stub with specific arguments if needed + test:prepare(clientEndpoint).when("methodName").withArguments("/path").thenReturn(mockResponse()); + \`\`\` + +C. Response Handling: + - Use direct data binding for positive test cases based on source code or type schemas + - For negative test cases, use \`http:Response\` variables and check status codes + - Check for \`x-ballerina-type\` extension in type schemas and if those types were used in the code, include necessary imports + - Always assign responses to variables with specific types + +D. Assertions and Validation: + - Use only \`test:assertEquals(actualVar, expectedVar, msg)\` for assertions + - When asserting decimals, use \`d\` at the end of the decimal literal (e.g., 123.45d) + - Provide clear and descriptive messages for each assertion + +E. Code Quality: + - Follow Ballerina naming conventions and best practices + - Add comments explaining the purpose of each test and any complex logic + - Ensure the generated code is comprehensive, robust, maintainable, and clear +`; +} + +export function getFunctionTestGenUserSubsequentPrompt(resourceFunction: string, serviceCode: string, testPlan: string, typeSchemas: string, existingTestFile: string): string { + return `Please generate additional unit tests for the following Ballerina function, extending the existing test suite. + +FUNCTION TO TEST: ${resourceFunction} + +SERVICE CODE: +${serviceCode} + +TEST PLAN: +${testPlan} + +TYPE SCHEMAS: +${typeSchemas} + +EXISTING TEST FILE: +${existingTestFile} + +Requirements: +- Extend the existing test suite with additional test cases +- Follow the test plan for new scenarios +- Maintain consistency with existing test structure +- Add new test cases without duplicating existing ones +- Include proper assertions and test data + +Please provide the complete updated test file content.`; +} + +export function getFunctionTestGenUserDiagnosticPrompt(resourceFunction: string, serviceCode: string, testPlan: string, typeSchemas: string, existingTestFile: string, sectionToFix: string, diagnostics: string): string { + return `Fix Generated Ballerina Test Code based on Diagnostics + +Project Source Code: +[BEGIN_PROJECT_SOURCE] +${serviceCode} +[END_PROJECT_SOURCE] + +Types Declared in the Source as Json Schema: +[BEGIN_SCHEMAS] +${typeSchemas} +[END_SCHEMAS] + +Complete Test File: +[BEGIN_COMPLETE_TEST_FILE] +${existingTestFile} +[END_COMPLETE_TEST_FILE] + +Part of Test File Needing Fixes: +[BEGIN_SECTION_TO_FIX] +${sectionToFix} +[END_SECTION_TO_FIX] + +Diagnostics: +[BEGIN_DIAGNOSTICS] +${diagnostics} +[END_DIAGNOSTICS] + +Task: Analyze the provided test file and diagnostics, then fix ONLY the section identified in SECTION_TO_FIX. Return only the corrected version of this section. + +Key Considerations: +1. Data Binding Rules: + a. For records that contain Ballerina status code response as inclusions (e.g., \`*http:Ok\`, \`*http:Created\`, \`*http:NotFound\`), bind data to the \`body\` field: + Example: + \`\`\`ballerina + type RecordType record {| + *http:Ok; + Body body; + |}; + + // Service code + service /test on new http:Listener(8080) { + resource function get name() returns RecordType|error { + return { + // values + body: { + // values + } + } + } + } + + // When data binding, + final http:Client clientEP = check new ("http://localhost:8080/test"); + Body body = check clientEP->/name; + \`\`\` + Bind to 'Body' instead of 'RecordType'. + + b. For pure Ballerina status code responses, bind data to \`http:Response\`. + + c. In positive test cases, always bind data directly to the expected type (except for the above mentioned cases). + +2. Error Handling: Use check expressions instead of error unions, as the function returns an error type. + +3. Make sure to identify and fix any unused imports. + +4. Maintain Existing Correctness: When fixing issues, ensure that you don't introduce new problems or revert correct implementations. + +Available Status Code Responses: +- http:Continue +- http:SwitchingProtocols +- http:Processing +- http:EarlyHints +- http:Ok +- http:Created +- http:Accepted +- http:NonAuthoritativeInformation +- http:NoContent +- http:ResetContent +- http:PartialContent +- http:MultiStatus +- http:AlreadyReported +- http:IMUsed +- http:MultipleChoices +- http:MovedPermanently +- http:Found +- http:SeeOther +- http:NotModified +- http:UseProxy +- http:TemporaryRedirect +- http:PermanentRedirect +- http:BadRequest +- http:Unauthorized +- http:PaymentRequired +- http:Forbidden +- http:NotFound +- http:MethodNotAllowed +- http:NotAcceptable +- http:ProxyAuthenticationRequired +- http:RequestTimeout +- http:Conflict +- http:Gone +- http:LengthRequired +- http:PreconditionFailed +- http:PayloadTooLarge +- http:UriTooLong +- http:UnsupportedMediaType +- http:RangeNotSatisfiable +- http:ExpectationFailed +- http:MisdirectedRequest +- http:UnprocessableEntity +- http:Locked +- http:FailedDependency +- http:TooEarly +- http:PreconditionRequired +- http:UnavailableDueToLegalReasons +- http:UpgradeRequired +- http:TooManyRequests +- http:RequestHeaderFieldsTooLarge +- http:InternalServerError +- http:NotImplemented +- http:BadGateway +- http:ServiceUnavailable +- http:GatewayTimeout +- http:HttpVersionNotSupported +- http:VariantAlsoNegotiates +- http:InsufficientStorage +- http:LoopDetected +- http:NotExtended +- http:NetworkAuthorizationRequired +- http:NetworkAuthenticationRequired + +Output: +Provide ONLY the fixed code section. Your response should be enclosed in tags and use \`\`\`ballerina{code}\`\`\` format. +`; +} + +// ============================================== +// MESSAGE CREATION FUNCTIONS +// ============================================== + +export function createServiceTestGenMessages(request: TestGenerationRequest1): CoreMessage[] { + const serviceTestGenUser1 = createServiceTestGenUser1Message(request); + + if (!request.diagnostics || !request.existingTests) { + const serviceTestGenAssistant1 = createServiceTestGenAssistant1Message(); + const serviceTestGenUser2 = createServiceTestGenUser2Message(request); + return [serviceTestGenUser1, serviceTestGenAssistant1, serviceTestGenUser2]; + } else { + const serviceTestDiagnosticsAssistant1 = createServiceTestDiagnosticsAssistant1Message(request); + const serviceTestDiagnosticsUser2 = createServiceTestDiagnosticsUser2Message(request); + return [serviceTestGenUser1, serviceTestDiagnosticsAssistant1, serviceTestDiagnosticsUser2]; + } +} + +export function createServiceTestGenUser1Message(request: TestGenerationRequest1): CoreMessage { + if (!request.openApiSpec) { + throw new Error("OpenAPI specification is required for test generation."); + } + + const flattenedProject = flattenProjectToText(request.projectSource); + const typeSchemas = getExternalTypesAsJsonSchema(request.openApiSpec); + + const prompt = getServiceTestGenUser1Prompt(flattenedProject, typeSchemas); + + return { + role: "user", + content: prompt, + providerOptions: { + anthropic: { cacheControl: { type: "ephemeral" } }, + }, + }; +} + +export function createServiceTestGenAssistant1Message(): CoreMessage { + return { + role: "assistant", + content: getServiceTestGenAssistant1Prompt() + }; +} + +export function createServiceTestGenUser2Message(request: TestGenerationRequest1): CoreMessage { + const prompt = request.testPlan + ? getServiceTestGenUser2WithPlanPrompt(request.targetIdentifier, request.testPlan) + : getServiceTestGenUser2Prompt(request.targetIdentifier); + + return { + role: "user", + content: prompt + }; +} + +export function createServiceTestDiagnosticsAssistant1Message(request: TestGenerationRequest1): CoreMessage { + return { + role: "assistant", + content: getServiceTestDiagnosticsAssistant1Prompt() + }; +} + +export function createServiceTestDiagnosticsUser2Message(request: TestGenerationRequest1): CoreMessage { + if (!request.diagnostics) { + throw new Error("Diagnostics are required for test generation."); + } + if (!request.existingTests) { + throw new Error("Existing tests are required for test generation."); + } + + const diagnosticsText = getDiagnosticsAsText(request.diagnostics); + const prompt = getServiceTestDiagnosticsUser2Prompt(diagnosticsText, request.existingTests); + + return { + role: "user", + content: prompt + }; +} + +export function createFunctionTestGenMessages(request: TestGenerationRequest1): CoreMessage[] { + const functionTestGenUser = createFunctionTestGenUserMessage(request); + return [functionTestGenUser]; +} + +export function createFunctionTestGenUserMessage(request: TestGenerationRequest1): CoreMessage { + if (!request.testPlan) { + throw new Error("Test plan is required for function test generation."); + } + + const flattenedProject = flattenProjectToText(request.projectSource); + const typeSchemas = getTypesAsJsonSchema(request.openApiSpec || ""); + + let prompt: string; + if (!request.existingTests) { + prompt = getFunctionTestGenUserPrompt(request.targetIdentifier, flattenedProject, request.testPlan, typeSchemas); + } else { + if (!request.diagnostics) { + prompt = getFunctionTestGenUserSubsequentPrompt(request.targetIdentifier, flattenedProject, request.testPlan, typeSchemas, request.existingTests); + } else { + const diagnosticsText = getDiagnosticsAsText(request.diagnostics); + const sectionToFix = extractSectionToFix(request.existingTests); + prompt = getFunctionTestGenUserDiagnosticPrompt(request.targetIdentifier, flattenedProject, request.testPlan, typeSchemas, request.existingTests, sectionToFix, diagnosticsText); + } + } + + return { + role: "user", + content: prompt, + providerOptions: { + anthropic: { cacheControl: { type: "ephemeral" } }, + }, + }; +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/test.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/test.ts new file mode 100644 index 00000000000..16eb1389328 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/test.ts @@ -0,0 +1,129 @@ +// 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 { Command } from "@wso2/ballerina-core"; +import { generateText, CoreMessage } from "ai"; +import { getAnthropicClient } from "../connection"; +import { + getServiceTestGenerationSystemPrompt, + getServiceTestDiagnosticsSystemPrompt, + getFunctionTestGenerationSystemPrompt, + createServiceTestGenMessages, + createFunctionTestGenMessages +} from "./prompts"; +import { + extractCodeFromResponse, + extractConfigFromResponse +} from "./utils"; +import { CopilotEventHandler, createWebviewEventHandler } from "../event"; +import { getErrorMessage } from "../utils"; +import { AIPanelAbortController } from "../../../../../src/rpc-managers/ai-panel/utils"; + +// Core test generation function that emits events +export async function generateTestFromLLMCore(request: TestGenerationRequest1, eventHandler: CopilotEventHandler): Promise { + try { + const streamContent = await getStreamedTestResponse(request); + const testCode = extractCodeFromResponse(streamContent); + const configContent = extractConfigFromResponse(streamContent); + + return { + testSource: testCode, + testConfig: configContent + }; + } catch (error) { + console.error("Error during test generation:", error); + eventHandler({ type: 'error', content: getErrorMessage(error) }); + throw error; + } +} + +// Main public function that uses the default event handler +export async function generateTestFromLLM(request: TestGenerationRequest1): Promise { + const eventHandler = createWebviewEventHandler(Command.Tests ); + return await generateTestFromLLMCore(request, eventHandler); +} + +export type ProjectModule = { + moduleName: string; + sourceFiles: SourceFile[]; +}; + +export type SourceFile = { + fileName: string; + content: string; +}; + +export type ProjectSource = { + projectModules?: ProjectModule[]; + sourceFiles: SourceFile[]; + configToml?: string; +}; + +export type Diagnostic = { + message: string; +}; + +export type TestGenerationRequest1 = { + targetType: "service" | "function"; + targetIdentifier: string; + projectSource: ProjectSource; + openApiSpec?: string; + testPlan?: string; + diagnostics?: Diagnostic[]; + existingTests?: string; +}; + +type TestGenerationResponse = { + testSource: string; + testConfig?: string; +}; + +async function getStreamedTestResponse(request: TestGenerationRequest1): Promise { + const systemPrompt = createTestGenerationSystemPrompt(request); + let messages: CoreMessage[] = []; + + if (request.targetType === "service") { + messages = createServiceTestGenMessages(request); + } else if (request.targetType === "function") { + messages = createFunctionTestGenMessages(request); + } else { + throw new Error(`Unsupported target type specified: ${request.targetType}. Please use 'service' or 'function'.`); + } + + const { text } = await generateText({ + model: await getAnthropicClient("claude-sonnet-4-20250514"), + maxTokens: 16384, + temperature: 0, + system: systemPrompt, + messages: messages, + abortSignal: AIPanelAbortController.getInstance().signal + }); + + return text; +} + +function createTestGenerationSystemPrompt(request: TestGenerationRequest1): string { + if (request.targetType === "service") { + if (!request.diagnostics || !request.existingTests) { + return getServiceTestGenerationSystemPrompt(); + } else { + return getServiceTestDiagnosticsSystemPrompt(); + } + } else if (request.targetType === "function") { + return getFunctionTestGenerationSystemPrompt(); + } + throw new Error(`Unsupported target type specified: ${request.targetType}. Please use 'service' or 'function'.`); +} 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 new file mode 100644 index 00000000000..ff65265998a --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/test_plan.ts @@ -0,0 +1,386 @@ +// 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 { CoreMessage, streamText } from "ai"; +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"; + +export interface TestPlanResponse { + testPlan: string; +} + +/** + * Buffer management for test plan streaming with tag detection + */ +class TestPlanBuffer { + private buffer: string = ""; + private readonly fullScenarioRegex = /([\s\S]*?)<\/scenario>/; + private readonly scenarioOpenTagRegex = //; + private readonly partialScenarioRegex = /<(s(c(e(n(a(r(i(o(>)?)?)?)?)?)?)?)?)?/; + + /** + * Processes new text and returns chunks that should be emitted + * @param text New text to add to buffer + * @returns Object with shouldEmit flag and text to emit + */ + processText(text: string): { shouldEmit: boolean; textToEmit: string } { + if (text === "") { + return { shouldEmit: false, textToEmit: "" }; + } + + this.buffer += text; + + const fullScenarioMatch = this.fullScenarioRegex.exec(this.buffer); + const partialScenarioMatch = this.partialScenarioRegex.exec(this.buffer); + const actualFullScenarioMatch = this.scenarioOpenTagRegex.exec(this.buffer); + + // If no partial match, emit entire buffer + if (!partialScenarioMatch) { + const textToEmit = this.buffer; + this.buffer = ""; + return { shouldEmit: true, textToEmit }; + } + + // If partial match is at the end of buffer, wait for more content + if (partialScenarioMatch.index + partialScenarioMatch[0].length === this.buffer.length) { + return { shouldEmit: false, textToEmit: "" }; + } + + // If we have a complete opening tag but no full scenario + if (actualFullScenarioMatch && !fullScenarioMatch) { + // Continue waiting for the complete scenario + return { shouldEmit: false, textToEmit: "" }; + } + + // If we have a complete scenario tag (full ...) + if (fullScenarioMatch) { + const endIndex = fullScenarioMatch.index + fullScenarioMatch[0].length; + const textToEmit = this.buffer.substring(0, endIndex); + this.buffer = this.buffer.substring(endIndex); + return { shouldEmit: true, textToEmit }; + } + + // Partial match not at end, emit everything before the partial match + const textToEmit = this.buffer; + this.buffer = ""; + return { shouldEmit: true, textToEmit }; + } + + /** + * Flushes remaining buffer content + */ + flush(): string { + const remaining = this.buffer; + this.buffer = ""; + return remaining; + } +} + +// Core test plan generation function that emits events +export async function generateTestPlanCore( + params: TestPlanGenerationRequest, + eventHandler: CopilotEventHandler +): Promise { + const { targetType, targetSource, target } = params; + let systemPrompt: string; + let userPrompt: string; + + if (targetType === TestGenerationTarget.Service) { + systemPrompt = getServiceSystemPrompt(); + userPrompt = getServiceUserPrompt(targetSource); + } else { + systemPrompt = getFunctionSystemPrompt(); + userPrompt = getFunctionUserPrompt(targetSource); + } + + const allMessages: CoreMessage[] = [ + { + role: "system", + content: systemPrompt, + }, + { + role: "user", + content: userPrompt, + }, + ]; + const { fullStream } = streamText({ + model: await getAnthropicClient(ANTHROPIC_SONNET_4), + maxTokens: 8192, + temperature: 0, + messages: allMessages, + abortSignal: AIPanelAbortController.getInstance().signal, + }); + + eventHandler({ type: "start" }); + const buffer = new TestPlanBuffer(); + let assistantResponse: string = ""; + + for await (const part of fullStream) { + switch (part.type) { + case "text-delta": { + const textPart = part.textDelta; + assistantResponse += textPart; + + // Process through buffer for scenario tag detection + const result = buffer.processText(textPart); + + if (result.shouldEmit && result.textToEmit) { + eventHandler({ type: "content_block", content: result.textToEmit }); + } + break; + } + case "error": { + const error = part.error; + console.error("Error during test plan generation:", error); + eventHandler({ type: "error", content: getErrorMessage(error) }); + break; + } + case "finish": { + // Flush any remaining buffer content + const remainingText = buffer.flush(); + if (remainingText) { + eventHandler({ type: "content_block", content: remainingText }); + } + if (targetType === "service") { + eventHandler({ + type: "content_block", + content: `\n\n**Initiating test generation for the ${target} service, following the _outlined test plan_. Please wait...**`, + }); + eventHandler({ + 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, { + targetType: TestGenerationTarget.Service, + targetIdentifier: target, + testPlan: assistantResponse, + }); + eventHandler({ + type: "content_block", + content: `\nAnalyzing generated tests for potential issues.`, + }); + const diagnostics = await getDiagnostics(projectRoot, testResp); + let testCode = testResp.testSource; + const testConfig = testResp.testConfig; + if (diagnostics.diagnostics.length > 0) { + eventHandler({ + type: "content_block", + content: `\nRefining tests based on feedback to ensure accuracy and reliability.`, + }); + const fixedCode = await generateTest(projectRoot, { + targetType: TestGenerationTarget.Service, + targetIdentifier: target, + testPlan: assistantResponse, + diagnostics: diagnostics, + existingTests: testResp.testSource, + }); + testCode = fixedCode.testSource; + } + + eventHandler({ + type: "content_block", + content: `\n\nTest generation completed. Displaying the generated tests for the ${target} service below:`, + }); + eventHandler({ + type: "content_block", + content: `\n\n\n\`\`\`ballerina\n${testCode}\n\`\`\`\n`, + }); + if (testConfig) { + eventHandler({ + type: "content_block", + content: `\n\n\n\`\`\`ballerina\n${testConfig}\n\`\`\`\n`, + }); + } + eventHandler({ type: "stop", command: Command.Tests }); + } else { + eventHandler({ + type: "content_block", + content: `\n\n`, + }); + eventHandler({ + type: "intermediary_state", + state: { + resourceFunction: target, + testPlan: assistantResponse, + }, + }); + } + break; + } + } + } +} + +// Main public function that uses the default event handler +export async function generateTestPlan(params: TestPlanGenerationRequest): Promise { + const eventHandler = createWebviewEventHandler(Command.Tests); + try { + await generateTestPlanCore(params, eventHandler); + } catch (error) { + console.error("Error during test plan generation:", error); + eventHandler({ type: "error", content: getErrorMessage(error) }); + } +} + +function getServiceSystemPrompt(): string { + return `You are an expert test engineer specializing in creating test plans for Ballerina services. You have extensive experience in identifying critical test scenarios while maintaining efficiency by focusing on essential test cases. Your expertise lies in analyzing service code and determining the minimum set of test cases needed to ensure core functionality.`; +} + +function getFunctionSystemPrompt(): string { + return `You are a specialized test analyzer focused on generating precise test scenarios by examining code implementations, identifying explicit happy paths, documented error conditions, and handled edge cases while strictly limiting scenarios to what's actually supported in the source code, ensuring each test case maps directly to implemented functionality without speculating beyond the code's scope.`; +} + +function getServiceUserPrompt(source: string): string { + return `Task: Analyze the provided Ballerina service code and create a detailed test plan following the specified format. + +Context: + - You are analyzing a Ballerina service implementation requiring comprehensive test coverage + - The output must follow a specific structured format + - Focus on practical, implementable test scenarios + +Input Code: +[BEGIN_SOURCE] +\`\`\`ballerina +${source} +\`\`\` +[END_SOURCE] + +[BEGIN_OUTPUT_FORMAT] +**Test plan for [service_name] service** + +**Overview** +[Brief description of what the test plan covers] + +[For each resource function, numbered sequentially:] +[N]. Resource Function: [HTTP_METHOD] [PATH] + +_Scenario [N.1] (Happy Path)_ +- Action: [What the test does] +- Expected: [Expected outcome] +- Validation: [What to verify] + +[If applicable:] +_Scenario [N.2] (Error Path)_ +- Action: [Error scenario details] +- Expected: [Expected error response] +- Validation: [Error validation points] + +**Test Dependencies** +[List major dependencies with bullet points] + +**Test Execution Notes** +[List key execution requirements with bullet points] +[END_OUTPUT_FORMAT] + +Requirements: +1. Analyze the service code with focus on: + - Resource functions and their logic + - Error handling mechanisms + - Input validation + - Business logic implementation + - External dependencies + +Test Scenario Generation Rules: +1. Generate scenarios in sequential order +2. For each resource function: + - Minimum: 1 test scenario + - Maximum: 2 test scenarios +3. Coverage Requirements: + - Happy Path: Include successful execution flows + - Error Path: Only include error scenarios that are explicitly handled in the code(if there are any errors other than ballerina error is returned.) + +Constraints: +- Focus on practical, implementable scenarios +- Avoid edge cases not handled in the code +- Ensure scenarios align with the actual implementation + +Please analyze the code and generate the test plan following these specifications. +`; +} + +function getFunctionUserPrompt(source: string): string { + return `Task: Analyze the provided Ballerina function code and create a detailed test plan following the specified format. + +Context: + - You are analyzing a Ballerina function implementation requiring comprehensive test coverage + - The output must follow the given output format strictly where only scenarios are taged and DO NOT number scenarios + - Focus on practical, implementable test scenarios + +Input Code: +[BEGIN_SOURCE] +\`\`\`ballerina +${source} +\`\`\` +[END_SOURCE] + +[BEGIN_OUTPUT_FORMAT] +**Test plan for resource** + +**Overview** +[Brief description of what the test plan covers] + +[For each scenario:] + + Clear, descriptive scenario title + + Detailed scenario description including: + - Purpose of the test + - Input parameters and their values + - Expected outcome + - Any specific conditions or prerequisites + + + +[After all scenarios:] + + +**Test Execution Notes** +[List key execution requirements with bullet points] +[END_OUTPUT_FORMAT] + +Requirements: +1. Analyze the function code with focus on: + - Input parameters and their types + - Return types and values + - Error handling mechanisms + - Business logic implementation + - External dependencies + - Edge cases handled in the code + +Test Scenario Generation Rules: +1. Generate scenarios in sequential order +2. Maximum of 5 test scenarios +3. Coverage Requirements: + - Happy Path: Include successful execution flows + - Error Path: Only include error scenarios that are explicitly handled in the code + - Edge Cases: Include boundary conditions that are handled in the implementation + +Constraints: +- Focus on practical, implementable scenarios +- Avoid edge cases not handled in the code +- Ensure scenarios align with the actual implementation +- Prioritize quality over quantity +- Focus on scenarios that provide maximum coverage of critical functionality + +Note: Please analyze the code and generate the test plan following these specifications. +`; +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/utils.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/utils.ts new file mode 100644 index 00000000000..e52f74bdf61 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/test/utils.ts @@ -0,0 +1,137 @@ +// 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 { ProjectSource, Diagnostic } from "./test"; + +// ============================================== +// UTILITY FUNCTIONS +// ============================================== + +export function extractCodeFromResponse(testCode: string): string { + const matches = testCode.split("```ballerina\n"); + if (matches.length > 1) { + const codeParts = matches[1].split("\n```"); + if (codeParts.length > 0) { + return codeParts[0]; + } + throw new Error("No code found between the delimiters."); + } + throw new Error("No Ballerina code block found in the content."); +} + +export function extractConfigFromResponse(response: string): string | undefined { + const configMatches = response.split("```toml\n"); + if (configMatches.length > 1) { + const configParts = configMatches[1].split("\n```"); + if (configParts.length > 0) { + return configParts[0]; + } + } + return undefined; +} + +export function flattenProjectToText(projectSource: ProjectSource): string { + let flattenedProject = ""; + + const modules = projectSource.projectModules; + if (modules) { + for (const module of modules) { + let moduleSource = ""; + for (const sourceFile of module.sourceFiles) { + moduleSource += `\`\`\`ballerina +# modules/${module.moduleName}/${sourceFile.fileName} + +${sourceFile.content} +\`\`\` + +`; + } + flattenedProject += moduleSource; + } + } + + for (const sourceFile of projectSource.sourceFiles) { + flattenedProject += `\`\`\`ballerina +# ${sourceFile.fileName} + +${sourceFile.content} +\`\`\` + +`; + } + + return flattenedProject; +} + +export function getExternalTypesAsJsonSchema(openApiSpec: string): string { + try { + const externalTypes: Record = {}; + + const openApiSpecObj = JSON.parse(openApiSpec); + const components = openApiSpecObj.components; + + if (components && components.schemas) { + for (const componentName in components.schemas) { + const componentSchema = components.schemas[componentName]; + if (componentSchema && componentSchema['x-ballerina-type'] !== undefined) { + externalTypes[componentName] = componentSchema; + } + } + } + + return JSON.stringify(externalTypes); + } catch (error) { + // Return empty object if parsing fails + return "{}"; + } +} + +export function getTypesAsJsonSchema(openApiSpec: string): string { + try { + const openApiSpecObj = JSON.parse(openApiSpec); + const components = openApiSpecObj.components; + + if (components) { + return JSON.stringify(components); + } + + return "{}"; + } catch (error) { + // Return empty object if parsing fails + return "{}"; + } +} + +export function getDiagnosticsAsText(diagnostics: Diagnostic[]): string { + let flattenedDiagnostics = ""; + + for (const diagnostic of diagnostics) { + flattenedDiagnostics += `- Message: ${diagnostic.message} + +`; + } + + return flattenedDiagnostics; +} + +export function extractSectionToFix(existingTests: string): string { + const marker = "// >>>>>>>>>>>>>>TEST CASES NEED TO BE FIXED <<<<<<<<<<<<<<<"; + const index = existingTests.indexOf(marker); + if (index !== -1) { + return existingTests.substring(index + marker.length); + } + return ""; +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/types.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/types.ts new file mode 100644 index 00000000000..2ff5f20d6c4 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/types.ts @@ -0,0 +1,121 @@ +// 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 interface SystemMessage { + cache_control?: { + type: "ephemeral"; + }; + type: "text"; + text: string; +} + +export interface TextBlock { + cache_control?: { + type: "ephemeral"; + }; + text: string; + type: "text"; +} + +export interface ImageBlockSource { + data: string; + media_type: "image/jpeg" | "image/png" | "image/gif" | "image/webp"; + type: "base64"; +} + +export interface ImageBlock { + source: ImageBlockSource; + type: "image"; +} + +export interface DocumentBlock { + source: DocumentBlockSource; + type: "document"; +} + +export interface DocumentBlockSource { + data: string; + media_type: "application/pdf"; + type: "base64"; +} + +export interface ToolUseBlock { + id: string; + name: string; + input: Record; + type: "tool_use"; +} + +export interface ToolResultBlock { + tool_use_id: string; + content: string | Block[]; + is_error?: boolean; + type: "tool_result"; +} + +export type Block = TextBlock | ImageBlock | ToolUseBlock | ToolResultBlock | DocumentBlock; + +export type MessageRole = "user" | "assistant"; + +export interface Usage { + input_tokens: number; + output_tokens: number; +} + +export type StopReason = "end_turn" | "max_tokens" | "stop_sequence" | "tool_use" | null; + +export interface Message { + id?: string; + content: string | Block[]; + role: MessageRole; + model?: string; + stop_reason?: StopReason; + stop_sequence?: any; + type?: string; + usage?: Usage; +} + +export interface CreateMessageRequestMetadata { + user_id?: string; +} + +export type ToolChoiceType = "auto" | "any" | "tool"; + +export interface ToolChoice { + type: ToolChoiceType; + name?: string; +} + +export interface Tool { + name: string; + description?: string; + input_schema: Record; +} + +export interface CreateMessageRequest { + model: string | "claude-3-5-sonnet-20240620" | "claude-3-haiku-20240307" | "claude-3-opus-20240229" | "claude-3-sonnet-20240229" | "claude-2.0" | "claude-2.1" | "claude-instant-1.2"; + messages: Message[]; + max_tokens: number; + metadata?: CreateMessageRequestMetadata; + stop_sequences?: string[]; + system?: string | SystemMessage[]; + temperature?: number; + tool_choice?: ToolChoice; + tools?: Tool[]; + top_k?: number; + top_p?: number; + stream?: boolean; +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/service/utils.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/service/utils.ts new file mode 100644 index 00000000000..7e88627d5b6 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/service/utils.ts @@ -0,0 +1,232 @@ +// 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 { + ChatEntry, + ChatError, + ChatNotify, + ChatStart, + DiagnosticEntry, + GENERATE_CODE_AGAINST_THE_REQUIREMENT, + GENERATE_TEST_AGAINST_THE_REQUIREMENT, + GenerateCodeRequest, + IntermidaryState, + onChatNotify, + ProjectSource, + SourceFiles, + TestGeneratorIntermediaryState, + Command +} from "@wso2/ballerina-core"; +import { CoreMessage } from "ai"; +import { MessageRole } from "./types"; +import { RPCLayer } from "../../../../src/RPCLayer"; +import { AiPanelWebview } from "../../../views/ai-panel/webview"; +import { GenerationType } from "./libs/libs"; +import { REQUIREMENTS_DOCUMENT_KEY } from "./code/np_prompts"; + +export function populateHistory(chatHistory: ChatEntry[]): CoreMessage[] { + if (!chatHistory || chatHistory.length === 0) { + return []; + } + + const messages: CoreMessage[] = []; + for (const history of chatHistory) { + // Map actor to role, defaulting to "user" if not "assistant" + const role: MessageRole = history.actor === "assistant" ? "assistant" : "user"; + + messages.push({ + role: role, + content: history.message, + }); + } + 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/"; + } + + basePath += module.moduleName + "/"; + // const path = + module.sourceFiles.forEach((file) => { + sourceFiles.push({ + filePath: basePath + file.filePath, + content: file.content, + }); + }); + }); + return sourceFiles; +} + +export function extractResourceDocumentContent(sourceFiles: readonly SourceFiles[]): string { + const requirementFiles = sourceFiles + .filter(sourceFile => sourceFile.filePath.toLowerCase().endsWith(REQUIREMENTS_DOCUMENT_KEY)) + .slice(0, 1) + .map(sourceFile => sourceFile.content); + + if (requirementFiles.length === 0) { + return ""; + } + return requirementFiles[0]; +} + +//TODO: This should be a query rewriter ideally. +export function getRewrittenPrompt(params: GenerateCodeRequest, sourceFiles: SourceFiles[]) { + const prompt = params.usecase; + if (prompt.trim() === GENERATE_CODE_AGAINST_THE_REQUIREMENT) { + const resourceContent = extractResourceDocumentContent(sourceFiles); + return `${GENERATE_CODE_AGAINST_THE_REQUIREMENT}: +${resourceContent}`; + } + if (prompt.trim() === GENERATE_TEST_AGAINST_THE_REQUIREMENT) { + const resourceContent = extractResourceDocumentContent(sourceFiles); + return `${GENERATE_TEST_AGAINST_THE_REQUIREMENT}: +${resourceContent}`; + } + + if (!prompt.toLowerCase().includes("readme")) { + return prompt; + } + + const readmeFiles = sourceFiles + .filter((sourceFile) => sourceFile.filePath.toLowerCase().endsWith("readme.md")) + .map((sourceFile) => sourceFile.content); + + if (readmeFiles.length === 0) { + return prompt; + } + + const readmeContent = readmeFiles[0]; + + return `${prompt} +Readme Contents: +${readmeContent}`; +} + +export function sendMessagesNotification(messages: any[]): void { + const msg: ChatNotify = { + type: "messages", + messages: messages, + }; + sendAIPanelNotification(msg); +} + +export function sendDiagnosticMessageNotification(diags: DiagnosticEntry[]): void { + const msg: ChatNotify = { + type: "diagnostics", + diagnostics: diags, + }; + sendAIPanelNotification(msg); +} + +export function sendContentReplaceNotification(content: string): void { + const msg: ChatNotify = { + type: "content_replace", + content: content, + }; + sendAIPanelNotification(msg); +} + +export function sendContentAppendNotification(chunk: string): void { + const msg: ChatNotify = { + type: "content_block", + content: chunk, + }; + sendAIPanelNotification(msg); +} + +export function sendMessageStopNotification(command: Command): void { + const msg: ChatNotify = { + type: "stop", + command + }; + sendAIPanelNotification(msg); +} + +export function sendErrorNotification(errorMessage: string): void { + const msg: ChatError = { + type: "error", + content: errorMessage, + }; + sendAIPanelNotification(msg); +} + +export function sendMessageStartNotification(): void { + const msg: ChatStart = { + type: "start", + }; + sendAIPanelNotification(msg); +} + +export function sendTestGenIntermidateStateNotification(testGenState: TestGeneratorIntermediaryState): void { + const msg: IntermidaryState = { + type: "intermediary_state", + state: testGenState, + }; + sendAIPanelNotification(msg); +} + +function sendAIPanelNotification(msg: ChatNotify): void { + RPCLayer._messenger.sendNotification(onChatNotify, { type: "webview", webviewType: AiPanelWebview.viewType }, msg); +} + +export function getGenerationMode(generationType: GenerationType) { + return generationType === GenerationType.CODE_GENERATION ? "CORE" : "HEALTHCARE"; +} + +/** + * Normalize any thrown value into a string message. + */ +export function getErrorMessage(error: unknown): string { + if (error instanceof Error) { + // Standard Error objects have a .message property + if (error.name === "AI_RetryError") { + return "An error occured connecting with the AI service. Please try again later."; + } + if (error.name === "AbortError") { + return "Generation stopped by the user."; + } + + return error.message; + } + // If it’s an object with a .message field, use that + if ( + typeof error === "object" && + error !== null && + "message" in error && + typeof (error as Record).message === "string" + ) { + return (error as { message: string }).message; + } + // Fallback: try to JSON-stringify, otherwise call toString() + try { + return JSON.stringify(error); + } catch { + return String(error); + } +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/ai/testGenerator.ts b/workspaces/ballerina/ballerina-extension/src/features/ai/testGenerator.ts index cf9b6db4cd0..a74a3da6287 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/testGenerator.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/testGenerator.ts @@ -26,8 +26,8 @@ import * as fs from 'fs'; import * as path from 'path'; import * as os from 'os'; import { writeBallerinaFileDidOpen } from '../../utils/modification'; -import { fetchData } from '../../rpc-managers/ai-panel/utils/fetch-data-utils'; import { closeAllBallerinaFiles } from './utils'; +import { generateTestFromLLM, TestGenerationRequest1 } from './service/test/test'; const TEST_GEN_REQUEST_TIMEOUT = 100000; @@ -35,15 +35,13 @@ const TEST_GEN_REQUEST_TIMEOUT = 100000; export async function generateTest( projectRoot: string, testGenRequest: TestGenerationRequest, - abortController: AbortController + abortController: AbortController = null ): Promise { const projectSource = await getProjectSource(projectRoot); if (!projectSource) { throw new Error("The current project is not recognized as a valid Ballerina project. Please ensure you have opened a Ballerina project."); } - const backendUri = testGenRequest.backendUri; - if (testGenRequest.targetType === TestGenerationTarget.Service) { if (!testGenRequest.targetIdentifier) { throw new Error("Service name is missing in the test request. Please provide a valid service name to generate tests."); @@ -368,18 +366,14 @@ async function getOpenAPISpecification(documentFilePath: string): Promise { try { let response = await sendTestGeneRequest(request, projectSource, abortController, openApiSpec); - if (isErrorCode(response)) { - return (response as ErrorCode); - } - response = (response as Response); - return await filterTestGenResponse(response); + return response; } catch (error) { return UNKNOWN_ERROR; } } -async function sendTestGeneRequest(request: TestGenerationRequest, projectSource: ProjectSource, abortController: AbortController, openApiSpec?: string): Promise { - const body = { +async function sendTestGeneRequest(request: TestGenerationRequest, projectSource: ProjectSource, abortController: AbortController, openApiSpec?: string): Promise { + const body:TestGenerationRequest1 = { targetType: request.targetType, targetIdentifier: request.targetIdentifier, projectSource: { @@ -405,16 +399,8 @@ async function sendTestGeneRequest(request: TestGenerationRequest, projectSource ...(request.existingTests && { existingTests: request.existingTests }), }; - const response = await fetchWithTimeout(request.backendUri + "/tests", { - method: "POST", - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'User-Agent': 'Ballerina-VSCode-Plugin' - }, - body: JSON.stringify(body) - }, abortController, TEST_GEN_REQUEST_TIMEOUT); - return response; + const resp: TestGenerationResponse = await generateTestFromLLM(body); + return resp; } function getErrorDiagnostics(diagnostics: Diagnostics[], filePath: string): ProjectDiagnostics { @@ -489,41 +475,6 @@ async function findBallerinaProjectRoot(dirPath: string): Promise return null; } -const fetchWithTimeout = async ( - url: string, - options: RequestInit, - abortController: AbortController, - timeout = 300000 -): Promise => { - const id = setTimeout(() => abortController?.abort(), timeout); - - try { - options = { - ...options, - signal: abortController.signal, - }; - - const response = await fetchData(url, options); - return response; - } catch (error: any) { - if (error.name === 'AbortError') { - return { - code: -1, - message: "Request aborted" - }; - } - if (error instanceof Error) { - return { - code: -2, - message: error.message - }; - } - return UNKNOWN_ERROR; - } finally { - clearTimeout(id); - } -}; - 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 2fe4cad6e2a..b608b4ed2ff 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/ai/utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/ai/utils.ts @@ -18,9 +18,16 @@ import * as fs from 'fs'; import path from "path"; -import { Uri, workspace } from 'vscode'; +import vscode, { Uri, workspace } from 'vscode'; import { StateMachine } from "../../stateMachine"; +import { getRefreshedAccessToken, REFRESH_TOKEN_NOT_AVAILABLE_ERROR_MESSAGE } from '../../../src/utils/ai/auth'; +import { AIStateMachine } from '../../../src/views/ai-panel/aiMachine'; +import { AIMachineEventType } from '@wso2/ballerina-core/lib/state-machine-types'; +import { CONFIG_FILE_NAME, ERROR_NO_BALLERINA_SOURCES, PROGRESS_BAR_MESSAGE_FROM_WSO2_DEFAULT_MODEL } from './constants'; +import { getCurrentBallerinaProjectFromContext } from '../config-generator/configGenerator'; +import { BallerinaProject } from '@wso2/ballerina-core'; +import { BallerinaExtension } from 'src/core'; const config = workspace.getConfiguration('ballerina'); export const BACKEND_URL : string = config.get('rootUrl') || process.env.BALLERINA_ROOT_URL; @@ -28,6 +35,9 @@ export const AUTH_ORG : string = config.get('authOrg') || process.env.BALLERINA_ export const AUTH_CLIENT_ID : string = config.get('authClientID') || process.env.BALLERINA_AUTH_CLIENT_ID; export const AUTH_REDIRECT_URL : string = config.get('authRedirectURL') || process.env.BALLERINA_AUTH_REDIRECT_URL; +// This refers to old backend before FE Migration. We need to eventually remove this. +export const OLD_BACKEND_URL : string = BACKEND_URL + "/v2.0"; + export async function closeAllBallerinaFiles(dirPath: string): Promise { // Check if the directory exists if (!fs.existsSync(dirPath)) { @@ -41,17 +51,17 @@ export async function closeAllBallerinaFiles(dirPath: string): Promise { // Function to recursively find and close .bal files async function processDir(currentPath: string): Promise { const entries = fs.readdirSync(currentPath, { withFileTypes: true }); - + for (const entry of entries) { const entryPath = path.join(currentPath, entry.name); - + if (entry.isDirectory()) { // Recursively process subdirectories await processDir(entryPath); } else if (entry.isFile() && entry.name.endsWith('.bal')) { // Convert file path to URI const fileUri = Uri.file(entryPath).toString(); - + // Call didClose for this Ballerina file await langClient.didClose({ textDocument: { uri: fileUri } @@ -73,3 +83,193 @@ export async function closeAllBallerinaFiles(dirPath: string): Promise { // Start the recursive processing await processDir(dirPath); } + +export async function getConfigFilePath(ballerinaExtInstance: BallerinaExtension, rootPath: string): Promise { + if (await isBallerinaProjectAsync(rootPath)) { + return rootPath; + } + + const activeTextEditor = vscode.window.activeTextEditor; + const currentProject = ballerinaExtInstance.getDocumentContext().getCurrentProject(); + let activeFilePath = ""; + let configPath = ""; + + if (rootPath !== "") { + return rootPath; + } + + if (activeTextEditor) { + activeFilePath = activeTextEditor.document.uri.fsPath; + } + + if (currentProject == null && activeFilePath == "") { + return await showNoBallerinaSourceWarningMessage(); + } + + try { + const currentBallerinaProject: BallerinaProject = await getCurrentBallerinaProjectFromContext(ballerinaExtInstance); + + if (!currentBallerinaProject) { + return await showNoBallerinaSourceWarningMessage(); + } + + if (currentBallerinaProject.kind == 'SINGLE_FILE_PROJECT') { + configPath = path.dirname(currentBallerinaProject.path); + } else { + configPath = currentBallerinaProject.path; + } + + if (configPath == undefined || configPath == "") { + return await showNoBallerinaSourceWarningMessage(); + } + return configPath; + } catch (error) { + return await showNoBallerinaSourceWarningMessage(); + } +} + +export async function getTokenForDefaultModel() { + try { + const token = await getRefreshedAccessToken(); + return token; + } catch (error) { + throw error; + } +} + +export async function getBackendURL(): Promise { + return new Promise(async (resolve) => { + resolve(OLD_BACKEND_URL); + }); +} + +// Function to find a file in a case-insensitive way +function findFileCaseInsensitive(directory: string, fileName: string): string { + const files = fs.readdirSync(directory); + const targetFile = files.find(file => file.toLowerCase() === fileName.toLowerCase()); + const file = targetFile ? targetFile : fileName; + return path.join(directory, file); +} + +// Helper to add or replace a config line +function addOrReplaceConfigLine(lines: string[], key: string, value: string) { + const configLine = `${key} = "${value}"`; + const idx = lines.findIndex(l => l.trim().startsWith(`${key} =`)); + if (idx === -1) { + // Add after header + lines.splice(1, 0, configLine); + } else { + lines[idx] = configLine; + } +} + +function addDefaultModelConfig( + projectPath: string, token: string, backendUrl: string): boolean { + const targetTable = `[ballerina.ai.wso2ProviderConfig]`; + const SERVICE_URL_KEY = 'serviceUrl'; + const ACCESS_TOKEN_KEY = 'accessToken'; + const urlLine = `${SERVICE_URL_KEY} = "${backendUrl}"`; + const accessTokenLine = `${ACCESS_TOKEN_KEY} = "${token}"`; + const configFilePath = findFileCaseInsensitive(projectPath, CONFIG_FILE_NAME); + + let fileContent = ''; + + if (fs.existsSync(configFilePath)) { + fileContent = fs.readFileSync(configFilePath, 'utf-8'); + } + + const tableStartIndex = fileContent.indexOf(targetTable); + + if (tableStartIndex === -1) { + // Table doesn't exist, create it + if (fileContent.length > 0 && !fileContent.endsWith('\n')) { + fileContent += '\n\n'; + } + fileContent += `\n${targetTable}\n${urlLine}\n${accessTokenLine}\n`; + fs.writeFileSync(configFilePath, fileContent); + return true; + } + + // Table exists, update it + // Find the end of the table (next table or end of file) + let tableEndIndex = fileContent.indexOf('\n[', tableStartIndex); + if (tableEndIndex === -1) { + tableEndIndex = fileContent.length; + } + + // Extract table content and split into lines once + let tableContent = fileContent.substring(tableStartIndex, tableEndIndex); + let lines = tableContent.split('\n'); + + // Add or replace serviceUrl + addOrReplaceConfigLine(lines, SERVICE_URL_KEY, backendUrl); + // Add or replace accessToken (after serviceUrl) + // Ensure accessToken is after serviceUrl + let serviceUrlIdx = lines.findIndex(l => l.trim().startsWith(`${SERVICE_URL_KEY} =`)); + let accessTokenIdx = lines.findIndex(l => l.trim().startsWith(`${ACCESS_TOKEN_KEY} =`)); + if (accessTokenIdx === -1) { + lines.splice(serviceUrlIdx + 1, 0, `${ACCESS_TOKEN_KEY} = "${token}"`); + } else { + lines[accessTokenIdx] = `${ACCESS_TOKEN_KEY} = "${token}"`; + // Move accessToken if not after serviceUrl + if (accessTokenIdx !== serviceUrlIdx + 1) { + const accessTokenLine = lines[accessTokenIdx]; + lines.splice(accessTokenIdx, 1); + lines.splice(serviceUrlIdx + 1, 0, accessTokenLine); + } + } + + // Join lines and replace the table in the file content + const updatedTableContent = lines.join('\n'); + fileContent = fileContent.substring(0, tableStartIndex) + updatedTableContent + fileContent.substring(tableEndIndex); + fs.writeFileSync(configFilePath, fileContent); + return true; +} + +export async function addConfigFile(configPath: string): Promise { + const progress = await vscode.window.withProgress( + { + location: vscode.ProgressLocation.Notification, + title: PROGRESS_BAR_MESSAGE_FROM_WSO2_DEFAULT_MODEL, + cancellable: false, + }, + async () => { + try { + const token: string | null = await getTokenForDefaultModel(); + if (token === null) { + AIStateMachine.service().send(AIMachineEventType.LOGOUT); + throw new Error(REFRESH_TOKEN_NOT_AVAILABLE_ERROR_MESSAGE); + } + const success = addDefaultModelConfig(configPath, token, await getBackendURL()); + if (success) { + return true; + } + } catch (error) { + AIStateMachine.service().send(AIMachineEventType.LOGOUT); + throw error; + } + } + ); + return progress; +} + +export 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; + } +} + +async function showNoBallerinaSourceWarningMessage() { + return await vscode.window.showWarningMessage(ERROR_NO_BALLERINA_SOURCES); +} diff --git a/workspaces/ballerina/ballerina-extension/src/features/bi/activator.ts b/workspaces/ballerina/ballerina-extension/src/features/bi/activator.ts index b58a0af51db..156b22c07b6 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/bi/activator.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/bi/activator.ts @@ -111,7 +111,7 @@ export function activate(context: BallerinaExtension) { }); //HACK: Open all Ballerina files in the project - // openAllBallerinaFiles(context); + openAllBallerinaFiles(context); } function openAllBallerinaFiles(context: BallerinaExtension) { 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 decb3f62705..5c437fd2363 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/config-generator/configGenerator.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/config-generator/configGenerator.ts @@ -213,6 +213,7 @@ export async function handleOnUnSetValues(packageName: string, configFile: strin async function executeRunCommand(ballerinaExtInstance: BallerinaExtension, filePath: string, isBi?: boolean) { if (ballerinaExtInstance.enabledRunFast() || isBi) { + filePath = (await getCurrentBallerinaProject(filePath)).path; const projectHasErrors = await cleanAndValidateProject(ballerinaExtInstance.langClient, filePath); if (projectHasErrors) { window.showErrorMessage("Project contains errors. Please fix them and try again."); @@ -228,7 +229,7 @@ async function executeRunCommand(ballerinaExtInstance: BallerinaExtension, fileP export async function cleanAndValidateProject(langClient: ExtendedLangClient, path: string): Promise { try { // Get initial project diagnostics - const projectPath = extension.ballerinaExtInstance?.getDocumentContext()?.getCurrentProject()?.path || path; + const projectPath = (await getCurrentBallerinaProject(path)).path; let response: ProjectDiagnosticsResponse = await langClient.getProjectDiagnostics({ projectRootIdentifier: { uri: Uri.file(projectPath).toString() 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 f68b9130a32..dfc152e73c4 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/debugger/config-provider.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/debugger/config-provider.ts @@ -41,12 +41,12 @@ 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 } from "../../utils"; +import { log, debug as debugLog, isSupportedSLVersion, isWindows } from "../../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, sep } from 'path'; +import { dirname, join, sep } from 'path'; import { parseTomlToConfig } from '../config-generator/utils'; import { LoggingDebugSession, OutputEvent, TerminatedEvent } from 'vscode-debugadapter'; import { DebugProtocol } from 'vscode-debugprotocol'; @@ -62,6 +62,8 @@ import { VisualizerWebview } from '../../views/visualizer/webview'; import { URI } from 'vscode-uri'; import { prepareAndGenerateConfig, cleanAndValidateProject } from '../config-generator/configGenerator'; import { extension } from '../../BalExtensionContext'; +import * as fs from 'fs'; +import { findHighestVersionJdk } from '../../utils/server/server'; const BALLERINA_COMMAND = "ballerina.command"; const EXTENDED_CLIENT_CAPABILITIES = "capabilities"; @@ -761,7 +763,10 @@ async function runFast(root: string, options: { debugPort?: number; env?: Map { 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 + const baseHome = ballerinaHome.includes('distributions') + ? ballerinaHome.substring(0, ballerinaHome.indexOf('distributions')) + : ballerinaHome; + + // Find any JDK in the dependencies directory + const dependenciesDir = join(baseHome, 'dependencies'); + const jdkDir = findHighestVersionJdk(dependenciesDir); + + if (!jdkDir) { + log(`No JDK found in dependencies directory: ${dependenciesDir}`); + throw new Error(`JDK not found in ${dependenciesDir}`); + } + + const jdkVersionMatch = jdkDir.match(/jdk-(.+)-jre/); + if (jdkVersionMatch) { + log(`JDK Version: ${jdkVersionMatch[1]}`); + } + + const javaExecutable = isWindows() ? 'java.exe' : 'java'; + const cmd = join(jdkDir, 'bin', javaExecutable); + return cmd; +} + function getWorkspaceRoot(): string | undefined { return workspace.workspaceFolders?.[0]?.uri.fsPath; } 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 4a73270a547..a1aecbde09f 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/natural-programming/activator.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/natural-programming/activator.ts @@ -20,13 +20,16 @@ import vscode from 'vscode'; import { ENABLE_BACKGROUND_DRIFT_CHECK } from "../../core/preferences"; import { debounce } from 'lodash'; import { StateMachine } from "../../stateMachine"; -import { addConfigFile, getConfigFilePath, getLLMDiagnostics} from "./utils"; -import { NLCodeActionProvider, showTextOptions } from './nl-code-action-provider'; +import { addConfigFile, getConfigFilePath, getLLMDiagnostics } from "./utils"; +import { NLCodeActionProvider } from './nl-code-action-provider'; import { BallerinaExtension } from 'src/core'; -import { PROGRESS_BAR_MESSAGE_FOR_DRIFT, WARNING_MESSAGE, WARNING_MESSAGE_DEFAULT, - MONITERED_EXTENSIONS - } from './constants'; - import { isSupportedSLVersion } from "../../utils"; +import { + PROGRESS_BAR_MESSAGE_FOR_DRIFT, WARNING_MESSAGE, WARNING_MESSAGE_DEFAULT, + MONITERED_EXTENSIONS, + COMMAND_SHOW_TEXT +} from './constants'; +import { isSupportedSLVersion } from "../../utils"; +import { CustomDiagnostic } from './custom-diagnostics'; let diagnosticCollection: vscode.DiagnosticCollection; const BALLERINA_UPDATE_13 = 2201130; @@ -49,30 +52,30 @@ export function activate(ballerinaExtInstance: BallerinaExtension) { if (result == null) { return; } - + if (result > 400 && result < 500) { vscode.window.showWarningMessage(WARNING_MESSAGE); return; } vscode.window.showWarningMessage(WARNING_MESSAGE_DEFAULT); }, 600000); - + vscode.workspace.onDidChangeTextDocument(async event => { const filePath = event.document.uri.fsPath; // Get the file path const fileExtension = filePath.substring(filePath.lastIndexOf('.')); // Extract the file extension - + // Check if the file extension is in the monitoredExtensions array if (MONITERED_EXTENSIONS.includes(fileExtension)) { debouncedGetLLMDiagnostics(); } }, null, ballerinaExtInstance.context.subscriptions); - + vscode.workspace.onDidDeleteFiles(async event => { let isMoniteredFileGotDeleted = false; event.files.forEach(file => { const filePath = file.fsPath; // Get the file path const fileExtension = filePath.substring(filePath.lastIndexOf('.')); // Extract the file extension - + // Check if the file extension is in the monitoredExtensions array if (MONITERED_EXTENSIONS.includes(fileExtension)) { isMoniteredFileGotDeleted = true; @@ -92,9 +95,28 @@ export function activate(ballerinaExtInstance: BallerinaExtension) { }) ); - ballerinaExtInstance.context.subscriptions.push(showTextOptions); + ballerinaExtInstance.context.subscriptions.push( + vscode.commands.registerCommand(COMMAND_SHOW_TEXT, async (document: vscode.TextDocument, + diagnostic: CustomDiagnostic, newText: string, range: vscode.Range) => { + const editor = vscode.window.activeTextEditor; + if (!editor) { + vscode.window.showErrorMessage("No active editor found."); + return; + } + + const textToReplace = document.getText(range); + + // Create a Git conflict-like view with "|||||||", "HEAD" and "=======" + const conflictText = `<<<<<<< HEAD\n${textToReplace}\n=======\n${newText}\n>>>>>>>\n`; + + const edit = new vscode.WorkspaceEdit(); + edit.replace(document.uri, range, conflictText); + await vscode.workspace.applyEdit(edit); + vscode.window.showInformationMessage('Changes added'); + }) + ); - vscode.commands.registerCommand("ballerina.verifyDocs", async (...args: any[]) => { + vscode.commands.registerCommand("ballerina.verifyDocs", async (...args: any[]) => { await vscode.window.withProgress( { location: vscode.ProgressLocation.Notification, @@ -102,7 +124,7 @@ export function activate(ballerinaExtInstance: BallerinaExtension) { cancellable: false, }, async () => { - const result: number|null = await getLLMDiagnostics(projectPath, diagnosticCollection); + const result: number | null = await getLLMDiagnostics(projectPath, diagnosticCollection); if (result == null) { return; } @@ -119,8 +141,8 @@ export function activate(ballerinaExtInstance: BallerinaExtension) { vscode.commands.registerCommand("ballerina.configureDefaultModelForNaturalFunctions", async (...args: any[]) => { const configPath = await getConfigFilePath(ballerinaExtInstance, projectPath); if (configPath != null) { - const isNaturalFunctionsAvailableInBallerinaOrg = - isSupportedSLVersion(ballerinaExtInstance, BALLERINA_UPDATE_13); + const isNaturalFunctionsAvailableInBallerinaOrg = + isSupportedSLVersion(ballerinaExtInstance, BALLERINA_UPDATE_13); addConfigFile(configPath, isNaturalFunctionsAvailableInBallerinaOrg); } }); diff --git a/workspaces/ballerina/ballerina-extension/src/features/natural-programming/constants.ts b/workspaces/ballerina/ballerina-extension/src/features/natural-programming/constants.ts index 194021104ef..da00b99fc89 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/natural-programming/constants.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/natural-programming/constants.ts @@ -47,3 +47,4 @@ export const MONITERED_EXTENSIONS = [ export const CONFIG_FILE_NAME = "Config.toml"; export const DEFAULT_MODULE = "DEFAULT_MODULE"; export const ERROR_NO_BALLERINA_SOURCES = "No Ballerina sources"; +export const LOGIN_REQUIRED_WARNING = "Please sign in to BI Copilot to use this feature."; diff --git a/workspaces/ballerina/ballerina-extension/src/features/natural-programming/nl-code-action-provider.ts b/workspaces/ballerina/ballerina-extension/src/features/natural-programming/nl-code-action-provider.ts index 3e779b3a35b..7188100d8f0 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/natural-programming/nl-code-action-provider.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/natural-programming/nl-code-action-provider.ts @@ -18,7 +18,7 @@ import * as vscode from 'vscode'; import { CustomDiagnostic } from './custom-diagnostics'; -import {DRIFT_DIAGNOSTIC_ID, COMMAND_SHOW_TEXT} from "./constants"; +import { DRIFT_DIAGNOSTIC_ID, COMMAND_SHOW_TEXT } from "./constants"; import { result } from 'lodash'; const UPDATE_CODE_ACTION_CONTENT = "Update code to match docs"; @@ -37,7 +37,7 @@ export class NLCodeActionProvider implements vscode.CodeActionProvider { if (diagnostic instanceof CustomDiagnostic) { const customDiagnostic = diagnostic as CustomDiagnostic; - if (customDiagnostic.data.id == DRIFT_DIAGNOSTIC_ID){ + if (customDiagnostic.data.id == DRIFT_DIAGNOSTIC_ID) { const implementationChangeSolution = customDiagnostic.data.implementationChangeSolution; const docChangeSolution = customDiagnostic.data.docChangeSolution; @@ -70,22 +70,3 @@ export class NLCodeActionProvider implements vscode.CodeActionProvider { return actions; } } - -export const showTextOptions = vscode.commands.registerCommand(COMMAND_SHOW_TEXT, async (document: vscode.TextDocument, - diagnostic: CustomDiagnostic, newText: string, range: vscode.Range) => { - const editor = vscode.window.activeTextEditor; - if (!editor) { - vscode.window.showErrorMessage("No active editor found."); - return; - } - - const textToReplace = document.getText(range); - - // Create a Git conflict-like view with "|||||||", "HEAD" and "=======" - const conflictText = `<<<<<<< HEAD\n${textToReplace}\n=======\n${newText}\n>>>>>>>\n`; - - const edit = new vscode.WorkspaceEdit(); - edit.replace(document.uri, range, conflictText); - await vscode.workspace.applyEdit(edit); - vscode.window.showInformationMessage('Changes added'); -}); 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 a5c4730e74f..6739245acfb 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/natural-programming/utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/natural-programming/utils.ts @@ -34,24 +34,26 @@ import { DEFAULT_MODULE, MISSING_README_FILE_WARNING, README_DOCUMENTATION_IS_MISSING, MISSING_REQUIREMENT_FILE, MISSING_API_DOCS, API_DOCUMENTATION_IS_MISSING, PROGRESS_BAR_MESSAGE_FOR_NP_TOKEN, - ERROR_NO_BALLERINA_SOURCES + ERROR_NO_BALLERINA_SOURCES, + LOGIN_REQUIRED_WARNING } from "./constants"; import { isError, isNumber } from 'lodash'; import { HttpStatusCode } from 'axios'; -import { BACKEND_URL } from '../ai/utils'; -import { AIMachineEventType, BallerinaProject } from '@wso2/ballerina-core'; +import { 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'; -import { getRefreshedAccessToken } from '../../../src/utils/ai/auth'; +import { getAccessToken as getAccesstokenFromUtils, getLoginMethod, getRefreshedAccessToken, REFRESH_TOKEN_NOT_AVAILABLE_ERROR_MESSAGE, TOKEN_REFRESH_ONLY_SUPPORTED_FOR_BI_INTEL } from '../../../src/utils/ai/auth'; import { AIStateMachine } from '../../../src/views/ai-panel/aiMachine'; +import { fetchWithAuth } from '../ai/service/connection'; let controller = new AbortController(); export async function getLLMDiagnostics(projectUri: string, diagnosticCollection - : vscode.DiagnosticCollection): Promise { + : vscode.DiagnosticCollection): Promise { const ballerinaProjectSource: BallerinaSource = await getBallerinaProjectSourceFiles(projectUri); - const sourcesOfNonDefaultModulesWithReadme: BallerinaSource[] - = getSourcesOfNonDefaultModulesWithReadme(path.join(projectUri, "modules")); + const sourcesOfNonDefaultModulesWithReadme: BallerinaSource[] + = getSourcesOfNonDefaultModulesWithReadme(path.join(projectUri, "modules")); const sources: BallerinaSource[] = [ballerinaProjectSource, ...sourcesOfNonDefaultModulesWithReadme]; const backendurl = await getBackendURL(); @@ -71,12 +73,12 @@ export async function getLLMDiagnostics(projectUri: string, diagnosticCollection } async function getLLMResponses(sources: BallerinaSource[], token: string, backendurl: string) - : Promise { + : Promise { let promises: Promise[] = []; - const nonDefaultModulesWithReadmeFiles: string[] + const nonDefaultModulesWithReadmeFiles: string[] = sources.map(source => source.moduleName).filter(name => name != DEFAULT_MODULE); - const commentResponsePromise = fetchWithToken( + const commentResponsePromise = fetchWithAuth( backendurl + API_DOCS_DRIFT_CHECK_ENDPOINT, { method: "POST", @@ -97,7 +99,7 @@ async function getLLMResponses(sources: BallerinaSource[], token: string, backen body.push(nonDefaultModulesWithReadmeFiles.join(", ")); } - const documentationSourceResponsePromise = fetchWithToken( + const documentationSourceResponsePromise = fetchWithAuth( backendurl + PROJECT_DOCUMENTATION_DRIFT_CHECK_ENDPOINT, { method: "POST", @@ -115,13 +117,17 @@ async function getLLMResponses(sources: BallerinaSource[], token: string, backen let responses: (Response | Error)[] = await Promise.all(promises); const firstResponse = responses[0]; - const filteredResponses: Response[] - = responses.filter(response => !isError(response) && response.ok) as Response[]; + const filteredResponses: Response[] + = responses.filter(response => response != undefined && !isError(response) && response.ok) as Response[]; if (filteredResponses.length === 0) { if (isError(firstResponse)) { return HttpStatusCode.InternalServerError; } + + if (firstResponse == undefined) { + return null; + } return firstResponse.status; } @@ -137,8 +143,8 @@ 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[], projectUri: string, + diagnosticCollection: vscode.DiagnosticCollection) { let diagnosticsMap = new Map(); for (const response of responses) { @@ -257,8 +263,8 @@ async function createDiagnostic(result: ResultItem, uri: Uri): Promise { const ballerinaProjectSource: BallerinaSource = await getBallerinaProjectSourceFiles(projectUri); - const sourcesOfNonDefaultModulesWithReadme: BallerinaSource[] - = getSourcesOfNonDefaultModulesWithReadme(path.join(projectUri, "modules")); + const sourcesOfNonDefaultModulesWithReadme: BallerinaSource[] + = getSourcesOfNonDefaultModulesWithReadme(path.join(projectUri, "modules")); const sources: BallerinaSource[] = [ballerinaProjectSource, ...sourcesOfNonDefaultModulesWithReadme]; const backendurl = await getBackendURL(); @@ -266,14 +272,14 @@ export async function getLLMDiagnosticArrayAsString(projectUri: string): Promise const responses = await getLLMResponses(sources, token, backendurl); - if (isNumber(responses)) { - return responses; - } - if (responses == null) { return ""; } + if (isNumber(responses)) { + return responses; + } + let diagnosticArray = (await createDiagnosticArray(responses, projectUri)).map(diagnostic => { return `${diagnostic.message}`; }) @@ -491,40 +497,23 @@ function getSourcesOfNonDefaultModulesWithReadme(modulesDir: string): BallerinaS return sources; } -export async function fetchWithToken(url: string, options: RequestInit) { - try { - let response = await fetch(url, options); - console.log("Response status: ", response.status); - if (response.status === 401) { - console.log("Token expired. Refreshing token..."); - const newToken = await getRefreshedAccessToken(); - if (newToken) { - options.headers = { - ...options.headers, - 'Authorization': `Bearer ${newToken}`, - }; - response = await fetch(url, options); - } - } - return response; - } catch (error) { - return Error("Error occured while sending the request"); - } -} - export function getPluginConfig(): BallerinaPluginConfig { return vscode.workspace.getConfiguration('ballerina'); } export async function getBackendURL(): Promise { return new Promise(async (resolve) => { - resolve(BACKEND_URL); + resolve(OLD_BACKEND_URL); }); } export async function getAccessToken(): Promise { return new Promise(async (resolve) => { - const token = await extension.context.secrets.get('BallerinaAIUser'); + let token: string; + const loginMethod = await getLoginMethod(); + if (loginMethod === LoginMethod.BI_INTEL) { + token = await getAccesstokenFromUtils(); + } resolve(token as string); }); } @@ -559,7 +548,7 @@ function findFileCaseInsensitive(directory, fileName) { } export function addDefaultModelConfigForNaturalFunctions( - projectPath: string, token: string, backendUrl: string, isNaturalFunctionsAvailableInBallerinaOrg: boolean) { + projectPath: string, token: string, backendUrl: string, isNaturalFunctionsAvailableInBallerinaOrg: boolean) { const moduleOrg = isNaturalFunctionsAvailableInBallerinaOrg ? "ballerina" : "ballerinax"; const targetTable = `[${moduleOrg}.np.defaultModelConfig]`; const urlLine = `url = "${backendUrl}"`; @@ -624,10 +613,18 @@ export function addDefaultModelConfigForNaturalFunctions( fs.writeFileSync(configFilePath, fileContent); } -export function getTokenForNaturalFunction() { +export async function getTokenForNaturalFunction() { try { - return getRefreshedAccessToken(); + const token = await getRefreshedAccessToken(); + if (!token) { + vscode.window.showWarningMessage(LOGIN_REQUIRED_WARNING); + return null; + } + return token; } catch (error) { + if ((error as Error).message === REFRESH_TOKEN_NOT_AVAILABLE_ERROR_MESSAGE || (error as Error).message === TOKEN_REFRESH_ONLY_SUPPORTED_FOR_BI_INTEL) { + vscode.window.showWarningMessage(LOGIN_REQUIRED_WARNING); + } throw error; } } @@ -670,7 +667,7 @@ export async function getConfigFilePath(ballerinaExtInstance: BallerinaExtension activeFilePath = activeTextEditor.document.uri.fsPath; } - if (currentProject == null && activeFilePath == "") { + if (currentProject == null && activeFilePath == "") { return await showNoBallerinaSourceWarningMessage(); } @@ -680,7 +677,7 @@ export async function getConfigFilePath(ballerinaExtInstance: BallerinaExtension if (!currentBallerinaProject) { return await showNoBallerinaSourceWarningMessage(); } - + if (currentBallerinaProject.kind == 'SINGLE_FILE_PROJECT') { configPath = path.dirname(currentBallerinaProject.path); } else { @@ -731,8 +728,8 @@ async function isBallerinaProjectAsync(rootPath: string): Promise { } const files = fs.readdirSync(rootPath); - return files.some(file => - file.toLowerCase() === 'ballerina.toml' || + return files.some(file => + file.toLowerCase() === 'ballerina.toml' || file.toLowerCase().endsWith('.bal') ); } catch (error) { 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 55733dc3d59..0a569981c9a 100644 --- a/workspaces/ballerina/ballerina-extension/src/features/project/cmds/run.ts +++ b/workspaces/ballerina/ballerina-extension/src/features/project/cmds/run.ts @@ -29,7 +29,13 @@ import { LANGUAGE } from "../../../core"; function activateRunCmdCommand() { commands.registerCommand(PALETTE_COMMANDS.RUN, async (filePath: Uri) => { - prepareAndGenerateConfig(extension.ballerinaExtInstance, filePath?.fsPath); + let actualFilePath: string | undefined; + if (typeof filePath === 'string') { + actualFilePath = Uri.parse(filePath).fsPath; + } else if (filePath instanceof Uri) { + actualFilePath = filePath.fsPath; + } + prepareAndGenerateConfig(extension.ballerinaExtInstance, actualFilePath); }); // register ballerina run handler @@ -92,7 +98,7 @@ function activateRunCmdCommand() { } function runCurrentFile() { - runCommand(getCurrenDirectoryPath(), extension.ballerinaExtInstance.getBallerinaCmd(), + runCommand(getCurrenDirectoryPath(), extension.ballerinaExtInstance.getBallerinaCmd(), getRunCommand(), getCurrentBallerinaFile()); } diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-agent/rpc-handler.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-agent/rpc-handler.ts index 2642cadf1e6..62217537b65 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-agent/rpc-handler.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-agent/rpc-handler.ts @@ -14,35 +14,51 @@ * 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 { + AiModuleOrgRequest, AIAgentRequest, AIAgentToolsUpdateRequest, AIGentToolsRequest, AIModelsRequest, AINodesRequest, + AIToolRequest, AIToolsRequest, - MemoryManagersRequest, + configureDefaultModelProvider, createAIAgent, genTool, + getAiModuleOrg, getAllAgents, getAllMemoryManagers, getAllModels, + getMcpTools, getModels, + getTool, getTools, - updateAIAgentTools + McpToolsRequest, + McpToolUpdateRequest, + MemoryManagersRequest, + updateAIAgentTools, + updateMCPToolKit } from "@wso2/ballerina-core"; import { Messenger } from "vscode-messenger"; import { AiAgentRpcManager } from "./rpc-manager"; export function registerAiAgentRpcHandlers(messenger: Messenger) { const rpcManger = new AiAgentRpcManager(); + messenger.onRequest(getAiModuleOrg, (args: AiModuleOrgRequest) => rpcManger.getAiModuleOrg(args)); messenger.onRequest(getAllAgents, (args: AINodesRequest) => rpcManger.getAllAgents(args)); messenger.onRequest(getAllModels, (args: AIModelsRequest) => rpcManger.getAllModels(args)); messenger.onRequest(getAllMemoryManagers, (args: MemoryManagersRequest) => rpcManger.getAllMemoryManagers(args)); messenger.onRequest(getModels, (args: AIModelsRequest) => rpcManger.getModels(args)); messenger.onRequest(getTools, (args: AIToolsRequest) => rpcManger.getTools(args)); + messenger.onRequest(getTool, (args: AIToolRequest) => rpcManger.getTool(args)); + messenger.onRequest(getMcpTools, (args: McpToolsRequest) => rpcManger.getMcpTools(args)); messenger.onRequest(genTool, (args: AIGentToolsRequest) => rpcManger.genTool(args)); + messenger.onNotification(configureDefaultModelProvider, () => rpcManger.configureDefaultModelProvider()); messenger.onRequest(createAIAgent, (args: AIAgentRequest) => rpcManger.createAIAgent(args)); messenger.onRequest(updateAIAgentTools, (args: AIAgentToolsUpdateRequest) => rpcManger.updateAIAgentTools(args)); + messenger.onNotification(updateMCPToolKit, (args: McpToolUpdateRequest) => rpcManger.updateMCPToolKit(args)); } 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 56778700e80..f858b7ac5b8 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 @@ -17,6 +17,8 @@ */ import { AIAgentAPI, + AiModuleOrgRequest, + AiModuleOrgResponse, AIAgentRequest, AIAgentResponse, AIAgentToolsUpdateRequest, @@ -26,23 +28,25 @@ import { AIModelsResponse, AINodesRequest, AINodesResponse, + AIToolRequest, + AIToolResponse, AIToolsRequest, AIToolsResponse, AgentTool, AgentToolRequest, FlowNode, + McpToolUpdateRequest, + McpToolsRequest, + McpToolsResponse, MemoryManagersRequest, MemoryManagersResponse, - NodePosition, - STModification, - SyntaxTree, - TextEdit + NodePosition } from "@wso2/ballerina-core"; -import { writeFileSync } from "fs"; -import { Uri } from "vscode"; +import vscode from "vscode"; import { URI, Utils } from "vscode-uri"; import { StateMachine } from "../../stateMachine"; import { updateSourceCode } from "../../utils/source-utils"; +import { CONFIGURE_DEFAULT_MODEL_COMMAND } from "../../features/ai/constants"; interface EntryPosition { @@ -111,6 +115,18 @@ export class AiAgentRpcManager implements AIAgentAPI { }); } + async getMcpTools(params: McpToolsRequest): Promise { + return new Promise(async (resolve) => { + const context = StateMachine.context(); + try { + const res: McpToolsResponse = await context.langClient.getMcpTools(params); + resolve(res); + } catch (error) { + console.log(error); + } + }); + } + async genTool(params: AIGentToolsRequest): Promise { // HACK: set description to empty string if it is not provided if (!params.description) { @@ -145,13 +161,14 @@ export class AiAgentRpcManager implements AIAgentAPI { } // Create the model Second - const allAgents = (await StateMachine.langClient().getAllAgents({ filePath })); + const aiModuleOrg = await StateMachine.langClient().getAiModuleOrg({ projectPath: projectUri }); + const allAgents = (await StateMachine.langClient().getAllAgents({ filePath, orgName: aiModuleOrg.orgName })); console.log("All Agents: ", allAgents); const fixedAgentCodeData = allAgents.agents.at(0); if (params.modelState === 1) { - const allModels = await StateMachine.langClient().getAllModels({ agent: fixedAgentCodeData.object, filePath }); + const allModels = await StateMachine.langClient().getAllModels({ agent: fixedAgentCodeData.object, filePath, orgName: aiModuleOrg.orgName }); const modelCodeData = allModels.models.find(val => val.object === params.selectedModel); const modelFlowNode = (await StateMachine.langClient().getNodeTemplate({ filePath, id: modelCodeData, position: { line: 0, offset: 0 } })).flowNode; @@ -379,5 +396,180 @@ export class AiAgentRpcManager implements AIAgentAPI { console.error(`Failed to create tool: ${error}`); } } -} + async getAiModuleOrg(params: AiModuleOrgRequest): Promise { + return new Promise(async (resolve) => { + const context = StateMachine.context(); + try { + const res: AiModuleOrgResponse = await context.langClient.getAiModuleOrg(params); + resolve(res); + } catch (error) { + console.log(error); + } + }); + } + + async updateMCPToolKit(params: McpToolUpdateRequest): Promise { + const projectUri = StateMachine.context().projectUri; + const filePath = Utils.joinPath(URI.file(projectUri), "agents.bal").fsPath; + + // Generate the variable name from the server name + const variableName = params.updatedNode.properties["variable"].value; + + // 1. Use the updatedNode from params for the MCP ToolKit edits + let mcpEdits: { [filePath: string]: any[] } = {}; + if (params.updatedNode) { + // Get the template node + const nodeTemplate = await StateMachine.langClient().getNodeTemplate({ + position: params.agentFlowNode.codedata.lineRange.endLine, + filePath: filePath, + id: { + node: "CLASS_INIT", + org: "ballerinax", + module: "ai", + packageName: "ai", + version: "1.2.1", + symbol: "init", + object: "McpToolKit" + } + }); + + // Map all properties from updatedNode to nodeTemplate.flowNode + for (const key in params.updatedNode.properties) { + if (key === "type") { + continue; + } + if (nodeTemplate.flowNode.properties.hasOwnProperty(key)) { + nodeTemplate.flowNode.properties[key].value = params.updatedNode.properties[key].value; + } + } + if (params.selectedTools.length === 0) { + (nodeTemplate.flowNode.properties["permittedTools"] as { value: any }).value = `()`; + } else { + if ("permittedTools" in nodeTemplate.flowNode.properties) { + (nodeTemplate.flowNode.properties["permittedTools"] as { value: any }).value = params.selectedTools.map(tool => `"${tool}"`); + } + } + // Pass codedata if present + if (params.codedata) { + nodeTemplate.flowNode.codedata.lineRange = params.codedata.lineRange; + } + // Use only the template node for generating text edits + const mcpToolKitEdits = await StateMachine.langClient().getSourceCode({ + filePath: filePath, + flowNode: nodeTemplate.flowNode, + }); + mcpEdits = mcpToolKitEdits.textEdits; + + + for (const key in mcpToolKitEdits.textEdits) { + const filtered = mcpToolKitEdits.textEdits[key] + .filter(edit => !edit.newText.includes("import")) + .map(edit => ({ + ...edit + })); + + if (filtered.length > 0) { + mcpEdits[key] = filtered; + } + } + // Update the range fields using params.codedata.lineRange + if (params.codedata && params.codedata.lineRange) { + const { startLine, endLine } = params.codedata.lineRange; + for (const file in mcpEdits) { + mcpEdits[file] = mcpEdits[file].map(edit => ({ + ...edit, + range: { + start: { + line: startLine.line, + character: startLine.offset, + }, + end: { + line: endLine.line, + character: endLine.offset, + }, + } + })); + } + } + } + + // 2. Update the agent's tools array to include the variable name (following updateAIAgentTools pattern) + const agentFlowNode = params.agentFlowNode; + let toolsValue = agentFlowNode.properties["tools"].value; + + // Parse existing tools and add the variable name + if (typeof toolsValue === "string" && typeof variableName === "string") { + const toolsArray = this.parseToolsString(toolsValue); + if (toolsArray.length > 0) { + // Add the variable name if not exists + if (!toolsArray.includes(variableName)) { + toolsArray.push(variableName); + } + // Update the tools value + toolsValue = `[${toolsArray.join(", ")}]`; + } else { + toolsValue = `[${variableName}]`; + } + } + + // Set the updated tools value + agentFlowNode.properties["tools"].value = toolsValue; + + // Generate source code for the updated agent + const agentEdits = await StateMachine.langClient().getSourceCode({ + filePath: filePath, + flowNode: agentFlowNode + }); + + + // 3. Apply both edits + await updateSourceCode({ textEdits: mcpEdits }); + await updateSourceCode({ textEdits: agentEdits.textEdits }); + } + + private parseToolsString(toolsStr: string): string[] { + // Remove brackets and split by comma + const trimmed = toolsStr.trim(); + if (!trimmed.startsWith("[") || !trimmed.endsWith("]")) { + return []; + } + const inner = trimmed.substring(1, trimmed.length - 1); + // Handle empty array case + if (!inner.trim()) { + return []; + } + // Split by comma and trim each element + return inner.split(",").map((tool) => tool.trim()); + } + + private toCamelCase(str: string): string { + const words = str + .replace(/[^a-zA-Z0-9]+/g, ' ') + .trim() + .split(/\s+/); + return words + .map((word, index) => + index === 0 + ? word.toLowerCase() + : word.charAt(0).toUpperCase() + word.slice(1).toLowerCase() + ) + .join(''); + } + + async getTool(params: AIToolRequest): Promise { + return new Promise(async (resolve) => { + const context = StateMachine.context(); + try { + const res: AIToolResponse = await context.langClient.getTool(params); + resolve(res); + } catch (error) { + console.log(error); + } + }); + } + + async configureDefaultModelProvider(): Promise { + await vscode.commands.executeCommand(CONFIGURE_DEFAULT_MODEL_COMMAND); + } +} diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/constants.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/constants.ts index 534951410d7..49c88fd0343 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/constants.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/constants.ts @@ -24,3 +24,98 @@ export const REQ_KEY = "user_requirements_file"; export const DEVELOPMENT_KEY = "developer_intention_file"; export const DEVELOPMENT_DOCUMENT = "developer.md"; export const TEST_DIR_NAME = "tests"; + +// Datamapper Constants +// Primitive data types supported by the datamapper +export enum PrimitiveType { + STRING = "string", + INT = "int", + FLOAT = "float", + DECIMAL = "decimal", + BOOLEAN = "boolean" +} + +export const NUMERIC_AND_BOOLEAN_TYPES = [ + PrimitiveType.INT, + PrimitiveType.FLOAT, + PrimitiveType.DECIMAL, + PrimitiveType.BOOLEAN +]; + +// Operations that can be performed during data mapping +export enum Operation { + DIRECT = "DIRECT", + LENGTH = "LENGTH", + SPLIT = "SPLIT", + ADDITION = "ADDITION", + SUBTRACTION = "SUBTRACTION", + MULTIPLICATION = "MULTIPLICATION", + DIVISION = "DIVISION", + MODULAR = "MODULAR", + EQUAL = "EQUAL", + NOTEQUAL = "NOTEQUAL", + LESS_THAN = "LESS_THAN", + LESS_THAN_OR_EQUAL = "LESS_THAN_OR_EQUAL", + AND = "AND", + OR = "OR", + REPLACE_ALL = "REPLACE_ALL", + AVERAGE = "AVERAGE", + MAXIMUM = "MAXIMUM", + MINIMUM = "MINIMUM", + SUMMATION = "SUMMATION", + ABSOLUTE = "ABSOLUTE" +} + +// Array types specifically for record data structures +export enum ArrayRecordType { + RECORD_ARRAY = "record[]", + RECORD_ARRAY_NULLABLE = "record[]|()", + READONLY_RECORD_ARRAY = "(readonly&record)[]", + READONLY_RECORD_ARRAY_NULLABLE = "(readonly&record)[]|()", + RECORD_OR_NULL_ARRAY = "(record|())[]", + RECORD_OR_NULL_ARRAY_NULLABLE = "(record|())[]|()", + READONLY_RECORD_OR_NULL_ARRAY = "(readonly&record|())[]", + READONLY_RECORD_OR_NULL_ARRAY_NULLABLE = "(readonly&record|())[]|()" +} + +// Array types for enum, union, and intersection data structures +export enum ArrayEnumUnionType { + ENUM_ARRAY = "enum[]", + UNION_ARRAY = "union[]", + INTERSECTION_ARRAY = "intersection[]", + ENUM_ARRAY_NULLABLE = "enum[]|()", + UNION_ARRAY_NULLABLE = "union[]|()", + INTERSECTION_ARRAY_NULLABLE = "intersection[]|()" +} + +export enum RecordType { + RECORD = "record", + RECORD_NULLABLE = "record|()", + READONLY_RECORD = "readonly&record", + READONLY_RECORD_NULLABLE = "readonly&record|()", + RECORD_ARRAY = "record[]", + RECORD_ARRAY_NULLABLE = "record[]|()", + READONLY_RECORD_ARRAY = "(readonly&record)[]", + READONLY_RECORD_ARRAY_NULLABLE = "(readonly&record)[]|()", + RECORD_OR_NULL_ARRAY = "(record|())[]", + RECORD_OR_NULL_ARRAY_NULLABLE = "(record|())[]|()", + READONLY_RECORD_OR_NULL_ARRAY = "(readonly&record|())[]", + READONLY_RECORD_OR_NULL_ARRAY_NULLABLE = "(readonly&record|())[]|()" +} + +export enum UnionEnumIntersectionType { + ENUM = "enum", + UNION = "union", + INTERSECTION = "intersection", + ENUM_ARRAY = "enum[]", + ENUM_ARRAY_NULLABLE = "enum[]|()", + UNION_ARRAY = "union[]", + UNION_ARRAY_NULLABLE = "union[]|()", + INTERSECTION_ARRAY = "intersection[]", + INTERSECTION_ARRAY_NULLABLE = "intersection[]|()" +} + +export enum MetadataType { + INPUT_METADATA = "inputMetadata", + OUTPUT_METADATA = "outputMetadata" +} diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/inline-utils.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/inline-utils.ts index f916f453960..f9e9e88d7d1 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/inline-utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/inline-utils.ts @@ -7,18 +7,11 @@ * You may not alter or remove any copyright or other notice from copies of this content. */ -import { AIMachineEventType, Attachment, ErrorCode, ExpandedDMModel, FieldConfig, FormField, InlineDataMapperModelResponse, InputCategory, IOType, Mapping, MappingElement, ParameterDefinitions, ParameterField, ParameterMetadata, RecordDefinitonObject, TypeKind } from "@wso2/ballerina-core"; -import { fetchWithTimeout, filterResponse, generateBallerinaCode, isErrorCode, mappingFileInlineDataMapperModel, navigateTypeInfo, REQUEST_TIMEOUT } from "./utils"; -import { getAccessToken, getRefreshedAccessToken } from "../../utils/ai/auth"; -import { NOT_LOGGED_IN, TIMEOUT } from "../../views/ai-panel/errorCodes"; -import { AIStateMachine } from "../../views/ai-panel/aiMachine"; -import { BACKEND_URL } from "../../features/ai/utils"; - -let abortController = new AbortController(); - -export function handleStop() { - abortController.abort(); -} +import { Attachment, ExpandedDMModel, FormField, InlineDataMapperModelResponse, InputCategory, IOType, Mapping, MappingElement, TypeKind } from "@wso2/ballerina-core"; +import { generateBallerinaCode, mappingFileInlineDataMapperModel, navigateTypeInfo } from "./utils"; +import { DatamapperResponse } from "../../../src/features/ai/service/datamapper/types"; +import { generateInlineAutoMappings } from "../../../src/features/ai/service/datamapper/inline_datamapper"; +import { FieldMetadata, ParameterDefinitions, ParameterField, ParameterMetadata } from "./types"; function transformIOType(input: IOType): FormField { const name = input.variableName || extractNameFromId(input.id); @@ -99,17 +92,17 @@ function extractNameFromId(id: string): string { } function transformInputs(inputs: IOType[]): { - constants: Record; - configurables: Record; - variables: Record; + constants: Record; + configurables: Record; + variables: Record; parameters: ParameterField[]; - parameterFields: { [parameterName: string]: FormField[] }; + parameterFields: { [parameterName: string]: FormField[] }; } { - const constants: Record = {}; - const configurables: Record = {}; - const variables: Record = {}; + const constants: Record = {}; + const configurables: Record = {}; + const variables: Record = {}; const parameters: ParameterField[] = []; - const parameterFields: { [parameterName: string]: FormField[] } = {}; + const parameterFields: { [parameterName: string]: FormField[] } = {}; inputs.forEach((input) => { // Helper function to create ParameterField @@ -150,7 +143,7 @@ function transformInputs(inputs: IOType[]): { }; }; - const createFieldConfig = (input: IOType): FieldConfig => { + const createFieldConfig = (input: IOType): FieldMetadata => { if (!input.typeName) { throw new Error("TypeName is missing"); } @@ -182,7 +175,7 @@ function transformInputs(inputs: IOType[]): { if (input.category === InputCategory.Parameter) { const parameterField = createParameterField(input); parameters.push(parameterField); - + const parameterName = input.id; if (input.fields) { parameterFields[parameterName] = input.fields.map(transformIOType); @@ -221,7 +214,7 @@ function cleanIOType(ioType: IOType | null | undefined): IOType | null { .filter(field => !isNullOrUndefined(field)) .map(field => cleanIOType(field)) .filter(field => field !== null) as IOType[]; - + if (cleanedFields.length > 0) { cleaned.fields = cleanedFields; } @@ -237,12 +230,12 @@ function cleanIOType(ioType: IOType | null | undefined): IOType | null { // Clean members array - remove null/undefined elements if (ioType.members && Array.isArray(ioType.members)) { - const cleanedMembers = ioType.members.filter(member => - !isNullOrUndefined(member) && - !isNullOrUndefined(member.id) && - !isNullOrUndefined(member.value) + const cleanedMembers = ioType.members.filter(member => + !isNullOrUndefined(member) && + !isNullOrUndefined(member.id) && + !isNullOrUndefined(member.typeName) ); - + if (cleanedMembers.length > 0) { cleaned.members = cleanedMembers; } @@ -261,7 +254,7 @@ function cleanExpandedDMModel(model: ExpandedDMModel): ExpandedDMModel { .filter(input => !isNullOrUndefined(input)) .map(input => cleanIOType(input)) .filter(input => input !== null) as IOType[]; - + cleaned.inputs = cleanedInputs; } @@ -279,7 +272,7 @@ function cleanExpandedDMModel(model: ExpandedDMModel): ExpandedDMModel { .filter(subMapping => !isNullOrUndefined(subMapping)) .map(subMapping => cleanIOType(subMapping)) .filter(subMapping => subMapping !== null) as IOType[]; - + if (cleanedSubMappings.length > 0) { cleaned.subMappings = cleanedSubMappings; } @@ -287,19 +280,19 @@ function cleanExpandedDMModel(model: ExpandedDMModel): ExpandedDMModel { // Clean mappings array - remove null/undefined elements if (model.mappings && Array.isArray(model.mappings)) { - const cleanedMappings = model.mappings.filter(mapping => - !isNullOrUndefined(mapping) && - !isNullOrUndefined(mapping.output) && + const cleanedMappings = model.mappings.filter(mapping => + !isNullOrUndefined(mapping) && + !isNullOrUndefined(mapping.output) && !isNullOrUndefined(mapping.expression) ); - + // Also clean inputs array within each mapping cleanedMappings.forEach(mapping => { if (mapping.inputs && Array.isArray(mapping.inputs)) { mapping.inputs = mapping.inputs.filter(input => !isNullOrUndefined(input)); } }); - + cleaned.mappings = cleanedMappings; } @@ -328,11 +321,11 @@ function cleanInlineDataMapperModelResponse( function transformCodeObjectToMappings(codeObject: any, request: InlineDataMapperModelResponse): Mapping[] { const mappings: Mapping[] = []; - + // Get the output variable name from the request const { output: mappingOutput } = request.mappingsModel as ExpandedDMModel; const outputVariableName = mappingOutput.variableName || extractNameFromId(mappingOutput.id); - + // Iterate through each property in codeObject Object.keys(codeObject).forEach(key => { const mapping: Mapping = { @@ -341,152 +334,83 @@ function transformCodeObjectToMappings(codeObject: any, request: InlineDataMappe }; mappings.push(mapping); }); - + return mappings; } export async function getInlineParamDefinitions( inlineDataMapperResponse: InlineDataMapperModelResponse -): Promise { - let inputs: { [key: string]: any } = {}; - let inputMetadata: { [key: string]: any } = {}; - let output: { [key: string]: any } = {}; - let outputMetadata: { [key: string]: any } = {}; - let isErrorExists = false; - - let { inputs: mappingInputs, output: mappingOutput } = inlineDataMapperResponse.mappingsModel as ExpandedDMModel; - let transformedInputs = transformInputs(mappingInputs); - let transformedOutputs = transformOutput(mappingOutput); - - for (const parameter of transformedInputs.parameters) { - const inputDefinition: ErrorCode | RecordDefinitonObject = navigateTypeInfo(transformedInputs.parameterFields[parameter.parameterName], false); - - if (isErrorCode(inputDefinition)) { - return inputDefinition as ErrorCode; - } - - inputs = { - ...inputs, - [parameter.parameterName]: (inputDefinition as RecordDefinitonObject).recordFields - }; +): Promise { + const inputs: { [key: string]: any } = {}; + const inputMetadata: { [key: string]: any } = {}; + + const { inputs: mappingInputs, output: mappingOutput } = inlineDataMapperResponse.mappingsModel as ExpandedDMModel; + const transformedInputs = transformInputs(mappingInputs); + const transformedOutputs = transformOutput(mappingOutput); - inputMetadata = { - ...inputMetadata, - [parameter.parameterName]: { - "isArrayType": parameter.isArrayType, - "parameterName": parameter.parameterName, - "parameterType": parameter.parameterType, - "type": parameter.type, - "fields": (inputDefinition as RecordDefinitonObject).recordFieldsMetadata - } - }; - } + for (const parameter of transformedInputs.parameters) { + const inputDefinition = navigateTypeInfo(transformedInputs.parameterFields[parameter.parameterName], false); - const outputDefinition = navigateTypeInfo(transformedOutputs, false); - - if (isErrorCode(outputDefinition)) { - return outputDefinition as ErrorCode; + inputs[parameter.parameterName] = inputDefinition.recordFields; + inputMetadata[parameter.parameterName] = { + "isArrayType": parameter.isArrayType, + "parameterName": parameter.parameterName, + "parameterType": parameter.parameterType, + "type": parameter.type, + "fields": inputDefinition.recordFieldsMetadata + }; } - output = { ...(outputDefinition as RecordDefinitonObject).recordFields }; - outputMetadata = { ...(outputDefinition as RecordDefinitonObject).recordFieldsMetadata }; - - const response = { - inputs, - output, - inputMetadata, - outputMetadata, - constants: transformedInputs.constants, - configurables: transformedInputs.configurables, - variables: transformedInputs.variables - }; + const outputDefinition = navigateTypeInfo(transformedOutputs, false); + const output = { ...outputDefinition.recordFields }; + const outputMetadata = { ...outputDefinition.recordFieldsMetadata }; return { - parameterMetadata: response, - errorStatus: isErrorExists + parameterMetadata: { + inputs, + output, + inputMetadata, + outputMetadata, + constants: transformedInputs.constants, + configurables: transformedInputs.configurables, + variables: transformedInputs.variables + }, + errorStatus: false }; } -async function sendInlineDatamapperRequest(inlineDataMapperResponse: InlineDataMapperModelResponse | ErrorCode, accessToken: string | ErrorCode): Promise { - const response = await fetchWithTimeout(BACKEND_URL + "/inline/datamapper", { - method: "POST", - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'User-Agent': 'Ballerina-VSCode-Plugin', - 'Authorization': 'Bearer ' + accessToken - }, - body: JSON.stringify(inlineDataMapperResponse) - }, REQUEST_TIMEOUT); - +async function sendInlineDatamapperRequest(inlineDataMapperResponse: InlineDataMapperModelResponse): Promise { + const response: DatamapperResponse = await generateInlineAutoMappings(inlineDataMapperResponse); return response; } -async function getInlineDatamapperCode(inlineDataMapperResponse: InlineDataMapperModelResponse | ErrorCode, parameterDefinitions: ParameterMetadata | ErrorCode): Promise { +async function getInlineDatamapperCode(inlineDataMapperResponse: InlineDataMapperModelResponse, parameterDefinitions: ParameterMetadata): Promise> { let nestedKeyArray: string[] = []; try { - const accessToken = await getAccessToken().catch((error) => { - console.error(error); - return NOT_LOGGED_IN; - }); - let response = await sendInlineDatamapperRequest(inlineDataMapperResponse, accessToken); - if (isErrorCode(response)) { - return (response as ErrorCode); - } - - response = (response as Response); - - // Refresh - if (response.status === 401) { - const newAccessToken = await getRefreshedAccessToken(); - if (!newAccessToken) { - AIStateMachine.service().send(AIMachineEventType.LOGOUT); - return; - } - let retryResponse: Response | ErrorCode = await sendInlineDatamapperRequest(inlineDataMapperResponse, newAccessToken); - - if (isErrorCode(retryResponse)) { - return (retryResponse as ErrorCode); - } - - retryResponse = (retryResponse as Response); - let intermediateMapping = await filterResponse(retryResponse); - let finalCode = await generateBallerinaCode(intermediateMapping, parameterDefinitions, "", nestedKeyArray); - return finalCode; - } - let intermediateMapping = await filterResponse(response); + let response: DatamapperResponse = await sendInlineDatamapperRequest(inlineDataMapperResponse); + let intermediateMapping = response.mappings; let finalCode = await generateBallerinaCode(intermediateMapping, parameterDefinitions, "", nestedKeyArray); return finalCode; } catch (error) { console.error(error); - return TIMEOUT; + throw error; } } export async function processInlineMappings( request: ExpandedDMModel, file?: Attachment -): Promise { - let inlineDataMapperResponse = cleanInlineDataMapperModelResponse(request) as InlineDataMapperModelResponse; - - let result = await getInlineParamDefinitions(inlineDataMapperResponse); - if (isErrorCode(result)) { - return result as ErrorCode; - } - let parameterDefinitions = (result as ParameterDefinitions).parameterMetadata; +): Promise { + let inlineDataMapperResponse = cleanInlineDataMapperModelResponse(request); + const result = await getInlineParamDefinitions(inlineDataMapperResponse); + const parameterDefinitions = (result as ParameterDefinitions).parameterMetadata; + if (file) { - let mappedResult = await mappingFileInlineDataMapperModel(file, inlineDataMapperResponse); - if (isErrorCode(mappedResult)) { - return mappedResult as ErrorCode; - } + const mappedResult = await mappingFileInlineDataMapperModel(file, inlineDataMapperResponse); inlineDataMapperResponse = mappedResult as InlineDataMapperModelResponse; } const codeObject = await getInlineDatamapperCode(inlineDataMapperResponse, parameterDefinitions); - if (isErrorCode(codeObject) || Object.keys(codeObject).length === 0) { - return codeObject as ErrorCode; - } - const mappings: Mapping[] = transformCodeObjectToMappings(codeObject, inlineDataMapperResponse); return { mappings }; } diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/rpc-handler.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/rpc-handler.ts index 19a33acf080..132045a020a 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/rpc-handler.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/rpc-handler.ts @@ -18,6 +18,7 @@ * THIS FILE INCLUDES AUTO GENERATED CODE */ import { + abortAIGeneration, abortTestGeneration, addChatSummary, addInlineCodeSegmentToWorkspace, @@ -34,9 +35,16 @@ import { DeveloperDocument, fetchData, FetchDataRequest, + generateCode, + GenerateCodeRequest, + generateFunctionTests, + generateHealthcareCode, generateMappings, GenerateMappingsFromRecordRequest, GenerateMappingsRequest, + generateOpenAPI, + GenerateOpenAPIRequest, + generateTestPlan, GenerateTypesFromRecordRequest, getAccessToken, getActiveFile, @@ -50,13 +58,14 @@ import { getFromFile, GetFromFileRequest, getGeneratedTests, + getLoginMethod, getMappingsFromModel, getMappingsFromRecord, getModuleDirectory, GetModuleDirParams, - getProjectSource, getProjectUuid, getRefreshedAccessToken, + getRelevantLibrariesAndFunctions, getResourceMethodAndPaths, getResourceSourceForMethodAndPath, getServiceNames, @@ -79,12 +88,18 @@ import { promptGithubAuthorize, promptWSO2AILogout, readDeveloperMdFile, + RelevantLibrariesAndFunctionsRequest, + repairGeneratedCode, + RepairParams, RequirementSpecification, showSignInAlert, + stopAIMappings, submitFeedback, SubmitFeedbackRequest, TestGenerationRequest, TestGenerationResponse, + TestGeneratorIntermediaryState, + TestPlanGenerationRequest, updateDevelopmentDocument, updateRequirementSpecification } from "@wso2/ballerina-core"; @@ -95,6 +110,7 @@ export function registerAiPanelRpcHandlers(messenger: Messenger) { const rpcManger = new AiPanelRpcManager(); messenger.onRequest(getBackendUrl, () => rpcManger.getBackendUrl()); messenger.onRequest(getProjectUuid, () => rpcManger.getProjectUuid()); + messenger.onRequest(getLoginMethod, () => rpcManger.getLoginMethod()); messenger.onRequest(getAccessToken, () => rpcManger.getAccessToken()); messenger.onRequest(getRefreshedAccessToken, () => rpcManger.getRefreshedAccessToken()); messenger.onRequest(getDefaultPrompt, () => rpcManger.getDefaultPrompt()); @@ -106,7 +122,7 @@ export function registerAiPanelRpcHandlers(messenger: Messenger) { messenger.onNotification(deleteFromProject, (args: DeleteFromProjectRequest) => rpcManger.deleteFromProject(args)); messenger.onRequest(generateMappings, (args: GenerateMappingsRequest) => rpcManger.generateMappings(args)); messenger.onRequest(notifyAIMappings, (args: NotifyAIMappingsRequest) => rpcManger.notifyAIMappings(args)); - messenger.onRequest(getProjectSource, (args: string) => rpcManger.getProjectSource(args)); + messenger.onRequest(stopAIMappings, () => rpcManger.stopAIMappings()); messenger.onRequest(getShadowDiagnostics, (args: ProjectSource) => rpcManger.getShadowDiagnostics(args)); messenger.onRequest(checkSyntaxError, (args: ProjectSource) => rpcManger.checkSyntaxError(args)); messenger.onNotification(clearInitialPrompt, () => rpcManger.clearInitialPrompt()); @@ -143,4 +159,12 @@ export function registerAiPanelRpcHandlers(messenger: Messenger) { messenger.onRequest(getModuleDirectory, (args: GetModuleDirParams) => rpcManger.getModuleDirectory(args)); messenger.onRequest(getContentFromFile, (args: GetFromFileRequest) => rpcManger.getContentFromFile(args)); messenger.onRequest(submitFeedback, (args: SubmitFeedbackRequest) => rpcManger.submitFeedback(args)); + messenger.onRequest(getRelevantLibrariesAndFunctions, (args: RelevantLibrariesAndFunctionsRequest) => rpcManger.getRelevantLibrariesAndFunctions(args)); + messenger.onNotification(generateOpenAPI, (args: GenerateOpenAPIRequest) => rpcManger.generateOpenAPI(args)); + messenger.onNotification(generateCode, (args: GenerateCodeRequest) => rpcManger.generateCode(args)); + messenger.onNotification(repairGeneratedCode, (args: RepairParams) => rpcManger.repairGeneratedCode(args)); + messenger.onNotification(generateTestPlan, (args: TestPlanGenerationRequest) => rpcManger.generateTestPlan(args)); + messenger.onNotification(generateFunctionTests, (args: TestGeneratorIntermediaryState) => rpcManger.generateFunctionTests(args)); + messenger.onNotification(generateHealthcareCode, (args: GenerateCodeRequest) => rpcManger.generateHealthcareCode(args)); + messenger.onNotification(abortAIGeneration, () => rpcManger.abortAIGeneration()); } 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 e300d2c9255..22e657304e9 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 @@ -34,10 +34,12 @@ import { ExpandedDMModel, FetchDataRequest, FetchDataResponse, + GenerateCodeRequest, GenerateMappingFromRecordResponse, GenerateMappingsFromRecordRequest, GenerateMappingsRequest, GenerateMappingsResponse, + GenerateOpenAPIRequest, GenerateTypesFromRecordRequest, GenerateTypesFromRecordResponse, GetFromFileRequest, @@ -45,14 +47,19 @@ import { InlineAllDataMapperSourceRequest, InlineDataMapperModelResponse, LLMDiagnostics, + LoginMethod, MappingElement, MetadataWithAttachments, NotifyAIMappingsRequest, + OperationType, PostProcessRequest, PostProcessResponse, ProjectDiagnostics, ProjectModule, ProjectSource, + RelevantLibrariesAndFunctionsRequest, + RelevantLibrariesAndFunctionsResponse, + RepairParams, RequirementSpecification, SourceFile, SubmitFeedbackRequest, @@ -61,6 +68,8 @@ import { TestGenerationMentions, TestGenerationRequest, TestGenerationResponse, + TestGeneratorIntermediaryState, + TestPlanGenerationRequest, TextEdit } from "@wso2/ballerina-core"; import { STKindChecker, STNode } from "@wso2/syntax-tree"; @@ -73,15 +82,24 @@ import { Uri, commands, window, workspace } from 'vscode'; import { isNumber } from "lodash"; import { URI } from "vscode-uri"; +import { fetchWithAuth } from "../../../src/features/ai/service/connection"; +import { generateOpenAPISpec } from "../../../src/features/ai/service/openapi/openapi"; import { AIStateMachine } from "../../../src/views/ai-panel/aiMachine"; import { extension } from "../../BalExtensionContext"; import { NOT_SUPPORTED } from "../../core"; import { generateDataMapping, generateTypeCreation } from "../../features/ai/dataMapping"; +import { generateCode, triggerGeneratedCodeRepair } from "../../features/ai/service/code/code"; +import { generateHealthcareCode } from "../../features/ai/service/healthcare/healthcare"; +import { selectRequiredFunctions } from "../../features/ai/service/libs/funcs"; +import { GenerationType, getSelectedLibraries } from "../../features/ai/service/libs/libs"; +import { Library } from "../../features/ai/service/libs/libs_types"; +import { generateFunctionTests } from "../../features/ai/service/test/function_tests"; +import { generateTestPlan } from "../../features/ai/service/test/test_plan"; import { generateTest, getDiagnostics, getResourceAccessorDef, getResourceAccessorNames, getServiceDeclaration, getServiceDeclarationNames } from "../../features/ai/testGenerator"; -import { BACKEND_URL, closeAllBallerinaFiles } from "../../features/ai/utils"; +import { OLD_BACKEND_URL, closeAllBallerinaFiles } from "../../features/ai/utils"; import { getLLMDiagnosticArrayAsString, handleChatSummaryFailure } from "../../features/natural-programming/utils"; import { StateMachine, updateView } from "../../stateMachine"; -import { getAccessToken, getRefreshedAccessToken, loginGithubCopilot } from "../../utils/ai/auth"; +import { getAccessToken, getLoginMethod, getRefreshedAccessToken, loginGithubCopilot } from "../../utils/ai/auth"; import { modifyFileContent, writeBallerinaFileDidOpen } from "../../utils/modification"; import { updateSourceCode } from "../../utils/source-utils"; import { PARSING_ERROR, UNKNOWN_ERROR } from "../../views/ai-panel/errorCodes"; @@ -95,19 +113,17 @@ import { } from "./constants"; import { processInlineMappings } from "./inline-utils"; import { attemptRepairProject, checkProjectDiagnostics } from "./repair-utils"; -import { cleanDiagnosticMessages, isErrorCode, requirementsSpecification, searchDocumentation } from "./utils"; +import { AIPanelAbortController, cleanDiagnosticMessages, handleStop, isErrorCode, requirementsSpecification, searchDocumentation } from "./utils"; import { fetchData } from "./utils/fetch-data-utils"; export class AiPanelRpcManager implements AIPanelAPI { - private testGenAbortController: AbortController | null = null; - // ================================== // General Functions // ================================== async getBackendUrl(): Promise { return new Promise(async (resolve) => { - resolve(BACKEND_URL); + resolve(OLD_BACKEND_URL); }); } @@ -133,10 +149,17 @@ export class AiPanelRpcManager implements AIPanelAPI { }); } + async getLoginMethod(): Promise { + return new Promise(async (resolve) => { + const loginMethod = await getLoginMethod(); + resolve(loginMethod); + }); + } + async getAccessToken(): Promise { return new Promise(async (resolve, reject) => { try { - const accessToken = getAccessToken(); + const accessToken = await getAccessToken(); if (!accessToken) { reject(new Error("Access Token is undefined")); return; @@ -197,7 +220,7 @@ export class AiPanelRpcManager implements AIPanelAPI { fs.mkdirSync(directory, { recursive: true }); } - writeBallerinaFileDidOpen(balFilePath, req.content); + await writeBallerinaFileDidOpen(balFilePath, req.content); updateView(); const datamapperMetadata = StateMachine.context().dataMapperMetadata; await refreshDataMapper(balFilePath, datamapperMetadata.codeData, datamapperMetadata.name); @@ -346,42 +369,12 @@ export class AiPanelRpcManager implements AIPanelAPI { return true; } - async getProjectSource(requestType: string): Promise { - // Fetch the Ballerina project source - const project: BallerinaProject = await getCurrentProjectSource(requestType); - - // Initialize the ProjectSource object - const projectSource: ProjectSource = { - sourceFiles: [], - projectModules: [], - projectName: project.projectName, - }; - - // Iterate through root-level sources - for (const [filePath, content] of Object.entries(project.sources)) { - projectSource.sourceFiles.push({ filePath, content }); - } - - // Iterate through module sources - if (project.modules) { - for (const module of project.modules) { - const projectModule: ProjectModule = { - moduleName: module.moduleName, - sourceFiles: [], - isGenerated: module.isGenerated - }; - for (const [fileName, content] of Object.entries(module.sources)) { - // const filePath = `modules/${module.moduleName}/${fileName}`; - // projectSource.sourceFiles.push({ filePath, content }); - projectModule.sourceFiles.push({ filePath: fileName, content }); - } - projectSource.projectModules.push(projectModule); - } - } - - return projectSource; + async stopAIMappings(): Promise { + handleStop(); + return { userAborted: true }; } + async getShadowDiagnostics(project: ProjectSource): Promise { const environment = await setupProjectEnvironment(project); if (!environment) { @@ -434,11 +427,7 @@ export class AiPanelRpcManager implements AIPanelAPI { try { const projectRoot = await getBallerinaProjectRoot(); - if (this.testGenAbortController) { - this.testGenAbortController.abort(); - } - this.testGenAbortController = new AbortController(); - const generatedTests = await generateTest(projectRoot, params, this.testGenAbortController); + const generatedTests = await generateTest(projectRoot, params, AIPanelAbortController.getInstance()); resolve(generatedTests); } catch (error) { reject(error); @@ -511,10 +500,7 @@ export class AiPanelRpcManager implements AIPanelAPI { } async abortTestGeneration(): Promise { - if (this.testGenAbortController) { - this.testGenAbortController.abort(); - this.testGenAbortController = null; - } + AIPanelAbortController.getInstance().abort(); } async getMappingsFromRecord(params: GenerateMappingsFromRecordRequest): Promise { @@ -528,27 +514,7 @@ export class AiPanelRpcManager implements AIPanelAPI { } async 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: [] } }; - } - - 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, - diagnostics: { - diagnostics: filteredDiags - } - }; + return await postProcess(req); } async applyDoOnFailBlocks(): Promise { @@ -776,14 +742,14 @@ export class AiPanelRpcManager implements AIPanelAPI { diagnostics: cleanDiagnosticMessages(content.diagnostics) }; - const response = await fetchData(`${BACKEND_URL}/feedback`, { + const response = await fetchWithAuth(`${OLD_BACKEND_URL}/feedback`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); - + if (response.ok) { resolve(true); } else { @@ -797,6 +763,42 @@ export class AiPanelRpcManager implements AIPanelAPI { }); } + async getRelevantLibrariesAndFunctions(params: RelevantLibrariesAndFunctionsRequest): Promise { + const selectedLibs: string[] = await getSelectedLibraries(params.query, GenerationType.CODE_GENERATION); + const relevantTrimmedFuncs: Library[] = await selectRequiredFunctions(params.query, selectedLibs, GenerationType.CODE_GENERATION); + return { + libraries: relevantTrimmedFuncs + }; + } + + async generateOpenAPI(params: GenerateOpenAPIRequest): Promise { + await generateOpenAPISpec(params); + } + + async generateCode(params: GenerateCodeRequest): Promise { + await generateCode(params); + } + + async repairGeneratedCode(params: RepairParams): Promise { + await triggerGeneratedCodeRepair(params); + } + + async generateTestPlan(params: TestPlanGenerationRequest): Promise { + await generateTestPlan(params); + } + + async generateFunctionTests(params: TestGeneratorIntermediaryState): Promise { + await generateFunctionTests(params); + } + + async generateHealthcareCode(params: GenerateCodeRequest): Promise { + await generateHealthcareCode(params); + } + + async abortAIGeneration(): Promise { + AIPanelAbortController.getInstance().abort(); + } + async openInlineMappingChatWindow(): Promise { try { let filePath = StateMachine.context().documentUri; @@ -993,7 +995,7 @@ enum CodeGenerationType { CODE_GENERATION = "CODE_GENERATION" } -async function getCurrentProjectSource(requestType: string): Promise { +async function getCurrentProjectSource(requestType: OperationType): Promise { const projectRoot = await getBallerinaProjectRoot(); if (!projectRoot) { @@ -1029,7 +1031,7 @@ async function getCurrentProjectSource(requestType: string): Promise { +export async function getBallerinaProjectRoot(): Promise { const workspaceFolders = workspace.workspaceFolders; if (!workspaceFolders) { @@ -1099,3 +1101,64 @@ async function getBallerinaProjectRoot(): Promise { } return null; } + + +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: [] } }; + } + + 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, + 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 + const projectSource: ProjectSource = { + sourceFiles: [], + projectModules: [], + projectName: project.projectName, + }; + + // Iterate through root-level sources + for (const [filePath, content] of Object.entries(project.sources)) { + projectSource.sourceFiles.push({ filePath, content }); + } + + // Iterate through module sources + if (project.modules) { + for (const module of project.modules) { + const projectModule: ProjectModule = { + moduleName: module.moduleName, + sourceFiles: [], + isGenerated: module.isGenerated + }; + for (const [fileName, content] of Object.entries(module.sources)) { + // const filePath = `modules/${module.moduleName}/${fileName}`; + // projectSource.sourceFiles.push({ filePath, content }); + projectModule.sourceFiles.push({ filePath: fileName, content }); + } + projectSource.projectModules.push(projectModule); + } + } + + return projectSource; +} diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/types.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/types.ts new file mode 100644 index 00000000000..19f67c5883c --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/ai-panel/types.ts @@ -0,0 +1,147 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/** + * 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. + */ + +// Data-mapper related interfaces +export interface SimpleFieldDescriptor { + type: string; + comment: string; +} + +export interface NestedFieldDescriptor { + [key: string]: SimpleFieldDescriptor | NestedFieldDescriptor; +} + +export interface RecordDefinitonObject { + recordFields: NestedFieldDescriptor; + recordFieldsMetadata: { + [fieldName: string]: FieldMetadata; + }; +} + +export interface FieldMetadata { + typeName: string; + type: string; + typeInstance: string; + optional: boolean; + nullable?: boolean; + nullableArray?: boolean; + members?: { + [memberName: string]: FieldMetadata; + }; + fields?: { + [fieldName: string]: FieldMetadata; + }; +} + +export interface ParameterField { + isArrayType: boolean; + parameterName: string; + parameterType: string; + type: string; + members?: { + [memberName: string]: FieldMetadata; + }; + fields?: { + [fieldName: string]: FieldMetadata; + }; +} + +export interface InputMetadata { + [parameterName: string]: ParameterField; +} + +export interface OutputMetadata { + [fieldName: string]: FieldMetadata; +} + +export interface MappingField { + MAPPING_TIP: string; + INPUT_FIELDS: string[]; +} + +export interface MappingFields { + [outputField: string]: MappingField; +} + +export interface MappingFileRecord { + mapping_fields: MappingFields; +} + +export interface ParameterMetadata { + inputs: NestedFieldDescriptor; + output: NestedFieldDescriptor; + inputMetadata: InputMetadata; + outputMetadata: OutputMetadata; + mapping_fields?: MappingFields; + constants?: Record; + configurables?: Record; + variables?: Record; +} + +export interface ParameterDefinitions { + parameterMetadata: ParameterMetadata; + errorStatus: boolean; +} + +export interface VisitorContext { + recordFields: NestedFieldDescriptor; + recordFieldsMetadata: { [key: string]: FieldMetadata }; + memberRecordFields: NestedFieldDescriptor; + memberFieldsMetadata: { [key: string]: FieldMetadata }; + fieldMetadata: FieldMetadata; + isNill: boolean; + isNullable: boolean; + isArray: boolean; + isRecord: boolean; + isSimple: boolean; + isUnion: boolean; + isArrayNullable: boolean; + isRecordNullable: boolean; + memberName: string; +} + +export interface MappingData { + operation: string; + parameters: string[]; + targetType: string; +} + +export interface IntermediateMapping { + [key: string]: MappingData | IntermediateMapping; +} + +export interface MappingsResponse { + mappings: IntermediateMapping; +} + +export interface ProcessParentKeyResult { + itemKey: string; + combinedKey: string; + inputArrayNullable: boolean; + isSet: boolean; + isInputDeeplyNested: boolean; +} + +export interface ProcessCombinedKeyResult { + isinputRecordArrayNullable: boolean; + isinputRecordArrayOptional: boolean; + isinputArrayNullable: boolean; + isinputArrayOptional: boolean; + isinputNullableArray: boolean; +} 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 ea2ee2bf7c0..0b9e82a1d19 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 @@ -17,30 +17,25 @@ */ import { ArrayTypeDesc, FunctionDefinition, ModulePart, QualifiedNameReference, RequiredParam, STKindChecker } from "@wso2/syntax-tree"; -import { ErrorCode, FormField, STModification, SyntaxTree, Attachment, AttachmentStatus, RecordDefinitonObject, ParameterMetadata, ParameterDefinitions, MappingFileRecord, keywords, AIMachineEventType, DiagnosticEntry, InlineDataMapperModelResponse } from "@wso2/ballerina-core"; -import { QuickPickItem, QuickPickOptions, window, workspace } from 'vscode'; -import { UNKNOWN_ERROR } from '../../views/ai-panel/errorCodes'; +import { FormField, STModification, SyntaxTree, Attachment, AttachmentStatus, keywords, DiagnosticEntry, InlineDataMapperModelResponse } from "@wso2/ballerina-core"; +import { window } from 'vscode'; import { StateMachine } from "../../stateMachine"; import { - ENDPOINT_REMOVED, INVALID_PARAMETER_TYPE, INVALID_PARAMETER_TYPE_MULTIPLE_ARRAY, - PARSING_ERROR, - TIMEOUT, - NOT_LOGGED_IN, - USER_ABORTED, - SERVER_ERROR, - TOO_MANY_REQUESTS, INVALID_RECORD_UNION_TYPE } from "../../views/ai-panel/errorCodes"; -// import { StateMachineAI } from "../../views/ai-panel/aiMachine"; import path from "path"; import * as fs from 'fs'; import { BACKEND_URL } from "../../features/ai/utils"; -import { getAccessToken, getRefreshedAccessToken } from "../../../src/utils/ai/auth"; -import { AIStateMachine } from "../../../src/views/ai-panel/aiMachine"; import { AIChatError } from "./utils/errors"; +import { generateAutoMappings } from "../../../src/features/ai/service/datamapper/datamapper"; +import { DatamapperResponse, Payload } from "../../../src/features/ai/service/datamapper/types"; +import { DataMapperRequest, DataMapperResponse, FileData, processDataMapperInput } from "../../../src/features/ai/service/datamapper/context_api"; +import { getAskResponse } from "../../../src/features/ai/service/ask/ask"; +import { ArrayEnumUnionType, ArrayRecordType, MetadataType, NUMERIC_AND_BOOLEAN_TYPES, Operation, PrimitiveType, RecordType, UnionEnumIntersectionType } from "./constants"; +import { FieldMetadata, InputMetadata, IntermediateMapping, MappingData, MappingFileRecord, NestedFieldDescriptor, OutputMetadata, ParameterDefinitions, ParameterField, ParameterMetadata, ProcessCombinedKeyResult, ProcessParentKeyResult, RecordDefinitonObject } from "./types"; const BACKEND_BASE_URL = BACKEND_URL.replace(/\/v2\.0$/, ""); //TODO: Temp workaround as custom domain seem to block file uploads @@ -51,268 +46,286 @@ const ASK_API_URL_V1 = BACKEND_BASE_URL + "/ask-api/v1.0"; export const REQUEST_TIMEOUT = 2000000; let abortController = new AbortController(); -const primitiveTypes = ["string", "int", "float", "decimal", "boolean"]; + +export class AIPanelAbortController { + private static instance: AIPanelAbortController; + private abortController: AbortController; + + private constructor() { + this.abortController = new AbortController(); + } + + public static getInstance(): AIPanelAbortController { + if (!AIPanelAbortController.instance) { + AIPanelAbortController.instance = new AIPanelAbortController(); + } + return AIPanelAbortController.instance; + } + + public get signal(): AbortSignal { + return this.abortController.signal; + } + + public abort(): void { + this.abortController.abort(); + // Create a new AbortController for the next operation + this.abortController = new AbortController(); + } +} export function handleStop() { - abortController.abort(); + AIPanelAbortController.getInstance().abort(); } +const isPrimitiveType = (type: string): boolean => { + return Object.values(PrimitiveType).includes(type as PrimitiveType); +}; + +const isUnionEnumIntersectionType = (type: string): boolean => { + return Object.values(UnionEnumIntersectionType).includes(type as UnionEnumIntersectionType); +}; + +const isRecordType = (type: string): boolean => { + return Object.values(RecordType).includes(type as RecordType); +}; + +const isArrayRecord = (type: string): boolean => { + return Object.values(ArrayRecordType).includes(type as ArrayRecordType); +}; + +const isArrayEnumUnion = (type: string): boolean => { + return Object.values(ArrayEnumUnionType).includes(type as ArrayEnumUnionType); +}; + export async function getParamDefinitions( fnSt: FunctionDefinition, fileUri: string -): Promise { - let inputs: { [key: string]: any } = {}; - let inputMetadata: { [key: string]: any } = {}; - let output: { [key: string]: any } = {}; - let outputMetadata: { [key: string]: any } = {}; - let hasArrayParams = false; - let arrayParams = 0; - let isErrorExists = false; - - for (const parameter of fnSt.functionSignature.parameters) { - if (!STKindChecker.isRequiredParam(parameter)) { - continue; - } - - const param = parameter as RequiredParam; - let paramName = param.paramName.value; - let paramType = ""; +): Promise { + try { + const inputs: NestedFieldDescriptor = {}; + const inputMetadata: InputMetadata = {}; + let output: NestedFieldDescriptor = {}; + let outputMetadata: OutputMetadata = {}; + let hasArrayParams = false; + let arrayParams = 0; + let isErrorExists = false; + + for (const parameter of fnSt.functionSignature.parameters) { + if (!STKindChecker.isRequiredParam(parameter)) { + continue; + } - if (STKindChecker.isArrayTypeDesc(param.typeName)) { - arrayParams++; - } + const param = parameter as RequiredParam; + let paramName = param.paramName.value; + let paramType = ""; - if (param.typeData.typeSymbol.typeKind === "array") { - paramType = param.typeName.source; - } else if (param.typeData.typeSymbol.typeKind === "typeReference") { - paramType = param.typeData.typeSymbol.name; - } else { - paramType = param.typeName.source; - } + if (STKindChecker.isArrayTypeDesc(param.typeName) && STKindChecker.isArrayTypeDesc(fnSt.functionSignature.returnTypeDesc.type)) { + paramName = `${paramName}Item`; + arrayParams++; + } - const position = STKindChecker.isQualifiedNameReference(param.typeName) - ? { - line: (param.typeName as QualifiedNameReference).identifier.position.startLine, - offset: (param.typeName as QualifiedNameReference).identifier.position.startColumn + if (param.typeData.typeSymbol.typeKind === "array") { + paramType = param.typeName.source; + } else if (param.typeData.typeSymbol.typeKind === "typeReference") { + paramType = param.typeData.typeSymbol.name; + } else { + paramType = param.typeName.source; } - : STKindChecker.isArrayTypeDesc(param.typeName) && STKindChecker.isQualifiedNameReference( - (param.typeName as ArrayTypeDesc).memberTypeDesc) + + const position = STKindChecker.isQualifiedNameReference(param.typeName) ? { - line: ((param.typeName as ArrayTypeDesc).memberTypeDesc as QualifiedNameReference).identifier.position.startLine, - offset: ((param.typeName as ArrayTypeDesc).memberTypeDesc as QualifiedNameReference).identifier.position.startColumn + line: (param.typeName as QualifiedNameReference).identifier.position.startLine, + offset: (param.typeName as QualifiedNameReference).identifier.position.startColumn } - : { - line: parameter.position.startLine, - offset: parameter.position.startColumn - }; - const inputTypeDefinition = await StateMachine.langClient().getTypeFromSymbol({ - documentIdentifier: { - uri: fileUri - }, - positions: [position] - }); - - if ('types' in inputTypeDefinition && inputTypeDefinition.types.length > 1) { - return INVALID_PARAMETER_TYPE; - } - - if ('types' in inputTypeDefinition && !inputTypeDefinition.types[0].hasOwnProperty('type')) { - if (STKindChecker.isQualifiedNameReference(parameter.typeName)) { - throw new Error(`"${parameter.typeName["identifier"].value}" does not exist in the package "${parameter.typeName["modulePrefix"].value}". Please verify the record name or ensure that the correct package is imported.`); - } - return INVALID_PARAMETER_TYPE; - } + : STKindChecker.isArrayTypeDesc(param.typeName) && STKindChecker.isQualifiedNameReference( + (param.typeName as ArrayTypeDesc).memberTypeDesc) + ? { + line: ((param.typeName as ArrayTypeDesc).memberTypeDesc as QualifiedNameReference).identifier.position.startLine, + offset: ((param.typeName as ArrayTypeDesc).memberTypeDesc as QualifiedNameReference).identifier.position.startColumn + } + : { + line: parameter.position.startLine, + offset: parameter.position.startColumn + }; + + const inputTypeDefinition = await StateMachine.langClient().getTypeFromSymbol({ + documentIdentifier: { + uri: fileUri + }, + positions: [position] + }); + + if ('types' in inputTypeDefinition && inputTypeDefinition.types.length > 1) { + throw new Error(INVALID_PARAMETER_TYPE.message); + } - if (inputTypeDefinition["types"] && inputTypeDefinition["types"].length > 0) { - const type = inputTypeDefinition["types"][0].type; - if (type.typeName === "union" && type.members) { - const hasFields = type.members.some(member => member.fields && member.fields.length > 0); - if (hasFields) { - return INVALID_RECORD_UNION_TYPE; + if ('types' in inputTypeDefinition && !inputTypeDefinition.types[0].hasOwnProperty('type')) { + if (STKindChecker.isQualifiedNameReference(parameter.typeName)) { + throw new Error(`"${parameter.typeName["identifier"].value}" does not exist in the package "${parameter.typeName["modulePrefix"].value}". Please verify the record name or ensure that the correct package is imported.`); } + throw new Error(INVALID_PARAMETER_TYPE.message); } - } - let inputDefinition: ErrorCode | RecordDefinitonObject; - if ('types' in inputTypeDefinition && inputTypeDefinition.types[0].type.hasOwnProperty('fields')) { - inputDefinition = navigateTypeInfo(inputTypeDefinition.types[0].type.fields, false); - } else { - let singleFieldType = 'types' in inputTypeDefinition && inputTypeDefinition.types[0].type; - inputDefinition = { - "recordFields": { [paramName]: { "type": singleFieldType.typeName, "comment": "" } }, - "recordFieldsMetadata": { - [paramName]: { - "typeName": singleFieldType.typeName, - "type": singleFieldType.typeName, - "typeInstance": paramName, - "nullable": false, - "optional": false + const inputType = inputTypeDefinition["types"]?.[0].type; + if (inputType?.typeName === "union" && inputType.members?.some((m: { fields: string | any[]; }) => m.fields?.length > 0)) { + throw new Error(INVALID_RECORD_UNION_TYPE.message); + } + + let inputDefinition: RecordDefinitonObject; + if (inputType?.fields) { + inputDefinition = navigateTypeInfo(inputType.fields, false); + } else { + inputDefinition = { + "recordFields": { [paramName]: { "type": inputType.typeName, "comment": "" } }, + "recordFieldsMetadata": { + [paramName]: { + "typeName": inputType.typeName, + "type": inputType.typeName, + "typeInstance": paramName, + "nullable": false, + "optional": false + } } - } - }; - } + }; + } - if (isErrorCode(inputDefinition)) { - return inputDefinition as ErrorCode; - } - - inputs = { ...inputs, [paramName]: (inputDefinition as RecordDefinitonObject).recordFields }; - inputMetadata = { - ...inputMetadata, - [paramName]: { - "isArrayType": STKindChecker.isArrayTypeDesc(parameter.typeName), - "parameterName": paramName, - "parameterType": paramType, - "type": STKindChecker.isArrayTypeDesc(parameter.typeName) ? "record[]" : "record", - "fields": (inputDefinition as RecordDefinitonObject).recordFieldsMetadata + inputs[paramName] = inputDefinition.recordFields; + inputMetadata[paramName] = { + isArrayType: STKindChecker.isArrayTypeDesc(parameter.typeName), + parameterName: paramName, + parameterType: paramType, + type: STKindChecker.isArrayTypeDesc(parameter.typeName) ? "record[]" : "record", + fields: inputDefinition.recordFieldsMetadata, + }; + if (STKindChecker.isArrayTypeDesc(parameter.typeName)) { + hasArrayParams = true; } - }; - if (STKindChecker.isArrayTypeDesc(parameter.typeName)) { - hasArrayParams = true; } - } - if (STKindChecker.isUnionTypeDesc(fnSt.functionSignature.returnTypeDesc.type)) { - let unionType = fnSt.functionSignature.returnTypeDesc.type; - let leftType = unionType.leftTypeDesc; - let rightType = unionType.rightTypeDesc; + if (STKindChecker.isUnionTypeDesc(fnSt.functionSignature.returnTypeDesc.type)) { + let unionType = fnSt.functionSignature.returnTypeDesc.type; + let leftType = unionType.leftTypeDesc; + let rightType = unionType.rightTypeDesc; - if (STKindChecker.isArrayTypeDesc(leftType) && STKindChecker.isErrorTypeDesc(rightType)) { - if (!STKindChecker.isSimpleNameReference(leftType.memberTypeDesc)) { - return INVALID_PARAMETER_TYPE; + if (STKindChecker.isArrayTypeDesc(leftType) && STKindChecker.isErrorTypeDesc(rightType)) { + if (!STKindChecker.isSimpleNameReference(leftType.memberTypeDesc)) { + throw new Error(INVALID_PARAMETER_TYPE.message); + } + isErrorExists = true; + } else if (STKindChecker.isArrayTypeDesc(rightType) && STKindChecker.isErrorTypeDesc(leftType)) { + if (!STKindChecker.isSimpleNameReference(rightType.memberTypeDesc)) { + throw new Error(INVALID_PARAMETER_TYPE.message); + } + isErrorExists = true; + } else if ( + (STKindChecker.isSimpleNameReference(leftType) || STKindChecker.isQualifiedNameReference(leftType)) && + STKindChecker.isErrorTypeDesc(rightType)) { + isErrorExists = true; + } else if ( + (STKindChecker.isSimpleNameReference(rightType) || STKindChecker.isQualifiedNameReference(rightType)) && + STKindChecker.isErrorTypeDesc(leftType)) { + isErrorExists = true; + } else { + throw new Error(INVALID_PARAMETER_TYPE.message); + } + } else if (STKindChecker.isArrayTypeDesc(fnSt.functionSignature.returnTypeDesc.type)) { + if (arrayParams > 1) { + throw new Error(INVALID_PARAMETER_TYPE_MULTIPLE_ARRAY.message); + } + if (!hasArrayParams) { + throw new Error(INVALID_PARAMETER_TYPE_MULTIPLE_ARRAY.message); } - isErrorExists = true; - } else if (STKindChecker.isArrayTypeDesc(rightType) && STKindChecker.isErrorTypeDesc(leftType)) { - if (!STKindChecker.isSimpleNameReference(rightType.memberTypeDesc)) { - return INVALID_PARAMETER_TYPE; + if (!(STKindChecker.isSimpleNameReference(fnSt.functionSignature.returnTypeDesc.type.memberTypeDesc) || + STKindChecker.isQualifiedNameReference(fnSt.functionSignature.returnTypeDesc.type.memberTypeDesc))) { + throw new Error(INVALID_PARAMETER_TYPE.message); } - isErrorExists = true; - } else if ( - (STKindChecker.isSimpleNameReference(leftType) || STKindChecker.isQualifiedNameReference(leftType)) && - STKindChecker.isErrorTypeDesc(rightType)) { - isErrorExists = true; - } else if ( - (STKindChecker.isSimpleNameReference(rightType) || STKindChecker.isQualifiedNameReference(rightType)) && - STKindChecker.isErrorTypeDesc(leftType)) { - isErrorExists = true; } else { - return INVALID_PARAMETER_TYPE; - } - } else if (STKindChecker.isArrayTypeDesc(fnSt.functionSignature.returnTypeDesc.type)) { - if (arrayParams > 1) { - return INVALID_PARAMETER_TYPE_MULTIPLE_ARRAY; - } - if (!hasArrayParams) { - return INVALID_PARAMETER_TYPE_MULTIPLE_ARRAY; - } - if (!(STKindChecker.isSimpleNameReference(fnSt.functionSignature.returnTypeDesc.type.memberTypeDesc) || - STKindChecker.isQualifiedNameReference(fnSt.functionSignature.returnTypeDesc.type.memberTypeDesc))) { - return INVALID_PARAMETER_TYPE; - } - } else { - if (!STKindChecker.isSimpleNameReference(fnSt.functionSignature.returnTypeDesc.type) && - !STKindChecker.isQualifiedNameReference(fnSt.functionSignature.returnTypeDesc.type)) { - return INVALID_PARAMETER_TYPE; + if (!STKindChecker.isSimpleNameReference(fnSt.functionSignature.returnTypeDesc.type) && + !STKindChecker.isQualifiedNameReference(fnSt.functionSignature.returnTypeDesc.type)) { + throw new Error(INVALID_PARAMETER_TYPE.message); + } } - } - let returnType = fnSt.functionSignature.returnTypeDesc.type; + let returnType = fnSt.functionSignature.returnTypeDesc.type; - const returnTypePosition = STKindChecker.isUnionTypeDesc(returnType) - ? { - line: STKindChecker.isErrorTypeDesc(returnType.leftTypeDesc) - ? returnType.rightTypeDesc.position.startLine - : returnType.leftTypeDesc.position.startLine, - offset: STKindChecker.isErrorTypeDesc(returnType.leftTypeDesc) - ? returnType.rightTypeDesc.position.startColumn - : returnType.leftTypeDesc.position.startColumn - } - : STKindChecker.isArrayTypeDesc(returnType) && STKindChecker.isQualifiedNameReference(returnType.memberTypeDesc) + const returnTypePosition = STKindChecker.isUnionTypeDesc(returnType) ? { - line: returnType.memberTypeDesc.identifier.position.startLine, - offset: returnType.memberTypeDesc.identifier.position.startColumn + line: STKindChecker.isErrorTypeDesc(returnType.leftTypeDesc) + ? returnType.rightTypeDesc.position.startLine + : returnType.leftTypeDesc.position.startLine, + offset: STKindChecker.isErrorTypeDesc(returnType.leftTypeDesc) + ? returnType.rightTypeDesc.position.startColumn + : returnType.leftTypeDesc.position.startColumn } - : STKindChecker.isQualifiedNameReference(returnType) + : STKindChecker.isArrayTypeDesc(returnType) && STKindChecker.isQualifiedNameReference(returnType.memberTypeDesc) ? { - line: returnType.identifier.position.startLine, - offset: returnType.identifier.position.startColumn + line: returnType.memberTypeDesc.identifier.position.startLine, + offset: returnType.memberTypeDesc.identifier.position.startColumn } - : { - line: returnType.position.startLine, - offset: returnType.position.startColumn - }; - - const outputTypeDefinition = await StateMachine.langClient().getTypeFromSymbol({ - documentIdentifier: { - uri: fileUri - }, - positions: [returnTypePosition] - }); + : STKindChecker.isQualifiedNameReference(returnType) + ? { + line: returnType.identifier.position.startLine, + offset: returnType.identifier.position.startColumn + } + : { + line: returnType.position.startLine, + offset: returnType.position.startColumn + }; - if ('types' in outputTypeDefinition && !outputTypeDefinition.types[0].hasOwnProperty('type')) { - if (STKindChecker.isQualifiedNameReference(returnType)) { - throw new Error(`"${returnType["identifier"].value}" does not exist in the package "${returnType["modulePrefix"].value}". Please verify the record name or ensure that the correct package is imported.`); - } - return INVALID_PARAMETER_TYPE; - } + const outputTypeDefinition = await StateMachine.langClient().getTypeFromSymbol({ + documentIdentifier: { + uri: fileUri + }, + positions: [returnTypePosition] + }); - if (outputTypeDefinition["types"] && outputTypeDefinition["types"].length > 0) { - const type = outputTypeDefinition["types"][0].type; - if (type.typeName === "union" && type.members) { - const hasFields = type.members.some(member => member.fields); - if (hasFields) { - return INVALID_RECORD_UNION_TYPE; + if ('types' in outputTypeDefinition && !outputTypeDefinition.types[0].hasOwnProperty('type')) { + if (STKindChecker.isQualifiedNameReference(returnType)) { + throw new Error(`"${returnType["identifier"].value}" does not exist in the package "${returnType["modulePrefix"].value}". Please verify the record name or ensure that the correct package is imported.`); } + throw new Error(INVALID_PARAMETER_TYPE.message); } - } - const outputDefinition = navigateTypeInfo('types' in outputTypeDefinition && outputTypeDefinition.types[0].type.fields, false); - - if (isErrorCode(outputDefinition)) { - return outputDefinition as ErrorCode; - } + const outputType = outputTypeDefinition["types"]?.[0].type; + if (outputType?.typeName === "union" && outputType.members?.some((m) => m.fields)) { + throw new Error(INVALID_RECORD_UNION_TYPE.message); + } - output = { ...(outputDefinition as RecordDefinitonObject).recordFields }; - outputMetadata = { ...(outputDefinition as RecordDefinitonObject).recordFieldsMetadata }; + const outputDefinition = navigateTypeInfo('types' in outputTypeDefinition && outputTypeDefinition.types[0].type.fields, false); + output = { ...outputDefinition.recordFields }; + outputMetadata = { ...outputDefinition.recordFieldsMetadata }; - const response = { - inputs, - output, - inputMetadata, - outputMetadata - }; + const response = { + inputs, + output, + inputMetadata, + outputMetadata + }; - return { - parameterMetadata: response, - errorStatus: isErrorExists - }; + return { + parameterMetadata: response, + errorStatus: isErrorExists + }; + } catch (error) { + throw error; + } } export async function processMappings( fnSt: FunctionDefinition, fileUri: string, file?: Attachment -): Promise { +): Promise { let result = await getParamDefinitions(fnSt, fileUri); - if (isErrorCode(result)) { - return result as ErrorCode; - } - let parameterDefinitions = (result as ParameterDefinitions).parameterMetadata; - const isErrorExists = (result as ParameterDefinitions).errorStatus; + let parameterDefinitions = result.parameterMetadata; + const isErrorExists = result.errorStatus; if (file) { let mappedResult = await mappingFileParameterDefinitions(file, parameterDefinitions); - if (isErrorCode(mappedResult)) { - return mappedResult as ErrorCode; - } - parameterDefinitions = mappedResult as ParameterMetadata; + parameterDefinitions = mappedResult as ParameterMetadata; } const codeObject = await getDatamapperCode(parameterDefinitions); - if (isErrorCode(codeObject) || Object.keys(codeObject).length === 0) { - return codeObject as ErrorCode; - } - const { recordString, isCheckError } = await constructRecord(codeObject); let codeString: string; const parameter = fnSt.functionSignature.parameters[0] as RequiredParam; @@ -359,59 +372,87 @@ export async function processMappings( return stModifyResponse as SyntaxTree; } +function isMappingData(obj: MappingData | IntermediateMapping): obj is MappingData { + return ( + typeof obj === "object" && + obj !== null && + typeof obj.operation === "string" && + Array.isArray(obj.parameters) && + typeof obj.targetType === "string" + ); +} -export async function generateBallerinaCode(response: object, parameterDefinitions: ParameterMetadata | ErrorCode, nestedKey: string = "", nestedKeyArray: string[]): Promise { - let recordFields: { [key: string]: any } = {}; - const arrayRecords = [ - "record[]", "record[]|()", "(readonly&record)[]", "(readonly&record)[]|()", - "(record|())[]", "(record|())[]|()", "(readonly&record|())[]", "(readonly&record|())[]|()", - ]; - const arrayEnumUnion = ["enum[]", "union[]", "intersection[]", "enum[]|()", "union[]|()", "intersection[]|()"]; - const recordTypes = [ - "record", "record|()", "readonly&record", "readonly&record|()", - "record[]", "record[]|()", "(readonly&record)[]", "(readonly&record)[]|()", - "(record|())[]", "(record|())[]|()", "(readonly&record|())[]", "(readonly&record|())[]|()", - ]; - const unionEnumIntersectionTypes = [ - "enum", "union", "intersection", "enum[]", - "enum[]|()", "union[]", "union[]|()", "intersection[]", "intersection[]|()"]; - - if (response.hasOwnProperty("code") && response.hasOwnProperty("message")) { - return response as ErrorCode; +export async function generateBallerinaCode( + response: IntermediateMapping, + parameterDefinitions: ParameterMetadata, + nestedKey: string = "", + nestedKeyArray: string[] +): Promise> { + let recordFields: Record = {}; + if (isMappingData(response)) { + return await processMappingData( + response, + parameterDefinitions, + nestedKey, + nestedKeyArray + ); } - if (response.hasOwnProperty("operation") && response.hasOwnProperty("parameters") && response.hasOwnProperty("targetType")) { - let parameters: string[] = response["parameters"]; - let paths = parameters[0].split("."); + const objectKeys = Object.keys(response); + for (const key of objectKeys) { + const subRecord = response[key]; + if (isMappingData(subRecord)) { + const nestedResponseRecord = await processMappingData( + subRecord, + parameterDefinitions, + key, + nestedKeyArray + ); + Object.assign(recordFields, nestedResponseRecord); + } else { + nestedKeyArray.push(key); + const responseRecord = await generateBallerinaCode( + subRecord as IntermediateMapping, + parameterDefinitions, + key, + nestedKeyArray + ); + const recordFieldDetails = await handleRecordArrays( + key, + nestedKey, + responseRecord, + parameterDefinitions, + nestedKeyArray + ); + nestedKeyArray.pop(); + Object.assign(recordFields, recordFieldDetails); + } + } + return recordFields; +} - let path = await getMappingString(response, parameterDefinitions, nestedKey, recordTypes, unionEnumIntersectionTypes, arrayRecords, arrayEnumUnion, nestedKeyArray); +async function processMappingData( + mappingData: MappingData, + parameterDefinitions: ParameterMetadata, + nestedKey: string, + nestedKeyArray: string[] +): Promise> { + const parameters = mappingData.parameters; + const paths = parameters[0].split("."); - if (isErrorCode(path) || path === "") { - return {}; - } + const path = await getMappingString( + mappingData, + parameterDefinitions, + nestedKey, + nestedKeyArray + ); - let recordFieldName: string = paths.length === 1 ? nestedKey : (nestedKey || paths[1]); - return { [recordFieldName]: path }; - } else { - let objectKeys = Object.keys(response); - for (let index = 0; index < objectKeys.length; index++) { - let key = objectKeys[index]; - let subRecord = response[key]; - - if (!subRecord.hasOwnProperty("operation") && !subRecord.hasOwnProperty("parameters") && !subRecord.hasOwnProperty("targetType")) { - nestedKeyArray.push(key); - let responseRecord = await generateBallerinaCode(subRecord, parameterDefinitions, key, nestedKeyArray); - let recordFieldDetails = await handleRecordArrays(key, nestedKey, responseRecord, parameterDefinitions, arrayRecords, arrayEnumUnion, nestedKeyArray); - nestedKeyArray.pop(); - recordFields = { ...recordFields, ...recordFieldDetails }; - } else { - let nestedResponseRecord = await generateBallerinaCode(subRecord, parameterDefinitions, key, nestedKeyArray); - recordFields = { ...recordFields, ...nestedResponseRecord }; - } - } - - return { ...recordFields }; + if (typeof path !== "string" || path === "") { + return {}; } + + const recordFieldName = paths.length === 1 ? nestedKey : (nestedKey || paths[1]); + return { [recordFieldName]: path }; } // Get union types from the combination of union types @@ -441,15 +482,15 @@ function generateCombinations(arr: string[], size: number, start: number, curren // Function to check if a given type is a valid union type (order-independent) function isUnionType(type: string): boolean { const sortedType = type.split("|").sort().join("|"); // Sort input type for consistency - const validUnionTypes = getUnionTypes(primitiveTypes); // Get valid union types + const validUnionTypes = getUnionTypes(Object.values(PrimitiveType)); // Get valid union types return validUnionTypes.includes(sortedType); // Check against Set } -async function getMappingString(mapping: object, parameterDefinitions: ParameterMetadata | ErrorCode, nestedKey:string, recordTypes: string[], unionEnumIntersectionTypes: string[], arrayRecords: string[], arrayEnumUnion: string[], nestedKeyArray: string[]): Promise { - let operation: string = mapping["operation"]; - let targetType: string = mapping["targetType"]; - let parameters: string[] = mapping["parameters"]; - +async function getMappingString(mapping: MappingData, parameterDefinitions: ParameterMetadata, nestedKey: string, nestedKeyArray: string[]): Promise { + let operation: string = mapping.operation; + let targetType: string = mapping.targetType; + let parameters: string[] = mapping.parameters; + let path: string = ""; let modifiedPaths: string[] = []; let inputTypeName: string = ""; @@ -459,8 +500,8 @@ async function getMappingString(mapping: object, parameterDefinitions: Parameter let outputType: string = ""; let baseOutputType: string = ""; let baseInputType: string = ""; - let modifiedInput: object; - let outputObject: object; + let modifiedInput: FieldMetadata; + let outputObject: FieldMetadata; let isInputNullableArray: boolean; let isOutputNullableArray: boolean; @@ -469,65 +510,59 @@ async function getMappingString(mapping: object, parameterDefinitions: Parameter // Retrieve inputType if (paths.length > 2) { - modifiedInput = await getNestedType(paths.slice(1), parameterDefinitions["inputMetadata"][recordObjectName]); + modifiedInput = await getNestedType(paths.slice(1), parameterDefinitions.inputMetadata[recordObjectName]); } else if (paths.length === 2) { - modifiedInput = parameterDefinitions["inputMetadata"][recordObjectName]["fields"][paths[1]]; + modifiedInput = parameterDefinitions.inputMetadata[recordObjectName]["fields"][paths[1]]; } else { - modifiedInput = parameterDefinitions["configurables"][recordObjectName] || - parameterDefinitions["constants"][recordObjectName] || - parameterDefinitions["variables"][recordObjectName] || parameterDefinitions["inputMetadata"][recordObjectName]["fields"][paths[0]]; + modifiedInput = parameterDefinitions.configurables[recordObjectName] || + parameterDefinitions.constants[recordObjectName] || + parameterDefinitions.variables[recordObjectName] || parameterDefinitions.inputMetadata[recordObjectName].fields[paths[0]]; } // Resolve output metadata if (nestedKeyArray.length > 0) { - outputObject = await resolveMetadata(parameterDefinitions, nestedKeyArray, nestedKey, "outputMetadata"); - if (!outputObject) { throw new Error(`Metadata not found for ${nestedKey}.`); } - } else if (parameterDefinitions["outputMetadata"].hasOwnProperty("fields") || !parameterDefinitions["outputMetadata"][nestedKey]) { + outputObject = await getMetadata(parameterDefinitions, nestedKeyArray, nestedKey, MetadataType.OUTPUT_METADATA); + } else if (parameterDefinitions.outputMetadata.hasOwnProperty("fields") || !parameterDefinitions.outputMetadata[nestedKey]) { throw new Error(`Invalid or missing metadata for nestedKey: ${nestedKey}.`); } else { - outputObject = parameterDefinitions["outputMetadata"][nestedKey]; + outputObject = parameterDefinitions.outputMetadata[nestedKey]; } - baseTargetType= targetType.replace(/\|\(\)$/, ""); + baseTargetType = targetType.replace(/\|\(\)$/, ""); - inputTypeName = modifiedInput["typeName"]; + inputTypeName = modifiedInput.typeName; baseType = inputTypeName.replace(/\|\(\)$/, ""); - inputType = modifiedInput["type"]; + inputType = modifiedInput.type; baseInputType = inputType.replace(/\|\(\)$/, ""); - outputType = outputObject["type"]; + outputType = outputObject.type; baseOutputType = outputType.replace(/\|\(\)$/, ""); - if (operation === "DIRECT") { + if (operation === Operation.DIRECT) { if (parameters.length > 1) { return ""; } // Helper function to check if type contains [] const hasArrayNotation = (type: string) => type.includes("[]"); - if (recordTypes.includes(baseType)) { + if (isRecordType(baseType)) { // Both baseType and baseTargetType either contain "[]" or do not if (!(hasArrayNotation(baseType) === hasArrayNotation(baseTargetType)) && !(baseTargetType === "int")) { - return ""; - } - } else if (unionEnumIntersectionTypes.includes(baseOutputType)) { + return ""; + } + } else if (isUnionEnumIntersectionType(baseOutputType)) { // Both baseInputType and baseOutputType either contain "[]" or do not if (!(hasArrayNotation(baseInputType) === hasArrayNotation(baseOutputType))) { return ""; - } + } } modifiedPaths = await accessMetadata( - paths, - parameterDefinitions, - outputObject, - baseType, + paths, + parameterDefinitions, + outputObject, + baseType, baseTargetType, - nestedKey, - operation, - unionEnumIntersectionTypes, - recordTypes, - arrayRecords, - arrayEnumUnion + operation ); for (let index = 0; index < modifiedPaths.length; index++) { if (index > 0 && modifiedPaths[index] === modifiedPaths[index - 1]) { @@ -539,24 +574,24 @@ async function getMappingString(mapping: object, parameterDefinitions: Parameter path = `${path}${modifiedPaths[index]}`; } // Add split operation if inputType is "string" and targetType is "string[]" - if (baseType === "string" && baseTargetType === "string[]") { + if (baseType === PrimitiveType.STRING && baseTargetType === "string[]") { return `re \`,\`.split(${path})`; } // Add length operation if inputType is "record[]" and targetType is "int" - if (arrayRecords.includes(baseType) && baseTargetType === "int") { + if (isArrayRecord(baseType) && baseTargetType === PrimitiveType.INT) { return `(${path}).length()`; } // Type conversion logic - const stringConversions: { [key: string]: string } = { + const stringConversions: Record = { int: "check int:fromString", float: "check float:fromString", decimal: "check decimal:fromString", boolean: "check boolean:fromString" }; - const numericConversions: { [key: string]: { [key: string]: string } } = { + const numericConversions: { [key: string]: Record } = { float: { int: `check (${path}).ensureType()`, decimal: `check (${path}).ensureType()` @@ -571,30 +606,32 @@ async function getMappingString(mapping: object, parameterDefinitions: Parameter } }; - function convertUnionTypes(inputType: string, targetType: string, variablePath: string) { - const inputTypes = inputType.split("|").filter(type => primitiveTypes.includes(type)); - - if (targetType === "string") { + function convertUnionTypes(inputType: string, targetType: string, variablePath: string): string { + const inputTypes = inputType.split("|").filter(isPrimitiveType); + const isStringInput = inputTypes.includes(PrimitiveType.STRING); + const isNumericOrBooleanTarget = NUMERIC_AND_BOOLEAN_TYPES.includes(targetType as PrimitiveType); + + if (targetType === PrimitiveType.STRING) { return `(${variablePath}).toString()`; } - - if (inputTypes.includes("string") && ["int", "float", "decimal", "boolean"].includes(targetType)) { + + if (isStringInput && isNumericOrBooleanTarget) { return `(${variablePath}) is string ? check ${targetType}:fromString((${variablePath}).toString()) : check (${variablePath}).ensureType()`; } - - if (["int", "float", "decimal", "boolean"].includes(targetType)) { + + if (isNumericOrBooleanTarget) { return `check (${variablePath}).ensureType()`; } - - return `${variablePath}`; + + return variablePath; } - isOutputNullableArray = outputObject["nullableArray"]; - isInputNullableArray = modifiedInput["nullableArray"]; + isOutputNullableArray = outputObject.nullableArray; + isInputNullableArray = modifiedInput.nullableArray; const isStringInput = ["string", "string|()"].includes(inputTypeName); const isStringTarget = ["string", "string|()"].includes(targetType); - if (primitiveTypes.includes(baseTargetType) && primitiveTypes.includes(baseType)) { + if (isPrimitiveType(baseTargetType) && isPrimitiveType(baseType)) { if (inputTypeName === targetType || inputTypeName === baseTargetType) { path = `${path}`; } else if (isStringInput) { @@ -608,17 +645,17 @@ async function getMappingString(mapping: object, parameterDefinitions: Parameter path = `(${path}).toString()`; } else { const conversion = numericConversions[inputTypeName]?.[targetType]; - if (conversion && baseTargetType !== "boolean") { + if (conversion && baseTargetType !== PrimitiveType.BOOLEAN) { path = conversion; } else if (baseType === baseTargetType) { path = `${path}`; - } else if ((targetType.includes("|()") && inputTypeName !== baseTargetType) || inputTypeName.includes("|()") && baseTargetType !== "boolean") { + } else if ((targetType.includes("|()") && inputTypeName !== baseTargetType) || inputTypeName.includes("|()") && baseTargetType !== PrimitiveType.BOOLEAN) { path = `check (${path}).ensureType()`; } else { return ""; } } - } else if (unionEnumIntersectionTypes.includes(inputType)) { + } else if (isUnionEnumIntersectionType(inputType)) { if (isUnionType(baseType)) { path = convertUnionTypes(baseType, baseTargetType, path); } else { @@ -628,22 +665,17 @@ async function getMappingString(mapping: object, parameterDefinitions: Parameter } } } - } else if (operation === "LENGTH") { + } else if (operation === Operation.LENGTH) { if (parameters.length > 1) { return ""; } modifiedPaths = await accessMetadata( - paths, - parameterDefinitions, - outputObject, - baseType, + paths, + parameterDefinitions, + outputObject, + baseType, baseTargetType, - nestedKey, - operation, - unionEnumIntersectionTypes, - recordTypes, - arrayRecords, - arrayEnumUnion + operation ); for (let index = 0; index < modifiedPaths.length; index++) { if (path !== "") { @@ -652,22 +684,17 @@ async function getMappingString(mapping: object, parameterDefinitions: Parameter path = `${path}${modifiedPaths[index]}`; } path = `(${path}).length()`; - } else if (operation === "SPLIT") { + } else if (operation === Operation.SPLIT) { if (parameters.length > 2) { return ""; } modifiedPaths = await accessMetadata( - paths, - parameterDefinitions, - outputObject, - baseType, + paths, + parameterDefinitions, + outputObject, + baseType, baseTargetType, - nestedKey, - operation, - unionEnumIntersectionTypes, - recordTypes, - arrayRecords, - arrayEnumUnion + operation ); for (let index = 0; index < modifiedPaths.length; index++) { if (path !== "") { @@ -711,19 +738,19 @@ interface VisitorContext { // Implementation of the visitor class TypeInfoVisitorImpl implements TypeInfoVisitor { - constructor() {} + constructor() { } visitField(field: FormField, context: VisitorContext): void { // Reset state for each field this.resetContext(context); - + const typeName = field.typeName; - + if (!typeName) { this.handleTypeInfo(field, context); return; } - + switch (typeName) { case "record": this.visitRecord(field, context); @@ -743,7 +770,7 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { break; } } - + visitMember(member: any, context: VisitorContext): { typeName: string, member: any } { let typeName: string; if (member.typeName === "record" && member.fields) { @@ -761,30 +788,30 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { } return { typeName, member }; } - + visitRecord(field: FormField, context: VisitorContext): void { const temporaryRecord = navigateTypeInfo(field.fields, false); context.isRecord = true; - + const fieldName = getBalRecFieldName(field.name); - context.recordFields[fieldName] = (temporaryRecord as RecordDefinitonObject).recordFields; + context.recordFields[fieldName] = temporaryRecord.recordFields; context.recordFieldsMetadata[fieldName] = { nullable: context.isNill, optional: field.optional, type: "record", typeInstance: fieldName, typeName: field.typeName, - fields: (temporaryRecord as RecordDefinitonObject).recordFieldsMetadata + fields: temporaryRecord.recordFieldsMetadata }; } - + visitUnionOrIntersection(field: FormField, context: VisitorContext): void { let memberTypeNames: string[] = []; let resolvedTypeName: string = ""; - + // Check for record fields in union members and handle appropriately this.processUnionMembers(field.members, context); - + for (const member of field.members) { const result = this.visitMember(member, context); memberTypeNames.push(result.typeName); @@ -799,26 +826,26 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { context.memberFieldsMetadata = {}; return; } - + resolvedTypeName = this.getResolvedTypeName(field.typeName, memberTypeNames); - + this.buildFieldMetadata(field, resolvedTypeName, context); this.setFieldAndMetadata(field, resolvedTypeName, context); } - + visitArray(field: FormField, context: VisitorContext): void { - if (field.memberType.hasOwnProperty("members") && + if (field.memberType.hasOwnProperty("members") && ["union", "intersection", "enum"].includes(field.memberType.typeName)) { - + // Handle array with union/intersection/enum member type this.processUnionMembers(field.memberType.members, context); - + if (field.memberType.members.length === 0) { context.memberRecordFields = {}; context.memberFieldsMetadata = {}; return; } - + this.handleArrayWithCompositeType(field, context); } else if (field.memberType.hasOwnProperty("fields") && field.memberType.typeName === "record") { this.handleArrayWithRecordType(field, context); @@ -826,24 +853,24 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { this.handleSimpleArray(field, context); } } - + visitEnum(field: FormField, context: VisitorContext): void { let memberTypeNames: string[] = []; - + for (const member of field.members) { const result = this.visitMember(member, context); memberTypeNames.push(result.typeName); } - + const resolvedTypeName = memberTypeNames.join("|"); - + this.buildFieldMetadata(field, resolvedTypeName, context); this.setFieldAndMetadata(field, resolvedTypeName, context); } - + visitPrimitive(field: FormField, context: VisitorContext): void { const typeName = field.typeName; - + if (field.hasOwnProperty("name")) { const fieldName = getBalRecFieldName(field.name); context.recordFields[fieldName] = { type: typeName, comment: "" }; @@ -865,7 +892,7 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { }; } } - + private handleTypeInfo(field: FormField, context: VisitorContext): void { const fieldName = getBalRecFieldName(field.name); context.recordFields[fieldName] = { type: field.typeInfo.name, comment: "" }; @@ -877,12 +904,12 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { optional: field.optional }; } - + private handleRecordMember(member: any, context: VisitorContext): string { const temporaryRecord = navigateTypeInfo(member.fields, false); context.isRecord = true; let memberName: string; - + if (context.isUnion && member.hasOwnProperty("name")) { memberName = member.name; const fieldName = getBalRecFieldName(memberName); @@ -893,7 +920,7 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { type: "record", typeInstance: fieldName, typeName: member.typeName, - fields: (temporaryRecord as RecordDefinitonObject).recordFieldsMetadata + fields: (temporaryRecord as RecordDefinitonObject).recordFieldsMetadata }; } else { memberName = "record"; @@ -906,14 +933,14 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { ...((temporaryRecord as RecordDefinitonObject).recordFieldsMetadata) }; } - + return memberName; } - + private handleArrayMember(member: any, context: VisitorContext): { typeName: string, member: any } { context.isArray = true; let memberName: string; - + if (member.memberType.hasOwnProperty("fields") && member.memberType.typeName === "record") { const temporaryRecord = navigateTypeInfo(member.memberType.fields, false); memberName = `${member.memberType.typeName}[]`; @@ -925,12 +952,12 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { ...context.memberFieldsMetadata, ...((temporaryRecord as RecordDefinitonObject).recordFieldsMetadata) }; - } else if (member.memberType.hasOwnProperty("members") && - ["union", "intersection", "enum"].includes(member.memberType.typeName)) { - + } else if (member.memberType.hasOwnProperty("members") && + ["union", "intersection", "enum"].includes(member.memberType.typeName)) { + // Process union members to handle records appropriately this.processUnionMembers(member.memberType.members, context); - + if (member.memberType.members.length === 0) { memberName = ""; member = []; @@ -941,73 +968,73 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { if (member.memberType.hasOwnProperty("name") && !member.memberType.hasOwnProperty("typeName")) { memberName = `${member.memberType.name}[]`; } else { - memberName = "record[]"; + memberName = "record[]"; } } else { memberName = `${member.memberType.typeName}[]`; } - + return { typeName: memberName, member }; } - + private handleArrayWithCompositeTypeMember(member: any, context: VisitorContext): string { let memberTypes: string[] = []; const members = member.memberType.members; - + this.determineIfUnion(members, context); - + for (const innerMember of members) { const result = this.visitMember(innerMember, context); memberTypes.push(result.typeName); } - + context.isSimple = false; - + if (member.memberType.typeName === "intersection") { return `(${memberTypes.join("&")})[]`; } else { return `(${memberTypes.join("|")})[]`; } } - + private handleCompositeMember(member: any, context: VisitorContext): string { let memberTypeNames: string[] = []; - + for (const innerMember of member.members) { const result = this.visitMember(innerMember, context); memberTypeNames.push(result.typeName); } - + if (member.typeName === "intersection") { return `${memberTypeNames.join("&")}`; } else { return `${memberTypeNames.join("|")}`; } } - + private handleNullMember(member: any, context: VisitorContext): string { const memberName = member.typeName; - + if (context.isArray) { context.isArrayNullable = true; - } + } if (context.isRecord) { context.isRecordNullable = true; - } - if (context.isSimple) { + } + if (context.isSimple) { context.isNullable = true; } - + return memberName; } - + private handleSimpleMember(member: any, context: VisitorContext): string { context.isSimple = true; let memberName: string; - + if (member.hasOwnProperty("typeName")) { memberName = member.typeName; - + if (member.hasOwnProperty("name")) { this.addNamedSimpleMember(member, memberName, context); } else { @@ -1016,10 +1043,10 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { } else { memberName = member.name; } - + return memberName; } - + private addNamedSimpleMember(member: any, memberName: string, context: VisitorContext): void { const fieldName = getBalRecFieldName(member.name); context.memberRecordFields = { @@ -1040,7 +1067,7 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { } }; } - + private addUnnamedSimpleMember(memberName: string, member: any, context: VisitorContext): void { // Check if typeName is not one of the BasicTypes types const BasicTypes = ["int", "string", "float", "boolean", "decimal", "readonly"]; @@ -1058,18 +1085,18 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { }; } } - + private handleArrayWithCompositeType(field: FormField, context: VisitorContext): void { let memberTypeNames: string[] = []; - + for (const member of field.memberType.members) { const result = this.visitMember(member, context); memberTypeNames.push(result.typeName); } - + context.isArray = true; let resolvedTypeName: string = ""; - + if (field.memberType.typeName === "intersection") { resolvedTypeName = `${memberTypeNames.join("&")}`; } else { @@ -1077,20 +1104,20 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { } const fieldName = getBalRecFieldName(field.name); - context.recordFields[fieldName] = Object.keys(context.memberRecordFields).length > 0 - ? context.memberRecordFields - : { type: `(${resolvedTypeName})[]`, comment: "" }; - + context.recordFields[fieldName] = Object.keys(context.memberRecordFields).length > 0 + ? context.memberRecordFields + : { type: `(${resolvedTypeName})[]`, comment: "" }; + this.buildArrayFieldMetadata(field, resolvedTypeName, context); } - + private handleArrayWithRecordType(field: FormField, context: VisitorContext): void { const temporaryRecord = navigateTypeInfo(field.memberType.fields, false); const fieldName = getBalRecFieldName(field.name); context.recordFields[fieldName] = (temporaryRecord as RecordDefinitonObject).recordFields; context.isArray = true; context.isRecord = true; - + context.fieldMetadata = { optional: field.optional, typeName: "record[]", @@ -1098,20 +1125,20 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { typeInstance: fieldName, fields: (temporaryRecord as RecordDefinitonObject).recordFieldsMetadata }; - + this.applyNullabilityToFieldMetadata(context); context.recordFieldsMetadata[field.name] = context.fieldMetadata; } - + private handleSimpleArray(field: FormField, context: VisitorContext): void { let typeName: string; - + if (field.memberType.hasOwnProperty("typeInfo")) { typeName = "record[]"; } else { typeName = `${field.memberType.typeName}[]`; } - + if (field.memberType.members && field.memberType.members.length === 0) { context.memberRecordFields = {}; context.memberFieldsMetadata = {}; @@ -1127,10 +1154,10 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { }; } } - + private processUnionMembers(members: any[], context: VisitorContext): void { this.determineIfUnion(members, context); - + if (members.length > 2) { // If at least one member has fields, remove that field for (let i = members.length - 1; i >= 0; i--) { @@ -1149,7 +1176,7 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { } } } - + private determineIfUnion(members: any[], context: VisitorContext): void { if (members.length > 2) { context.isUnion = members.some((member) => member.typeName === "()"); @@ -1159,7 +1186,7 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { context.isUnion = false; } } - + private getResolvedTypeName(typeName: string, memberTypeNames: string[]): string { if (typeName === "intersection") { return `${memberTypeNames.join("&")}`; @@ -1167,7 +1194,7 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { return `${memberTypeNames.join("|")}`; } } - + private buildFieldMetadata(field: FormField, resolvedTypeName: string, context: VisitorContext): void { context.fieldMetadata = { optional: field.optional, @@ -1179,10 +1206,10 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { typeInstance: field.name, ...(Object.keys(context.memberFieldsMetadata).length > 0 && { members: context.memberFieldsMetadata }) }; - + this.applyNullabilityToFieldMetadata(context); } - + private buildArrayFieldMetadata(field: FormField, resolvedTypeName: string, context: VisitorContext): void { context.fieldMetadata = { optional: field.optional, @@ -1191,12 +1218,12 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { typeInstance: field.name, ...(Object.keys(context.memberFieldsMetadata).length > 0 && { members: context.memberFieldsMetadata }) }; - + this.applyNullabilityToFieldMetadata(context); const fieldName = getBalRecFieldName(field.name); context.recordFieldsMetadata[fieldName] = context.fieldMetadata; } - + private applyNullabilityToFieldMetadata(context: VisitorContext): void { // Apply nullableArray property if (context.isArray) { @@ -1206,7 +1233,7 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { context.fieldMetadata.nullableArray = context.isNullable; } } - + // Apply nullable property if (context.isArray) { context.fieldMetadata.nullable = context.isArrayNullable; @@ -1216,15 +1243,15 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { context.fieldMetadata.nullable = context.isNullable; } } - + private setFieldAndMetadata(field: FormField, resolvedTypeName: string, context: VisitorContext): void { const fieldName = getBalRecFieldName(field.name); - context.recordFields[fieldName] = Object.keys(context.memberRecordFields).length > 0 - ? context.memberRecordFields - : { type: resolvedTypeName, comment: "" }; + context.recordFields[fieldName] = Object.keys(context.memberRecordFields).length > 0 + ? context.memberRecordFields + : { type: resolvedTypeName, comment: "" }; context.recordFieldsMetadata[fieldName] = context.fieldMetadata; } - + private resetContext(context: VisitorContext): void { context.memberRecordFields = {}; context.memberFieldsMetadata = {}; @@ -1242,7 +1269,7 @@ class TypeInfoVisitorImpl implements TypeInfoVisitor { export function navigateTypeInfo( typeInfos: FormField[], isNill: boolean -): RecordDefinitonObject | ErrorCode { +): RecordDefinitonObject { const context: VisitorContext = { recordFields: {}, recordFieldsMetadata: {}, @@ -1259,16 +1286,15 @@ export function navigateTypeInfo( isSimple: false, isUnion: false }; - + const visitor = new TypeInfoVisitorImpl(); for (const field of typeInfos) { visitor.visitField(field, context); } - - return { - "recordFields": context.recordFields, - "recordFieldsMetadata": context.recordFieldsMetadata + return { + recordFields: context.recordFields, + recordFieldsMetadata: context.recordFieldsMetadata }; } @@ -1276,49 +1302,21 @@ export function getBalRecFieldName(fieldName: string) { return keywords.includes(fieldName) ? `'${fieldName}` : fieldName; } -export async function getDatamapperCode(parameterDefinitions: ErrorCode | ParameterMetadata): Promise { +export async function getDatamapperCode(parameterDefinitions: ParameterMetadata): Promise> { let nestedKeyArray: string[] = []; try { - const accessToken = await getAccessToken().catch((error) => { - console.error(error); - return NOT_LOGGED_IN; - }); - let response = await sendDatamapperRequest(parameterDefinitions, accessToken); - if (isErrorCode(response)) { - return (response as ErrorCode); - } - - response = (response as Response); - - // Refresh - if (response.status === 401) { - const newAccessToken = await getRefreshedAccessToken(); - if (!newAccessToken) { - AIStateMachine.service().send(AIMachineEventType.LOGOUT); - return; - } - let retryResponse: Response | ErrorCode = await sendDatamapperRequest(parameterDefinitions, newAccessToken); - - if (isErrorCode(retryResponse)) { - return (retryResponse as ErrorCode); - } - - retryResponse = (retryResponse as Response); - let intermediateMapping = await filterResponse(retryResponse); - let finalCode = await generateBallerinaCode(intermediateMapping, parameterDefinitions, "", nestedKeyArray); - return finalCode; - } - let intermediateMapping = await filterResponse(response); - let finalCode = await generateBallerinaCode(intermediateMapping, parameterDefinitions, "", nestedKeyArray); - return finalCode; + let response: DatamapperResponse = await sendDatamapperRequest(parameterDefinitions); + let intermediateMapping = response.mappings; + let finalCode = await generateBallerinaCode(intermediateMapping, parameterDefinitions, "", nestedKeyArray); + return finalCode; } catch (error) { console.error(error); - return TIMEOUT; + throw error; } } export async function constructRecord(codeObject: object): Promise<{ recordString: string; isCheckError: boolean; }> { - let recordString: string = ""; + let recordString: string = ""; let isCheckError: boolean = false; let objectKeys = Object.keys(codeObject); for (let index = 0; index < objectKeys.length; index++) { @@ -1326,7 +1324,7 @@ export async function constructRecord(codeObject: object): Promise<{ recordStrin let mapping = codeObject[key]; if (typeof mapping === "string") { if (mapping.includes("check ")) { - isCheckError = true; + isCheckError = true; } if (recordString !== "") { recordString += ",\n"; @@ -1335,7 +1333,7 @@ export async function constructRecord(codeObject: object): Promise<{ recordStrin } else { let subRecordResult = await constructRecord(mapping); if (subRecordResult.isCheckError) { - isCheckError = true; + isCheckError = true; } if (recordString !== "") { recordString += ",\n"; @@ -1359,230 +1357,94 @@ export function notifyNoGeneratedMappings() { window.showInformationMessage(msg); } -async function sendDatamapperRequest(parameterDefinitions: ParameterMetadata | ErrorCode, accessToken: string | ErrorCode): Promise { - const response = await fetchWithTimeout(BACKEND_URL + "/datamapper", { - method: "POST", - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'User-Agent': 'Ballerina-VSCode-Plugin', - 'Authorization': 'Bearer ' + accessToken - }, - body: JSON.stringify(parameterDefinitions) - }, REQUEST_TIMEOUT); - - return response; -} - -async function sendMappingFileUploadRequest(file: Blob): Promise { - const formData = new FormData(); - formData.append("file", file); - const response = await fetchWithToken(CONTEXT_UPLOAD_URL_V1 + "/file_upload/generate_mapping_instruction", { - method: "POST", - body: formData - }); +async function sendDatamapperRequest(parameterDefinitions: ParameterMetadata): Promise { + const response: DatamapperResponse = await generateAutoMappings(parameterDefinitions as Payload); return response; } export async function searchDocumentation(message: string): Promise { - const response = await fetchWithToken(ASK_API_URL_V1 + "/documentation-assistant", { - method: "POST", - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - "query": `${message}` - }) - }); + const resp = await getAskResponse(message,); + const finalResponse = resp.content.replace(/[\s\S]*?<\/thinking>/g, ''); + const referenceSources = resp.references; + let responseContent: string; + if (referenceSources.length > 0) { + responseContent = `${finalResponse} \nreference sources: \n${referenceSources.join(' \n')}`; + } else { + responseContent = finalResponse; + } - return await filterDocumentation(response as Response); - + return responseContent; } export async function filterDocumentation(resp: Response): Promise { let responseContent: string; if (resp.status == 200 || resp.status == 201) { const data = (await resp.json()) as any; - console.log("data",data.response); + console.log("data", data.response); const finalResponse = await (data.response.content).replace(/[\s\S]*?<\/thinking>/g, ''); const referenceSources = data.response.references; if (referenceSources.length > 0) { responseContent = `${finalResponse} \nreference sources: \n${referenceSources.join(' \n')}`; - }else{ + } else { responseContent = finalResponse; } - return responseContent; } throw new Error(AIChatError.UNKNOWN_CONNECTION_ERROR); } -async function filterMappingResponse(resp: Response): Promise { - if (resp.status == 200 || resp.status == 201) { - const data = (await resp.json()) as any; - return data.file_content; - } - if (resp.status == 404) { - return ENDPOINT_REMOVED; - } - if (resp.status == 400) { - const data = (await resp.json()) as any; - console.log(data); - return PARSING_ERROR; - } if (resp.status == 429) { - return TOO_MANY_REQUESTS; - } - if (resp.status == 500) { - return SERVER_ERROR; - } else { - //TODO: Handle more error codes - return { code: 4, message: `An unknown error occured. ${resp.statusText}.` }; - } -} - -export async function getMappingFromFile(file: Blob): Promise { - try { - let response = await sendMappingFileUploadRequest(file); - if (isErrorCode(response)) { - return response as ErrorCode; - } - response = response as Response; - let mappingContent = JSON.parse((await filterMappingResponse(response)) as string); - if (isErrorCode(mappingContent)) { - return mappingContent as ErrorCode; - } - return mappingContent; - } catch (error) { - console.error(error); - return TIMEOUT; - } -} - -async function sendTypesFileUploadRequest(file: Blob): Promise { - const formData = new FormData(); - formData.append("file", file); - const response = await fetchWithToken(CONTEXT_UPLOAD_URL_V1 + "/file_upload/generate_record", { - method: "POST", - body: formData - }); - return response; -} - -export async function getTypesFromFile(file: Blob): Promise { - try { - let response = await sendTypesFileUploadRequest(file); - if (isErrorCode(response)) { - return response as ErrorCode; - } - response = response as Response; - let typesContent = await filterMappingResponse(response) as string; - return typesContent; - } catch (error) { - console.error(error); - return TIMEOUT; - } +async function attatchmentToFileData(file: Attachment): Promise { + return { + fileName: file.name, + content: file.content + }; } -export async function mappingFileParameterDefinitions(file: Attachment, parameterDefinitions: ErrorCode | ParameterMetadata): Promise { +export async function mappingFileParameterDefinitions(file: Attachment, parameterDefinitions: ParameterMetadata): Promise { if (!file) { return parameterDefinitions; } - - const convertedFile = convertBase64ToBlob(file); - if (!convertedFile) { throw new Error("Invalid file content"); } - - let mappingFile = await getMappingFromFile(convertedFile); - if (isErrorCode(mappingFile)) { return mappingFile as ErrorCode; } - - mappingFile = mappingFile as MappingFileRecord; + const fileData = await attatchmentToFileData(file); + const params: DataMapperRequest = { + file: fileData, + processType: "mapping_instruction" + }; + const resp: DataMapperResponse = await processDataMapperInput(params); + let mappingFile: MappingFileRecord = JSON.parse(resp.fileContent) as MappingFileRecord; return { ...parameterDefinitions, - mapping_fields: mappingFile.mapping_fields, + mapping_fields: mappingFile.mapping_fields }; } -export async function mappingFileInlineDataMapperModel(file: Attachment, inlineDataMapperResponse: ErrorCode | InlineDataMapperModelResponse): Promise { +export async function mappingFileInlineDataMapperModel(file: Attachment, inlineDataMapperResponse: InlineDataMapperModelResponse): Promise { if (!file) { return inlineDataMapperResponse; } - - const convertedFile = convertBase64ToBlob(file); - if (!convertedFile) { throw new Error("Invalid file content"); } - - let mappingFile = await getMappingFromFile(convertedFile); - if (isErrorCode(mappingFile)) { return mappingFile as ErrorCode; } - - mappingFile = mappingFile as MappingFileRecord; + const fileData = await attatchmentToFileData(file); + const params: DataMapperRequest = { + file: fileData, + processType: "mapping_instruction" + }; + const resp: DataMapperResponse = await processDataMapperInput(params); + let mappingFile: MappingFileRecord = JSON.parse(resp.fileContent) as MappingFileRecord; return { - ...(inlineDataMapperResponse as InlineDataMapperModelResponse), + ...inlineDataMapperResponse, mappingsModel: { - ...(inlineDataMapperResponse as InlineDataMapperModelResponse).mappingsModel, - mapping_fields: mappingFile.mapping_fields, + ...inlineDataMapperResponse.mappingsModel, + mapping_fields: mappingFile.mapping_fields } }; } -export async function typesFileParameterDefinitions(file: Attachment): Promise { +export async function typesFileParameterDefinitions(file: Attachment): Promise { if (!file) { throw new Error("File is undefined"); } - const convertedFile = convertBase64ToBlob(file); - if (!convertedFile) { throw new Error("Invalid file content"); } - - let typesFile = await getTypesFromFile(convertedFile); - if (isErrorCode(typesFile)) { return typesFile as ErrorCode; } - - return typesFile; -} - -function convertBase64ToBlob(file: Attachment): Blob | null { - try { - const { content: base64Content, name: fileName } = file; - const binaryString = atob(base64Content); - const len = binaryString.length; - const bytes = new Uint8Array(len); - - for (let i = 0; i < len; i++) { - bytes[i] = binaryString.charCodeAt(i); - } - - const mimeType = determineMimeType(fileName); - return new Blob([bytes], { type: mimeType }); - } catch (error) { - console.error("Error converting Base64 to Blob", error); - return null; - } -} - -function determineMimeType(fileName: string): string { - const extension = fileName.split(".").pop()?.toLowerCase(); - switch (extension) { - case "pdf": return "application/pdf"; - case "txt": return "text/plain"; - case "jpg": - case "jpeg": return "image/jpeg"; - case "png": return "image/png"; - case "docx": return "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; - case "doc": return "application/msword"; - case "heic": - case "heif": return "image/heif"; - default: return "application/octet-stream"; - } -} - -export async function fetchWithTimeout(url, options, timeout = 100000): Promise { - abortController = new AbortController(); - const id = setTimeout(() => abortController.abort(), timeout); - try { - const response = await fetch(url, { ...options, signal: abortController.signal }); - clearTimeout(id); - return response; - } catch (error: any) { - if (error.name === 'AbortError') { - return TIMEOUT; - } else { - console.error(error); - return SERVER_ERROR; - } - } + const fileData = await attatchmentToFileData(file); + const params: DataMapperRequest = { + file: fileData, + processType: "records" + }; + const resp: DataMapperResponse = await processDataMapperInput(params); + return resp.fileContent; } export function isErrorCode(error: any): boolean { @@ -1591,97 +1453,68 @@ export function isErrorCode(error: any): boolean { async function accessMetadata( paths: string[], - parameterDefinitions: ParameterMetadata | ErrorCode, - outputObject: object, + parameterDefinitions: ParameterMetadata, + outputObject: FieldMetadata, baseType: string, baseTargetType: string, - nestedKey: string, - operation: string, - unionEnumIntersectionTypes: string[], - recordTypes: string[], - arrayRecords: string[], - arrayEnumUnion: string[] + operation: string ): Promise { - let newPath: string[] = [...paths]; - let isOutputNullable = false; - let isOutputOptional = false; + let newPath = [...paths]; let isUsingDefault = false; let isUsingArray = false; let defaultValue: string; - let isOutputRecordNullable = false; - let modifiedBaseType: string; - const outputMetadataType = outputObject["typeName"]; - baseTargetType = outputMetadataType.replace(/\|\(\)$/, ""); - isOutputNullable = outputObject["nullable"]; - isOutputOptional = outputObject["optional"]; - isOutputRecordNullable = outputObject["nullableArray"]; + baseTargetType = outputObject.typeName.replace(/\|\(\)$/, ""); - // Process paths for metadata for (let index = 1; index < paths.length; index++) { const pathIndex = paths[index]; - let inputObject = await resolveMetadata(parameterDefinitions, paths, pathIndex, "inputMetadata"); - if (!inputObject) { throw new Error(`Field ${pathIndex} not found in metadata.`); } - - const isInputNullable = inputObject["nullable"]; - const isInputOptional = inputObject["optional"]; - const isInputNullableArray = inputObject["nullableArray"]; - - if (inputObject.hasOwnProperty("members") || inputObject.hasOwnProperty("fields") || operation === "LENGTH") { - const inputMetadataType = inputObject["type"]; - const metadataTypeName = inputObject["typeName"]; - const isInputRecordNullableArray = inputObject["nullableArray"]; - const isInputRecordNullable = inputObject["nullable"]; - const isInputRecordOptional = inputObject["optional"]; - if (!["enum", "enum|()"].includes(inputMetadataType)) { + let inputObject = await getMetadata(parameterDefinitions, paths, pathIndex, MetadataType.INPUT_METADATA); + + if (inputObject.hasOwnProperty("members") || inputObject.hasOwnProperty("fields") || operation === Operation.LENGTH) { + if (!["enum", "enum|()"].includes(inputObject.type)) { isUsingDefault = false; } - - if (arrayRecords.includes(metadataTypeName) || arrayEnumUnion.includes(inputMetadataType)) { - if (isInputRecordNullableArray) { - isUsingArray = true; - } else { - isUsingArray = false; - } - } - if (isUsingArray && recordTypes.includes(metadataTypeName)) { + if (isArrayRecord(inputObject.typeName) || isArrayEnumUnion(inputObject.type)) { + isUsingArray = inputObject.nullableArray; + } + if (isUsingArray && isRecordType(inputObject.typeName)) { newPath[index] = `${paths[index]}?`; } - if (isInputRecordNullable || isInputRecordOptional) { + if (inputObject.nullable || inputObject.optional) { // Handle record types - if (recordTypes.includes(metadataTypeName)) { - if (!metadataTypeName.includes("[]")) { + if (isRecordType(inputObject.typeName)) { + if (!inputObject.typeName.includes("[]")) { if (index !== (paths.length - 1)) { newPath[index] = `${paths[index]}?`; isUsingDefault = true; } } - if (metadataTypeName.includes("[]") && operation === "LENGTH") { - let lastInputObject = await resolveMetadata(parameterDefinitions, paths, paths[paths.length - 1], "inputMetadata"); - let inputDataType = lastInputObject["typeName"].replace(/\|\(\)$/, ""); + if (inputObject.typeName.includes("[]") && operation === Operation.LENGTH) { + let lastInputObject = await getMetadata(parameterDefinitions, paths, paths[paths.length - 1], MetadataType.INPUT_METADATA); + let inputDataType = lastInputObject.typeName.replace(/\|\(\)$/, ""); defaultValue = await getDefaultValue(inputDataType); newPath[paths.length - 1] = `${paths[paths.length - 1]}?:${defaultValue}`; } - if (isInputRecordNullable && isInputRecordOptional) { + if (inputObject.nullable && inputObject.optional) { newPath[index - 1] = `${paths[index - 1]}?`; } - // Handle enum, union, and intersection types - } else if (unionEnumIntersectionTypes.includes(inputMetadataType)) { - if (isInputRecordNullable && isInputRecordOptional) { + // Handle enum, union, and intersection types + } else if (isUnionEnumIntersectionType(inputObject.type)) { + if (inputObject.nullable && inputObject.optional) { newPath[index - 1] = `${paths[index - 1]}?`; - } - if (inputMetadataType.includes("[]") && operation === "LENGTH") { - let lastInputObject = await resolveMetadata(parameterDefinitions, paths, paths[paths.length - 1], "inputMetadata"); - let inputDataType = lastInputObject["type"].replace(/\|\(\)$/, ""); + } + if (inputObject.type.includes("[]") && operation === Operation.LENGTH) { + let lastInputObject = await getMetadata(parameterDefinitions, paths, paths[paths.length - 1], MetadataType.INPUT_METADATA); + let inputDataType = lastInputObject.type.replace(/\|\(\)$/, ""); defaultValue = await getDefaultValue(inputDataType); newPath[paths.length - 1] = `${paths[paths.length - 1]}?:${defaultValue}`; - } else if (!isOutputNullable && !isOutputOptional) { - if (unionEnumIntersectionTypes.includes(inputObject["type"]) && inputObject["members"]) { - if (!isInputRecordNullableArray || isOutputRecordNullable){ - let typeName = inputMetadataType.includes("[]") - ? inputMetadataType.replace(/\|\(\)$/, "") + } else if (!outputObject.nullable && !outputObject.optional) { + if (isUnionEnumIntersectionType(inputObject.type) && inputObject.members) { + if (!inputObject.nullableArray || outputObject.nullableArray) { + let typeName = inputObject.type.includes("[]") + ? inputObject.type.replace(/\|\(\)$/, "") : (inputObject as any).members[Object.keys((inputObject as any).members)[0]].typeName; - + let defaultValue = await getDefaultValue(typeName); newPath[paths.length - 1] = `${paths[paths.length - 1]}?:${defaultValue !== "void" ? defaultValue : JSON.stringify(typeName)}`; } @@ -1690,60 +1523,49 @@ async function accessMetadata( } } } else { - if (isUsingDefault && unionEnumIntersectionTypes.includes(inputObject["type"]) && inputObject["members"]) { - if (!isOutputNullable && !isOutputOptional) { - let typeName = inputMetadataType.includes("[]") - ? inputMetadataType.replace("|()", "") + if (isUsingDefault && isUnionEnumIntersectionType(inputObject.type) && inputObject.members) { + if (!outputObject.nullable && !outputObject.optional) { + let typeName = inputObject.type.includes("[]") + ? inputObject.type.replace("|()", "") : (inputObject as any).members[Object.keys((inputObject as any).members)[0]].typeName; - + let defaultValue = await getDefaultValue(typeName); newPath[paths.length - 1] = `${paths[paths.length - 1]}?:${defaultValue !== "void" ? defaultValue : JSON.stringify(typeName)}`; } } } } else { - if (isInputNullable && isInputOptional) { + if (inputObject.nullable && inputObject.optional) { newPath[index - 1] = `${paths[index - 1]}?`; } - if (!primitiveTypes.includes(baseType)) { - if (baseType.includes("[]")) { - if (!isInputNullableArray || isOutputRecordNullable){ - defaultValue = `[]`; - } - } else { - let cleanedBaseType = baseType.replace(/[\[\]()]*/g, ""); - if (cleanedBaseType.includes("|")) { - modifiedBaseType = cleanedBaseType.split("|")[0].trim(); - } else { - modifiedBaseType = cleanedBaseType; - } - defaultValue = await getDefaultValue(modifiedBaseType); - } + if (!isPrimitiveType(baseType) && baseType.includes("[]")) { + defaultValue = (!inputObject.nullableArray || outputObject.nullableArray) ? `[]` : undefined; } else { - defaultValue = await getDefaultValue(baseType); - } + const typeToUse = !isPrimitiveType(baseType) + ? baseType.replace(/[\[\]()]*/g, "").split("|")[0].trim() + : baseType; + defaultValue = await getDefaultValue(typeToUse); + } if (isUsingArray) { newPath[index] = `${pathIndex}?:${defaultValue}`; } - if (isUsingDefault && !isOutputNullable && !isOutputOptional) { + if (isUsingDefault && !outputObject.nullable && !outputObject.optional) { newPath[index] = `${pathIndex}?:${defaultValue}`; - } else if ((isInputNullable || isInputOptional)) { - if (!isOutputNullable && !isOutputOptional) { - if (!isInputNullableArray && isOutputRecordNullable) { - newPath[index] = `${pathIndex}?:${defaultValue}`; - } else { - newPath[index] = baseType === "string" || baseType === baseTargetType - ? `${pathIndex}?:${defaultValue}` - : `${pathIndex}`; - } - } else { - newPath[index] = baseType !== baseTargetType && baseType === "string" - ? `${pathIndex}?:${defaultValue}` - : `${pathIndex}`; - } + continue; } + if (!(inputObject.nullable || inputObject.optional)) { + continue; + } + + // Handle nullable/optional input + const shouldUseDefault = ( + (!outputObject.nullable && !outputObject.optional && !inputObject.nullableArray && outputObject.nullableArray) || + (!outputObject.nullable && !outputObject.optional && (baseType === PrimitiveType.STRING || baseType === baseTargetType)) || + (baseType !== baseTargetType && baseType === PrimitiveType.STRING) + ); + newPath[index] = shouldUseDefault ? `${pathIndex}?:${defaultValue}` : `${pathIndex}`; return newPath; } } @@ -1782,94 +1604,103 @@ async function getDefaultValue(dataType: string): Promise { } } -async function getNestedType(paths: string[], metadata: object): Promise { +async function getNestedType(paths: string[], metadata: ParameterField | FieldMetadata): Promise { let currentMetadata = metadata; - for (let i = 0; i < paths.length; i++) { - let cleanPath = paths[i].replace(/\?.*$/, ""); - if (currentMetadata["fields"] && currentMetadata["fields"][cleanPath]) { - currentMetadata = currentMetadata["fields"][cleanPath]; - } else if (currentMetadata["members"] && currentMetadata["members"][cleanPath]) { - currentMetadata = currentMetadata["members"][cleanPath]; - } else { + for (const path of paths) { + const cleanPath = path.replace(/\?.*$/, ""); + const nextMetadata = currentMetadata.fields?.[cleanPath] ?? currentMetadata.members?.[cleanPath]; + if (!nextMetadata) { throw new Error(`Field ${cleanPath} not found in metadata.`); } + currentMetadata = nextMetadata; } - return currentMetadata; + return currentMetadata as FieldMetadata; } -async function resolveMetadata(parameterDefinitions: ParameterMetadata | ErrorCode, nestedKeyArray: string[], key: string, metadataKey: "inputMetadata" | "outputMetadata"): Promise { - let metadata = parameterDefinitions[metadataKey]; - for (let nk of nestedKeyArray) { - if (metadata[nk] && (metadata[nk]["fields"] || metadata[nk]["members"])) { - if (nk === key){ - return metadata[nk]; +async function getMetadata( + parameterDefinitions: ParameterMetadata, + nestedKeyArray: string[], + key: string, + metadataType: MetadataType.INPUT_METADATA | MetadataType.OUTPUT_METADATA +): Promise { + try { + let currentMetadata = parameterDefinitions[metadataType]; + for (const nestedKey of nestedKeyArray) { + const nested = currentMetadata[nestedKey]; + const hasNestedStructure = nested?.fields || nested?.members; + + if (hasNestedStructure) { + if (nestedKey === key) { + return nested as FieldMetadata; + } + currentMetadata = nested.fields || nested.members; + } else { + return currentMetadata[key] as FieldMetadata; } - metadata = metadata[nk]["fields"] || metadata[nk]["members"]; - } else { - return metadata[key]; } + return currentMetadata[key] as FieldMetadata; + } catch { + throw new Error(`Metadata not found for key: "${key}" in ${metadataType}.`); } - return metadata[key]; } -async function handleRecordArrays(key: string, nestedKey: string, responseRecord: object, parameterDefinitions: ParameterMetadata | ErrorCode, arrayRecords: string[], arrayEnumUnion: string[], nestedKeyArray: string[]) { - let recordFields: { [key: string]: any } = {}; +async function handleRecordArrays(key: string, nestedKey: string, responseRecord: Record, parameterDefinitions: ParameterMetadata,nestedKeyArray: string[]) { + let recordFields: Record = {}; let subObjectKeys = Object.keys(responseRecord); let formattedRecordsArray: string[] = []; let itemKey: string = ""; let combinedKey: string = ""; - let modifiedOutput: object; + let modifiedOutput: FieldMetadata; let outputMetadataType: string = ""; let outputMetadataTypeName: string = ""; + let isOutputDeeplyNested: boolean = false; for (let subObjectKey of subObjectKeys) { if (!nestedKey) { - modifiedOutput = parameterDefinitions["outputMetadata"][key]; + modifiedOutput = parameterDefinitions.outputMetadata[key]; } else { - modifiedOutput = await resolveMetadata(parameterDefinitions, nestedKeyArray, key, "outputMetadata"); - if (!modifiedOutput) { - throw new Error(`Metadata not found for ${nestedKey}.`); - } + modifiedOutput = await getMetadata(parameterDefinitions, nestedKeyArray, key, MetadataType.OUTPUT_METADATA); } - outputMetadataTypeName = modifiedOutput["typeName"]; - outputMetadataType = modifiedOutput["type"]; - let isDeeplyNested = (arrayRecords.includes(outputMetadataTypeName) || arrayEnumUnion.includes(outputMetadataType)); + outputMetadataTypeName = modifiedOutput.typeName; + outputMetadataType = modifiedOutput.type; + isOutputDeeplyNested = (isArrayRecord(outputMetadataTypeName) || isArrayEnumUnion(outputMetadataType)); - let { itemKey: currentItemKey, combinedKey: currentCombinedKey, inputArrayNullable:currentArrayNullable } = await extractKeys(responseRecord[subObjectKey], parameterDefinitions, arrayRecords, arrayEnumUnion); + let { itemKey: currentItemKey, combinedKey: currentCombinedKey, inputArrayNullable, isSet, isInputDeeplyNested } = await extractKeys(responseRecord[subObjectKey], parameterDefinitions); if (currentItemKey.includes('?')) { currentItemKey = currentItemKey.replace('?', ''); } if (modifiedOutput.hasOwnProperty("fields") || modifiedOutput.hasOwnProperty("members")) { - if (isDeeplyNested) { + if (isOutputDeeplyNested) { const subArrayRecord = responseRecord[subObjectKey]; const isCombinedKeyModified = currentCombinedKey.endsWith('?'); - const replacementKey = currentArrayNullable || isCombinedKeyModified - ? `${currentItemKey}Item?.` - : `${currentItemKey}Item.`; - + const replacementKey = inputArrayNullable || isCombinedKeyModified + ? `${currentItemKey}Item?.` + : `${isInputDeeplyNested ? currentItemKey + 'Item' : currentItemKey}.`; const regex = new RegExp( currentCombinedKey.replace(/\?/g, '\\?').replace(/\./g, '\\.') + '\\.', 'g' ); - + formattedRecordsArray.push( `${subObjectKey}: ${subArrayRecord.replace(regex, replacementKey)}` ); - itemKey = currentItemKey; - combinedKey = currentCombinedKey; + if (isSet || (itemKey === "" && combinedKey === "")) { + itemKey = currentItemKey; + combinedKey = currentCombinedKey; + } } else { formattedRecordsArray.push(`${subObjectKey}: ${responseRecord[subObjectKey]}`); } } else { - recordFields = { ...recordFields, [key]: responseRecord }; + recordFields = { ...recordFields, [key]: JSON.stringify(responseRecord) }; } } if (formattedRecordsArray.length > 0 && itemKey && combinedKey) { const formattedRecords = formattedRecordsArray.join(",\n"); const keyToReplace = combinedKey.endsWith('?') ? combinedKey.replace(/\?$/, '') : combinedKey; - const processedKeys = await processCombinedKey(combinedKey, parameterDefinitions, arrayRecords, arrayEnumUnion); + const processedKeys = await processCombinedKey(combinedKey, parameterDefinitions); const combinedKeyExpression = (processedKeys.isinputRecordArrayNullable || processedKeys.isinputRecordArrayOptional || processedKeys.isinputArrayNullable || processedKeys.isinputArrayOptional || processedKeys.isinputNullableArray) ? `${keyToReplace} ?: []` : keyToReplace; @@ -1877,49 +1708,19 @@ async function handleRecordArrays(key: string, nestedKey: string, responseRecord } else { recordFields[key] = `{\n ${formattedRecordsArray.join(",\n")} \n}`; } - return { ...recordFields }; } -export async function filterResponse(resp: Response): Promise { - if (resp.status == 200 || resp.status == 201) { - const data = (await resp.json()) as any; - console.log(JSON.stringify(data.mappings)); - return data.mappings; - } - if (resp.status == 404) { - return ENDPOINT_REMOVED; - } - if (resp.status == 400) { - const data = (await resp.json()) as any; - console.log(data); - return PARSING_ERROR; - } - if (resp.status == 429) { - return TOO_MANY_REQUESTS; - } - if (resp.status == 500) { - return SERVER_ERROR; - } else { - //TODO: Handle more error codes - return TIMEOUT; - } -} - async function extractKeys( key: string, - parameterDefinitions: ParameterMetadata | ErrorCode, - arrayRecords: string[], - arrayEnumUnion: string[] -): Promise<{ - itemKey: string; - combinedKey: string; - inputArrayNullable: boolean; -}> { + parameterDefinitions: ParameterMetadata +): Promise { let innerKey: string; let itemKey: string = ""; let combinedKey: string = ""; let inputArrayNullable: boolean = false; + let isSet: boolean = false; + let isInputDeeplyNested = false; // Handle the key for nullable and optional fields key = key.replace(/\?*$/, ""); @@ -1956,141 +1757,102 @@ async function extractKeys( .replace(/\.toString\(\)$/, ''); } // Call the helper function to process parent keys - const processedKeys = await processParentKey(innerKey, parameterDefinitions, arrayRecords, arrayEnumUnion); + const processedKeys = await processParentKey(innerKey, parameterDefinitions); itemKey = processedKeys.itemKey; combinedKey = processedKeys.combinedKey; inputArrayNullable = processedKeys.inputArrayNullable; - return { itemKey, combinedKey, inputArrayNullable }; + isSet = processedKeys.isSet; + isInputDeeplyNested = processedKeys.isInputDeeplyNested; + return { itemKey, combinedKey, inputArrayNullable, isSet, isInputDeeplyNested }; +} + +function refineKey(key: string): string { + return key + .replace(/\?\./g, ".") // Replace `?.` with `.` + .replace(/\?$/g, "") // Remove a trailing `?` + .replace(/\s*\?:.*$/g, "") // Remove `?: ` + .replace(/[\(\)]/g, ""); // Remove parentheses } async function processParentKey( - innerKey: string, - parameterDefinitions: ParameterMetadata | ErrorCode, - arrayRecords: string[], - arrayEnumUnion: string[] -): Promise<{ - itemKey: string; - combinedKey: string; - inputArrayNullable: boolean; -}> { - let inputMetadataType: string = ""; - let inputMetadataTypeName: string = ""; + innerKey: string, + parameterDefinitions: ParameterMetadata +): Promise { let itemKey: string = ""; let combinedKey: string = ""; - let refinedInnerKey: string; let isSet: boolean = false; let inputArrayNullable: boolean = false; + let isInputDeeplyNested: boolean = false; // Split the innerKey to get parent keys and field name let keys = innerKey.split("."); let fieldName = keys.pop()!; let parentKey = keys.slice(0, keys.length); - refinedInnerKey = innerKey - .replace(/\?\./g, ".") // Replace `?.` with `.` - .replace(/\?$/g, "") // Remove a trailing `?` - .replace(/\s*\?:.*$/g, "") // Remove `?: ` - .replace(/[\(\)]/g, ""); // Remove parentheses - - let refinedKeys = refinedInnerKey.split("."); - let refinedFieldName = refinedKeys.pop()!; - let refinedParentKey = refinedKeys.slice(0, refinedKeys.length); + const refinedInnerKey = refineKey(innerKey); + const refinedKeys = refinedInnerKey.split("."); + const refinedParentKey = refinedKeys.slice(0, keys.length); // Handle the base case where there's only one key if (refinedParentKey.length === 1) { itemKey = parentKey[0]; combinedKey = parentKey[0]; - return { itemKey, combinedKey, inputArrayNullable }; + return { itemKey, combinedKey, inputArrayNullable, isSet, isInputDeeplyNested }; } for (let index = refinedParentKey.length - 1; index > 0; index--) { - const modifiedInputs = await resolveMetadata(parameterDefinitions, refinedParentKey, refinedParentKey[index], "inputMetadata"); - if (!modifiedInputs) { - throw new Error(`Metadata not found for ${refinedParentKey[index]}.`); - } - inputMetadataTypeName = modifiedInputs["typeName"]; - inputMetadataType = modifiedInputs["type"]; - inputArrayNullable = modifiedInputs["nullableArray"]; - - if (!isSet && (arrayEnumUnion.includes(inputMetadataType) || arrayRecords.includes(inputMetadataTypeName))) { - itemKey = parentKey[index]; - combinedKey = parentKey.slice(0, index + 1).join("."); - isSet = true; + const modifiedInputs = await getMetadata(parameterDefinitions, refinedParentKey, refinedParentKey[index], MetadataType.INPUT_METADATA); + inputArrayNullable = modifiedInputs.nullableArray; + + const isArrayType = isArrayRecord(modifiedInputs.typeName) || isArrayEnumUnion(modifiedInputs.type); + if (isArrayType) { + if (!isSet) { + itemKey = parentKey[index]; + combinedKey = parentKey.slice(0, index + 1).join("."); + isSet = true; + } + isInputDeeplyNested = true; } } - return { itemKey, combinedKey, inputArrayNullable }; + return { itemKey, combinedKey, inputArrayNullable, isSet, isInputDeeplyNested }; } async function processCombinedKey( combinedKey: string, - parameterDefinitions: ParameterMetadata | ErrorCode, - arrayRecords: string[], - arrayEnumUnion: string[] -): Promise<{ - isinputRecordArrayNullable: boolean; - isinputRecordArrayOptional: boolean; - isinputArrayNullable: boolean; - isinputArrayOptional: boolean; - isinputNullableArray: boolean; -}> { + parameterDefinitions: ParameterMetadata +): Promise { let isinputRecordArrayNullable: boolean = false; let isinputRecordArrayOptional: boolean = false; let isinputArrayNullable: boolean = false; let isinputArrayOptional: boolean = false; - let currentNullable: boolean = false; - let currentOptional: boolean = false; - let inputMetadataTypeName: string = ""; - let inputMetadataType: string = ""; - let refinedCombinedKey: string = ""; let isSet: boolean = false; let isinputNullableArray: boolean = false; - // Refine and split the inner key - refinedCombinedKey = combinedKey - .replace(/\?\./g, ".") // Replace `?.` with `.` - .replace(/\?$/g, "") // Remove a trailing `?` - .replace(/\s*\?:.*$/g, "") // Remove `?: ` - .replace(/[\(\)]/g, ""); // Remove parentheses - + let refinedCombinedKey = refineKey(combinedKey); let refinedCombinedKeys = refinedCombinedKey.split("."); + let lastIndex = refinedCombinedKeys.length - 1; - // Iterate through parent keys in reverse - let index = refinedCombinedKeys.length - 1; - const modifiedInputs = await resolveMetadata(parameterDefinitions, refinedCombinedKeys, refinedCombinedKeys[index], "inputMetadata"); - if (!modifiedInputs) { - throw new Error(`Metadata not found for ${refinedCombinedKeys[index]}.`); - } - - currentNullable = modifiedInputs["nullable"]; - currentOptional = modifiedInputs["optional"]; - inputMetadataTypeName = modifiedInputs["typeName"]; - inputMetadataType = modifiedInputs["type"]; + const modifiedInputs = await getMetadata(parameterDefinitions, refinedCombinedKeys, refinedCombinedKeys[lastIndex], MetadataType.INPUT_METADATA); - if (!isSet && (arrayRecords.includes(inputMetadataTypeName) || arrayEnumUnion.includes(inputMetadataType))) { + if (!isSet && (isArrayRecord(modifiedInputs.typeName) || isArrayEnumUnion(modifiedInputs.type))) { isSet = true; } if (isSet) { // Update record array flags - if (currentNullable) { isinputRecordArrayNullable = true; } - if (currentOptional) { isinputRecordArrayOptional = true; } + if (modifiedInputs.nullable) { isinputRecordArrayNullable = true; } + if (modifiedInputs.optional) { isinputRecordArrayOptional = true; } // Check preceding elements for non-`record[]` types - for (let nextIndex = index - 1; nextIndex >= 0; nextIndex--) { + for (let nextIndex = lastIndex - 1; nextIndex >= 0; nextIndex--) { isinputNullableArray = false; - const nextModifiedInputs = await resolveMetadata(parameterDefinitions, refinedCombinedKeys, refinedCombinedKeys[nextIndex], "inputMetadata"); - const nextMetadataTypeName = nextModifiedInputs["typeName"]; - const nextMetadataType = nextModifiedInputs["type"]; - const nextNullable = nextModifiedInputs["nullable"]; - const nextOptional = nextModifiedInputs["optional"]; - const nextNullableArray = nextModifiedInputs["nullableArray"]; - - if (!(arrayRecords.includes(nextMetadataTypeName) || arrayEnumUnion.includes(nextMetadataType))) { - if (nextNullable) { isinputArrayNullable = true; } - if (nextOptional) { isinputArrayOptional = true; } + const nextModifiedInputs = await getMetadata(parameterDefinitions, refinedCombinedKeys, refinedCombinedKeys[nextIndex], MetadataType.INPUT_METADATA); + if (!(isArrayRecord(nextModifiedInputs.typeName) || isArrayEnumUnion(nextModifiedInputs.type))) { + if (nextModifiedInputs.nullable) { isinputArrayNullable = true; } + if (nextModifiedInputs.optional) { isinputArrayOptional = true; } } else { - if (arrayRecords.includes(nextMetadataTypeName) || arrayEnumUnion.includes(nextMetadataType)) { - if (nextNullableArray && (nextIndex === (index - 1))) {isinputNullableArray = true;} + if (isArrayRecord(nextModifiedInputs.typeName) || isArrayEnumUnion(nextModifiedInputs.type)) { + if (nextModifiedInputs?.nullableArray && (nextIndex === (lastIndex - 1))) { isinputNullableArray = true; } } return { isinputRecordArrayNullable, isinputRecordArrayOptional, isinputArrayNullable, isinputArrayOptional, isinputNullableArray }; } @@ -2099,46 +1861,21 @@ async function processCombinedKey( return { isinputRecordArrayNullable, isinputRecordArrayOptional, isinputArrayNullable, isinputArrayOptional, isinputNullableArray }; } -async function sendRequirementFileUploadRequest(file: Blob): Promise { - const formData = new FormData(); - formData.append("file", file); - const response = await fetchWithToken(CONTEXT_UPLOAD_URL_V1 + "/file_upload/extract_requirements", { - method: "POST", - body: formData - }); - return response; -} - -export async function getTextFromRequirements(file: Blob): Promise { - try { - let response = await sendRequirementFileUploadRequest(file); - if (isErrorCode(response)) { - return response as ErrorCode; - } - response = response as Response; - let requirements = await filterMappingResponse(response) as string; - return requirements; - } catch (error) { - console.error(error); - return UNKNOWN_ERROR; - } -} - -export async function requirementsSpecification(filepath: string): Promise { - if (!filepath) { - throw new Error("File is undefined"); - } - - const convertedFile = convertBase64ToBlob({name: path.basename(filepath), - content: getBase64FromFile(filepath), status: AttachmentStatus.UnknownError}); - if (!convertedFile) { throw new Error("Invalid file content"); } - - let requirements = await getTextFromRequirements(convertedFile); - if (isErrorCode(requirements)) { - return requirements as ErrorCode; +export async function requirementsSpecification(filepath: string): Promise { + if (!filepath) { + throw new Error("File is undefined"); } - - return requirements; + const fileData = await attatchmentToFileData({ + name: path.basename(filepath), + content: getBase64FromFile(filepath), status: AttachmentStatus.UnknownError + }); + const params: DataMapperRequest = { + file: fileData, + processType: "requirements", + isRequirementAnalysis: true + }; + const resp: DataMapperResponse = await processDataMapperInput(params); + return resp.fileContent; } function getBase64FromFile(filePath) { @@ -2146,32 +1883,6 @@ function getBase64FromFile(filePath) { return fileBuffer.toString('base64'); } -export async function fetchWithToken(url: string, options: RequestInit) { - const accessToken = await getAccessToken(); - options.headers = { - ...options.headers, - 'Authorization': `Bearer ${accessToken}`, - 'User-Agent': 'Ballerina-VSCode-Plugin', - }; - let response = await fetch(url, options); - console.log("Response status: ", response.status); - if (response.status === 401) { - console.log("Token expired. Refreshing token..."); - const newToken = await getRefreshedAccessToken(); - if (newToken) { - options.headers = { - ...options.headers, - 'Authorization': `Bearer ${newToken}`, - }; - response = await fetch(url, options); - } else { - AIStateMachine.service().send(AIMachineEventType.LOGOUT); - return; - } - } - return response; -} - export function cleanDiagnosticMessages(entries: DiagnosticEntry[]): DiagnosticEntry[] { return entries.map(entry => ({ code: entry.code || "", diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/bi-diagram/rpc-handler.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/bi-diagram/rpc-handler.ts index 6693f588596..aac325f1039 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/bi-diagram/rpc-handler.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/bi-diagram/rpc-handler.ts @@ -82,7 +82,11 @@ import { generateOpenApiClient, getAiSuggestions, getAllImports, + getAvailableEmbeddingProviders, + getAvailableModelProviders, getAvailableNodes, + getAvailableVectorKnowledgeBases, + getAvailableVectorStores, getBreakpointInfo, getConfigVariableNodeTemplate, getConfigVariables, @@ -142,6 +146,10 @@ export function registerBiDiagramRpcHandlers(messenger: Messenger) { messenger.onRequest(deleteFlowNode, (args: BISourceCodeRequest) => rpcManger.deleteFlowNode(args)); messenger.onRequest(deleteByComponentInfo, (args: BIDeleteByComponentInfoRequest) => rpcManger.deleteByComponentInfo(args)); messenger.onRequest(getAvailableNodes, (args: BIAvailableNodesRequest) => rpcManger.getAvailableNodes(args)); + messenger.onRequest(getAvailableModelProviders, (args: BIAvailableNodesRequest) => rpcManger.getAvailableModelProviders(args)); + messenger.onRequest(getAvailableVectorStores, (args: BIAvailableNodesRequest) => rpcManger.getAvailableVectorStores(args)); + messenger.onRequest(getAvailableEmbeddingProviders, (args: BIAvailableNodesRequest) => rpcManger.getAvailableEmbeddingProviders(args)); + messenger.onRequest(getAvailableVectorKnowledgeBases, (args: BIAvailableNodesRequest) => rpcManger.getAvailableVectorKnowledgeBases(args)); messenger.onRequest(getEnclosedFunction, (args: BIGetEnclosedFunctionRequest) => rpcManger.getEnclosedFunction(args)); messenger.onRequest(getNodeTemplate, (args: BINodeTemplateRequest) => rpcManger.getNodeTemplate(args)); messenger.onRequest(getAiSuggestions, (args: BIAiSuggestionsRequest) => rpcManger.getAiSuggestions(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 695b33776be..6976c2f1760 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 @@ -134,11 +134,14 @@ import { WorkspacesResponse, DeleteConfigVariableRequestV2, DeleteConfigVariableResponseV2, + LoginMethod, + Diagnostics, } from "@wso2/ballerina-core"; import * as fs from "fs"; import * as path from 'path'; import * as vscode from "vscode"; +import { ICreateComponentCmdParams, IWso2PlatformExtensionAPI, CommandIds as PlatformExtCommandIds } from "@wso2/wso2-platform-core"; import { ShellExecution, Task, @@ -149,19 +152,19 @@ import { window, workspace } from "vscode"; import { DebugProtocol } from "vscode-debugprotocol"; +import { fetchWithAuth } from "../../../src/features/ai/service/connection"; import { extension } from "../../BalExtensionContext"; import { notifyBreakpointChange } from "../../RPCLayer"; +import { OLD_BACKEND_URL } from "../../features/ai/utils"; +import { cleanAndValidateProject, getCurrentBIProject } from "../../features/config-generator/configGenerator"; import { BreakpointManager } from "../../features/debugger/breakpoint-manager"; import { StateMachine, updateView } from "../../stateMachine"; import { getCompleteSuggestions } from '../../utils/ai/completions'; import { README_FILE, createBIAutomation, createBIFunction, createBIProjectPure } from "../../utils/bi"; import { writeBallerinaFileDidOpen } from "../../utils/modification"; -import { BACKEND_URL } from "../../features/ai/utils"; -import { ICreateComponentCmdParams, IWso2PlatformExtensionAPI, CommandIds as PlatformExtCommandIds } from "@wso2/wso2-platform-core"; -import { cleanAndValidateProject, getCurrentBIProject } from "../../features/config-generator/configGenerator"; import { updateSourceCode } from "../../utils/source-utils"; -import { getRefreshedAccessToken } from "../../../src/utils/ai/auth"; -import { applyBallerinaTomlEdit } from "./utils"; +import { getAccessToken, getLoginMethod } from "../../utils/ai/auth"; +import { checkProjectDiagnostics, removeUnusedImports } from "../ai-panel/repair-utils"; export class BiDiagramRpcManager implements BIDiagramAPI { OpenConfigTomlRequest: (params: OpenConfigTomlRequest) => Promise; @@ -318,6 +321,79 @@ export class BiDiagramRpcManager implements BIDiagramAPI { }); } + + async getAvailableModelProviders(params: BIAvailableNodesRequest): Promise { + console.log(">>> requesting bi available model providers from ls", params); + return new Promise((resolve) => { + StateMachine.langClient() + .getAvailableModelProviders(params) + .then((model) => { + console.log(">>> bi available model providers from ls", model); + resolve(model); + }) + .catch((error) => { + console.log(">>> error fetching available model providers from ls", error); + return new Promise((resolve) => { + resolve(undefined); + }); + }); + }); + } + + async getAvailableVectorStores(params: BIAvailableNodesRequest): Promise { + console.log(">>> requesting bi available vector stores from ls", params); + return new Promise((resolve) => { + StateMachine.langClient() + .getAvailableVectorStores(params) + .then((model) => { + console.log(">>> bi available vector stores from ls", model); + resolve(model); + }) + .catch((error) => { + console.log(">>> error fetching available vector stores from ls", error); + return new Promise((resolve) => { + resolve(undefined); + }); + }); + }); + } + + async getAvailableEmbeddingProviders(params: BIAvailableNodesRequest): Promise { + console.log(">>> requesting bi available embedding providers from ls", params); + return new Promise((resolve) => { + StateMachine.langClient() + .getAvailableEmbeddingProviders(params) + .then((model) => { + console.log(">>> bi available embedding providers from ls", model); + resolve(model); + }) + .catch((error) => { + console.log(">>> error fetching available embedding providers from ls", error); + return new Promise((resolve) => { + resolve(undefined); + }); + }); + }); + } + + async getAvailableVectorKnowledgeBases(params: BIAvailableNodesRequest): Promise { + console.log(">>> requesting bi available vector knowledge bases from ls", params); + return new Promise((resolve) => { + StateMachine.langClient() + .getAvailableVectorKnowledgeBases(params) + .then((model) => { + console.log(">>> bi available vector knowledge bases from ls", model); + resolve(model); + }) + .catch((error) => { + console.log(">>> error fetching available vector knowledge bases from ls", error); + return new Promise((resolve) => { + resolve(undefined); + }); + }); + }); + } + async getNodeTemplate(params: BINodeTemplateRequest): Promise { console.log(">>> requesting bi node template from ls", params); params.forceAssign = true; // TODO: remove this @@ -416,7 +492,12 @@ export class BiDiagramRpcManager implements BIDiagramAPI { let suggestedContent; try { if (prompt) { - const token = await extension.context.secrets.get("BallerinaAIUser"); + let token: string; + const loginMethod = await getLoginMethod(); + if (loginMethod === LoginMethod.BI_INTEL) { + token = await getAccessToken(); + } + if (!token) { resolve(undefined); return; @@ -434,8 +515,9 @@ export class BiDiagramRpcManager implements BIDiagramAPI { }; console.log(">>> request ai suggestion", { request: requestBody }); // generate new nodes - const response = await fetchWithToken(BACKEND_URL + "/inline/generation", requestOptions); + const response = await fetchWithAuth(OLD_BACKEND_URL + "/inline/generation", requestOptions); if (!response.ok) { + console.log(">>> ai completion api call failed ", response.status); console.log(">>> ai completion api call failed ", response); return new Promise((resolve) => { resolve(undefined); @@ -448,7 +530,11 @@ export class BiDiagramRpcManager implements BIDiagramAPI { // get next suggestion const copilot_token = await extension.context.secrets.get("GITHUB_COPILOT_TOKEN"); if (!copilot_token) { - const token = await extension.context.secrets.get("BallerinaAIUser"); + let token: string; + const loginMethod = await getLoginMethod(); + if (loginMethod === LoginMethod.BI_INTEL) { + token = await getAccessToken(); + } if (!token) { //TODO: Do we need to prompt to login here? If so what? Copilot or Ballerina AI? resolve(undefined); @@ -946,21 +1032,44 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async deleteByComponentInfo(params: BIDeleteByComponentInfoRequest): Promise { console.log(">>> requesting bi delete node from ls by componentInfo", params); - return new Promise((resolve) => { - StateMachine.langClient() - .deleteByComponentInfo(params) - .then(async (model) => { - console.log(">>> bi delete node from ls by componentInfo", model); - await updateSourceCode({ textEdits: model.textEdits }); - resolve(model); - }) - .catch((error) => { - console.log(">>> error fetching delete node from ls by componentInfo", error); - return new Promise((resolve) => { - resolve(undefined); + const projectDiags: Diagnostics[] = await checkProjectDiagnostics(StateMachine.langClient(), StateMachine.context().projectUri); + + // Helper function to perform the actual delete operation + const performDelete = async (): Promise => { + return new Promise((resolve, reject) => { + StateMachine.langClient() + .deleteByComponentInfo(params) + .then(async (model) => { + console.log(">>> bi delete node from ls by componentInfo", model); + await updateSourceCode({ textEdits: model.textEdits }); + resolve(model); + }) + .catch((error) => { + console.log(">>> error fetching delete node from ls by componentInfo", error); + reject("Error fetching delete node from ls by componentInfo"); }); - }); - }); + }); + }; + + // If there are diagnostics, remove unused imports first, then delete component + if (projectDiags.length > 0) { + return new Promise((resolve, reject) => { + removeUnusedImports(projectDiags, StateMachine.langClient()) + .then(() => { + // After removing unused imports, proceed with component deletion + return performDelete(); + }) + .then((result) => { + resolve(result); + }) + .catch((error) => { + reject("Error during delete operation: " + error); + }); + }); + } else { + // No diagnostics, directly delete component + return performDelete(); + } } async getExpressionDiagnostics(params: ExpressionDiagnosticsRequest): Promise { @@ -1257,7 +1366,7 @@ export class BiDiagramRpcManager implements BIDiagramAPI { }; console.log(">>> request ai suggestion", { request: requestBody }); // generate new nodes - const response = await fetchWithToken(BACKEND_URL + "/completion", requestOptions); + const response = await fetchWithAuth(OLD_BACKEND_URL + "/completion", requestOptions); if (!response.ok) { console.log(">>> ai completion api call failed ", response); return new Promise((resolve) => { @@ -1452,6 +1561,10 @@ export class BiDiagramRpcManager implements BIDiagramAPI { async search(params: BISearchRequest): Promise { return new Promise((resolve, reject) => { + params.queryMap = { + ...params.queryMap, + includeCurrentOrganizationInSearch: extension.ballerinaExtInstance.getIncludeCurrentOrgComponents(), + }; StateMachine.langClient().search(params).then((res) => { resolve(res); }).catch((error) => { @@ -1719,24 +1832,6 @@ export function getRepoRoot(projectRoot: string): string | undefined { return getRepoRoot(path.join(projectRoot, "..")); } -export async function fetchWithToken(url: string, options: RequestInit) { - let response = await fetch(url, options); - console.log("Response status: ", response.status); - if (response.status === 401) { - console.log("Token expired. Refreshing token..."); - const newToken = await getRefreshedAccessToken(); - console.log("refreshed token : " + newToken); - if (newToken) { - options.headers = { - ...options.headers, - 'Authorization': `Bearer ${newToken}`, - }; - response = await fetch(url, options); - } - } - return response; -} - export async function getBallerinaFiles(dir: string): Promise { let files: string[] = []; const entries = fs.readdirSync(dir, { withFileTypes: true }); diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/inline-data-mapper/rpc-manager.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/inline-data-mapper/rpc-manager.ts index 2dae98e8157..3c0087940cd 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/inline-data-mapper/rpc-manager.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/inline-data-mapper/rpc-manager.ts @@ -66,21 +66,7 @@ export class InlineDataMapperRpcManager implements InlineDataMapperAPI { const varName = params.flowNode.properties?.variable?.value as string ?? null; updateSource(model.textEdits, params.filePath, params.flowNode.codedata, varName) .then(codeData => { - openView(EVENT_TYPE.OPEN_VIEW, { - view: MACHINE_VIEW.InlineDataMapper, - documentUri: params.filePath, - position: { - startLine: codeData.lineRange.startLine.line, - startColumn: codeData.lineRange.startLine.offset, - endLine: codeData.lineRange.endLine.line, - endColumn: codeData.lineRange.endLine.offset - }, - dataMapperMetadata: { - name: varName, - codeData: codeData - } - }); - resolve({ textEdits: model.textEdits }); + resolve({ textEdits: model.textEdits, codedata: codeData }); }); }) .catch((error) => { diff --git a/workspaces/ballerina/ballerina-extension/src/rpc-managers/inline-data-mapper/utils.ts b/workspaces/ballerina/ballerina-extension/src/rpc-managers/inline-data-mapper/utils.ts index 8b79625e556..5ea6638b966 100644 --- a/workspaces/ballerina/ballerina-extension/src/rpc-managers/inline-data-mapper/utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/rpc-managers/inline-data-mapper/utils.ts @@ -27,7 +27,7 @@ import { TextEdit, traverseFlow } from "@wso2/ballerina-core"; -import { updateSourceCode } from "../../utils"; +import { updateSourceCode, UpdateSourceCodeRequest } from "../../utils"; import { StateMachine, updateInlineDataMapperView } from "../../stateMachine"; import { VariableFindingVisitor } from "./VariableFindingVisitor"; @@ -87,6 +87,41 @@ export async function fetchSubMappingCodeData( return response.codedata; } +/** + * Updates the source code iteratively by applying text edits. + * If only one file is edited, it directly updates that file. + * @param updateSourceCodeRequest - The request containing text edits to apply. + * @returns Updated artifacts after applying the last text edits. + */ + +export async function updateSourceCodeIteratively(updateSourceCodeRequest: UpdateSourceCodeRequest){ + const textEdits = updateSourceCodeRequest.textEdits; + const filePaths = Object.keys(textEdits); + + if (filePaths.length == 1) { + return await updateSourceCode(updateSourceCodeRequest); + } + + // need to prioritize if file path ends with functions.bal + filePaths.sort((a, b) => { + // Prioritize files ending with functions.bal + const aEndsWithFunctions = a.endsWith('functions.bal') ? 1 : 0; + const bEndsWithFunctions = b.endsWith('functions.bal') ? 1 : 0; + return bEndsWithFunctions - aEndsWithFunctions; // Sort descending + }); + + const requests: UpdateSourceCodeRequest[] = filePaths.map(filePath => ({ + textEdits: { [filePath]: textEdits[filePath] } + })); + + let updatedArtifacts: ProjectStructureArtifactResponse[]; + for (const request of requests) { + updatedArtifacts = await updateSourceCode(request); + } + + return updatedArtifacts; +} + /** * Updates the source code with text edits and retrieves the updated code data for the variable being edited. * @throws {Error} When source update fails or required data cannot be found @@ -104,7 +139,7 @@ export async function updateSource( try { // Update source code and get artifacts - const updatedArtifacts = await updateSourceCode({ textEdits }); + const updatedArtifacts = await updateSourceCodeIteratively({ textEdits }); // Find the artifact that contains our code changes const relevantArtifact = findRelevantArtifact(updatedArtifacts, filePath, codedata.lineRange); @@ -152,16 +187,32 @@ export async function updateSubMappingSource( /** * Finds the artifact that contains the code changes within the specified line range. + * Recursively searches through artifact hierarchy to find the most specific match. */ function findRelevantArtifact( artifacts: ProjectStructureArtifactResponse[], filePath: string, lineRange: ELineRange ): ProjectStructureArtifactResponse | null { - return artifacts.find(artifact => - artifact.path === filePath && - isWithinArtifact(artifact.position, lineRange) - ) || null; + if (!artifacts || artifacts.length === 0) { + return null; + } + + for (const currentArtifact of artifacts) { + if (isWithinArtifact(currentArtifact.path, filePath, currentArtifact.position, lineRange)) { + // If this artifact has resources, recursively search for a more specific match + if (currentArtifact.resources && currentArtifact.resources.length > 0) { + const nestedMatch = findRelevantArtifact(currentArtifact.resources, filePath, lineRange); + // Return the nested match if found, otherwise return the current artifact + return nestedMatch || currentArtifact; + } + + // No nested resources + return currentArtifact; + } + } + + return null; } /** @@ -388,7 +439,16 @@ export function combineTextEdits(edits: TextEdit[]): TextEdit { /** * Determines whether a variable declaration range is completely contained within an artifact's position range. */ -function isWithinArtifact(artifactPosition: NodePosition, varDeclRange: ELineRange) { +function isWithinArtifact( + artifactPath: string, + filePath: string, + artifactPosition: NodePosition, + varDeclRange: ELineRange +) { + if (artifactPath !== filePath) { + return false; + } + const artifactStartLine = artifactPosition.startLine; const artifactEndLine = artifactPosition.endLine; const varDeclStartLine = varDeclRange.startLine.line; 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 6f07fb835f8..120e15d7bac 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 @@ -29,6 +29,7 @@ import { DidOpenRequest, ExecutorPositionsRequest, PartialSTParams, + ProjectDiagnosticsRequest, RenameRequest, STModifyParams, SymbolInfoParams, @@ -49,6 +50,7 @@ import { getDiagnostics, getExecutorPositions, getPackageComponentModels, + getProjectDiagnostics, getST, getSTByRange, getSTForExpression, @@ -78,6 +80,7 @@ export function registerLangClientRpcHandlers(messenger: Messenger) { messenger.onRequest(getBallerinaVersion, () => rpcManger.getBallerinaVersion()); messenger.onRequest(getCompletion, (args: CompletionRequest) => rpcManger.getCompletion(args)); messenger.onRequest(getDiagnostics, (args: SyntaxTreeParams) => rpcManger.getDiagnostics(args)); + messenger.onRequest(getProjectDiagnostics, (args: ProjectDiagnosticsRequest) => rpcManger.getProjectDiagnostics(args)); messenger.onRequest(codeAction, (args: CodeActionRequest) => rpcManger.codeAction(args)); messenger.onRequest(rename, (args: RenameRequest) => rpcManger.rename(args)); messenger.onRequest(getDefinitionPosition, (args: DefinitionPositionRequest) => rpcManger.getDefinitionPosition(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 8470be5a40e..c6d7f63b837 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 @@ -41,6 +41,8 @@ import { LangClientAPI, PartialST, PartialSTParams, + ProjectDiagnosticsRequest, + ProjectDiagnosticsResponse, RenameRequest, RenameResponse, STModifyParams, @@ -288,4 +290,10 @@ export class LangClientRpcManager implements LangClientAPI { }); } + async getProjectDiagnostics(params: ProjectDiagnosticsRequest): Promise { + return new Promise(async (resolve) => { + const diagnostics = await StateMachine.langClient().getProjectDiagnostics(params) as ProjectDiagnosticsResponse; + resolve(diagnostics); + }); + } } diff --git a/workspaces/ballerina/ballerina-extension/src/stateMachine.ts b/workspaces/ballerina/ballerina-extension/src/stateMachine.ts index 3faa1fcae29..37fe9b3494d 100644 --- a/workspaces/ballerina/ballerina-extension/src/stateMachine.ts +++ b/workspaces/ballerina/ballerina-extension/src/stateMachine.ts @@ -506,11 +506,10 @@ export function updateView(refreshTreeView?: boolean) { lastView = getLastHistory(); // Get the new last entry } - let newLocation: VisualizerLocation; - - if (lastView) { + let newLocation: VisualizerLocation = lastView?.location; + if (lastView && lastView.location?.artifactType && lastView.location?.identifier) { newLocation = { ...lastView.location }; - const currentIdentifier = lastView.location.identifier; + const currentIdentifier = lastView.location?.identifier; let currentArtifact: ProjectStructureArtifactResponse; // These changes will be revisited in the revamp @@ -533,7 +532,6 @@ export function updateView(refreshTreeView?: boolean) { history.updateCurrentEntry({ ...lastView, location: newLocation - }); } diff --git a/workspaces/ballerina/ballerina-extension/src/utils/ai/auth.ts b/workspaces/ballerina/ballerina-extension/src/utils/ai/auth.ts index 7085e502181..7dcc552440f 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/ai/auth.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/ai/auth.ts @@ -21,10 +21,11 @@ import { extension } from "../../BalExtensionContext"; import { AUTH_CLIENT_ID, AUTH_ORG } from '../../features/ai/utils'; import axios from 'axios'; import { jwtDecode, JwtPayload } from 'jwt-decode'; -// import { StateMachineAI } from '../../../src/views/ai-panel/aiMachine'; +import { AuthCredentials, LoginMethod } from '@wso2/ballerina-core'; -export const ACCESS_TOKEN_SECRET_KEY = 'BallerinaAIUser'; -export const REFRESH_TOKEN_SECRET_KEY = 'BallerinaAIRefreshToken'; +export const REFRESH_TOKEN_NOT_AVAILABLE_ERROR_MESSAGE = "Refresh token is not available."; +export const TOKEN_REFRESH_ONLY_SUPPORTED_FOR_BI_INTEL = "Token refresh is only supported for BI Intelligence authentication"; +export const AUTH_CREDENTIALS_SECRET_KEY = 'BallerinaAuthCredentials'; //TODO: What if user doesnt have github copilot. //TODO: Where does auth git get triggered @@ -117,40 +118,87 @@ async function copilotTokenExists() { return copilotToken !== undefined && copilotToken !== ''; } +// ================================== +// Structured Auth Credentials Utils +// ================================== +export const storeAuthCredentials = async (credentials: AuthCredentials): Promise => { + const credentialsJson = JSON.stringify(credentials); + await extension.context.secrets.store(AUTH_CREDENTIALS_SECRET_KEY, credentialsJson); +}; + +export const getAuthCredentials = async (): Promise => { + const credentialsJson = await extension.context.secrets.get(AUTH_CREDENTIALS_SECRET_KEY); + if (!credentialsJson) { + return undefined; + } + + try { + return JSON.parse(credentialsJson) as AuthCredentials; + } catch (error) { + console.error('Error parsing auth credentials:', error); + return undefined; + } +}; + +export const clearAuthCredentials = async (): Promise => { + await extension.context.secrets.delete(AUTH_CREDENTIALS_SECRET_KEY); +}; + // ================================== // BI Copilot Auth Utils // ================================== +export const getLoginMethod = async (): Promise => { + const credentials = await getAuthCredentials(); + if (credentials) { + return credentials.loginMethod; + } + return undefined; +}; + export const getAccessToken = async (): Promise => { return new Promise(async (resolve, reject) => { try { - const token = await extension.context.secrets.get(ACCESS_TOKEN_SECRET_KEY); - if (!token) { - resolve(undefined); - return; - } - - let finalToken = token; + const credentials = await getAuthCredentials(); + + if (credentials) { + switch (credentials.loginMethod) { + case LoginMethod.BI_INTEL: + try { + const { accessToken } = credentials.secrets; + let finalToken = accessToken; + + // Decode token and check expiration + const decoded = jwtDecode(accessToken); + const now = Math.floor(Date.now() / 1000); + if (decoded.exp && decoded.exp < now) { + finalToken = await getRefreshedAccessToken(); + } + resolve(finalToken); + return; + } catch (err) { + if (axios.isAxiosError(err)) { + const status = err.response?.status; + if (status === 400) { + reject(new Error("TOKEN_EXPIRED")); + return; + } + } + reject(err); + return; + } + + case LoginMethod.ANTHROPIC_KEY: + resolve(credentials.secrets.apiKey); + return; - // Decode token and check expiration - try { - const decoded = jwtDecode(token); - const now = Math.floor(Date.now() / 1000); - if (decoded.exp && decoded.exp < now) { - finalToken = await getRefreshedAccessToken(); - } - } catch (err) { - if (axios.isAxiosError(err)) { - const status = err.response?.status; - if (status === 400) { - reject(new Error("TOKEN_EXPIRED")); + default: + const { loginMethod }: AuthCredentials = credentials; + reject(new Error(`Unsupported login method: ${loginMethod}`)); return; - } + } - reject(err); - return; } - - resolve(finalToken); + resolve(undefined); } catch (error: any) { reject(error); } @@ -165,9 +213,14 @@ export const getRefreshedAccessToken = async (): Promise => { }; try { - const refreshToken = await extension.context.secrets.get(REFRESH_TOKEN_SECRET_KEY); + const credentials = await getAuthCredentials(); + if (!credentials || credentials.loginMethod !== LoginMethod.BI_INTEL) { + throw new Error(TOKEN_REFRESH_ONLY_SUPPORTED_FOR_BI_INTEL); + } + + const { refreshToken } = credentials.secrets; if (!refreshToken) { - reject(new Error("Refresh token is not available.")); + reject(new Error(REFRESH_TOKEN_NOT_AVAILABLE_ERROR_MESSAGE)); return; } @@ -183,8 +236,15 @@ export const getRefreshedAccessToken = async (): Promise => { const newAccessToken = response.data.access_token; const newRefreshToken = response.data.refresh_token; - await extension.context.secrets.store(ACCESS_TOKEN_SECRET_KEY, newAccessToken); - await extension.context.secrets.store(REFRESH_TOKEN_SECRET_KEY, newRefreshToken); + // Update stored credentials + const updatedCredentials: AuthCredentials = { + ...credentials, + secrets: { + accessToken: newAccessToken, + refreshToken: newRefreshToken + } + }; + await storeAuthCredentials(updatedCredentials); resolve(newAccessToken); } catch (error: any) { diff --git a/workspaces/ballerina/ballerina-extension/src/utils/modification.ts b/workspaces/ballerina/ballerina-extension/src/utils/modification.ts index a102d8c1350..8b44c9a135e 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/modification.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/modification.ts @@ -21,6 +21,7 @@ import { Position, Range, Uri, WorkspaceEdit, workspace } from "vscode"; import { URI } from "vscode-uri"; import { writeFileSync } from "fs"; import { StateMachine, updateView } from "../stateMachine"; +import { ArtifactNotificationHandler, ArtifactsUpdated } from "./project-artifacts-handler"; interface UpdateFileContentRequest { filePath: string; @@ -81,4 +82,29 @@ export async function writeBallerinaFileDidOpen(filePath: string, content: strin text: content.trim() } }); + + return new Promise((resolve, reject) => { + // Get the artifact notification handler instance + const notificationHandler = ArtifactNotificationHandler.getInstance(); + // Subscribe to artifact updated notifications + let unsubscribe = notificationHandler.subscribe(ArtifactsUpdated.method, undefined, async (payload) => { + clearTimeout(timeoutId); + resolve(payload.data); + unsubscribe(); + }); + + // Set a timeout to reject if no notification is received within 10 seconds + const timeoutId = setTimeout(() => { + console.log("No artifact update notification received within 10 seconds"); + reject(new Error("Operation timed out. Please try again.")); + unsubscribe(); + }, 10000); + + // Clear the timeout when notification is received + const originalUnsubscribe = unsubscribe; + unsubscribe = () => { + clearTimeout(timeoutId); + originalUnsubscribe(); + }; + }); } diff --git a/workspaces/ballerina/ballerina-extension/src/utils/project-artifacts-handler.ts b/workspaces/ballerina/ballerina-extension/src/utils/project-artifacts-handler.ts index b48ba39f432..8263935620d 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/project-artifacts-handler.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/project-artifacts-handler.ts @@ -69,12 +69,10 @@ export class ArtifactNotificationHandler { filteredData = filteredData.filter(data => data.name === artifactData.identifier); } } - if (filteredData.length > 0) { - callback({ - ...payload, - data: filteredData - }); - } + callback({ + ...payload, + data: filteredData + }); }; subscribers.add(wrappedCallback); diff --git a/workspaces/ballerina/ballerina-extension/src/utils/project-artifacts.ts b/workspaces/ballerina/ballerina-extension/src/utils/project-artifacts.ts index 10847a83b12..ff351aa34d7 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/project-artifacts.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/project-artifacts.ts @@ -23,7 +23,8 @@ import * as fs from 'fs'; import * as path from 'path'; import { ExtendedLangClient } from "../core/extended-language-client"; import { ServiceDesignerRpcManager } from "../rpc-managers/service-designer/rpc-manager"; -import { injectAgent, injectAgentCode, injectImportIfMissing } from "./source-utils"; +import { AiAgentRpcManager } from "../rpc-managers/ai-agent/rpc-manager"; +import { injectAgentCode, injectImportIfMissing } from "./source-utils"; import { tmpdir } from "os"; import { ArtifactsUpdated, ArtifactNotificationHandler } from "./project-artifacts-handler"; @@ -63,14 +64,12 @@ export async function updateProjectArtifacts(publishedArtifacts: ArtifactsNotifi const isWithinProject = URI.parse(publishedArtifacts.uri).path.toLowerCase().includes(projectUri.path.toLowerCase()); if (currentProjectStructure && isWithinProject) { const entryLocations = await traverseUpdatedComponents(publishedArtifacts.artifacts, currentProjectStructure); - if (entryLocations.length > 0) { - const notificationHandler = ArtifactNotificationHandler.getInstance(); - // Publish a notification to the artifact handler - notificationHandler.publish(ArtifactsUpdated.method, { - data: entryLocations, - timestamp: Date.now() - }); - } + const notificationHandler = ArtifactNotificationHandler.getInstance(); + // Publish a notification to the artifact handler + notificationHandler.publish(ArtifactsUpdated.method, { + data: entryLocations, + timestamp: Date.now() + }); StateMachine.updateProjectStructure({ ...currentProjectStructure }); // Update the project structure and refresh the tree } } @@ -177,15 +176,12 @@ async function getEntryValue(artifact: BaseArtifact, icon: string, moduleName?: // This is a hack to inject the AI agent code into the chat service function // This has to be replaced once we have a proper design for AI Agent Chat Service async function injectAIAgent(serviceArtifact: BaseArtifact) { - // Inject the import if missing - const importStatement = `import ballerinax/ai`; - await injectImportIfMissing(importStatement, path.join(StateMachine.context().projectUri, `agents.bal`)); + // Fetch the organization name for importing the AI package + const aiModuleOrg = await new AiAgentRpcManager().getAiModuleOrg({ projectPath: StateMachine.context().projectUri }); //get AgentName const agentName = serviceArtifact.name.split('-')[1].trim().replace(/\//g, ''); - // Inject the agent code - await injectAgent(agentName, StateMachine.context().projectUri); // Retrieve the service model const targetFile = Utils.joinPath(URI.parse(StateMachine.context().projectUri), serviceArtifact.location.fileName).fsPath; const updatedService = await new ServiceDesignerRpcManager().getServiceModelFromCode({ @@ -204,11 +200,11 @@ async function injectAIAgent(serviceArtifact: BaseArtifact) { const injectionPosition = updatedService.service.functions[0].codedata.lineRange.endLine; const serviceFile = path.join(StateMachine.context().projectUri, `main.bal`); ensureFileExists(serviceFile); - await injectAgentCode(agentName, serviceFile, injectionPosition); + await injectAgentCode(agentName, serviceFile, injectionPosition, aiModuleOrg.orgName); const functionPosition: NodePosition = { startLine: updatedService.service.functions[0].codedata.lineRange.startLine.line, startColumn: updatedService.service.functions[0].codedata.lineRange.startLine.offset, - endLine: updatedService.service.functions[0].codedata.lineRange.endLine.line + 3, + endLine: updatedService.service.functions[0].codedata.lineRange.endLine.line + 2, endColumn: updatedService.service.functions[0].codedata.lineRange.endLine.offset }; return { @@ -271,6 +267,8 @@ function getDirectoryMapKeyAndIcon(artifact: BaseArtifact, artifactCategoryKey: return { mapKey: DIRECTORY_MAP.CONFIGURABLE, icon: "config" }; case ARTIFACT_TYPE.NaturalFunctions: return { mapKey: DIRECTORY_MAP.NP_FUNCTION, icon: "function" }; + case ARTIFACT_TYPE.Variables: + return { mapKey: DIRECTORY_MAP.VARIABLE, icon: "variable" }; default: console.warn(`Unhandled artifact category key: ${artifactCategoryKey}`); return null; diff --git a/workspaces/ballerina/ballerina-extension/src/utils/server/server.ts b/workspaces/ballerina/ballerina-extension/src/utils/server/server.ts index 74ffd6ac4ac..7a83aa4a6ef 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/server/server.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/server/server.ts @@ -240,7 +240,8 @@ function getServerOptionsUsingJava(extension: BallerinaExtension): ServerOptions 'test-manager-service*', 'language-server*', "bal-shell-service*", - "org.eclipse.lsp4j*" + "org.eclipse.lsp4j*", + "diagram-util*" ]; // Generate paths for ballerina home jars using dynamic discovery (excluding specified patterns) diff --git a/workspaces/ballerina/ballerina-extension/src/utils/source-utils.ts b/workspaces/ballerina/ballerina-extension/src/utils/source-utils.ts index c69414be8f5..3cb43b8b749 100644 --- a/workspaces/ballerina/ballerina-extension/src/utils/source-utils.ts +++ b/workspaces/ballerina/ballerina-extension/src/utils/source-utils.ts @@ -198,36 +198,18 @@ export async function injectImportIfMissing(importStatement: string, filePath: s } } -export async function injectAgent(name: string, projectUri: string) { - const agentCode = ` -final ai:OpenAiProvider _${name}Model = check new ("", ai:GPT_4O); -final ai:Agent _${name}Agent = check new (systemPrompt = {role: "", instructions: string \`\`}, - model = _${name}Model, - tools = [] -);`; - // Update the service function code - const agentsFile = path.join(projectUri, `agents.bal`); - const agentEdit = new vscode.WorkspaceEdit(); - - // Read the file content to determine its length - let fileContent = ''; - try { - fileContent = fs.readFileSync(agentsFile, 'utf8'); - } catch (error) { - // File doesn't exist, that's fine - we'll create it - } - - // Insert at the end of the file - agentEdit.insert(Uri.file(agentsFile), new Position(fileContent.split('\n').length, 0), agentCode); - await workspace.applyEdit(agentEdit); -} - - -export async function injectAgentCode(name: string, serviceFile: string, injectionPosition: LinePosition) { +export async function injectAgentCode(name: string, serviceFile: string, injectionPosition: LinePosition, orgName: string) { // Update the service function code const serviceEdit = new vscode.WorkspaceEdit(); - const serviceSourceCode = ` - string stringResult = check _${name}Agent->run(request.message, request.sessionId); + // Choose agent invocation code based on orgName + const serviceSourceCode = + orgName === "ballerina" + ? + ` string stringResult = check _${name}Agent.run(request.message, request.sessionId); + return {message: stringResult}; +` + : + ` string stringResult = check _${name}Agent->run(request.message, request.sessionId); return {message: stringResult}; `; serviceEdit.insert(Uri.file(serviceFile), new Position(injectionPosition.line, 0), serviceSourceCode); diff --git a/workspaces/ballerina/ballerina-extension/src/views/ai-panel/aiMachine.ts b/workspaces/ballerina/ballerina-extension/src/views/ai-panel/aiMachine.ts index 21d1d989afd..cd22228ef0c 100644 --- a/workspaces/ballerina/ballerina-extension/src/views/ai-panel/aiMachine.ts +++ b/workspaces/ballerina/ballerina-extension/src/views/ai-panel/aiMachine.ts @@ -18,12 +18,11 @@ /* eslint-disable @typescript-eslint/naming-convention */ import { createMachine, assign, interpret } from 'xstate'; -import * as vscode from 'vscode'; -import { AIMachineStateValue, AIPanelPrompt, AIMachineEventValue, AIMachineEventType, AIMachineContext, AIUserToken } from '@wso2/ballerina-core'; +import { AIMachineStateValue, AIPanelPrompt, AIMachineEventType, AIMachineContext, AIUserToken, AIMachineSendableEvent, LoginMethod } from '@wso2/ballerina-core'; import { AiPanelWebview } from './webview'; -import { getAuthUrl, getLogoutUrl } from './auth'; import { extension } from '../../BalExtensionContext'; -import { ACCESS_TOKEN_SECRET_KEY, getAccessToken, REFRESH_TOKEN_SECRET_KEY } from '../../utils/ai/auth'; +import { getAccessToken } from '../../utils/ai/auth'; +import { checkToken, initiateInbuiltAuth, logout, validateApiKey } from './utils'; export const USER_CHECK_BACKEND_URL = '/user/usage'; @@ -43,17 +42,23 @@ export const closeAIWebview = () => { } }; -const aiMachine = createMachine({ +const aiMachine = createMachine({ id: 'ballerina-ai', initial: 'Initialize', predictableActionArguments: true, context: { + loginMethod: undefined, userToken: undefined, errorMessage: undefined, }, on: { DISPOSE: { target: 'Initialize', + actions: assign({ + loginMethod: (_ctx) => undefined, + userToken: (_ctx) => undefined, + errorMessage: (_ctx) => undefined, + }) } }, states: { @@ -66,11 +71,18 @@ const aiMachine = createMachine({ cond: (_ctx, event) => !!event.data, target: 'Authenticated', actions: assign({ - userToken: (_ctx, event) => event.data as AIUserToken, + loginMethod: (_ctx, event) => event.data.loginMethod, + userToken: (_ctx, event) => ({ token: event.data.token }), + errorMessage: (_ctx) => undefined, }) }, { target: 'Unauthenticated', + actions: assign({ + loginMethod: (_ctx) => undefined, + userToken: (_ctx) => undefined, + errorMessage: (_ctx) => undefined, + }) } ], onError: [ @@ -78,12 +90,19 @@ const aiMachine = createMachine({ cond: (_ctx, event) => event.data?.message === 'TOKEN_EXPIRED', target: 'Unauthenticated', actions: [ - 'silentLogout' + 'silentLogout', + assign({ + loginMethod: (_ctx) => undefined, + userToken: (_ctx) => undefined, + errorMessage: (_ctx) => undefined, + }) ] }, { target: 'Disabled', actions: assign({ + loginMethod: (_ctx) => undefined, + userToken: (_ctx) => undefined, errorMessage: (_ctx, event) => event.data?.message || 'Unknown error' }) } @@ -92,33 +111,130 @@ const aiMachine = createMachine({ }, Unauthenticated: { on: { - LOGIN: 'Authenticating' + [AIMachineEventType.LOGIN]: { + target: 'Authenticating', + actions: assign({ + loginMethod: (_ctx) => LoginMethod.BI_INTEL + }) + }, + [AIMachineEventType.AUTH_WITH_API_KEY]: { + target: 'Authenticating', + actions: assign({ + loginMethod: (_ctx) => LoginMethod.ANTHROPIC_KEY + }) + } } }, Authenticating: { - invoke: { - id: 'openLogin', - src: 'openLogin', - onError: { - target: 'Unauthenticated' - } - }, - on: { - [AIMachineEventType.LOGIN_SUCCESS]: { - target: 'Authenticated', + initial: 'determineFlow', + states: { + determineFlow: { + always: [ + { + cond: (context) => context.loginMethod === LoginMethod.BI_INTEL, + target: 'ssoFlow' + }, + { + cond: (context) => context.loginMethod === LoginMethod.ANTHROPIC_KEY, + target: 'apiKeyFlow' + }, + { + target: 'ssoFlow' // default + } + ] }, - [AIMachineEventType.CANCEL_LOGIN]: { - target: 'Unauthenticated' + ssoFlow: { + invoke: { + id: 'openLogin', + src: 'openLogin', + onError: { + target: '#ballerina-ai.Unauthenticated', + actions: assign({ + loginMethod: (_ctx) => undefined, + errorMessage: (_ctx, event) => event.data?.message || 'SSO authentication failed' + }) + } + }, + on: { + [AIMachineEventType.COMPLETE_AUTH]: { + target: '#ballerina-ai.Authenticated', + actions: assign({ + errorMessage: (_ctx) => undefined, + }) + }, + [AIMachineEventType.CANCEL_LOGIN]: { + target: '#ballerina-ai.Unauthenticated', + actions: assign({ + loginMethod: (_ctx) => undefined, + errorMessage: (_ctx) => undefined, + }) + } + } + }, + apiKeyFlow: { + on: { + [AIMachineEventType.SUBMIT_API_KEY]: { + target: 'validatingApiKey', + actions: assign({ + errorMessage: (_ctx) => undefined + }) + }, + [AIMachineEventType.CANCEL_LOGIN]: { + target: '#ballerina-ai.Unauthenticated', + actions: assign({ + loginMethod: (_ctx) => undefined, + errorMessage: (_ctx) => undefined, + }) + } + } + }, + validatingApiKey: { + invoke: { + id: 'validateApiKey', + src: 'validateApiKey', + onDone: { + target: '#ballerina-ai.Authenticated', + actions: assign({ + errorMessage: (_ctx) => undefined, + }) + }, + onError: { + target: 'apiKeyFlow', + actions: assign({ + errorMessage: (_ctx, event) => event.data?.message || 'API key validation failed' + }) + } + } } } }, Authenticated: { + invoke: { + id: 'getTokenAfterAuth', + src: 'getTokenAfterAuth', + onDone: { + actions: assign({ + userToken: (_ctx, event) => ({ token: event.data.token }), + loginMethod: (_ctx, event) => event.data.loginMethod, + errorMessage: (_ctx) => undefined, + }) + }, + onError: { + target: 'Unauthenticated', + actions: assign({ + userToken: (_ctx) => undefined, + loginMethod: (_ctx) => undefined, + errorMessage: (_ctx, event) => event.data?.message || 'Failed to retrieve authentication credentials', + }) + } + }, on: { [AIMachineEventType.LOGOUT]: { target: 'Unauthenticated', actions: [ 'logout', assign({ + loginMethod: (_) => undefined, userToken: (_) => undefined, errorMessage: (_) => undefined, }) @@ -129,6 +245,7 @@ const aiMachine = createMachine({ actions: [ 'silentLogout', assign({ + loginMethod: (_) => undefined, userToken: (_) => undefined, errorMessage: (_) => undefined, }) @@ -139,62 +256,54 @@ const aiMachine = createMachine({ Disabled: { on: { RETRY: { - target: 'Initialize' + target: 'Initialize', + actions: assign({ + userToken: (_ctx) => undefined, + loginMethod: (_ctx) => undefined, + errorMessage: (_ctx) => undefined, + }) } } }, } }); -const checkToken = async (context, event): Promise => { +const openLogin = async () => { return new Promise(async (resolve, reject) => { try { - const accessToken = await getAccessToken(); - if (!accessToken) { - resolve(undefined); - return; + const status = await initiateInbuiltAuth(); + if (!status) { + aiStateService.send(AIMachineEventType.CANCEL_LOGIN); } - resolve({ accessToken, usageTokens: undefined }); + resolve(status); } catch (error) { reject(error); } }); }; -const logout = async (isUserLogout: boolean = true) => { - if (isUserLogout) { - const logoutURL = await getLogoutUrl(); - vscode.env.openExternal(vscode.Uri.parse(logoutURL)); +const validateApiKeyService = async (_context: AIMachineContext, event: any) => { + const apiKey = event.payload?.apiKey; + if (!apiKey) { + throw new Error('API key is required'); } - await extension.context.secrets.delete(ACCESS_TOKEN_SECRET_KEY); - await extension.context.secrets.delete(REFRESH_TOKEN_SECRET_KEY); + return await validateApiKey(apiKey, LoginMethod.ANTHROPIC_KEY); }; -const openLogin = async (context, event) => { - return new Promise(async (resolve, reject) => { - try { - const status = await initiateInbuiltAuth(); - if (!status) { - aiStateService.send(AIMachineEventType.CANCEL_LOGIN); - } - } catch (error) { - reject(error); - } - }); +const getTokenAfterAuth = async () => { + const result = await getAccessToken(); + if (!result) { + throw new Error('No authentication credentials found'); + } + return { token: result, loginMethod: LoginMethod.BI_INTEL }; }; -async function initiateInbuiltAuth() { - const callbackUri = await vscode.env.asExternalUri( - vscode.Uri.parse(`${vscode.env.uriScheme}://wso2.ballerina/signin`) - ); - const oauthURL = await getAuthUrl(callbackUri.toString()); - return vscode.env.openExternal(vscode.Uri.parse(oauthURL)); -} - const aiStateService = interpret(aiMachine.withConfig({ services: { checkToken: checkToken, openLogin: openLogin, + validateApiKey: validateApiKeyService, + getTokenAfterAuth: getTokenAfterAuth, }, actions: { logout: () => { @@ -206,10 +315,24 @@ const aiStateService = interpret(aiMachine.withConfig({ } })); +const isExtendedEvent = ( + arg: K | AIMachineSendableEvent +): arg is Extract => { + return typeof arg !== "string"; +}; + export const AIStateMachine = { initialize: () => aiStateService.start(), service: () => { return aiStateService; }, context: () => { return aiStateService.getSnapshot().context; }, state: () => { return aiStateService.getSnapshot().value as AIMachineStateValue; }, - sendEvent: (eventType: AIMachineEventType) => { aiStateService.send({ type: eventType }); } + sendEvent: ( + event: K | Extract + ) => { + if (isExtendedEvent(event)) { + aiStateService.send(event as AIMachineSendableEvent); + } else { + aiStateService.send({ type: event } as AIMachineSendableEvent); + } + } }; diff --git a/workspaces/ballerina/ballerina-extension/src/views/ai-panel/auth.ts b/workspaces/ballerina/ballerina-extension/src/views/ai-panel/auth.ts index d49b28d93dc..f1be64ab87d 100644 --- a/workspaces/ballerina/ballerina-extension/src/views/ai-panel/auth.ts +++ b/workspaces/ballerina/ballerina-extension/src/views/ai-panel/auth.ts @@ -17,10 +17,10 @@ */ import axios from 'axios'; -import { extension } from '../../BalExtensionContext'; import { AUTH_CLIENT_ID, AUTH_ORG, AUTH_REDIRECT_URL } from '../../features/ai/utils'; import { AIStateMachine } from './aiMachine'; -import { AIMachineEventType } from '@wso2/ballerina-core'; +import { AIMachineEventType, AuthCredentials, LoginMethod } from '@wso2/ballerina-core'; +import { storeAuthCredentials } from '../../utils/ai/auth'; export interface AccessToken { accessToken: string; @@ -42,7 +42,7 @@ export async function getAuthUrl(callbackUri: string): Promise { return `https://api.asgardeo.io/t/${AUTH_ORG}/oauth2/authorize?response_type=code&redirect_uri=${AUTH_REDIRECT_URL}&client_id=${AUTH_CLIENT_ID}&scope=openid%20email&state=${state}`; } -export function getLogoutUrl() : string { +export function getLogoutUrl(): string { return `https://api.asgardeo.io/t/${AUTH_ORG}/oidc/logout`; } @@ -67,24 +67,27 @@ export async function exchangeAuthCodeNew(authCode: string): Promise => { + return new Promise(async (resolve, reject) => { + try { + // Clean up any legacy tokens on initialization + await cleanupLegacyTokens(); + + const token = await getAccessToken(); + const loginMethod = await getLoginMethod(); + if (!token || !loginMethod) { + resolve(undefined); + return; + } + resolve({ token, loginMethod }); + } catch (error) { + reject(error); + } + }); +}; + +const cleanupLegacyTokens = async (): Promise => { + try { + const legacyToken = await extension.context.secrets.get(LEGACY_ACCESS_TOKEN_SECRET_KEY); + const legacyRefreshToken = await extension.context.secrets.get(LEGACY_REFRESH_TOKEN_SECRET_KEY); + + if (legacyToken || legacyRefreshToken) { + await extension.context.secrets.delete(LEGACY_ACCESS_TOKEN_SECRET_KEY); + await extension.context.secrets.delete(LEGACY_REFRESH_TOKEN_SECRET_KEY); + } + } catch (error) { + console.error('Error cleaning up legacy tokens:', error); + } +}; + +export const logout = async (isUserLogout: boolean = true) => { + // For user-initiated logout, check if we need to redirect to SSO logout + if (isUserLogout) { + const { token, loginMethod } = await checkToken(); + if (token && loginMethod === LoginMethod.BI_INTEL) { + const logoutURL = getLogoutUrl(); + vscode.env.openExternal(vscode.Uri.parse(logoutURL)); + } + } + + // Always clear stored credentials + await clearAuthCredentials(); +}; + +export async function initiateInbuiltAuth() { + const callbackUri = await vscode.env.asExternalUri( + vscode.Uri.parse(`${vscode.env.uriScheme}://wso2.ballerina/signin`) + ); + const oauthURL = await getAuthUrl(callbackUri.toString()); + return vscode.env.openExternal(vscode.Uri.parse(oauthURL)); +} + +export const validateApiKey = async (apiKey: string, loginMethod: LoginMethod): Promise => { + if (loginMethod !== LoginMethod.ANTHROPIC_KEY) { + throw new Error('This login method is not supported. Please use SSO login instead.'); + } + + if (!apiKey || !apiKey.startsWith('sk-') || apiKey.length < 20) { + throw new Error('Please enter a valid Anthropic API key.'); + } + + try { + const directAnthropic = createAnthropic({ + apiKey: apiKey, + baseURL: 'https://api.anthropic.com/v1' + }); + + await generateText({ + model: directAnthropic('claude-3-haiku-20240307'), + maxTokens: 1, + messages: [{ role: 'user', content: 'Hi' }] + }); + + // Store credentials + const credentials: AuthCredentials = { + loginMethod: LoginMethod.ANTHROPIC_KEY, + secrets: { + apiKey: apiKey + } + }; + await storeAuthCredentials(credentials); + + return { token: apiKey }; + + } catch (error) { + console.error('API key validation failed:', error); + if (error instanceof Error) { + if (error.message.includes('401') || error.message.includes('authentication')) { + throw new Error('Invalid API key. Please check your key and try again.'); + } else if (error.message.includes('403')) { + throw new Error('Your API key does not have access to Claude. Please check your Anthropic account.'); + } else if (error.message.includes('rate_limit')) { + throw new Error('Too many requests. Please wait a moment and try again.'); + } + throw new Error('Connection failed. Please check your internet connection and ensure your API key is valid.'); + } + throw new Error('Validation failed. Please try again.'); + } +}; diff --git a/workspaces/ballerina/ballerina-extension/src/views/visualizer/webview.ts b/workspaces/ballerina/ballerina-extension/src/views/visualizer/webview.ts index 4c5d18b3d07..197aae51331 100644 --- a/workspaces/ballerina/ballerina-extension/src/views/visualizer/webview.ts +++ b/workspaces/ballerina/ballerina-extension/src/views/visualizer/webview.ts @@ -27,6 +27,7 @@ import { StateMachine, updateView } from "../../stateMachine"; import { LANGUAGE } from "../../core"; import { CodeData, MACHINE_VIEW } from "@wso2/ballerina-core"; import { refreshDataMapper } from "../../rpc-managers/inline-data-mapper/utils"; +import { AiPanelWebview } from "../ai-panel/webview"; export class VisualizerWebview { public static currentPanel: VisualizerWebview | undefined; @@ -78,7 +79,7 @@ export class VisualizerWebview { if (dataMapperModified) { debouncedRefreshDataMapper(); - } else if (this._panel?.active && balFileModified) { + } else if ((this._panel?.active || AiPanelWebview.currentPanel?.getWebview()?.active) && balFileModified) { sendUpdateNotificationToWebview(); } else if (configTomlModified) { sendUpdateNotificationToWebview(true); diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_18/expected.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_18/expected.json new file mode 100644 index 00000000000..dcd2e211ae6 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_18/expected.json @@ -0,0 +1 @@ +{"student":"from var personItem in AItem.person\n select {\n id: personItem.id,\nfirstName: personItem.firstName,\nlastName: personItem.lastName,\nage: (personItem.age).toString()\n}"} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_18/mapping.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_18/mapping.json new file mode 100644 index 00000000000..17ea78cb443 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_18/mapping.json @@ -0,0 +1,32 @@ +{ + "student":{ + "id":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "AItem.person.id" + ] + }, + "firstName":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "AItem.person.firstName" + ] + }, + "lastName":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "AItem.person.lastName" + ] + }, + "age":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "AItem.person.age" + ] + } + } +} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_18/param_def.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_18/param_def.json new file mode 100644 index 00000000000..a6b07a4f482 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_18/param_def.json @@ -0,0 +1,199 @@ +{ + "inputs":{ + "AItem":{ + "person":{ + "id":{ + "type":"int", + "comment":"" + }, + "firstName":{ + "type":"string", + "comment":"" + }, + "lastName":{ + "type":"string", + "comment":"" + }, + "age":{ + "type":"int", + "comment":"" + }, + "country":{ + "type":"string", + "comment":"" + }, + "college":{ + "courses":{ + "id":{ + "type":"string", + "comment":"" + }, + "name":{ + "type":"string", + "comment":"" + }, + "credits":{ + "type":"decimal", + "comment":"" + } + } + } + } + } + }, + "output":{ + "student":{ + "id":{ + "type":"int", + "comment":"" + }, + "firstName":{ + "type":"string", + "comment":"" + }, + "lastName":{ + "type":"string", + "comment":"" + }, + "age":{ + "type":"string", + "comment":"" + } + } + }, + "inputMetadata":{ + "AItem":{ + "isArrayType":true, + "parameterName":"AItem", + "parameterType":"A[] ", + "type":"record[]", + "fields":{ + "person":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"person", + "fields":{ + "id":{ + "typeName":"int", + "type":"int", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "firstName":{ + "typeName":"string", + "type":"string", + "typeInstance":"firstName", + "nullable":false, + "optional":false + }, + "lastName":{ + "typeName":"string", + "type":"string", + "typeInstance":"lastName", + "nullable":false, + "optional":false + }, + "age":{ + "typeName":"int", + "type":"int", + "typeInstance":"age", + "nullable":false, + "optional":false + }, + "country":{ + "typeName":"string", + "type":"string", + "typeInstance":"country", + "nullable":false, + "optional":false + }, + "college":{ + "nullable":false, + "optional":false, + "type":"record", + "typeInstance":"college", + "typeName":"record", + "fields":{ + "courses":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"courses", + "fields":{ + "id":{ + "typeName":"string", + "type":"string", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "name":{ + "typeName":"string", + "type":"string", + "typeInstance":"name", + "nullable":false, + "optional":false + }, + "credits":{ + "typeName":"decimal", + "type":"decimal", + "typeInstance":"credits", + "nullable":false, + "optional":false + } + }, + "nullableArray":false, + "nullable":false + } + } + } + }, + "nullableArray":false, + "nullable":false + } + } + } + }, + "outputMetadata":{ + "student":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"student", + "fields":{ + "id":{ + "typeName":"int", + "type":"int", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "firstName":{ + "typeName":"string", + "type":"string", + "typeInstance":"firstName", + "nullable":false, + "optional":false + }, + "lastName":{ + "typeName":"string", + "type":"string", + "typeInstance":"lastName", + "nullable":false, + "optional":false + }, + "age":{ + "typeName":"string", + "type":"string", + "typeInstance":"age", + "nullable":false, + "optional":false + } + }, + "nullableArray":false, + "nullable":false + } + } +} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_19/expected.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_19/expected.json new file mode 100644 index 00000000000..4b04d4993dd --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_19/expected.json @@ -0,0 +1 @@ +{"items": "from var ItemItem in tr.Items.Item\n select {\n date: tr.Timestamp,\nproduct_id: ItemItem.ProductId,\nquantity: ItemItem.Quantity,\ntotal: tr.TotalAmount\n}"} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_19/mapping.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_19/mapping.json new file mode 100644 index 00000000000..f46ff1b3a9f --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_19/mapping.json @@ -0,0 +1,32 @@ +{ + "items":{ + "date":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "tr.Timestamp" + ] + }, + "product_id":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "tr.Items.Item.ProductId" + ] + }, + "quantity":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "tr.Items.Item.Quantity" + ] + }, + "total":{ + "operation":"DIRECT", + "targetType":"decimal", + "parameters":[ + "tr.TotalAmount" + ] + } + } +} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_19/param_def.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_19/param_def.json new file mode 100644 index 00000000000..1a8601a1310 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_19/param_def.json @@ -0,0 +1,198 @@ +{ + "inputs":{ + "tr":{ + "TransactionId":{ + "type":"string", + "comment":"" + }, + "StoreId":{ + "type":"int", + "comment":"" + }, + "Timestamp":{ + "type":"string", + "comment":"" + }, + "Items":{ + "Item":{ + "ProductId":{ + "type":"string", + "comment":"" + }, + "Name":{ + "type":"string", + "comment":"" + }, + "Quantity":{ + "type":"int", + "comment":"" + }, + "Price":{ + "type":"decimal", + "comment":"" + } + } + }, + "TotalAmount":{ + "type":"decimal", + "comment":"" + }, + "PaymentMethod":{ + "type":"string", + "comment":"" + } + } + }, + "output":{ + "items":{ + "date":{ + "type":"string", + "comment":"" + }, + "product_id":{ + "type":"string", + "comment":"" + }, + "quantity":{ + "type":"int", + "comment":"" + }, + "total":{ + "type":"decimal", + "comment":"" + } + } + }, + "inputMetadata":{ + "tr":{ + "isArrayType":false, + "parameterName":"tr", + "parameterType":"Transaction", + "type":"record", + "fields":{ + "TransactionId":{ + "typeName":"string", + "type":"string", + "typeInstance":"TransactionId", + "nullable":false, + "optional":false + }, + "StoreId":{ + "typeName":"int", + "type":"int", + "typeInstance":"StoreId", + "nullable":false, + "optional":false + }, + "Timestamp":{ + "typeName":"string", + "type":"string", + "typeInstance":"Timestamp", + "nullable":false, + "optional":false + }, + "Items":{ + "nullable":false, + "optional":false, + "type":"record", + "typeInstance":"Items", + "typeName":"record", + "fields":{ + "Item":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"Item", + "fields":{ + "ProductId":{ + "typeName":"string", + "type":"string", + "typeInstance":"ProductId", + "nullable":false, + "optional":false + }, + "Name":{ + "typeName":"string", + "type":"string", + "typeInstance":"Name", + "nullable":false, + "optional":false + }, + "Quantity":{ + "typeName":"int", + "type":"int", + "typeInstance":"Quantity", + "nullable":false, + "optional":false + }, + "Price":{ + "typeName":"decimal", + "type":"decimal", + "typeInstance":"Price", + "nullable":false, + "optional":false + } + }, + "nullableArray":false, + "nullable":false + } + } + }, + "TotalAmount":{ + "typeName":"decimal", + "type":"decimal", + "typeInstance":"TotalAmount", + "nullable":false, + "optional":false + }, + "PaymentMethod":{ + "typeName":"string", + "type":"string", + "typeInstance":"PaymentMethod", + "nullable":false, + "optional":false + } + } + } + }, + "outputMetadata":{ + "items":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"items", + "fields":{ + "date":{ + "typeName":"string", + "type":"string", + "typeInstance":"date", + "nullable":false, + "optional":false + }, + "product_id":{ + "typeName":"string", + "type":"string", + "typeInstance":"product_id", + "nullable":false, + "optional":false + }, + "quantity":{ + "typeName":"int", + "type":"int", + "typeInstance":"quantity", + "nullable":false, + "optional":false + }, + "total":{ + "typeName":"decimal", + "type":"decimal", + "typeInstance":"total", + "nullable":false, + "optional":false + } + }, + "nullableArray":false, + "nullable":false + } + } +} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_20/expected.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_20/expected.json new file mode 100644 index 00000000000..d9be65bccfd --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_20/expected.json @@ -0,0 +1 @@ +{"student": "from var personItem in AItem.person\n select {\n id: personItem.id,\nfirstName: personItem.firstName,\nlastName: personItem.lastName,\nage: (personItem.age).toString(),\ncourses: from var coursesItem in personItem.college.courses\n select {\n id: check int:fromString(coursesItem.id),\ncredits: check (coursesItem.credits).ensureType()\n}\n}"} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_20/mapping.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_20/mapping.json new file mode 100644 index 00000000000..f355045c198 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_20/mapping.json @@ -0,0 +1,48 @@ +{ + "student":{ + "id":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "AItem.person.id" + ] + }, + "firstName":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "AItem.person.firstName" + ] + }, + "lastName":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "AItem.person.lastName" + ] + }, + "age":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "AItem.person.age" + ] + }, + "courses":{ + "id":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "AItem.person.college.courses.id" + ] + }, + "credits":{ + "operation":"DIRECT", + "targetType":"float", + "parameters":[ + "AItem.person.college.courses.credits" + ] + } + } + } +} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_20/param_def.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_20/param_def.json new file mode 100644 index 00000000000..aeccce20be3 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_20/param_def.json @@ -0,0 +1,233 @@ +{ + "inputs":{ + "AItem":{ + "person":{ + "id":{ + "type":"int", + "comment":"" + }, + "firstName":{ + "type":"string", + "comment":"" + }, + "lastName":{ + "type":"string", + "comment":"" + }, + "age":{ + "type":"int", + "comment":"" + }, + "country":{ + "type":"string", + "comment":"" + }, + "college":{ + "courses":{ + "id":{ + "type":"string", + "comment":"" + }, + "name":{ + "type":"string", + "comment":"" + }, + "credits":{ + "type":"decimal", + "comment":"" + } + } + } + } + } + }, + "output":{ + "student":{ + "id":{ + "type":"int", + "comment":"" + }, + "firstName":{ + "type":"string", + "comment":"" + }, + "lastName":{ + "type":"string", + "comment":"" + }, + "age":{ + "type":"string", + "comment":"" + }, + "courses":{ + "id":{ + "type":"int", + "comment":"" + }, + "credits":{ + "type":"float", + "comment":"" + } + } + } + }, + "inputMetadata":{ + "AItem":{ + "isArrayType":true, + "parameterName":"AItem", + "parameterType":"A[] ", + "type":"record[]", + "fields":{ + "person":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"person", + "fields":{ + "id":{ + "typeName":"int", + "type":"int", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "firstName":{ + "typeName":"string", + "type":"string", + "typeInstance":"firstName", + "nullable":false, + "optional":false + }, + "lastName":{ + "typeName":"string", + "type":"string", + "typeInstance":"lastName", + "nullable":false, + "optional":false + }, + "age":{ + "typeName":"int", + "type":"int", + "typeInstance":"age", + "nullable":false, + "optional":false + }, + "country":{ + "typeName":"string", + "type":"string", + "typeInstance":"country", + "nullable":false, + "optional":false + }, + "college":{ + "nullable":false, + "optional":false, + "type":"record", + "typeInstance":"college", + "typeName":"record", + "fields":{ + "courses":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"courses", + "fields":{ + "id":{ + "typeName":"string", + "type":"string", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "name":{ + "typeName":"string", + "type":"string", + "typeInstance":"name", + "nullable":false, + "optional":false + }, + "credits":{ + "typeName":"decimal", + "type":"decimal", + "typeInstance":"credits", + "nullable":false, + "optional":false + } + }, + "nullableArray":false, + "nullable":false + } + } + } + }, + "nullableArray":false, + "nullable":false + } + } + } + }, + "outputMetadata":{ + "student":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"student", + "fields":{ + "id":{ + "typeName":"int", + "type":"int", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "firstName":{ + "typeName":"string", + "type":"string", + "typeInstance":"firstName", + "nullable":false, + "optional":false + }, + "lastName":{ + "typeName":"string", + "type":"string", + "typeInstance":"lastName", + "nullable":false, + "optional":false + }, + "age":{ + "typeName":"string", + "type":"string", + "typeInstance":"age", + "nullable":false, + "optional":false + }, + "courses":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"courses", + "fields":{ + "id":{ + "typeName":"int", + "type":"int", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "credits":{ + "typeName":"float", + "type":"float", + "typeInstance":"credits", + "nullable":false, + "optional":false + } + }, + "nullableArray":false, + "nullable":false + } + }, + "nullableArray":false, + "nullable":false + } + } +} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_21/expected.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_21/expected.json new file mode 100644 index 00000000000..5557adb1794 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_21/expected.json @@ -0,0 +1 @@ +{"student": "from var personItem in AItem.person\n select {\n id: personItem.id,\nfirstName: personItem.firstName,\nlastName: personItem.lastName,\nage: (personItem.age).toString(),\ncourses: from var coursesItem in personItem.college.courses\n select {\n id: check int:fromString(coursesItem.id),\ncredits: check (coursesItem.credits).ensureType(),\nprofessor: from var professorItem in coursesItem.professor\n select {\n id: professorItem.id,\nfirstName: professorItem.firstName,\ndepartment: from var departmentItem in professorItem.department\n select {\n departmentName: departmentItem.departmentName\n}\n}\n}\n}"} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_21/mapping.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_21/mapping.json new file mode 100644 index 00000000000..1da398e6658 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_21/mapping.json @@ -0,0 +1,73 @@ +{ + "student":{ + "id":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "AItem.person.id" + ] + }, + "firstName":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "AItem.person.firstName" + ] + }, + "lastName":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "AItem.person.lastName" + ] + }, + "age":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "AItem.person.age" + ] + }, + "courses":{ + "id":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "AItem.person.college.courses.id" + ] + }, + "credits":{ + "operation":"DIRECT", + "targetType":"float", + "parameters":[ + "AItem.person.college.courses.credits" + ] + }, + "professor":{ + "id":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "AItem.person.college.courses.professor.id" + ] + }, + "firstName":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "AItem.person.college.courses.professor.firstName" + ] + }, + "department":{ + "departmentName":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "AItem.person.college.courses.professor.department.departmentName" + ] + } + } + } + } + } +} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_21/param_def.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_21/param_def.json new file mode 100644 index 00000000000..9aab4a6b833 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_21/param_def.json @@ -0,0 +1,347 @@ +{ + "inputs":{ + "AItem":{ + "person":{ + "id":{ + "type":"int", + "comment":"" + }, + "firstName":{ + "type":"string", + "comment":"" + }, + "lastName":{ + "type":"string", + "comment":"" + }, + "age":{ + "type":"int", + "comment":"" + }, + "country":{ + "type":"string", + "comment":"" + }, + "college":{ + "courses":{ + "id":{ + "type":"string", + "comment":"" + }, + "name":{ + "type":"string", + "comment":"" + }, + "credits":{ + "type":"decimal", + "comment":"" + }, + "professor":{ + "id":{ + "type":"int", + "comment":"" + }, + "firstName":{ + "type":"string", + "comment":"" + }, + "department":{ + "departmentName":{ + "type":"string", + "comment":"" + } + } + } + } + } + } + } + }, + "output":{ + "student":{ + "id":{ + "type":"int", + "comment":"" + }, + "firstName":{ + "type":"string", + "comment":"" + }, + "lastName":{ + "type":"string", + "comment":"" + }, + "age":{ + "type":"string", + "comment":"" + }, + "courses":{ + "id":{ + "type":"int", + "comment":"" + }, + "credits":{ + "type":"float", + "comment":"" + }, + "professor":{ + "id":{ + "type":"int", + "comment":"" + }, + "firstName":{ + "type":"string", + "comment":"" + }, + "department":{ + "departmentName":{ + "type":"string", + "comment":"" + } + } + } + } + } + }, + "inputMetadata":{ + "AItem":{ + "isArrayType":true, + "parameterName":"AItem", + "parameterType":"A[] ", + "type":"record[]", + "fields":{ + "person":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"person", + "fields":{ + "id":{ + "typeName":"int", + "type":"int", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "firstName":{ + "typeName":"string", + "type":"string", + "typeInstance":"firstName", + "nullable":false, + "optional":false + }, + "lastName":{ + "typeName":"string", + "type":"string", + "typeInstance":"lastName", + "nullable":false, + "optional":false + }, + "age":{ + "typeName":"int", + "type":"int", + "typeInstance":"age", + "nullable":false, + "optional":false + }, + "country":{ + "typeName":"string", + "type":"string", + "typeInstance":"country", + "nullable":false, + "optional":false + }, + "college":{ + "nullable":false, + "optional":false, + "type":"record", + "typeInstance":"college", + "typeName":"record", + "fields":{ + "courses":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"courses", + "fields":{ + "id":{ + "typeName":"string", + "type":"string", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "name":{ + "typeName":"string", + "type":"string", + "typeInstance":"name", + "nullable":false, + "optional":false + }, + "credits":{ + "typeName":"decimal", + "type":"decimal", + "typeInstance":"credits", + "nullable":false, + "optional":false + }, + "professor":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"professor", + "fields":{ + "id":{ + "typeName":"int", + "type":"int", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "firstName":{ + "typeName":"string", + "type":"string", + "typeInstance":"firstName", + "nullable":false, + "optional":false + }, + "department":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"department", + "fields":{ + "departmentName":{ + "typeName":"string", + "type":"string", + "typeInstance":"departmentName", + "nullable":false, + "optional":false + } + }, + "nullableArray":false, + "nullable":false + } + }, + "nullableArray":false, + "nullable":false + } + }, + "nullableArray":false, + "nullable":false + } + } + } + }, + "nullableArray":false, + "nullable":false + } + } + } + }, + "outputMetadata":{ + "student":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"student", + "fields":{ + "id":{ + "typeName":"int", + "type":"int", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "firstName":{ + "typeName":"string", + "type":"string", + "typeInstance":"firstName", + "nullable":false, + "optional":false + }, + "lastName":{ + "typeName":"string", + "type":"string", + "typeInstance":"lastName", + "nullable":false, + "optional":false + }, + "age":{ + "typeName":"string", + "type":"string", + "typeInstance":"age", + "nullable":false, + "optional":false + }, + "courses":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"courses", + "fields":{ + "id":{ + "typeName":"int", + "type":"int", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "credits":{ + "typeName":"float", + "type":"float", + "typeInstance":"credits", + "nullable":false, + "optional":false + }, + "professor":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"professor", + "fields":{ + "id":{ + "typeName":"int", + "type":"int", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "firstName":{ + "typeName":"string", + "type":"string", + "typeInstance":"firstName", + "nullable":false, + "optional":false + }, + "department":{ + "optional":false, + "typeName":"record[]", + "type":"record[]", + "typeInstance":"department", + "fields":{ + "departmentName":{ + "typeName":"string", + "type":"string", + "typeInstance":"departmentName", + "nullable":false, + "optional":false + } + }, + "nullableArray":false, + "nullable":false + } + }, + "nullableArray":false, + "nullable":false + } + }, + "nullableArray":false, + "nullable":false + } + }, + "nullableArray":false, + "nullable":false + } + } +} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_22/expected.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_22/expected.json new file mode 100644 index 00000000000..4128541717b --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_22/expected.json @@ -0,0 +1 @@ +{"id":"post.id","description":"post.description","author":"author","meta":"{\n tags: re `,`.split(post.tags),\ncategory: post.category,\ncreatedTimeStamp: {\n utcOffset: {\n hours: post.createdTimeStamp.utcOffset?.hours?:0,\nminutes: post.createdTimeStamp.utcOffset?.minutes?:0,\nseconds: post.createdTimeStamp.utcOffset?.seconds \n},\ntimeAbbrev: post.createdTimeStamp.timeAbbrev,\nwhich: post.createdTimeStamp.which,\ndayOfWeek: post.createdTimeStamp.dayOfWeek,\nyear: post.createdTimeStamp.year,\nmonth: post.createdTimeStamp.month,\nday: post.createdTimeStamp.day,\nhour: post.createdTimeStamp.hour,\nminute: post.createdTimeStamp.minute,\nsecond: post.createdTimeStamp.second \n} \n}"} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_22/mapping.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_22/mapping.json new file mode 100644 index 00000000000..0665f359856 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_22/mapping.json @@ -0,0 +1,128 @@ +{ + "id":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "post.id" + ] + }, + "description":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "post.description" + ] + }, + "author":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "author.author" + ] + }, + "meta":{ + "tags":{ + "operation":"SPLIT", + "targetType":"string[]", + "parameters":[ + "post.tags", + "," + ] + }, + "category":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "post.category" + ] + }, + "createdTimeStamp":{ + "utcOffset":{ + "hours":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "post.createdTimeStamp.utcOffset.hours" + ] + }, + "minutes":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "post.createdTimeStamp.utcOffset.minutes" + ] + }, + "seconds":{ + "operation":"DIRECT", + "targetType":"decimal", + "parameters":[ + "post.createdTimeStamp.utcOffset.seconds" + ] + } + }, + "timeAbbrev":{ + "operation":"DIRECT", + "targetType":"string", + "parameters":[ + "post.createdTimeStamp.timeAbbrev" + ] + }, + "which":{ + "operation":"DIRECT", + "targetType":"0|1", + "parameters":[ + "post.createdTimeStamp.which" + ] + }, + "dayOfWeek":{ + "operation":"DIRECT", + "targetType":"0|1|2|3|4|5|6", + "parameters":[ + "post.createdTimeStamp.dayOfWeek" + ] + }, + "year":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "post.createdTimeStamp.year" + ] + }, + "month":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "post.createdTimeStamp.month" + ] + }, + "day":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "post.createdTimeStamp.day" + ] + }, + "hour":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "post.createdTimeStamp.hour" + ] + }, + "minute":{ + "operation":"DIRECT", + "targetType":"int", + "parameters":[ + "post.createdTimeStamp.minute" + ] + }, + "second":{ + "operation":"DIRECT", + "targetType":"decimal", + "parameters":[ + "post.createdTimeStamp.second" + ] + } + } + } +} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_22/param_def.json b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_22/param_def.json new file mode 100644 index 00000000000..829d6f37393 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/datamapper/resources/Complex/case_22/param_def.json @@ -0,0 +1,593 @@ +{ + "inputs":{ + "post":{ + "id":{ + "type":"int", + "comment":"" + }, + "description":{ + "type":"string", + "comment":"" + }, + "tags":{ + "type":"string", + "comment":"" + }, + "category":{ + "type":"string", + "comment":"" + }, + "createdTimeStamp":{ + "utcOffset":{ + "hours":{ + "type":"int", + "comment":"" + }, + "minutes":{ + "type":"int", + "comment":"" + }, + "seconds":{ + "type":"decimal", + "comment":"" + } + }, + "timeAbbrev":{ + "type":"string", + "comment":"" + }, + "which":{ + "type":"0|1", + "comment":"" + }, + "dayOfWeek":{ + "type":"0|1|2|3|4|5|6", + "comment":"" + }, + "year":{ + "type":"int", + "comment":"" + }, + "month":{ + "type":"int", + "comment":"" + }, + "day":{ + "type":"int", + "comment":"" + }, + "hour":{ + "type":"int", + "comment":"" + }, + "minute":{ + "type":"int", + "comment":"" + }, + "second":{ + "type":"decimal", + "comment":"" + } + } + }, + "author":{ + "author":{ + "type":"string", + "comment":"" + } + } + }, + "output":{ + "id":{ + "type":"int", + "comment":"" + }, + "description":{ + "type":"string", + "comment":"" + }, + "author":{ + "type":"string", + "comment":"" + }, + "meta":{ + "tags":{ + "type":"string[]", + "comment":"" + }, + "category":{ + "type":"string", + "comment":"" + }, + "createdTimeStamp":{ + "utcOffset":{ + "hours":{ + "type":"int", + "comment":"" + }, + "minutes":{ + "type":"int", + "comment":"" + }, + "seconds":{ + "type":"decimal", + "comment":"" + } + }, + "timeAbbrev":{ + "type":"string", + "comment":"" + }, + "which":{ + "type":"0|1", + "comment":"" + }, + "dayOfWeek":{ + "type":"0|1|2|3|4|5|6", + "comment":"" + }, + "year":{ + "type":"int", + "comment":"" + }, + "month":{ + "type":"int", + "comment":"" + }, + "day":{ + "type":"int", + "comment":"" + }, + "hour":{ + "type":"int", + "comment":"" + }, + "minute":{ + "type":"int", + "comment":"" + }, + "second":{ + "type":"decimal", + "comment":"" + } + } + } + }, + "inputMetadata":{ + "post":{ + "isArrayType":false, + "parameterName":"post", + "parameterType":"Post", + "type":"record", + "fields":{ + "id":{ + "typeName":"int", + "type":"int", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "description":{ + "typeName":"string", + "type":"string", + "typeInstance":"description", + "nullable":false, + "optional":false + }, + "tags":{ + "typeName":"string", + "type":"string", + "typeInstance":"tags", + "nullable":false, + "optional":false + }, + "category":{ + "typeName":"string", + "type":"string", + "typeInstance":"category", + "nullable":false, + "optional":false + }, + "createdTimeStamp":{ + "nullable":false, + "optional":false, + "type":"record", + "typeInstance":"createdTimeStamp", + "typeName":"record", + "fields":{ + "utcOffset":{ + "optional":true, + "typeName":"readonly&record", + "type":"intersection", + "typeInstance":"utcOffset", + "members":{ + "hours":{ + "typeName":"int", + "type":"int", + "typeInstance":"hours", + "nullable":false, + "optional":false + }, + "minutes":{ + "typeName":"int", + "type":"int", + "typeInstance":"minutes", + "nullable":false, + "optional":false + }, + "seconds":{ + "typeName":"decimal", + "type":"decimal", + "typeInstance":"seconds", + "nullable":false, + "optional":true + } + }, + "nullable":false + }, + "timeAbbrev":{ + "typeName":"string", + "type":"string", + "typeInstance":"timeAbbrev", + "nullable":false, + "optional":true + }, + "which":{ + "optional":true, + "typeName":"0|1", + "type":"union", + "typeInstance":"which", + "members":{ + "0":{ + "typeName":"0", + "type":"0", + "typeInstance":"0", + "nullable":false, + "optional":false + }, + "1":{ + "typeName":"1", + "type":"1", + "typeInstance":"1", + "nullable":false, + "optional":false + } + }, + "nullable":false + }, + "dayOfWeek":{ + "optional":true, + "typeName":"0|1|2|3|4|5|6", + "type":"union", + "typeInstance":"dayOfWeek", + "members":{ + "0":{ + "typeName":"0", + "type":"0", + "typeInstance":"0", + "nullable":false, + "optional":false + }, + "1":{ + "typeName":"1", + "type":"1", + "typeInstance":"1", + "nullable":false, + "optional":false + }, + "2":{ + "typeName":"2", + "type":"2", + "typeInstance":"2", + "nullable":false, + "optional":false + }, + "3":{ + "typeName":"3", + "type":"3", + "typeInstance":"3", + "nullable":false, + "optional":false + }, + "4":{ + "typeName":"4", + "type":"4", + "typeInstance":"4", + "nullable":false, + "optional":false + }, + "5":{ + "typeName":"5", + "type":"5", + "typeInstance":"5", + "nullable":false, + "optional":false + }, + "6":{ + "typeName":"6", + "type":"6", + "typeInstance":"6", + "nullable":false, + "optional":false + } + }, + "nullable":false + }, + "year":{ + "typeName":"int", + "type":"int", + "typeInstance":"year", + "nullable":false, + "optional":false + }, + "month":{ + "typeName":"int", + "type":"int", + "typeInstance":"month", + "nullable":false, + "optional":false + }, + "day":{ + "typeName":"int", + "type":"int", + "typeInstance":"day", + "nullable":false, + "optional":false + }, + "hour":{ + "typeName":"int", + "type":"int", + "typeInstance":"hour", + "nullable":false, + "optional":false + }, + "minute":{ + "typeName":"int", + "type":"int", + "typeInstance":"minute", + "nullable":false, + "optional":false + }, + "second":{ + "typeName":"decimal", + "type":"decimal", + "typeInstance":"second", + "nullable":false, + "optional":true + } + } + } + } + }, + "author":{ + "isArrayType":false, + "parameterName":"author", + "parameterType":"string ", + "type":"record", + "fields":{ + "author":{ + "typeName":"string", + "type":"string", + "typeInstance":"author", + "nullable":false, + "optional":false + } + } + } + }, + "outputMetadata":{ + "id":{ + "typeName":"int", + "type":"int", + "typeInstance":"id", + "nullable":false, + "optional":false + }, + "description":{ + "typeName":"string", + "type":"string", + "typeInstance":"description", + "nullable":false, + "optional":false + }, + "author":{ + "typeName":"string", + "type":"string", + "typeInstance":"author", + "nullable":false, + "optional":false + }, + "meta":{ + "nullable":false, + "optional":false, + "type":"record", + "typeInstance":"meta", + "typeName":"record", + "fields":{ + "tags":{ + "typeName":"string[]", + "type":"string[]", + "typeInstance":"tags", + "nullable":false, + "optional":false + }, + "category":{ + "typeName":"string", + "type":"string", + "typeInstance":"category", + "nullable":false, + "optional":false + }, + "createdTimeStamp":{ + "nullable":false, + "optional":false, + "type":"record", + "typeInstance":"createdTimeStamp", + "typeName":"record", + "fields":{ + "utcOffset":{ + "optional":true, + "typeName":"readonly&record", + "type":"intersection", + "typeInstance":"utcOffset", + "members":{ + "hours":{ + "typeName":"int", + "type":"int", + "typeInstance":"hours", + "nullable":false, + "optional":false + }, + "minutes":{ + "typeName":"int", + "type":"int", + "typeInstance":"minutes", + "nullable":false, + "optional":false + }, + "seconds":{ + "typeName":"decimal", + "type":"decimal", + "typeInstance":"seconds", + "nullable":false, + "optional":true + } + }, + "nullable":false + }, + "timeAbbrev":{ + "typeName":"string", + "type":"string", + "typeInstance":"timeAbbrev", + "nullable":false, + "optional":true + }, + "which":{ + "optional":true, + "typeName":"0|1", + "type":"union", + "typeInstance":"which", + "members":{ + "0":{ + "typeName":"0", + "type":"0", + "typeInstance":"0", + "nullable":false, + "optional":false + }, + "1":{ + "typeName":"1", + "type":"1", + "typeInstance":"1", + "nullable":false, + "optional":false + } + }, + "nullable":false + }, + "dayOfWeek":{ + "optional":true, + "typeName":"0|1|2|3|4|5|6", + "type":"union", + "typeInstance":"dayOfWeek", + "members":{ + "0":{ + "typeName":"0", + "type":"0", + "typeInstance":"0", + "nullable":false, + "optional":false + }, + "1":{ + "typeName":"1", + "type":"1", + "typeInstance":"1", + "nullable":false, + "optional":false + }, + "2":{ + "typeName":"2", + "type":"2", + "typeInstance":"2", + "nullable":false, + "optional":false + }, + "3":{ + "typeName":"3", + "type":"3", + "typeInstance":"3", + "nullable":false, + "optional":false + }, + "4":{ + "typeName":"4", + "type":"4", + "typeInstance":"4", + "nullable":false, + "optional":false + }, + "5":{ + "typeName":"5", + "type":"5", + "typeInstance":"5", + "nullable":false, + "optional":false + }, + "6":{ + "typeName":"6", + "type":"6", + "typeInstance":"6", + "nullable":false, + "optional":false + } + }, + "nullable":false + }, + "year":{ + "typeName":"int", + "type":"int", + "typeInstance":"year", + "nullable":false, + "optional":false + }, + "month":{ + "typeName":"int", + "type":"int", + "typeInstance":"month", + "nullable":false, + "optional":false + }, + "day":{ + "typeName":"int", + "type":"int", + "typeInstance":"day", + "nullable":false, + "optional":false + }, + "hour":{ + "typeName":"int", + "type":"int", + "typeInstance":"hour", + "nullable":false, + "optional":false + }, + "minute":{ + "typeName":"int", + "type":"int", + "typeInstance":"minute", + "nullable":false, + "optional":false + }, + "second":{ + "typeName":"decimal", + "type":"decimal", + "typeInstance":"second", + "nullable":false, + "optional":true + } + } + } + } + } + } +} diff --git a/workspaces/ballerina/ballerina-extension/test/ai/evals/code/code.test.ts b/workspaces/ballerina/ballerina-extension/test/ai/evals/code/code.test.ts new file mode 100644 index 00000000000..f8c54a3dcf1 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/ai/evals/code/code.test.ts @@ -0,0 +1,241 @@ +// 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 path from "path"; +import { generateCodeCore } from "../../../../src/features/ai/service/code/code"; +import * as assert from "assert"; +import * as fs from "fs"; +import { ChatNotify, GenerateCodeRequest } from "@wso2/ballerina-core"; +import { CopilotEventHandler } from "../../../../src/features/ai/service/event"; +import { commands, Uri, workspace } from "vscode"; + +const RESOURCES_PATH = path.resolve(__dirname, "../../../../../test/ai/evals/code/resources"); + +function getTestFolders(dirPath: string): string[] { + return fs.readdirSync(dirPath).filter((file) => fs.lstatSync(path.join(dirPath, file)).isDirectory()); +} + +// Test event handler that captures events for testing +interface TestEventResult { + events: ChatNotify[]; + fullContent: string; + hasStarted: boolean; + hasCompleted: boolean; + errorOccurred: string | null; + diagnostics: any[]; + messages: any[]; +} + +function createTestEventHandler(): { handler: CopilotEventHandler; getResult: () => TestEventResult } { + const events: ChatNotify[] = []; + let fullContent = ""; + let hasStarted = false; + let hasCompleted = false; + let errorOccurred: string | null = null; + const diagnostics: any[] = []; + const messages: any[] = []; + + const handler: CopilotEventHandler = (event: ChatNotify) => { + events.push(event); + + switch (event.type) { + case "start": + hasStarted = true; + console.log("Code generation started"); + break; + case "content_block": + fullContent += event.content; + console.log("Content block received:", event.content.substring(0, 100) + "..."); + break; + case "content_replace": + fullContent = event.content; + console.log("Content replaced, new length:", event.content.length); + break; + case "error": + errorOccurred = event.content; + console.error("Error occurred during code generation:", event.content); + break; + case "stop": + hasCompleted = true; + console.log("Code generation completed"); + console.log("Final content length:", fullContent.length); + console.log("Total events received:", events.length); + break; + case "intermediary_state": + console.log("Intermediary state:", event.state); + break; + case "messages": + console.log("Messages received:", event.messages?.length || 0); + messages.push(...(event.messages || [])); + break; + case "diagnostics": + console.log("Diagnostics received:", event.diagnostics?.length || 0); + diagnostics.push(...(event.diagnostics || [])); + break; + default: + console.warn(`Unhandled event type: ${(event as any).type}`); + break; + } + }; + + const getResult = (): TestEventResult => ({ + events, + fullContent, + hasStarted, + hasCompleted, + errorOccurred, + diagnostics, + messages, + }); + + return { handler, getResult }; +} + +suite.skip("AI Code Generator Tests Suite", () => { + + // Close all the open workspace folders before running the test + suiteSetup(async function () { + await commands.executeCommand("workbench.action.closeAllEditors"); + }); + + test("basic workspace test", async function () { + const PROJECT_ROOT = "/Users/anjanash/Desktop/Office/OpenSource/vscode-extensions/workspaces/ballerina/ballerina-extension/test/data/aiTest"; + + const success = workspace.updateWorkspaceFolders(0, 0, { + uri: Uri.file(PROJECT_ROOT), + }); + + await wait(2000); + + console.log("Workspace folders after update:", workspace.workspaceFolders?.length || 0); + const { handler: testEventHandler, getResult } = createTestEventHandler(); + + await wait(15000); + const params: GenerateCodeRequest = { + usecase: "write a hello world", + chatHistory: [], + operationType: "CODE_GENERATION", + fileAttachmentContents: [], + }; + + try { + await commands.executeCommand('ballerina.test.ai.generateCodeCore', params, testEventHandler); + + const result = getResult(); + + // Basic assertions + assert.strictEqual(result.hasStarted, true, "Code generation should have started"); + assert.strictEqual(result.errorOccurred, null, "No errors should have occurred"); + assert.ok(result.events.length > 0, "Should have received events"); + + console.log(`Test completed for folder: ${PROJECT_ROOT}`); + console.log(`Generated content length: ${result.fullContent.length}`); + console.log(`Total events: ${result.events.length}`); + + //TODO: Take the response. Add to files, then compile the project. Get diagnostics + // + } catch (error) { + console.error(`Test failed for folder ${PROJECT_ROOT}:`, error); + throw error; + } + + console.log("Test completed successfully"); + }); +}); + +// suite("AI Code Generator Tests Suite", () => { +// // let langClient: ExtendedLangClient; + +// // suiteSetup(async (done): Promise => { +// // langClient = new ExtendedLangClient( +// // 'ballerina-vscode', +// // 'Ballerina LS Client', +// // getServerOptions(ballerinaExtInstance), +// // { documentSelector: [{ scheme: 'file', language: 'ballerina' }] }, +// // undefined, +// // false +// // ); +// // await langClient.start(); +// // await langClient.registerExtendedAPICapabilities(); +// // done(); +// // }); + +// function runTests(basePath: string) { +// const testFolders = getTestFolders(basePath); + +// testFolders.forEach((folder) => { +// const folderPath = path.join(basePath, folder); + +// suite(`Group: ${folder}`, () => { +// const subFolders = getTestFolders(folderPath); + +// test("should generate code successfully", async () => { +// const { handler: testEventHandler, getResult } = createTestEventHandler(); +// const PROJECT_ROOT = "/Users/wso2/repos/ballerina-copilot/evals/project_samples/fresh_bi_package"; + +// // Add workspace folder programmatically +// const success = workspace.updateWorkspaceFolders( +// workspace.workspaceFolders ? workspace.workspaceFolders.length : 0, +// 0, +// { uri: Uri.file(PROJECT_ROOT) } +// ); + +// if (!success) { +// throw new Error("Failed to add workspace folder"); +// } + +// // Wait for workspace to be updated +// await wait(2000); + +// const uri = Uri.file(path.join(PROJECT_ROOT, "main.bal").toString()); +// await commands.executeCommand("vscode.open", uri); +// await workspace.openTextDocument(uri); + +// await wait(15000); +// const params: GenerateCodeRequest = { +// usecase: "write a hello world", +// chatHistory: [], +// operationType: "CODE_GENERATION", +// fileAttachmentContents: [], +// }; + +// try { +// await generateCodeCore(params, testEventHandler); + +// const result = getResult(); + +// // Basic assertions +// assert.strictEqual(result.hasStarted, true, "Code generation should have started"); +// assert.strictEqual(result.errorOccurred, null, "No errors should have occurred"); +// assert.ok(result.events.length > 0, "Should have received events"); + +// console.log(`Test completed for folder: ${folder}`); +// console.log(`Generated content length: ${result.fullContent.length}`); +// console.log(`Total events: ${result.events.length}`); +// } catch (error) { +// console.error(`Test failed for folder ${folder}:`, error); +// throw error; +// } +// }); +// }); +// }); +// } +// runTests(RESOURCES_PATH); +// }); + +function wait(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/workspaces/ballerina/ballerina-extension/test/data/aiTest/Ballerina.toml b/workspaces/ballerina/ballerina-extension/test/data/aiTest/Ballerina.toml new file mode 100644 index 00000000000..ced56415872 --- /dev/null +++ b/workspaces/ballerina/ballerina-extension/test/data/aiTest/Ballerina.toml @@ -0,0 +1,8 @@ +[package] +org = "wso2" +name = "aiTest" +version = "0.1.0" +distribution = "2201.13.0-m2" + +[build-options] +observabilityIncluded = true diff --git a/workspaces/ballerina/ballerina-extension/test/data/aiTest/main.bal b/workspaces/ballerina/ballerina-extension/test/data/aiTest/main.bal new file mode 100644 index 00000000000..e69de29bb2d diff --git a/workspaces/ballerina/ballerina-extension/test/data/string.bal b/workspaces/ballerina/ballerina-extension/test/data/string.bal index 362b5ca8fc8..60d902b47f8 100644 --- a/workspaces/ballerina/ballerina-extension/test/data/string.bal +++ b/workspaces/ballerina/ballerina-extension/test/data/string.bal @@ -1 +1 @@ -string st = "sample giga string"; +string st = "saample giga string"; diff --git a/workspaces/ballerina/ballerina-extension/test/editor/editor-support.test.ts b/workspaces/ballerina/ballerina-extension/test/editor/editor-support.test.ts index 178599ffb77..fc6ef47957e 100644 --- a/workspaces/ballerina/ballerina-extension/test/editor/editor-support.test.ts +++ b/workspaces/ballerina/ballerina-extension/test/editor/editor-support.test.ts @@ -23,11 +23,6 @@ import { assert } from "chai"; const PROJECT_ROOT = join(__dirname, '..', '..', '..', 'test', 'data'); suite("Editor Tests", function () { - suiteTeardown((done) => { - commands.executeCommand('ballerina.stopLangServer'); - done(); - }); - test("Test string splitter", function (done): void { const uri = Uri.file(join(PROJECT_ROOT, 'string.bal')); @@ -40,7 +35,10 @@ suite("Editor Tests", function () { }); await wait(5000); - assert.strictEqual(editor.document.getText(), 'string st = "sample " +\n"giga string";\n', "Invalid string splitter"); + const actualText = editor.document.getText(); + console.log('Actual text:', JSON.stringify(actualText)); + console.log('Expected text:', JSON.stringify('string st = "saample" +\n" giga string";\n')); + assert.strictEqual(actualText, 'string st = "saample" +\n" giga string";\n', "Invalid string splitter"); done(); }); }); diff --git a/workspaces/ballerina/ballerina-extension/test/lib/index.ts b/workspaces/ballerina/ballerina-extension/test/lib/index.ts index 75eecfc3083..f493725fd35 100644 --- a/workspaces/ballerina/ballerina-extension/test/lib/index.ts +++ b/workspaces/ballerina/ballerina-extension/test/lib/index.ts @@ -16,11 +16,13 @@ * under the License. */ -import { downloadAndUnzipVSCode } from '@vscode/test-electron'; +import { downloadAndUnzipVSCode, resolveCliPathFromVSCodeExecutablePath } from '@vscode/test-electron'; import { defaultCachePath } from '@vscode/test-electron/out/download'; import { TestOptions } from '@vscode/test-electron/out/runTest'; +import { killTree } from '@vscode/test-electron/out/util'; import * as cp from 'child_process'; import * as path from 'path'; +const packageJson = require('../../../package.json') /** * Run VS Code extension test @@ -28,6 +30,18 @@ import * as path from 'path'; * @returns The exit code of the command to launch VS Code extension test */ export async function runTests(options: TestOptions): Promise { + if (!options.vscodeExecutablePath) { + options.vscodeExecutablePath = await downloadAndUnzipVSCode(); + const [cli, ...args] = resolveCliPathFromVSCodeExecutablePath(options.vscodeExecutablePath) + if (packageJson.extensionDependencies) { + for (const extensionId of packageJson.extensionDependencies) { + cp.spawnSync(cli, [...args, '--install-extension', extensionId], { + encoding: 'utf-8', + stdio: 'inherit', + }) + } + } + } if (!options.vscodeExecutablePath) { options.vscodeExecutablePath = await downloadAndUnzipVSCode(options); } @@ -35,17 +49,18 @@ export async function runTests(options: TestOptions): Promise { let args = [ // https://github.com/microsoft/vscode/issues/84238 '--no-sandbox', + // https://github.com/microsoft/vscode-test/issues/221 + '--disable-gpu-sandbox', // https://github.com/microsoft/vscode-test/issues/120 '--disable-updates', '--skip-welcome', '--skip-release-notes', '--disable-workspace-trust', - '--extensionTestsPath=' + options.extensionTestsPath + '--extensionTestsPath=' + options.extensionTestsPath, ]; if (Array.isArray(options.extensionDevelopmentPath)) { - args.push(...options.extensionDevelopmentPath.map(devPath => - `--extensionDevelopmentPath=${devPath}`)); + args.push(...options.extensionDevelopmentPath.map((devPath) => `--extensionDevelopmentPath=${devPath}`)); } else { args.push(`--extensionDevelopmentPath=${options.extensionDevelopmentPath}`); } @@ -80,6 +95,8 @@ function hasArg(argName: string, argList: readonly string[]) { return argList.some(a => a === `--${argName}` || a.startsWith(`--${argName}=`)); } +const SIGINT = 'SIGINT'; + async function innerRunTests( executable: string, args: string[], @@ -87,17 +104,33 @@ async function innerRunTests( [key: string]: string | undefined; } ): Promise { - return new Promise((resolve, reject) => { - const fullEnv = Object.assign({}, process.env, testRunnerEnv); - const cmd = cp.spawn(executable, args, { env: fullEnv }); + const fullEnv = Object.assign({}, process.env, testRunnerEnv); + const shell = process.platform === 'win32'; + const cmd = cp.spawn(shell ? `"${executable}"` : executable, args, { env: fullEnv, shell }); + + let exitRequested = false; + const ctrlc1 = () => { + process.removeListener(SIGINT, ctrlc1); + process.on(SIGINT, ctrlc2); + console.log('Closing VS Code gracefully. Press Ctrl+C to force close.'); + exitRequested = true; + cmd.kill(SIGINT); // this should cause the returned promise to resolve + }; + + const ctrlc2 = () => { + console.log('Closing VS Code forcefully.'); + process.removeListener(SIGINT, ctrlc2); + exitRequested = true; + killTree(cmd.pid!, true); + }; + + const prom = new Promise((resolve, reject) => { + if (cmd.pid) { + process.on(SIGINT, ctrlc1); + } - cmd.stdout.on('data', function (data) { - console.log(data.toString()); - }); - - cmd.stderr.on('data', function (data) { - console.error(data.toString()); - }); + cmd.stdout.on('data', (d) => process.stdout.write(d)); + cmd.stderr.on('data', (d) => process.stderr.write(d)); cmd.on('error', function (data) { console.log('Test error: ' + data.toString()); @@ -111,18 +144,40 @@ async function innerRunTests( finished = true; console.log(`Exit code: ${code ?? signal}`); - if (code === null) { - reject(signal); - } else if (code !== 0) { - reject('Failed'); + // fix: on windows, it seems like these descriptors can linger for an + // indeterminate amount of time, causing the process to hang. + cmd.stdout.destroy(); + cmd.stderr.destroy(); + + if (code !== 0) { + reject(new TestRunFailedError(code ?? undefined, signal ?? undefined)); } else { - console.log('Done\n'); - resolve(code ?? -1); + resolve(0); } } cmd.on('close', onProcessClosed); - cmd.on('exit', onProcessClosed); }); -} \ No newline at end of file + + let code: number; + try { + code = await prom; + } finally { + process.removeListener(SIGINT, ctrlc1); + process.removeListener(SIGINT, ctrlc2); + } + + // exit immediately if we handled a SIGINT and no one else did + if (exitRequested && process.listenerCount(SIGINT) === 0) { + process.exit(1); + } + + return code; +} + +export class TestRunFailedError extends Error { + constructor(public readonly code: number | undefined, public readonly signal: string | undefined) { + super(signal ? `Test run terminated with signal ${signal}` : `Test run failed with code ${code}`); + } +} diff --git a/workspaces/ballerina/ballerina-extension/test/runTest.ts b/workspaces/ballerina/ballerina-extension/test/runTest.ts index 0ead7f70cc1..c8c09170955 100644 --- a/workspaces/ballerina/ballerina-extension/test/runTest.ts +++ b/workspaces/ballerina/ballerina-extension/test/runTest.ts @@ -17,15 +17,33 @@ */ import * as path from 'path'; import { runTests } from './lib/index'; +const dotenv = require('dotenv'); +const { createEnvDefinePlugin } = require('../../../../../common/scripts/env-webpack-helper'); async function go() { try { const extensionDevelopmentPath = path.resolve(__dirname, '../../'); const extensionTestsPath = path.resolve(__dirname, '.'); + const envPath = path.resolve(__dirname, '../../.env'); + const env = dotenv.config({ path: envPath }).parsed; + console.log("Fetching values for environment variables..."); + const { envKeys, missingVars } = createEnvDefinePlugin(env); + if (missingVars.length > 0) { + console.warn( + '\n⚠️ Environment Variable Configuration Warning:\n' + + `Missing required environment variables: ${missingVars.join(', ')}\n` + + `Please provide values in either .env file or runtime environment.\n` + ); + } + await runTests({ extensionDevelopmentPath, - extensionTestsPath + extensionTestsPath, + extensionTestsEnv: { + ...envKeys, + AI_TEST_ENV: 'true' + } }); } catch (err) { process.exit(1); diff --git a/workspaces/ballerina/ballerina-rpc-client/src/BallerinaRpcClient.ts b/workspaces/ballerina/ballerina-rpc-client/src/BallerinaRpcClient.ts index 684d35a7ae2..96ac9561a9a 100644 --- a/workspaces/ballerina/ballerina-rpc-client/src/BallerinaRpcClient.ts +++ b/workspaces/ballerina/ballerina-rpc-client/src/BallerinaRpcClient.ts @@ -46,7 +46,10 @@ import { onArtifactUpdatedNotification, onArtifactUpdatedRequest, ColorThemeKind, - currentThemeChanged + currentThemeChanged, + ChatNotify, + onChatNotify, + AIMachineSendableEvent } from "@wso2/ballerina-core"; import { LangClientRpcClient } from "./rpc-clients/lang-client/rpc-client"; import { LibraryBrowserRpcClient } from "./rpc-clients/library-browser/rpc-client"; @@ -180,7 +183,7 @@ export class BallerinaRpcClient { this.messenger.onNotification(aiStateChanged, callback); } - sendAIStateEvent(event: AIMachineEventType) { + sendAIStateEvent(event: AIMachineEventType | AIMachineSendableEvent) { this.messenger.sendRequest(sendAIStateEvent, HOST_EXTENSION, event); } @@ -214,6 +217,10 @@ export class BallerinaRpcClient { this.messenger.onNotification(onDownloadProgress, callback); } + onChatNotify(callback: (state: ChatNotify) => void) { + this.messenger.onNotification(onChatNotify, callback); + } + getPopupVisualizerState(): Promise { return this.messenger.sendRequest(getPopupVisualizerState, HOST_EXTENSION); } diff --git a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/ai-agent/rpc-client.ts b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/ai-agent/rpc-client.ts index eade77e35ae..dd156fc41a9 100644 --- a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/ai-agent/rpc-client.ts +++ b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/ai-agent/rpc-client.ts @@ -14,9 +14,13 @@ * 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 { AIAgentAPI, + AiModuleOrgRequest, + AiModuleOrgResponse, AIAgentRequest, AIAgentResponse, AIAgentToolsUpdateRequest, @@ -26,18 +30,28 @@ import { AIModelsResponse, AINodesRequest, AINodesResponse, + AIToolRequest, + AIToolResponse, AIToolsRequest, AIToolsResponse, - MemoryManagersRequest, - MemoryManagersResponse, + configureDefaultModelProvider, createAIAgent, genTool, + getAiModuleOrg, getAllAgents, getAllMemoryManagers, getAllModels, + getMcpTools, getModels, + getTool, getTools, - updateAIAgentTools + McpToolsRequest, + McpToolsResponse, + McpToolUpdateRequest, + MemoryManagersRequest, + MemoryManagersResponse, + updateAIAgentTools, + updateMCPToolKit } from "@wso2/ballerina-core"; import { HOST_EXTENSION } from "vscode-messenger-common"; import { Messenger } from "vscode-messenger-webview"; @@ -49,6 +63,10 @@ export class AiAgentRpcClient implements AIAgentAPI { this._messenger = messenger; } + getAiModuleOrg(params: AiModuleOrgRequest): Promise { + return this._messenger.sendRequest(getAiModuleOrg, HOST_EXTENSION, params); + } + getAllAgents(params: AINodesRequest): Promise { return this._messenger.sendRequest(getAllAgents, HOST_EXTENSION, params); } @@ -69,10 +87,23 @@ export class AiAgentRpcClient implements AIAgentAPI { return this._messenger.sendRequest(getTools, HOST_EXTENSION, params); } + getTool(params: AIToolRequest): Promise { + return this._messenger.sendRequest(getTool, HOST_EXTENSION, params); + } + + getMcpTools(params: McpToolsRequest): Promise { + return this._messenger.sendRequest(getMcpTools, HOST_EXTENSION, params); + } + genTool(params: AIGentToolsRequest): Promise { return this._messenger.sendRequest(genTool, HOST_EXTENSION, params); } + configureDefaultModelProvider(): Promise { + this._messenger.sendNotification(configureDefaultModelProvider, HOST_EXTENSION); + return Promise.resolve(); + } + createAIAgent(params: AIAgentRequest): Promise { return this._messenger.sendRequest(createAIAgent, HOST_EXTENSION, params); } @@ -80,4 +111,8 @@ export class AiAgentRpcClient implements AIAgentAPI { updateAIAgentTools(params: AIAgentToolsUpdateRequest): Promise { return this._messenger.sendRequest(updateAIAgentTools, HOST_EXTENSION, params); } + + updateMCPToolKit(params: McpToolUpdateRequest): Promise { + return this._messenger.sendRequest(updateMCPToolKit, HOST_EXTENSION, params); + } } diff --git a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/ai-panel/rpc-client.ts b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/ai-panel/rpc-client.ts index d8e58d5bf5f..9a5f0cbe1df 100644 --- a/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/ai-panel/rpc-client.ts +++ b/workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/ai-panel/rpc-client.ts @@ -28,27 +28,36 @@ import { DeveloperDocument, FetchDataRequest, FetchDataResponse, + GenerateCodeRequest, GenerateMappingFromRecordResponse, GenerateMappingsFromRecordRequest, GenerateMappingsRequest, GenerateMappingsResponse, + GenerateOpenAPIRequest, GenerateTypesFromRecordRequest, GenerateTypesFromRecordResponse, GetFromFileRequest, GetModuleDirParams, InlineAllDataMapperSourceRequest, LLMDiagnostics, + LoginMethod, MetadataWithAttachments, NotifyAIMappingsRequest, PostProcessRequest, PostProcessResponse, ProjectDiagnostics, ProjectSource, + RelevantLibrariesAndFunctionsRequest, + RelevantLibrariesAndFunctionsResponse, + RepairParams, RequirementSpecification, SubmitFeedbackRequest, TestGenerationMentions, TestGenerationRequest, TestGenerationResponse, + TestGeneratorIntermediaryState, + TestPlanGenerationRequest, + abortAIGeneration, abortTestGeneration, addChatSummary, addInlineCodeSegmentToWorkspace, @@ -59,7 +68,12 @@ import { createTestDirecoryIfNotExists, deleteFromProject, fetchData, + generateCode, + generateFunctionTests, + generateHealthcareCode, generateMappings, + generateOpenAPI, + generateTestPlan, getAIMachineSnapshot, getAccessToken, getActiveFile, @@ -71,12 +85,13 @@ import { getFromDocumentation, getFromFile, getGeneratedTests, + getLoginMethod, getMappingsFromModel, getMappingsFromRecord, getModuleDirectory, - getProjectSource, getProjectUuid, getRefreshedAccessToken, + getRelevantLibrariesAndFunctions, getResourceMethodAndPaths, getResourceSourceForMethodAndPath, getServiceNames, @@ -95,7 +110,9 @@ import { promptGithubAuthorize, promptWSO2AILogout, readDeveloperMdFile, + repairGeneratedCode, showSignInAlert, + stopAIMappings, submitFeedback, updateDevelopmentDocument, updateRequirementSpecification @@ -118,6 +135,10 @@ export class AiPanelRpcClient implements AIPanelAPI { return this._messenger.sendRequest(getProjectUuid, HOST_EXTENSION); } + getLoginMethod(): Promise { + return this._messenger.sendRequest(getLoginMethod, HOST_EXTENSION); + } + getAccessToken(): Promise { return this._messenger.sendRequest(getAccessToken, HOST_EXTENSION); } @@ -162,8 +183,8 @@ export class AiPanelRpcClient implements AIPanelAPI { return this._messenger.sendRequest(notifyAIMappings, HOST_EXTENSION, params); } - getProjectSource(params: string): Promise { - return this._messenger.sendRequest(getProjectSource, HOST_EXTENSION, params); + stopAIMappings(): Promise { + return this._messenger.sendRequest(stopAIMappings, HOST_EXTENSION); } getShadowDiagnostics(params: ProjectSource): Promise { @@ -309,4 +330,36 @@ export class AiPanelRpcClient implements AIPanelAPI { submitFeedback(params: SubmitFeedbackRequest): Promise { return this._messenger.sendRequest(submitFeedback, HOST_EXTENSION, params); } + + getRelevantLibrariesAndFunctions(params: RelevantLibrariesAndFunctionsRequest): Promise { + return this._messenger.sendRequest(getRelevantLibrariesAndFunctions, HOST_EXTENSION, params); + } + + generateOpenAPI(params: GenerateOpenAPIRequest): void { + return this._messenger.sendNotification(generateOpenAPI, HOST_EXTENSION, params); + } + + generateCode(params: GenerateCodeRequest): void { + return this._messenger.sendNotification(generateCode, HOST_EXTENSION, params); + } + + repairGeneratedCode(params: RepairParams): void { + return this._messenger.sendNotification(repairGeneratedCode, HOST_EXTENSION, params); + } + + generateTestPlan(params: TestPlanGenerationRequest): void { + return this._messenger.sendNotification(generateTestPlan, HOST_EXTENSION, params); + } + + generateFunctionTests(params: TestGeneratorIntermediaryState): void { + return this._messenger.sendNotification(generateFunctionTests, HOST_EXTENSION, params); + } + + generateHealthcareCode(params: GenerateCodeRequest): void { + return this._messenger.sendNotification(generateHealthcareCode, HOST_EXTENSION, params); + } + + abortAIGeneration(): void { + return this._messenger.sendNotification(abortAIGeneration, HOST_EXTENSION); + } } 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 ed59c8fc1ff..7ca25fb3e75 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 @@ -41,7 +41,6 @@ import { BISearchRequest, BISearchResponse, BISourceCodeRequest, - BISourceCodeResponse, BreakpointRequest, BuildMode, ClassFieldModifierRequest, @@ -128,7 +127,11 @@ import { generateOpenApiClient, getAiSuggestions, getAllImports, + getAvailableEmbeddingProviders, + getAvailableModelProviders, getAvailableNodes, + getAvailableVectorKnowledgeBases, + getAvailableVectorStores, getBreakpointInfo, getConfigVariableNodeTemplate, getConfigVariables, @@ -210,6 +213,22 @@ export class BiDiagramRpcClient implements BIDiagramAPI { return this._messenger.sendRequest(getAvailableNodes, HOST_EXTENSION, params); } + getAvailableModelProviders(params: BIAvailableNodesRequest): Promise { + return this._messenger.sendRequest(getAvailableModelProviders, HOST_EXTENSION, params); + } + + getAvailableVectorStores(params: BIAvailableNodesRequest): Promise { + return this._messenger.sendRequest(getAvailableVectorStores, HOST_EXTENSION, params); + } + + getAvailableEmbeddingProviders(params: BIAvailableNodesRequest): Promise { + return this._messenger.sendRequest(getAvailableEmbeddingProviders, HOST_EXTENSION, params); + } + + getAvailableVectorKnowledgeBases(params: BIAvailableNodesRequest): Promise { + return this._messenger.sendRequest(getAvailableVectorKnowledgeBases, HOST_EXTENSION, params); + } + getEnclosedFunction(params: BIGetEnclosedFunctionRequest): Promise { return this._messenger.sendRequest(getEnclosedFunction, HOST_EXTENSION, params); } @@ -265,7 +284,7 @@ export class BiDiagramRpcClient implements BIDiagramAPI { getConfigVariablesV2(): Promise { return this._messenger.sendRequest(getConfigVariablesV2, HOST_EXTENSION); } - + updateConfigVariablesV2(params: UpdateConfigVariableRequestV2): Promise { return this._messenger.sendRequest(updateConfigVariablesV2, HOST_EXTENSION, params); } 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 534bdfcb072..f8ca9980d51 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 @@ -39,6 +39,8 @@ import { LangClientAPI, PartialST, PartialSTParams, + ProjectDiagnosticsRequest, + ProjectDiagnosticsResponse, RenameRequest, RenameResponse, STModifyParams, @@ -65,6 +67,7 @@ import { getDiagnostics, getExecutorPositions, getPackageComponentModels, + getProjectDiagnostics, getST, getSTByRange, getSTForExpression, @@ -120,6 +123,10 @@ export class LangClientRpcClient implements LangClientAPI { return this._messenger.sendRequest(getDiagnostics, HOST_EXTENSION, params); } + getProjectDiagnostics(params: ProjectDiagnosticsRequest): Promise { + return this._messenger.sendRequest(getProjectDiagnostics, HOST_EXTENSION, params); + } + codeAction(params: CodeActionRequest): Promise { return this._messenger.sendRequest(codeAction, HOST_EXTENSION, params); } diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/CardList/index.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/CardList/index.tsx new file mode 100644 index 00000000000..03e976836d8 --- /dev/null +++ b/workspaces/ballerina/ballerina-side-panel/src/components/CardList/index.tsx @@ -0,0 +1,396 @@ +/** + * 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, { useEffect, useState } from "react"; +import { Button, ProgressRing, SearchBox, SidePanelBody, ThemeColors } from "@wso2/ui-toolkit"; +import styled from "@emotion/styled"; +import { BackIcon, CloseIcon, LogIcon } from "../../resources"; +import { Category, Item, Node } from "../NodeList/types"; +import { cloneDeep, debounce } from "lodash"; + +namespace S { + export const Container = styled.div<{}>` + width: 100%; + `; + + export const HeaderContainer = styled.div<{}>` + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + padding: 16px; + `; + + export const PanelBody = styled(SidePanelBody)` + height: calc(100vh - 100px); + padding-top: 0; + `; + + export const StyledSearchInput = styled(SearchBox)` + height: 30px; + `; + + export const CategorySection = styled.div<{}>` + display: flex; + flex-direction: column; + width: 100%; + margin-bottom: 24px; + `; + + export const CategoryTitle = styled.div<{}>` + font-size: 14px; + font-family: GilmerBold; + margin-bottom: 12px; + display: flex; + justify-content: space-between; + align-items: center; + `; + + export const CategoryDescription = styled.div<{}>` + font-size: 12px; + opacity: 0.7; + margin-bottom: 16px; + `; + + export const CardsContainer = styled.div<{}>` + display: flex; + flex-direction: column; + gap: 8px; + width: 100%; + `; + + export const Card = styled.div<{ enabled?: boolean }>` + display: flex; + flex-direction: row; + align-items: center; + gap: 12px; + padding: 12px; + border: 1px solid ${ThemeColors.OUTLINE_VARIANT}; + border-radius: 8px; + cursor: ${({ enabled }) => (enabled ? "pointer" : "not-allowed")}; + transition: all 0.2s ease; + background-color: ${ThemeColors.SURFACE}; + min-height: 60px; + + ${({ enabled }) => !enabled && "opacity: 0.5;"} + + &:hover { + ${({ enabled }) => + enabled && + ` + background-color: ${ThemeColors.PRIMARY_CONTAINER}; + border: 1px solid ${ThemeColors.PRIMARY}; + transform: translateY(-1px); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + `} + } + `; + + export const CardIcon = styled.div` + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + border-radius: 6px; + background-color: ${ThemeColors.PRIMARY_CONTAINER}; + flex-shrink: 0; + + & svg { + height: 20px; + width: 20px; + } + + & img { + height: 20px; + width: 20px; + border-radius: 2px; + } + `; + + export const CardContent = styled.div` + display: flex; + flex-direction: column; + flex-grow: 1; + min-width: 0; + `; + + export const CardTitle = styled.div` + font-size: 14px; + font-weight: 500; + margin-bottom: 4px; + color: ${ThemeColors.ON_SURFACE}; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + `; + + export const CardDescription = styled.div` + font-size: 12px; + color: ${ThemeColors.ON_SURFACE_VARIANT}; + opacity: 0.8; + line-height: 1.4; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + `; + + export const Row = styled.div<{}>` + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + gap: 8px; + margin-top: 4px; + margin-bottom: 4px; + width: 100%; + `; + + export const LeftAlignRow = styled(Row)` + justify-content: flex-start; + `; + + export const BackButton = styled(Button)` + border-radius: 5px; + `; + + export const CloseButton = styled(Button)` + position: absolute; + right: 10px; + border-radius: 5px; + `; + + export const EmptyState = styled.div` + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 40px 16px; + text-align: center; + color: ${ThemeColors.ON_SURFACE_VARIANT}; + opacity: 0.7; + `; + + export const EmptyStateText = styled.div` + font-size: 14px; + margin-bottom: 8px; + `; + + export const EmptyStateSubText = styled.div` + font-size: 12px; + opacity: 0.8; + `; + + export const AddButton = styled(Button)` + border-radius: 5px; + `; +} + +export interface CardListProps { + categories: Category[]; + title?: string; + searchPlaceholder?: string; + onSelect: (id: string, metadata?: any) => void; + onSearch?: (text: string) => void; + onBack?: () => void; + onClose?: () => void; +} + +function CardList(props: CardListProps) { + const { categories, title, searchPlaceholder, onSelect, onSearch, onBack, onClose } = props; + + const [searchText, setSearchText] = useState(""); + const [isSearching, setIsSearching] = useState(false); + + useEffect(() => { + if (onSearch) { + setIsSearching(true); + debouncedSearch(searchText); + return () => debouncedSearch.cancel(); + } + }, [searchText]); + + const handleSearch = (text: string) => { + if (onSearch) { + onSearch(text); + } + }; + + const debouncedSearch = debounce(handleSearch, 500); + + const handleOnSearch = (text: string) => { + setSearchText(text); + }; + + useEffect(() => { + setIsSearching(false); + }, [categories]); + + const handleCardClick = (node: Node) => { + onSelect(node.id, { node: node.metadata }); + }; + + // Filter items based on search text (only if no onSearch prop - local filtering) + const filterItems = (items: Item[]): Item[] => { + if (!items || onSearch) return items || []; // If onSearch is provided, don't filter locally + + return items + .filter((item) => item != null) + .map((item) => { + if ("items" in item && "title" in item) { + // This is a Category + const filteredItems = filterItems(item.items); + const categoryMatches = + item.title.toLowerCase().includes(searchText.toLowerCase()) || + (item.description?.toLowerCase() || "").includes(searchText.toLowerCase()); + + if (categoryMatches || filteredItems.length > 0) { + return { + ...item, + items: filteredItems, + }; + } + return null; + } else if ("id" in item && "label" in item) { + // This is a Node + const lowerCaseTitle = item.label.toLowerCase(); + const lowerCaseDescription = item.description?.toLowerCase() || ""; + const lowerCaseSearchText = searchText.toLowerCase(); + + if ( + lowerCaseTitle.includes(lowerCaseSearchText) || + lowerCaseDescription.includes(lowerCaseSearchText) + ) { + return item; + } + return null; + } + return null; + }) + .filter(Boolean) as Item[]; + }; + + const renderCards = (items: Item[]) => { + const nodes = items.filter((item): item is Node => item != null && "id" in item && "label" in item); + + if (nodes.length === 0) { + return ( + + No items found + Try adjusting your search or explore different categories + + ); + } + + return ( + + {nodes.map((node, index) => ( + handleCardClick(node)}> + {node.icon ? node.icon : } + + {node.label} + {node.description && {node.description}} + + + ))} + + ); + }; + + const filteredCategories = onSearch + ? categories + : cloneDeep(categories).map((category) => { + if (!category || !category.items) { + return category; + } + category.items = filterItems(category.items) || []; + return category; + }); + + const hasContent = filteredCategories.some((category) => category?.items && category.items.length > 0); + + return ( + + + + {onBack && title && ( + + + + + {title} + + )} + {onClose && ( + + + + )} + + + + + + + {isSearching && ( + +
+ +
+
+ )} + + {!isSearching && ( + + {!hasContent ? ( + + No results found + Try adjusting your search terms + + ) : ( + filteredCategories.map((category, index) => { + if (!category?.items || category.items.length === 0) { + return null; + } + + return ( + + {category.title} + {category.description && ( + {category.description} + )} + {renderCards(category.items)} + + ); + }) + )} + + )} +
+ ); +} + +export { CardList }; +export default CardList; diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/Form/FormDescription.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/Form/FormDescription.tsx index d3af2de5d00..4b3bd1d54e7 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/Form/FormDescription.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/Form/FormDescription.tsx @@ -22,7 +22,7 @@ import { ThemeColors, Codicon } from "@wso2/ui-toolkit"; import { NodeKind } from "@wso2/ballerina-core"; import { FormField } from "./types"; -import { hasRequiredParameters, hasOptionalParameters, hasReturnType, isPrioritizedField } from "./utils"; +import { hasRequiredParameters, hasOptionalParameters, hasReturnType, isPrioritizedField, isDefaultModelProvider } from "./utils"; namespace S { export const FormInfoDescription = styled.div` @@ -70,13 +70,16 @@ export const FormDescription: React.FC = ({ const hasRequired = hasRequiredParameters(formFields, selectedNode); const hasOptional = hasOptionalParameters(formFields); const hasReturn = hasReturnType(formFields); + const isDefaultProvider = isDefaultModelProvider(formFields); const hasAnyParams = formFields.filter(field => !isPrioritizedField(field) && field.type !== "VIEW" && !field.hidden ).length > 0; - if (!hasRequired && hasOptional) { + if (isDefaultProvider) { + return "This model provider does not require any fields to be configured."; + } else if (!hasRequired && hasOptional) { // Rule 1: No Required Params, but Optional Params Exist return "This operation has no required parameters. Optional settings can be configured below."; } else if (!hasAnyParams && hasReturn) { 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 5376829d877..4c3f6b6cf82 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/Form/index.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/Form/index.tsx @@ -42,7 +42,6 @@ import { SubPanelView, FormDiagnostics, FlowNode, - LinePosition, ExpressionProperty, RecordTypeField, VisualizableField, @@ -341,6 +340,17 @@ export interface FormProps { concertMessage?: string; formImports?: FormImports; preserveOrder?: boolean; + scopeFieldAddon?: React.ReactNode; + newServerUrl?: string; + onChange?: (fieldKey: string, value: any, allValues: FormValues) => void; + mcpTools?: { name: string; description?: string }[]; + onToolsChange?: (selectedTools: string[]) => void; + injectedComponents?: { + component: React.ReactNode; + index: number; + }[]; + hideSaveButton?: boolean; // Option to hide the save button + onValidityChange?: (isValid: boolean) => void; // Callback for form validity status } export const Form = forwardRef((props: FormProps, ref) => { @@ -374,6 +384,13 @@ export const Form = forwardRef((props: FormProps, ref) => { concertMessage, formImports, preserveOrder = false, + scopeFieldAddon, + newServerUrl, + mcpTools, + onToolsChange, + injectedComponents, + hideSaveButton = false, + onValidityChange, } = props; const { @@ -420,6 +437,10 @@ export const Form = forwardRef((props: FormProps, ref) => { defaultValues[field.key] = field.value ?? ""; } + if (field.key === "parameters" && field.value.length === 0) { + defaultValues[field.key] = formValues[field.key] ?? []; + } + if (field.key === "type") { // Handle the case where the type is changed via 'Add Type' const existingType = formValues[field.key]; @@ -494,6 +515,7 @@ export const Form = forwardRef((props: FormProps, ref) => { // Expose a method to trigger the save useImperativeHandle(ref, () => ({ triggerSave: () => handleSubmit(handleOnSave)(), // Call handleSubmit with the save function + resetForm: (values) => reset(values), })); const handleOpenRecordEditor = (open: boolean, typeField?: FormField) => { @@ -641,6 +663,15 @@ export const Form = forwardRef((props: FormProps, ref) => { return hasDiagnostics; }, [diagnosticsInfo]); + // Call onValidityChange when form validity changes + useEffect(() => { + if (onValidityChange) { + const formIsValid = isValid && !isValidating && Object.keys(errors).length === 0 && + (!concertMessage || !concertRequired || isUserConcert) && !isIdentifierEditing && !isSubComponentEnabled; + onValidityChange(formIsValid); + } + }, [isValid, isValidating, errors, concertMessage, concertRequired, isUserConcert, isIdentifierEditing, isSubComponentEnabled, onValidityChange]); + const handleIdentifierEditingStateChange = (isEditing: boolean) => { setIsIdentifierEditing(isEditing); }; @@ -662,6 +693,20 @@ export const Form = forwardRef((props: FormProps, ref) => { } }; + const prevValuesRef = useRef({}); + const watchedValues = watch(); + useEffect(() => { + if (props.onChange) { + const prevValues = prevValuesRef.current; + Object.entries(watchedValues).forEach(([key, value]) => { + if (prevValues[key] !== value) { + props.onChange?.(key, value, watchedValues); + } + }); + prevValuesRef.current = { ...watchedValues }; + } + }, [watchedValues]); + const handleOnOpenInDataMapper = () => { setSavingButton('dataMapper'); handleSubmit((data) => { @@ -681,7 +726,7 @@ export const Form = forwardRef((props: FormProps, ref) => { {actionButton && {actionButton}} - {infoLabel && ( + {infoLabel && !compact && ( {stripHtmlTags(infoLabel)} @@ -703,7 +748,7 @@ export const Form = forwardRef((props: FormProps, ref) => { )} )} - {!preserveOrder && ( + {!preserveOrder && !compact && ( )} @@ -714,20 +759,30 @@ export const Form = forwardRef((props: FormProps, ref) => { * 2. preserveOrder = false: Render name and type fields at the bottom, and rest at top */} - {formFields - .sort((a, b) => b.groupNo - a.groupNo) - .filter((field) => field.type !== "VIEW") - .map((field) => { + {(() => { + const fieldsToRender = formFields + .sort((a, b) => b.groupNo - a.groupNo) + .filter((field) => field.type !== "VIEW"); + + const renderedComponents = fieldsToRender.reduce((acc, field, index) => { + if (injectedComponents) { + injectedComponents.forEach((injected) => { + if (injected.index === index) { + acc.push(injected.component); + } + }); + } + if (field.advanced || field.hidden) { - return null; + return acc; } // When preserveOrder is false, skip prioritized fields (they'll be rendered at bottom) if (!preserveOrder && isPrioritizedField(field)) { - return null; + return acc; } const updatedField = updateFormFieldWithImports(field, formImports); - return ( + acc.push( { onIdentifierEditingStateChange={handleIdentifierEditingStateChange} handleOnTypeChange={handleOnTypeChange} setSubComponentEnabled={setIsSubComponentEnabled} + newServerUrl={newServerUrl} + mcpTools={mcpTools} + onToolsChange={onToolsChange} /> + {updatedField.key === "scope" && scopeFieldAddon} ); - })} + return acc; + }, []); + + if (injectedComponents) { + injectedComponents.forEach((injected) => { + if (injected.index >= fieldsToRender.length) { + renderedComponents.push(injected.component); + } + }); + } + + return renderedComponents; + })()} {hasAdvanceFields && ( Optional Configurations - - {!showAdvancedOptions && ( - - - Expand - - )} - {showAdvancedOptions && ( - - Collapsed + + {!showAdvancedOptions && ( + + + Expand + + )} + {showAdvancedOptions && ( + + Collapsed )} @@ -856,7 +927,7 @@ export const Form = forwardRef((props: FormProps, ref) => { )} - {onSubmit && ( + {onSubmit && !hideSaveButton && ( {onCancelForm && ( + + {isExpanded &&
{getNodesContainer(subcategory.items, parentCategoryTitle)}
} + + ); + } else { + return ( + + + + {subcategory.title} + + + {subcategory.items && + subcategory.items.length > 0 && + getNodesContainer(subcategory.items, parentCategoryTitle)} + + ); + } + })} + + ); + }; const getConnectionContainer = (categories: Category[]) => ( {categories.map((category, index) => ( - // 0} onSelect={handleAddNode} /> - // ))} ); - const getCategoryContainer = (groups: Category[], isSubCategory = false) => { + const getCategoryContainer = (groups: Category[], isSubCategory = false, parentCategoryTitle?: string) => { const callFunctionNode = groups - .flatMap((group) => group?.items) + .flatMap((group) => group?.items || []) + .filter((item) => item != null) .find((item) => "id" in item && item.id === "FUNCTION"); const content = ( <> @@ -360,22 +448,34 @@ export function NodeList(props: NodeListProps) { const isDataMapperCategory = isProjectFunctionsCategory && title === "Data Mappers"; const isAgentCategory = group.title === "Agents"; const isNpFunctionCategory = isProjectFunctionsCategory && title === "Natural Functions"; - if ( - (!group || group.items.length === 0) && - !isConnectionCategory && - !isProjectFunctionsCategory && - !isAgentCategory && - !isNpFunctionCategory - ) { - return null; + const isModelProviderCategory = group.title === "Model Providers"; + const isVectorStoreCategory = group.title === "Vector Stores"; + const isEmbeddingProviderCategory = group.title === "Embedding Providers"; + const isVectorKnowledgeBaseCategory = group.title === "Vector Knowledge Bases"; + // Hide categories that don't have items, except for special categories that can add items + if (!group || !group.items || group.items.length === 0) { + // Only show empty categories if they have add functionality + if ( + !isConnectionCategory && + !isProjectFunctionsCategory && + !isAgentCategory && + !isNpFunctionCategory && + !isModelProviderCategory && + !isVectorStoreCategory && + !isEmbeddingProviderCategory && + !isVectorKnowledgeBaseCategory + ) { + return null; + } } - if (searchText && group.items.length === 0) { + if (searchText && (!group.items || group.items.length === 0)) { return null; } // skip current integration category if onAddFunction is not provided and items are empty - if (!onAddFunction && isProjectFunctionsCategory && group.items?.length === 0) { + if (!onAddFunction && isProjectFunctionsCategory && (!group.items || group.items.length === 0)) { return null; } + return ( @@ -387,53 +487,60 @@ export function NodeList(props: NodeListProps) { {!isSubCategory && ( <> {group.title} - {(isConnectionCategory || isProjectFunctionsCategory || isAgentCategory) && ( - <> - {onAddConnection && isConnectionCategory && ( + <> + {onAddConnection && isConnectionCategory && ( + + )} + {onAddFunction && isDataMapperCategory && ( + + )} + {onAddFunction && + isProjectFunctionsCategory && + !isDataMapperCategory && + !isNpFunctionCategory && ( - )} - {onAddFunction && isDataMapperCategory && ( - )} - {onAddFunction && - isProjectFunctionsCategory && - !isDataMapperCategory && - !isNpFunctionCategory && ( - - )} - {onAddFunction && isNpFunctionCategory && ( - - )} - - )} + {onAddFunction && isNpFunctionCategory && ( + + )} + {onAdd && addButtonLabel && ( + + )} + )} - {onAddConnection && isConnectionCategory && group.items.length === 0 && ( + {onAddConnection && isConnectionCategory && (!group.items || group.items.length === 0) && ( @@ -459,42 +566,87 @@ export function NodeList(props: NodeListProps) { }`} )} - {group.items.length > 0 && "id" in group.items.at(0) - ? getNodesContainer(group.items as Node[]) - : (onAddConnection && isConnectionCategory) || - (onAddFunction && isProjectFunctionsCategory) + {onAdd && + addButtonLabel && + (isModelProviderCategory || isVectorStoreCategory || isEmbeddingProviderCategory || isVectorKnowledgeBaseCategory) && + (!group.items || group.items.length === 0) && + !searchText && + !isSearching && ( + + + {addButtonLabel} + + )} + {group.items && + group.items.length > 0 && + // 1. If parent group is "Connections", "Model Providers", "Vector Stores", "Embedding Providers", or "Vector Knowledge Bases" and ALL items don't have id, use getConnectionContainer + (group.title === "Connections" || group.title === "Model Providers" || group.title === "Vector Stores" || group.title === "Embedding Providers" || group.title === "Vector Knowledge Bases") && + group.items.filter((item) => item != null).every((item) => !("id" in item)) ? getConnectionContainer(group.items as Category[]) - : getCategoryContainer(group.items as Category[], true)} + : // 2. If ALL items don't have id (all are categories), use getCategoryContainer + group.items.filter((item) => item != null).every((item) => !("id" in item)) + ? getCategoryContainer( + group.items as Category[], + true, + !isSubCategory ? group.title : parentCategoryTitle + ) + : // 3. Otherwise (has items with id or mixed), use getNodesContainer + getNodesContainer( + group.items as (Node | Category)[], + !isSubCategory ? group.title : parentCategoryTitle + )} ); })} {callFunctionNode && ( - - handleAddNode(callFunctionNode as Node)}> - Show More Functions - - + + handleAddNode(callFunctionNode as Node)}> + Show More Functions + + + )} ); - // Check if the content is empty const isEmpty = React.Children.toArray(content.props.children).every((child) => child === null); - - return isEmpty ?
No matching results found
: content; + return isEmpty && searchText ?
No matching results found
: content; }; // filter out category items based on search text const filterItems = (items: Item[]): Item[] => { + if (!items) return []; + return items + .filter((item) => item != null) .map((item) => { - if ("items" in item) { + if ("items" in item && "title" in item) { + // This is a Category (like "More") const filteredItems = filterItems(item.items); - return { - ...item, - items: filteredItems, - }; - } else { + const categoryMatches = + item.title.toLowerCase().includes(searchText.toLowerCase()) || + (item.description?.toLowerCase() || "").includes(searchText.toLowerCase()); + + // Keep the category if it matches or has matching items + if (categoryMatches || filteredItems.length > 0) { + return { + ...item, + items: filteredItems, + }; + } + return null; + } else if ("id" in item && "label" in item) { + // This is a Node const lowerCaseTitle = item.label.toLowerCase(); const lowerCaseDescription = item.description?.toLowerCase() || ""; const lowerCaseSearchText = searchText.toLowerCase(); @@ -504,16 +656,18 @@ export function NodeList(props: NodeListProps) { ) { return item; } + return null; } + return null; }) - .filter(Boolean); + .filter(Boolean) as Item[]; }; const filteredCategories = cloneDeep(categories).map((category) => { if (!category || !category.items || onSearchTextChange) { return category; } - category.items = filterItems(category.items); + category.items = filterItems(category.items) || []; return category; }); @@ -557,7 +711,7 @@ export function NodeList(props: NodeListProps) { - + diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/CustomDropdownEditor.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/CustomDropdownEditor.tsx new file mode 100644 index 00000000000..173442a7548 --- /dev/null +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/CustomDropdownEditor.tsx @@ -0,0 +1,171 @@ +/** + * 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. + */ + +// TODO: this component should be refactored to be more generic and reusable for other forms. +// so, created new custom dropdown editor for this purpose and keep previous one for other forms. +// update the editor factory to use this component for enum and single select fields. + +import React, { useEffect, useState } from "react"; +import styled from "@emotion/styled"; + +import { Dropdown } from "@wso2/ui-toolkit"; + +import { FormField } from "../Form/types"; +import { capitalize, getValueForDropdown } from "./utils"; +import { useFormContext } from "../../context"; +import { SubPanel, SubPanelView } from "@wso2/ballerina-core"; +import { McpToolsSelection } from "./McpToolsSelection"; + +interface CustomDropdownEditorProps { + field: FormField; + openSubPanel?: (subPanel: SubPanel) => void; + // Additional props for MCP tools functionality + serviceUrl?: string; + configs?: object; + rpcClient?: any; + onToolsChange?: (selectedTools: string[]) => void; + renderToolsSelection?: () => React.ReactNode; + newServerUrl?: string; + mcpTools?: { name: string; description?: string }[]; +} + +const DropdownStack = styled.div` + display: flex; + flex-direction: column; + width: 100%; +`; + +const DropdownSpacer = styled.div` + height: 5px; +`; + +export function CustomDropdownEditor(props: CustomDropdownEditorProps) { + const { field, openSubPanel, newServerUrl } = props; + const { form } = useFormContext(); + const { register, setValue, watch } = form; + const [mcpTools, setMcpTools] = useState<{ name: string; description?: string }[]>(props.mcpTools || []); + + // Sync mcpTools state with props.mcpTools + useEffect(() => { + if (props.mcpTools) { + setMcpTools(props.mcpTools); + } + }, [props.mcpTools]); + const [selectedMcpTools, setSelectedMcpTools] = useState>(new Set()); + const [loadingMcpTools, setLoadingMcpTools] = useState(false); + const [mcpToolsError, setMcpToolsError] = useState(""); + const toolSelection = watch(field.key); + const [localServiceUrl, setLocalServiceUrl] = useState(""); + + useEffect(() => { + if (newServerUrl && newServerUrl !== localServiceUrl) { + setLocalServiceUrl(newServerUrl); + console.log(">>> New server URL set:", newServerUrl); + } + }, [newServerUrl]); + + const handleToolSelectionChange = (toolName: string, isSelected: boolean) => { + const newSelectedTools = new Set(selectedMcpTools); + if (isSelected) { + newSelectedTools.add(toolName); + } else { + newSelectedTools.delete(toolName); + } + setSelectedMcpTools(newSelectedTools); + // Call the callback with the updated selection + props.onToolsChange?.(Array.from(newSelectedTools)); + }; + + const handleSelectAllTools = () => { + let newSelectedTools: Set; + if (selectedMcpTools.size === mcpTools.length) { + newSelectedTools = new Set(); + } else { + newSelectedTools = new Set(mcpTools.map(tool => tool.name)); + } + setSelectedMcpTools(newSelectedTools); + // Call the callback with the updated selection + props.onToolsChange?.(Array.from(newSelectedTools)); + }; + + // Call onToolsChange whenever selectedMcpTools changes + useEffect(() => { + props.onToolsChange?.(Array.from(selectedMcpTools)); + }, [selectedMcpTools]); + + const showScopeControls = field.key === "toolsToInclude"; + + // HACK: create values for Scope field + if (field.key === "scope") { + field.items = ["Global", "Local"]; + } + + if (showScopeControls) { + return ( + + ({ id: item, content: item, value: item }))} + required={!field.optional} + disabled={!field.editable} + onChange={(e) => { + setValue(field.key, e.target.value); + field.onValueChange?.(e.target.value); + }} + sx={{ width: "100%" }} + containerSx={{ width: "100%" }} + addNewBtnClick={field.addNewButton ? () => openSubPanel({ view: SubPanelView.ADD_NEW_FORM }) : undefined} + /> + + {toolSelection === "Selected" && ( + + )} + + ); + } + + return ( + ({ id: item, content: item, value: item }))} + required={!field.optional} + disabled={!field.editable} + onChange={(e) => { + setValue(field.key, e.target.value); + field.onValueChange?.(e.target.value); + }} + sx={{ width: "100%" }} + containerSx={{ width: "100%" }} + addNewBtnClick={field.addNewButton ? () => openSubPanel({ view: SubPanelView.ADD_NEW_FORM }) : undefined} + /> + ); +} 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 eb98847b825..f41cd238eb8 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/editors/EditorFactory.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/EditorFactory.tsx @@ -41,6 +41,7 @@ import { ContextAwareRawExpressionEditor } from "./RawExpressionEditor"; import { IdentifierField } from "./IdentifierField"; import { PathEditor } from "./PathEditor"; import { HeaderSetEditor } from "./HeaderSetEditor"; +import { CustomDropdownEditor } from "./CustomDropdownEditor"; interface FormFieldEditorProps { field: FormField; @@ -54,6 +55,10 @@ interface FormFieldEditorProps { recordTypeFields?: RecordTypeField[]; onIdentifierEditingStateChange?: (isEditing: boolean) => void; setSubComponentEnabled?: (isAdding: boolean) => void; + scopeFieldAddon?: React.ReactNode; + newServerUrl?: string; + mcpTools?: { name: string; description?: string }[]; + onToolsChange?: (selectedTools: string[]) => void; } export const EditorFactory = (props: FormFieldEditorProps) => { @@ -68,7 +73,9 @@ export const EditorFactory = (props: FormFieldEditorProps) => { handleOnTypeChange, recordTypeFields, onIdentifierEditingStateChange, - setSubComponentEnabled + setSubComponentEnabled, + scopeFieldAddon, + newServerUrl } = props; if (!field.enabled || field.hidden) { return <>; @@ -101,13 +108,18 @@ export const EditorFactory = (props: FormFieldEditorProps) => { } else if (field.type === "EXPRESSION" && field.key === "resourcePath") { // HACK: this should fixed with the LS API. this is used to avoid the expression editor for resource path field. return ; + } else if (field.type.toUpperCase() === "ENUM" && props.mcpTools) { + // TODO: this is a temporary solution to handle the enum field with MCP tools. + return ; } else if (field.type.toUpperCase() === "ENUM") { // Enum is a dropdown field - return ; + return ; } else if (field.type === "FILE_SELECT" && field.editable) { return ; + } else if (field.type === "SINGLE_SELECT" && field.editable && props.mcpTools) { + // TODO: this is a temporary solution to handle the single select field with MCP tools. + return ; } else if (field.type === "SINGLE_SELECT" && field.editable) { - // HACK:Single select field is treat as type editor for now return ; } else if (!field.items && (field.key === "type" || field.type === "TYPE") && field.editable) { // Type field is a type editor diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/McpToolsSelection.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/McpToolsSelection.tsx new file mode 100644 index 00000000000..257cfbd4a52 --- /dev/null +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/McpToolsSelection.tsx @@ -0,0 +1,161 @@ +/** + * 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 { Button, CheckBox, ThemeColors } from "@wso2/ui-toolkit"; + +// Types for MCP tools +export interface McpTool { + name: string; + description?: string; +} + +interface McpToolsSelectionProps { + tools: McpTool[]; + selectedTools: Set; + loading: boolean; + error: string; + onToolSelectionChange: (toolName: string, isSelected: boolean) => void; + onSelectAll: () => void; + serviceUrl?: string; +} + +const ToolsContainer = styled.div` + display: flex; + flex-direction: column; + gap: 8px; + margin-top: 12px; + padding: 12px; + border: 1px solid ${ThemeColors.OUTLINE_VARIANT}; + border-radius: 8px; +`; +const ToolsHeader = styled.div` + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + margin-bottom: 8px; +`; +const ToolsTitle = styled.div` + font-size: 14px; + font-family: GilmerBold; + color: ${ThemeColors.ON_SURFACE}; +`; +const ToolCheckboxContainer = styled.div` + display: flex; + flex-direction: column; + gap: 6px; + max-height: 200px; + overflow-y: auto; +`; +const ToolCheckboxItem = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 8px; + padding: 4px 0; +`; +const ErrorMessage = styled.div` + color: ${ThemeColors.ERROR}; + font-size: 12px; + margin-top: 4px; +`; +const LoadingMessage = styled.div` + color: ${ThemeColors.ON_SURFACE_VARIANT}; + font-size: 12px; + display: flex; + align-items: center; + gap: 8px; +`; +const InlineSpinner = styled.span` + display: inline-block; + width: 16px; + height: 16px; + border: 2px solid ${ThemeColors.ON_SURFACE_VARIANT}; + border-top: 2px solid transparent; + border-radius: 50%; + animation: spin 0.8s linear infinite; + @keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } + } +`; + +export const McpToolsSelection: React.FC = ({ + tools, + selectedTools, + loading, + error, + onToolSelectionChange, + onSelectAll, + serviceUrl +}) => { + return ( + + + Available Tools + {tools.length > 0 && ( + + )} + + {loading && ( + + + Loading tools from MCP server... + + )} + {error && ( + {error} + )} + {tools.length > 0 && ( + + {tools.map((tool) => ( + + !loading && onToolSelectionChange(tool.name, !selectedTools.has(tool.name))} + > + +
+
{tool.name}
+ {tool.description && ( +
+ {tool.description} +
+ )} +
+
+ ))} +
+ )} + {!loading && !error && tools.length === 0 && serviceUrl?.trim() && ( +
+ No tools available from this MCP server +
+ )} +
+ ); +}; diff --git a/workspaces/ballerina/ballerina-side-panel/src/components/editors/TypeEditor.tsx b/workspaces/ballerina/ballerina-side-panel/src/components/editors/TypeEditor.tsx index b7fd609fe6b..2a8091460e4 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/components/editors/TypeEditor.tsx +++ b/workspaces/ballerina/ballerina-side-panel/src/components/editors/TypeEditor.tsx @@ -79,7 +79,7 @@ const EditorRibbon = ({ onClick }: { onClick: () => void }) => { const getDefaultCompletion = (newType: string) => { return ( - + Add Type: {newType} diff --git a/workspaces/ballerina/ballerina-side-panel/src/index.ts b/workspaces/ballerina/ballerina-side-panel/src/index.ts index 0cf54960194..6dbf77e975e 100644 --- a/workspaces/ballerina/ballerina-side-panel/src/index.ts +++ b/workspaces/ballerina/ballerina-side-panel/src/index.ts @@ -24,5 +24,6 @@ export * from "./components/Form/types"; export * from "./components/editors"; export * from "./components/GroupList"; export * from "./components/ParamManager/ParamManager"; +export * from "./components/CardList"; export * from "./utils/path-validations"; diff --git a/workspaces/ballerina/ballerina-visualizer/package.json b/workspaces/ballerina/ballerina-visualizer/package.json index 298722a2ac8..c94e793d7d9 100644 --- a/workspaces/ballerina/ballerina-visualizer/package.json +++ b/workspaces/ballerina/ballerina-visualizer/package.json @@ -82,7 +82,9 @@ "webpack": "^5.99.8", "@types/react-lottie": "^1.2.5", "@types/lodash.debounce": "^4.0.6", - "webpack-dev-server": "^5.2.1" + "webpack-dev-server": "^5.2.1", + "@ai-sdk/openai": "^1.3.22", + "ai": "^4.3.16" }, "author": "wso2", "license": "UNLICENSED", diff --git a/workspaces/ballerina/ballerina-visualizer/src/MainPanel.tsx b/workspaces/ballerina/ballerina-visualizer/src/MainPanel.tsx index f859af759ee..d3480079063 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/MainPanel.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/MainPanel.tsx @@ -16,7 +16,7 @@ * under the License. */ -import React, { useEffect, useState } from "react"; +import React, { useCallback, useEffect, useState } from "react"; import { KeyboardNavigationManager, MachineStateValue, @@ -27,6 +27,7 @@ import { } from "@wso2/ballerina-core"; import { useRpcContext } from "@wso2/ballerina-rpc-client"; import { Global, css } from "@emotion/react"; +import { debounce } from "lodash"; import styled from "@emotion/styled"; import { LoadingRing } from "./components/Loader"; import { DataMapper } from "./views/DataMapper"; @@ -179,10 +180,16 @@ const MainPanel = () => { rpcClient?.onStateChanged((newState: MachineStateValue) => { if (typeof newState === "object" && "viewActive" in newState && newState.viewActive === "viewReady") { - fetchContext(); + debounceFetchContext(); } }); + const debounceFetchContext = useCallback( + debounce(() => { + fetchContext(); + }, 200), [] + ); + rpcClient?.onPopupStateChanged((newState: PopupMachineStateValue) => { setPopupState(newState); }); @@ -465,7 +472,7 @@ const MainPanel = () => { }; useEffect(() => { - fetchContext(); + debounceFetchContext(); }, [breakpointState]); useEffect(() => { diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/features/testGenerator.ts b/workspaces/ballerina/ballerina-visualizer/src/components/RelativeLoader/index.d.ts similarity index 77% rename from workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/features/testGenerator.ts rename to workspaces/ballerina/ballerina-visualizer/src/components/RelativeLoader/index.d.ts index 4457b8867d4..cb7cb507d91 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/features/testGenerator.ts +++ b/workspaces/ballerina/ballerina-visualizer/src/components/RelativeLoader/index.d.ts @@ -15,11 +15,8 @@ * specific language governing permissions and limitations * under the License. */ - -import { Attachment } from "@wso2/ballerina-core"; - -export interface TestGeneratorIntermediaryState { - content: [string, Attachment[]]; - resourceFunction: string; - testPlan: string; +interface LoadingRingProps { + message?: string; } +export declare const RelativeLoader: ({ message }: LoadingRingProps) => JSX.Element; +export {}; diff --git a/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/DiagramSkeleton.tsx b/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/DiagramSkeleton.tsx new file mode 100644 index 00000000000..c318c18445b --- /dev/null +++ b/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/DiagramSkeleton.tsx @@ -0,0 +1,144 @@ +/** + * 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 } from "@wso2/ui-toolkit"; +import { SkeletonBase, skeletonPulse } from "./styles"; + +// Diagram container with dotted background +const DiagramSkeletonContainer = styled.div` + height: 100%; + width: 100%; + background-image: radial-gradient(${ThemeColors.SURFACE_CONTAINER} 10%, transparent 0px); + background-size: 16px 16px; + background-color: ${ThemeColors.SURFACE_BRIGHT}; + font-family: "GilmerRegular"; + position: relative; + overflow: hidden; +`; + +// Start node skeleton (oval shape) +const StartNodeSkeleton = styled(SkeletonBase)` + width: 93.33px; + height: 33.33px; + border-radius: 40px; + position: absolute; + top: 200px; + left: 50%; + transform: translateX(-50%); +`; + +// AI Agent node skeleton (large rectangle with rounded corners) +const MiddleNodeSkeleton = styled(SkeletonBase)` + width: 280px; + height: 50px; + border-radius: 10px; + position: absolute; + top: 285px; + left: 50%; + transform: translateX(-50%); + display: flex; + flex-direction: column; + padding: 16px; + gap: 12px; +`; + +const ErrorNodeSkeleton = styled(SkeletonBase)` + width: 52px; + height: 52px; + border-radius: 8px; + position: absolute; + top: 435px; + left: 50%; + transform: translateX(-50%); + display: flex; + flex-direction: column; + padding: 16px; + gap: 12px; +`; + +// Return node skeleton (rectangle with rounded corners) +const ReturnNodeSkeleton = styled(SkeletonBase)` + width: 20px; + height: 20px; + border-radius: 100px; + position: absolute; + top: 542px; + left: 50%; + transform: translateX(-50%); + display: flex; + flex-direction: column; + padding: 12px; + gap: 8px; +`; + +// Arrow connector skeleton +const ArrowSkeleton = styled(SkeletonBase)` + width: 4px; + border-radius: 2px; + position: absolute; + left: 50%; + transform: translateX(-50%); +`; + +// Arrow head skeleton +const ArrowHeadSkeleton = styled.div` + position: absolute; + width: 0; + height: 0; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 8px solid var(--vscode-editor-inactiveSelectionBackground); + left: 50%; + transform: translateX(-50%); + animation: ${skeletonPulse} 1.5s ease-in-out infinite; +`; + +export const DiagramSkeleton = () => { + return ( + + {/* Start Node */} + + + {/* Arrow from Start to middle node */} + + + + + {/* Middle Node */} + + + {/* Arrow from middle node to error node */} + + + {/* Error Node */} + + + {/* Arrow from error node to return node */} + + + + + {/* Return Node */} + + + ); +}; + +export default DiagramSkeleton; diff --git a/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/SkeletonText.tsx b/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/SkeletonText.tsx deleted file mode 100644 index c1f94b0aae2..00000000000 --- a/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/SkeletonText.tsx +++ /dev/null @@ -1,27 +0,0 @@ -/** - * 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, { type FC, type HTMLProps } from "react"; - -interface Props { - className?: HTMLProps["className"]; -} - -export const SkeletonText: FC = ({ className }) => { - return
; -}; diff --git a/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/SwitchSkeleton.tsx b/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/SwitchSkeleton.tsx new file mode 100644 index 00000000000..fc4a76e6228 --- /dev/null +++ b/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/SwitchSkeleton.tsx @@ -0,0 +1,152 @@ +/** + * 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 { SkeletonBase } from "./styles"; + +// Switch container skeleton - matches SwitchContainer +const SwitchSkeletonContainer = styled.div<{ + width?: string | number; + height?: string | number; + sx?: any; +}>` + display: flex; + align-items: center; + justify-content: center; + flex-direction: row; + height: ${({ height = "30px" }) => + typeof height === "number" ? `${height}px` : height}; + width: ${({ width = "200px" }) => + typeof width === "number" ? `${width}px` : width}; + border: 1px solid var(--vscode-tree-indentGuidesStroke); + border-radius: 4px; + ${({ sx }: { sx?: any }) => sx}; +`; + +// Left inner container skeleton - matches LeftInnerContainer +const LeftInnerContainerSkeleton = styled.div` + display: flex; + align-items: center; + justify-content: center; + height: 100%; + width: 50%; + background-color: var(--vscode-tab-unfocusedInactiveBackground); + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +`; + +// Right inner container skeleton - matches RightInnerContainer +const RightInnerContainerSkeleton = styled.div` + display: flex; + align-items: center; + justify-content: center; + height: 100%; + width: 50%; + background-color: var(--vscode-tab-unfocusedInactiveBackground); + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +`; + +// Inner container skeleton - matches InnerContainer +const InnerContainerSkeleton = styled.div<{ + active?: boolean; +}>` + display: flex; + align-items: center; + justify-content: center; + height: calc(100% - 8px); + width: calc(100% - 8px); + font-weight: bold; + color: ${({ active }: { active?: boolean }) => + active ? "var(--vscode-editor-foreground)" : "var(--vscode-editor-foreground)"}; + background-color: ${({ active }: { active?: boolean }) => + active ? "var(--vscode-editor-background)" : "var(--vscode-tab-unfocusedInactiveBackground)"}; + margin: 4px; + border-radius: ${({ active }: { active?: boolean }) => active ? "4px" : 0}; +`; + +// Label skeleton - for text labels +const LabelSkeleton = styled(SkeletonBase)` + width: 40px; + height: 14px; + border-radius: 2px; +`; + +// Icon skeleton - for icons +const IconSkeleton = styled(SkeletonBase)` + width: 16px; + height: 16px; + border-radius: 50%; + margin-right: 4px; +`; + +// Content skeleton - matches Content +const ContentSkeleton = styled.div` + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + height: 100%; + width: 100%; + user-select: none; +`; + +interface SwitchSkeletonProps { + width?: string | number; + height?: string | number; + showIcons?: boolean; + leftLabel?: string; + rightLabel?: string; + checked?: boolean; + sx?: any; +} + +export const SwitchSkeleton: React.FC = ({ + width = "200px", + height = "30px", + showIcons = false, + leftLabel = "Flow", + rightLabel = "Sequence", + checked = false, + sx, +}) => { + const renderLabel = (label: string, isActive: boolean) => ( + + {showIcons && } + + + ); + + return ( + + + + {renderLabel(leftLabel, !checked)} + + + + + {renderLabel(rightLabel, checked)} + + + + ); +}; + +export default SwitchSkeleton; diff --git a/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/TitleBarSkeleton.tsx b/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/TitleBarSkeleton.tsx new file mode 100644 index 00000000000..2fdb869bd75 --- /dev/null +++ b/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/TitleBarSkeleton.tsx @@ -0,0 +1,154 @@ +/** + * 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 { Icon } from "@wso2/ui-toolkit"; +import { useRpcContext } from "@wso2/ballerina-rpc-client"; +import { SkeletonBase } from "./styles"; + +// TitleBar skeleton container - matches TitleBarContainer +const TitleBarSkeletonContainer = styled.div` + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding: 12px; + min-height: 56px; + background-color: var(--vscode-editorWidget-background); + z-index: 1000; +`; + +// Left container - matches LeftContainer +const LeftContainer = styled.div` + display: flex; + align-items: center; + gap: 12px; + flex: 1; + width: 100%; +`; + +// Right container - matches RightContainer +const RightContainer = styled.div` + display: flex; + align-items: center; + gap: 12px; +`; + +// Title section - matches TitleSection +const TitleSection = styled.div` + display: flex; + align-items: baseline; + gap: 12px; +`; + +// Back button skeleton - matches IconButton + +// Title skeleton - matches Title styling +const TitleSkeleton = styled(SkeletonBase)` + width: 180px; + height: 24px; + border-radius: 4px; + margin: 0; +`; + +// Actions container - matches ActionsContainer +const ActionsContainer = styled.div` + display: flex; + align-items: center; + gap: 8px; +`; + +// Action button skeleton - matches Button styling +const ActionButtonSkeleton = styled(SkeletonBase)` + border-radius: 4px; + padding: 8px 16px; +`; + +// Subtitle element skeleton for complex subtitle structures +const SubtitleElementSkeleton = styled.div` + display: flex; + align-items: center; + justify-content: flex-start; + gap: 12px; + width: 100%; +`; + +const LeftElementsWrapper = styled.div` + display: flex; + align-items: center; + gap: 12px; +`; + +const AccessorTypeSkeleton = styled(SkeletonBase)` + width: 160px; + height: 20px; + border-radius: 4px; +`; + +const IconButton = styled.div` + padding: 4px; + cursor: pointer; + border-radius: 4px; + + &:hover { + background-color: var(--vscode-toolbar-hoverBackground); + } + + & > div:first-child { + width: 24px; + height: 24px; + font-size: 24px; + } +`; + + +interface TitleBarSkeletonProps { +} + +export const TitleBarSkeleton: React.FC = ({ }) => { + + const { rpcClient } = useRpcContext(); + const handleBackButtonClick = () => { + rpcClient.getVisualizerRpcClient().goBack(); + }; + return ( + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default TitleBarSkeleton; diff --git a/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/index.tsx index be99d1fb5e1..53d47454d80 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/index.tsx @@ -16,4 +16,6 @@ * under the License. */ -export { SkeletonText } from "./SkeletonText"; +export { TitleBarSkeleton } from "./TitleBarSkeleton"; +export { SwitchSkeleton } from "./SwitchSkeleton"; +export { DiagramSkeleton } from "./DiagramSkeleton"; diff --git a/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/styles.tsx b/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/styles.tsx new file mode 100644 index 00000000000..6e753802bb9 --- /dev/null +++ b/workspaces/ballerina/ballerina-visualizer/src/components/Skeletons/styles.tsx @@ -0,0 +1,59 @@ +/** + * 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 { keyframes } from "@emotion/react"; +import styled from "@emotion/styled"; + +// Skeleton pulse animation +export const skeletonPulse = keyframes` + 0% { + opacity: 0.3; + } + 50% { + opacity: 0.9; + } + 100% { + opacity: 0.3; + } +`; + +// Base skeleton element +export const SkeletonBase = styled.div<{ + width?: string | number; + height?: string | number; + borderRadius?: string | number; + margin?: string; + position?: string; + top?: string | number; + left?: string | number; +}>` + background-color: var(--vscode-editor-inactiveSelectionBackground); + border-radius: ${({ borderRadius = "4px" }) => + typeof borderRadius === "number" ? `${borderRadius}px` : borderRadius}; + animation: ${skeletonPulse} 1.5s ease-in-out infinite; + width: ${({ width = "100%" }) => + typeof width === "number" ? `${width}px` : width}; + height: ${({ height = "16px" }) => + typeof height === "number" ? `${height}px` : height}; + margin: ${({ margin = "0" }) => margin}; + position: ${({ position = "static" }) => position}; + top: ${({ top }: { top?: string | number }) => + typeof top === "number" ? `${top}px` : top}; + left: ${({ left }: { left?: string | number }) => + typeof left === "number" ? `${left}px` : left}; +`; diff --git a/workspaces/ballerina/ballerina-visualizer/src/components/TitleBar/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/components/TitleBar/index.tsx index 3521ba23e30..9e900f6ca1d 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/components/TitleBar/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/components/TitleBar/index.tsx @@ -123,7 +123,7 @@ export function TitleBar(props: TitleBarProps) { {!hideBack && ( - + )} diff --git a/workspaces/ballerina/ballerina-visualizer/src/constants.ts b/workspaces/ballerina/ballerina-visualizer/src/constants.ts index ea7e2a45427..f6827f17e99 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/constants.ts +++ b/workspaces/ballerina/ballerina-visualizer/src/constants.ts @@ -23,3 +23,25 @@ const completionTriggers = `${TRIGGER_CHARACTERS.map((c) => `\\${c}`).join("")}\ export const EXPRESSION_EXTRACTION_REGEX = new RegExp( `(?(?:[a-zA-Z0-9_']+[${completionTriggers}])*(?:[a-zA-Z0-9_']+(?[${completionTriggers}])))?(?[a-zA-Z0-9_']*)$` ); + +export const BALLERINA = "ballerina"; +export const BALLERINAX = "ballerinax"; + +export const AI = "ai"; + +export const GET_DEFAULT_MODEL_PROVIDER = "getDefaultModelProvider"; +export const WSO2_MODEL_PROVIDER = "Default Model Provider (WSO2)"; + +export const PROVIDER_NAME_MAP: Record = { + "ai.anthropic": "Anthropic Model Provider", + "ai.openai": "OpenAI Model Provider", + "ai.azure": "Azure Model Provider", + "ai.mistral": "Mistral Model Provider", + "ai.deepseek": "Deepseek Model Provider", + "ai.ollama": "Ollama Model Provider", +}; + +export const RESOURCE_ACTION_CALL = "RESOURCE_ACTION_CALL"; +export const REMOTE_ACTION_CALL = "REMOTE_ACTION_CALL"; +export const FUNCTION_CALL = "FUNCTION_CALL"; +export const METHOD_CALL = "METHOD_CALL"; diff --git a/workspaces/ballerina/ballerina-visualizer/src/utils/bi.tsx b/workspaces/ballerina/ballerina-visualizer/src/utils/bi.tsx index 412b3cb0673..5f2ba54a7c7 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/utils/bi.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/utils/bi.tsx @@ -25,7 +25,7 @@ import { Parameter, FormImports, } from "@wso2/ballerina-side-panel"; -import { AddNodeVisitor, RemoveNodeVisitor, NodeIcon, traverseFlow, ConnectorIcon } from "@wso2/bi-diagram"; +import { AddNodeVisitor, RemoveNodeVisitor, NodeIcon, traverseFlow, ConnectorIcon, AIModelIcon } from "@wso2/bi-diagram"; import { Category, AvailableNode, @@ -46,7 +46,6 @@ import { Item, FunctionKind, functionKinds, - TRIGGER_CHARACTERS, Diagnostic, FUNCTION_TYPE, FunctionNode, @@ -122,11 +121,12 @@ function convertDiagramCategoryToSidePanelCategory(category: Category, functionT // HACK: use the icon of the first item in the category const icon = category.items.at(0)?.metadata.icon; + const codedata = (category.items.at(0) as AvailableNode)?.codedata; return { title: category.metadata.label, description: category.metadata.description, - icon: , + icon: , items: items, }; } @@ -154,6 +154,46 @@ export function convertFunctionCategoriesToSidePanelCategories( return panelCategories; } +export function convertModelProviderCategoriesToSidePanelCategories(categories: Category[]): PanelCategory[] { + const panelCategories = categories.map((category) => convertDiagramCategoryToSidePanelCategory(category)); + panelCategories.forEach((category) => { + category.items?.forEach((item) => { + if ((item as PanelNode).metadata?.codedata) { + const codedata = (item as PanelNode).metadata.codedata; + item.icon = ; + } else if (((item as PanelCategory).items.at(0) as PanelNode)?.metadata?.codedata) { + const codedata = ((item as PanelCategory).items.at(0) as PanelNode)?.metadata.codedata; + item.icon = ; + } + }); + }); + return panelCategories; +} + +export function convertVectorStoreCategoriesToSidePanelCategories(categories: Category[]): PanelCategory[] { + const panelCategories = categories.map((category) => convertDiagramCategoryToSidePanelCategory(category)); + panelCategories.forEach((category) => { + category.items?.forEach((item) => { + if ((item as PanelNode).metadata?.codedata) { + const codedata = (item as PanelNode).metadata.codedata; + item.icon = ; + } else if (((item as PanelCategory).items.at(0) as PanelNode)?.metadata?.codedata) { + const codedata = ((item as PanelCategory).items.at(0) as PanelNode)?.metadata.codedata; + item.icon = ; + } + }); + }); + return panelCategories; +} + +export function convertEmbeddingProviderCategoriesToSidePanelCategories(categories: Category[]): PanelCategory[] { + return convertModelProviderCategoriesToSidePanelCategories(categories); +} + +export function convertVectorKnowledgeBaseCategoriesToSidePanelCategories(categories: Category[]): PanelCategory[] { + return convertModelProviderCategoriesToSidePanelCategories(categories); +} + export function convertNodePropertiesToFormFields( nodeProperties: NodeProperties, connections?: FlowNode[], @@ -196,6 +236,7 @@ export function convertNodePropertyToFormField( advanceProps: convertNodePropertiesToFormFields(property.advanceProperties), valueType: property.valueType, items: getFormFieldItems(property, connections), + itemOptions: property.itemOptions, diagnostics: property.diagnostics?.diagnostics || [], valueTypeConstraint: property.valueTypeConstraint, lineRange: property?.codedata?.lineRange, @@ -306,8 +347,16 @@ export function getContainerTitle(view: SidePanelView, activeNode: FlowNode, cli return "Configure Tool"; case SidePanelView.ADD_TOOL: return "Add Tool"; + case SidePanelView.ADD_MCP_SERVER: + return "Add MCP Server"; + case SidePanelView.EDIT_MCP_SERVER: + return "Edit MCP Server"; case SidePanelView.NEW_TOOL: - return "Create New Tool"; + return "Add New Tool"; + case SidePanelView.NEW_TOOL_FROM_CONNECTION: + return "Create Tool from Connection"; + case SidePanelView.NEW_TOOL_FROM_FUNCTION: + return "Create Tool from Function"; case SidePanelView.AGENT_CONFIG: return "Configure Agent"; case SidePanelView.FORM: @@ -370,25 +419,26 @@ export function removeDraftNodeFromDiagram(flowModel: Flow) { return newFlow; } -export function enrichFormPropertiesWithValueConstraint( +export function enrichFormTemplatePropertiesWithValues( formProperties: NodeProperties, formTemplateProperties: NodeProperties ) { - const enrichedFormProperties = cloneDeep(formProperties); + const enrichedFormTemplateProperties = cloneDeep(formTemplateProperties); - for (const key in formTemplateProperties) { - if (formTemplateProperties.hasOwnProperty(key)) { - const expression = formTemplateProperties[key as NodePropertyKey]; - if (expression) { - const valConstraint = formTemplateProperties[key as NodePropertyKey]?.valueTypeConstraint; - if (valConstraint && enrichedFormProperties[key as NodePropertyKey]) { - enrichedFormProperties[key as NodePropertyKey].valueTypeConstraint = valConstraint; - } + for (const key in formProperties) { + if (formProperties.hasOwnProperty(key)) { + const formProperty = formProperties[key as NodePropertyKey]; + if ( + formProperty && + enrichedFormTemplateProperties[key as NodePropertyKey] != null + ) { + // Copy the value from formProperties to formTemplateProperties + enrichedFormTemplateProperties[key as NodePropertyKey].value = formProperty.value; } } } - return enrichedFormProperties; + return enrichedFormTemplateProperties; } function getEnrichedValue(kind: CompletionItemKind, value: string): CompletionInsertText { @@ -1034,7 +1084,7 @@ export function filterUnsupportedDiagnostics(diagnostics: Diagnostic[]): Diagnos /** * Check if the type is supported by the data mapper - * + * * @param type - The type to check * @returns Whether the type is supported by the data mapper */ diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/AIPanel.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/AIPanel.tsx index 699369b2cc4..5bf1f5a2383 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/AIPanel.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/AIPanel.tsx @@ -16,16 +16,16 @@ * under the License. */ -import React, { useEffect, useState } from 'react'; -import { AIMachineStateValue } from '@wso2/ballerina-core'; -import { useRpcContext } from '@wso2/ballerina-rpc-client'; -import { VSCodeProgressRing } from '@vscode/webview-ui-toolkit/react'; -import styled from '@emotion/styled'; -import AIChat from './components/AIChat'; -import { DisabledWindow } from './DisabledSection'; -import LoginPanel from './LoginPanel'; -import { LoadingRing } from '../../components/Loader'; -import WaitingForLogin from './WaitingForLoginSection'; +import React, { useEffect, useState } from "react"; +import { AIMachineStateValue } from "@wso2/ballerina-core"; +import { useRpcContext } from "@wso2/ballerina-rpc-client"; +import { VSCodeProgressRing } from "@vscode/webview-ui-toolkit/react"; +import styled from "@emotion/styled"; +import AIChat from "./components/AIChat"; +import { DisabledWindow } from "./DisabledSection"; +import LoginPanel from "./LoginPanel"; +import { LoadingRing } from "../../components/Loader"; +import WaitingForLogin from "./WaitingForLoginSection"; const LoaderWrapper = styled.div` display: flex; @@ -50,43 +50,68 @@ const AIPanel = (props: { state: AIMachineStateValue }) => { fetchContext(); }, [props.state]); + const renderUnknownState = (state: any) => { + console.warn("Unknown AI Machine State:", state); + return

Unknown state: {JSON.stringify(state)}

; + }; + const fetchContext = () => { - rpcClient.getAiPanelRpcClient().getAIMachineSnapshot().then((snapshot) => { - switch (snapshot.state) { - case "Initialize": - setViewComponent(); - break; - case "Unauthenticated": - setViewComponent(); - break; - case "Authenticating": - setViewComponent(); - break; - case "Authenticated": - setViewComponent(); - break; - case "Disabled": - setViewComponent(); - break; - default: - setViewComponent(

{snapshot.state}

); - } - }); - } + rpcClient + .getAiPanelRpcClient() + .getAIMachineSnapshot() + .then((snapshot) => { + console.log("AI Machine Snapshot:", snapshot); + let component: React.ReactNode; + + if (typeof snapshot.state === "string") { + // Handle primary states + const primaryStateComponents = { + Initialize: , + Unauthenticated: , + Authenticated: , + Disabled: , + }; + component = primaryStateComponents[snapshot.state] || renderUnknownState(snapshot.state); + } else if (typeof snapshot.state === "object" && snapshot.state.Authenticating) { + // Handle hierarchical Authenticating substates + const subState = snapshot.state.Authenticating; + + if (subState === "determineFlow") { + component = ; + } else if (["ssoFlow", "apiKeyFlow", "validatingApiKey"].includes(subState)) { + component = ( + + ); + } else { + component = renderUnknownState(snapshot.state); + } + } else { + component = renderUnknownState(snapshot.state); + } + + setViewComponent(component); + }); + }; return ( -
+
{!viewComponent ? ( - ) :
- {viewComponent} -
} + ) : ( +
{viewComponent}
+ )}
); }; -export default AIPanel; +export default AIPanel; diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/LoginPanel/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/LoginPanel/index.tsx index ff9170a53a6..93c958d653e 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/LoginPanel/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/LoginPanel/index.tsx @@ -75,6 +75,35 @@ const PostLoginSection = styled.div` display: flex; flex-direction: column; gap: 8px; + margin-bottom: 16px; +`; + +const Divider = styled.div` + display: flex; + align-items: center; + color: var(--vscode-widget-border); + font-size: 12px; + width: 100%; + &::before, + &::after { + content: ""; + flex: 1; + border-bottom: 1px solid var(--vscode-widget-border); + margin: 0 8px; + } +`; + +const TextButton = styled.button` + background: none; + border: none; + color: var(--vscode-textLink-foreground); + font-size: 13px; + cursor: pointer; + padding: 0; + margin-top: -6px; + &:hover { + text-decoration: underline; + } `; const LegalNotice: React.FC = () => { @@ -106,6 +135,10 @@ const LoginPanel: React.FC = () => { rpcClient.sendAIStateEvent(AIMachineEventType.LOGIN); }; + const handleAnthropicKeyClick = () => { + rpcClient.sendAIStateEvent(AIMachineEventType.AUTH_WITH_API_KEY); + }; + return ( @@ -132,6 +165,8 @@ const LoginPanel: React.FC = () => { Login to BI Copilot + or + Enter your Anthropic API Key ); diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/SettingsPanel/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/SettingsPanel/index.tsx index 26897fde055..9961fdfce02 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/SettingsPanel/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/SettingsPanel/index.tsx @@ -102,10 +102,10 @@ export const SettingsPanel = (props: { onClose: () => void }) => { Connect to AI Platforms for Enhanced Features - Login to BI Copilot + Logout from BI Copilot - Login to access AI-powered code generation, completions, test generation, data mappings, and - more. + Logging out will end your session and disconnect access to AI-powered tools like code + generation, completions, test generation, and data mappings. diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/WaitingForLoginSection/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/WaitingForLoginSection/index.tsx index aae74f8704f..c0facb8b48d 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/WaitingForLoginSection/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/WaitingForLoginSection/index.tsx @@ -17,10 +17,13 @@ */ import styled from "@emotion/styled"; -import { AIMachineEventType } from '@wso2/ballerina-core'; -import { useRpcContext } from '@wso2/ballerina-rpc-client'; +import { AIMachineEventType, LoginMethod } from "@wso2/ballerina-core"; +import { useRpcContext } from "@wso2/ballerina-rpc-client"; import { AlertBox } from "../AlertBox"; +import { useState } from "react"; +import { Codicon } from "@wso2/ui-toolkit"; +import { VSCodeButton, VSCodeTextField } from "@vscode/webview-ui-toolkit/react"; const Container = styled.div` display: flex; @@ -30,13 +33,236 @@ const Container = styled.div` gap: 8px; `; -const WaitingForLogin = () => { +// AlertBox-style container for consistency +const AlertContainer = styled.div<{ variant: "primary" | "secondary" }>` + border-left: 0.3rem solid + var( + ${(props: { variant: string }) => + props.variant === "secondary" ? "--vscode-editorWidget-border" : "--vscode-focusBorder"} + ); + background: var( + ${(props: { variant: string }) => + props.variant === "secondary" ? "transparent" : "--vscode-inputValidation-infoBackground"} + ); + display: flex; + flex-direction: column; + align-items: flex-start; + padding: 1rem; + gap: 12px; + margin-bottom: 15px; + width: -webkit-fill-available; +`; + +const Title = styled.div` + color: var(--vscode-foreground); + font-weight: 500; +`; + +const SubTitle = styled.div` + color: var(--vscode-descriptionForeground); + font-size: 12px; + font-weight: 400; + line-height: 1.5; +`; + +const InputContainer = styled.div` + display: flex; + flex-direction: column; + gap: 4px; + padding: 2px 4px; + border: 1px solid var(--vscode-editorWidget-border); + border-radius: 4px; + background-color: var(--vscode-editor-background); + color: var(--vscode-editor-foreground); + width: 100%; + box-sizing: border-box; + min-height: 32px; + &:focus-within { + border-color: var(--vscode-button-background); + } +`; + +const InputRow = styled.div` + display: flex; + align-items: center; + width: 100%; + min-height: 28px; + gap: 8px; +`; + +const StyledTextField = styled(VSCodeTextField)` + flex: 1; + border: none; + background: transparent; + height: 28px; + min-height: 28px; + display: flex; + align-items: center; + width: 100%; + &::part(control) { + border: none !important; + background: transparent !important; + padding: 0 4px; + outline: none !important; + box-shadow: none !important; + height: 28px !important; + min-height: 28px !important; + line-height: 28px !important; + display: flex !important; + align-items: center !important; + width: 100% !important; + flex: 1 !important; + } + &::part(control):focus { + outline: none !important; + box-shadow: none !important; + border: none !important; + } + &::part(root) { + border: none !important; + background: transparent !important; + height: 28px !important; + min-height: 28px !important; + display: flex !important; + align-items: center !important; + width: 100% !important; + flex: 1 !important; + } +`; + +const EyeButton = styled.button` + width: 24px; + height: 24px; + background-color: transparent; + color: var(--vscode-icon-foreground); + border: none; + border-radius: 4px; + cursor: pointer; + font-size: 16px; + display: flex; + align-items: center; + justify-content: center; + transition: background-color 0.2s; + box-sizing: border-box; + flex-shrink: 0; + &:hover { + background-color: var(--vscode-toolbar-hoverBackground); + } + &:active { + background-color: var(--vscode-toolbar-activeBackground); + } +`; + +const ButtonContainer = styled.div` + display: flex; + gap: 8px; + align-self: flex-start; +`; + +const ErrorMessage = styled.div` + display: flex; + align-items: flex-start; + gap: 8px; + color: var(--vscode-errorForeground); + font-size: 12px; + font-weight: 400; + line-height: 1.5; + width: 100%; +`; + +interface WaitingForLoginProps { + loginMethod?: LoginMethod; + isValidating?: boolean; + errorMessage?: string; +} + +const WaitingForLogin = ({ loginMethod, isValidating = false, errorMessage }: WaitingForLoginProps) => { const { rpcClient } = useRpcContext(); + const [apiKey, setApiKey] = useState(""); + const [showApiKey, setShowApiKey] = useState(false); const cancelLogin = () => { rpcClient.sendAIStateEvent(AIMachineEventType.CANCEL_LOGIN); }; + const connectWithKey = () => { + if (apiKey.trim()) { + // Send the API key to the state machine for validation + rpcClient.sendAIStateEvent({ + type: AIMachineEventType.SUBMIT_API_KEY, + payload: { apiKey: apiKey.trim() }, + }); + } + }; + + const handleApiKeyChange = (e: any) => { + setApiKey(e.target.value); + }; + + const toggleApiKeyVisibility = () => { + setShowApiKey(!showApiKey); + }; + + if (loginMethod === LoginMethod.ANTHROPIC_KEY) { + return ( + + + Connect with Anthropic API Key + + Enter your Anthropic API key to connect to BI Copilot. Your API key will be securely stored + and used for authentication. + + + + + + + + + + + + {errorMessage && ( + + + {errorMessage} + + )} + + + + {isValidating ? "Validating..." : "Connect with Key"} + + + Cancel + + + + + ); + } + + // Default: BI_INTEL login method + return ( { @@ -167,6 +163,9 @@ const AIChat: React.FC = () => { const functionsRef = useRef([]); const lastAttatchmentsRef = useRef([]); const aiChatInputRef = useRef(null); + const messagesRef = useRef([]); + + const isErrorChunkReceivedRef = useRef(false); const messagesEndRef = React.createRef(); @@ -178,7 +177,7 @@ const AIChat: React.FC = () => { const { feedbackGiven, setFeedbackGiven, handleFeedback } = useFeedback({ messages, - currentDiagnosticsRef + currentDiagnosticsRef, }); /** @@ -214,8 +213,8 @@ const AIChat: React.FC = () => { chatLocation = (await rpcClient.getVisualizerLocation()).projectUri; setIsReqFileExists( chatLocation != null && - chatLocation != undefined && - (await rpcClient.getAiPanelRpcClient().isRequirementsSpecificationFileExist(chatLocation)) + chatLocation != undefined && + (await rpcClient.getAiPanelRpcClient().isRequirementsSpecificationFileExist(chatLocation)) ); generateNaturalProgrammingTemplate(isReqFileExists); @@ -283,6 +282,87 @@ const AIChat: React.FC = () => { }); }, []); + rpcClient?.onChatNotify((response: ChatNotify) => { + const type = response.type; + if (type === "content_block") { + const content = response.content; + setMessages((prevMessages) => { + const newMessages = [...prevMessages]; + newMessages[newMessages.length - 1].content += content; + return newMessages; + }); + } else if (type === "content_replace") { + const content = response.content; + setMessages((prevMessages) => { + const newMessages = [...prevMessages]; + newMessages[newMessages.length - 1].content = content; + return newMessages; + }); + } else if (type === "intermediary_state") { + const state = response.state; + setTestGenIntermediaryState(state); + } else if (type === "diagnostics") { + const content = response.diagnostics; + currentDiagnosticsRef.current = content; + } else if (type === "messages") { + const messages = response.messages; + messagesRef.current = messages; + } else if (type === "stop") { + console.log("Received stop signal"); + setIsCodeLoading(false); + setIsLoading(false); + const command = response.command; + addChatEntry( + "user", + messages[messages.length - 2].content, + command != undefined && command == Command.Code + ); // Handle this in input layer? + addChatEntry("assistant", messages[messages.length - 1].content); + } else if (type === "error") { + console.log("Received error signal"); + const errorTemplate = `\n\n${response.content}`; + setMessages((prevMessages) => { + const newMessages = [...prevMessages]; + let content = newMessages[newMessages.length - 1].content; + + // Check if there's an unclosed code block and close it properly + const codeBlockPattern = /[\s]*```\w+/g; + const openCodeBlocks = (content.match(codeBlockPattern) || []).length; + const closedCodeBlocks = (content.match(/<\/code>/g) || []).length; + + if (openCodeBlocks > closedCodeBlocks) { + // Check what's missing at the end + const endsWithPartialClose = /```\s*<\/cod?e?$/.test(content.trim()); + const endsWithBackticks = /```\s*$/.test(content.trim()); + const endsWithPartialBackticks = /`{1,2}$/.test(content.trim()); + + if (endsWithPartialClose) { + // Remove partial closing and add complete one + content = content.replace(/```\s*<\/cod?e?$/, ""); + content += "\n```\n"; + } else if (endsWithBackticks) { + // Already has ```, just need + content += "\n"; + } else if (endsWithPartialBackticks) { + // Remove partial backticks and add complete closing + content = content.replace(/`{1,2}$/, ""); + content += "\n```\n"; + } else { + // No closing elements, add both + content += "\n```\n"; + } + } + + newMessages[newMessages.length - 1].content = content + errorTemplate; + console.log(newMessages); + return newMessages; + }); + setIsCodeLoading(false); + setIsLoading(false); + isErrorChunkReceivedRef.current = true; + } + }); + function generateNaturalProgrammingTemplate(isReqFileExists: boolean) { if (isReqFileExists) { upsertTemplate( @@ -401,6 +481,7 @@ const AIChat: React.FC = () => { setMessages((prevMessages) => prevMessages.filter((message, index) => message.type !== "label")); setMessages((prevMessages) => prevMessages.filter((message, index) => message.type !== "question")); setIsLoading(true); + isErrorChunkReceivedRef.current = false; setMessages((prevMessages) => prevMessages.filter((message, index) => index <= lastQuestionIndex || message.type !== "question") ); @@ -424,7 +505,11 @@ const AIChat: React.FC = () => { }, message); } - async function processContent(content: { input: Input[]; attachments: Attachment[]; metadata?: Record }) { + async function processContent(content: { + input: Input[]; + attachments: Attachment[]; + metadata?: Record; + }) { const inputText = stringifyInputArrayWithBadges(content.input); const parsedInput = parseInput(content.input, commandTemplates); const attachments = content.attachments; @@ -433,10 +518,7 @@ const AIChat: React.FC = () => { if (parsedInput && "type" in parsedInput && parsedInput.type === "error") { throw new Error(parsedInput.message); } else if ("text" in parsedInput && !("command" in parsedInput)) { - await processCodeGeneration( - [parsedInput.text, attachments, CodeGenerationType.CODE_GENERATION], - inputText - ); + await processCodeGeneration([parsedInput.text, attachments, CodeGenerationType.CODE_GENERATION], inputText); } else if ("command" in parsedInput) { switch (parsedInput.command) { case Command.NaturalProgramming: { @@ -502,10 +584,7 @@ const AIChat: React.FC = () => { ); break; } - await processCodeGeneration( - [useCase, attachments, CodeGenerationType.CODE_GENERATION], - inputText - ); + await processCodeGeneration([useCase, attachments, CodeGenerationType.CODE_GENERATION], inputText); break; } case Command.Tests: { @@ -560,11 +639,7 @@ const AIChat: React.FC = () => { ); break; case "inline-mappings": - await processInlineMappingParameters( - inputText, - metadata, - attachments, - ); + await processInlineMappingParameters(inputText, metadata, attachments); break; } break; @@ -643,214 +718,21 @@ const AIChat: React.FC = () => { setIsSyntaxError(false); } - async function processCodeGeneration(content: [string, Attachment[], string], message: string) { + async function processCodeGeneration(content: [string, Attachment[], OperationType], message: string) { const [useCase, attachments, operationType] = content; - - let assistant_response = ""; - let project: ProjectSource; - try { - project = await rpcClient.getAiPanelRpcClient().getProjectSource(operationType); - } catch (error) { - throw new Error( - "This workspace doesn't appear to be a Ballerina project. Please open a folder that contains a Ballerina.toml file to continue." - ); - } - const requestBody: any = { - usecase: useCase, - chatHistory: chatArray, - sourceFiles: transformProjectSource(project), - operationType, - packageName: project.projectName, - }; - const fileAttatchments = attachments.map((file) => ({ fileName: file.name, content: file.content, })); - requestBody.fileAttachmentContents = fileAttatchments; - lastAttatchmentsRef.current = fileAttatchments; - - const response = await fetchWithAuth({ - url: backendRootUri + "/code", - method: "POST", - body: requestBody, - rpcClient: rpcClient, - }); - - if (!response.ok) { - setIsLoading(false); - let error = `Failed to fetch response.`; - if (response.status == 429) { - response.json().then((body) => { - error += RATE_LIMIT_ERROR; - }); - } - throw new Error(error); - } - const reader: ReadableStreamDefaultReader = response.body?.getReader(); - const decoder = new TextDecoder(); - let buffer = ""; - let codeSnippetBuffer = ""; - remainingTokenPercentage = "Unlimited"; - setIsCodeLoading(true); - while (true) { - const { done, value } = await reader.read(); - if (done) { - setIsLoading(false); - break; - } - - buffer += decoder.decode(value, { stream: true }); - - let boundary = buffer.indexOf("\n\n"); - while (boundary !== -1) { - const chunk = buffer.slice(0, boundary + 2); - buffer = buffer.slice(boundary + 2); - try { - await processSSEEvent(chunk); - } catch (error) { - console.error("Failed to parse SSE event:", error); - } - - boundary = buffer.indexOf("\n\n"); - } - } - - async function processSSEEvent(chunk: string) { - const event = parseSSEEvent(chunk); - if (event.event == "content_block_delta") { - let textDelta = event.body.text; - assistant_response += textDelta; - - handleContentBlockDelta(textDelta); - } else if (event.event == "functions") { - // Update the functions state instead of the global variable - functionsRef.current = event.body; - } else if (event.event == "message_stop") { - let diagnostics: DiagnosticEntry[] = []; - try { - const postProcessResp: PostProcessResponse = await rpcClient.getAiPanelRpcClient().postProcess({ - assistant_response: assistant_response, - }); - console.log("Raw resp Before repair:", assistant_response); - assistant_response = postProcessResp.assistant_response; - diagnostics = postProcessResp.diagnostics.diagnostics; - console.log("Initial Diagnostics : ", diagnostics); - currentDiagnosticsRef.current = diagnostics; - } catch (error) { - // Add this catch block because `Add to Integration` button not appear for `/code` - // Related issue: https://github.com/wso2/vscode-extensions/issues/5065 - console.log("A critical error occurred while post processing the response: ", error); - diagnostics = []; - } - const MAX_REPAIR_ATTEMPTS = 3; - let repair_attempt = 0; - let diagnosticFixResp = assistant_response; - while ( - hasCodeBlocks(assistant_response) && - diagnostics.length > 0 && - repair_attempt < MAX_REPAIR_ATTEMPTS - ) { - console.log("Repair iteration: ", repair_attempt); - console.log("Diagnotsics trynna fix: ", diagnostics); - const diagReq = { - response: diagnosticFixResp, - diagnostics: diagnostics, - }; - const startTime = performance.now(); - let newReqBody: any = { - usecase: useCase, - chatHistory: chatArray, - sourceFiles: transformProjectSource(project), - diagnosticRequest: diagReq, - functions: functionsRef.current, - operationType, - packageName: project.projectName, - }; - if (attachments.length > 0) { - newReqBody.fileAttachmentContents = fileAttatchments; - } - const response = await fetchWithAuth({ - url: backendRootUri + "/code/repair", - method: "POST", - body: newReqBody, - rpcClient: rpcClient, - }); - if (!response.ok) { - setIsCodeLoading(false); - console.log("errr"); - break; - } else { - const jsonBody = await response.json(); - const repairResponse = jsonBody.repairResponse; - console.log("Resposne of attempt" + repair_attempt + " : ", repairResponse); - // replace original response with new code blocks - diagnosticFixResp = replaceCodeBlocks(diagnosticFixResp, repairResponse); - const postProcessResp: PostProcessResponse = await rpcClient.getAiPanelRpcClient().postProcess({ - assistant_response: diagnosticFixResp, - }); - diagnosticFixResp = postProcessResp.assistant_response; - const endTime = performance.now(); - const executionTime = endTime - startTime; - console.log(`Repair call time: ${executionTime} milliseconds`); - console.log("After auto repair, Diagnostics : ", postProcessResp.diagnostics.diagnostics); - diagnostics = postProcessResp.diagnostics.diagnostics; - currentDiagnosticsRef.current = postProcessResp.diagnostics.diagnostics; - repair_attempt++; - } - } - assistant_response = diagnosticFixResp; - setIsCodeLoading(false); - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content = assistant_response; - return newMessages; - }); - } else if (event.event == "error") { - console.log("Streaming Error: " + event.body); - setIsLoading(false); - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content += - "\nUnknown error occurred while receiving the response."; - newMessages[newMessages.length - 1].type = "Error"; - return newMessages; - }); - assistant_response = "\nUnknown error occurred while receiving the response."; - throw new Error("Streaming error"); - } - } - - function handleContentBlockDelta(textDelta: string) { - const matchText = codeSnippetBuffer + textDelta; - const matchedResult = findRegexMatches(matchText); - if (matchedResult.length > 0) { - if (matchedResult[0].end === matchText.length) { - codeSnippetBuffer = matchText; - } else { - codeSnippetBuffer = ""; - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content += matchText; - return newMessages; - }); - } - } else { - codeSnippetBuffer = ""; - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content += matchText; - return newMessages; - }); - } - } + const requestBody: GenerateCodeRequest = { + usecase: useCase, + chatHistory: chatArray, + operationType, + fileAttachmentContents: fileAttatchments, + }; - const userMessage = getUserMessage([message, attachments]); - addChatEntry("user", userMessage, true); - const diagnosedSourceFiles: ProjectSource = getProjectFromResponse(assistant_response); - setIsSyntaxError(await rpcClient.getAiPanelRpcClient().checkSyntaxError(diagnosedSourceFiles)); - addChatEntry("assistant", assistant_response); + await rpcClient.getAiPanelRpcClient().generateCode(requestBody); } // Helper function to escape regex special characters in a string @@ -1144,54 +1026,13 @@ const AIChat: React.FC = () => { targetType === "service" ? await rpcClient.getAiPanelRpcClient().getServiceSourceForName(target) : await rpcClient.getAiPanelRpcClient().getResourceSourceForMethodAndPath(target); - const requestBody = { - targetType: targetType, + const requestBody: TestPlanGenerationRequest = { + targetType: targetType === "service" ? TestGenerationTarget.Service : TestGenerationTarget.Function, targetSource: targetSource, + target: target, }; - const response = await fetchWithAuth({ - url: backendRootUri + "/testplan", - method: "POST", - body: requestBody, - rpcClient: rpcClient, - }); - - if (!response.ok) { - handleErrorResponse(response); - } - - const reader = response.body?.getReader(); - const decoder = new TextDecoder(); - let buffer = ""; - - while (true) { - const { done, value } = await reader.read(); - if (done) { - if (targetType === "service") { - await processServiceTestGeneration(content, target, assistantResponse); - setIsLoading(false); - } else if (targetType === "function") { - assistantResponse += `\n\n`; - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content = assistantResponse; - return newMessages; - }); - setTestGenIntermediaryState({ - content: content, - resourceFunction: target, - testPlan: assistantResponse, - }); - } else { - setIsLoading(false); - throw new Error(`Invalid target type: ${targetType}`); - } - break; - } - - buffer += decoder.decode(value, { stream: true }); - buffer = await processBuffer(buffer); - } + await rpcClient.getAiPanelRpcClient().generateTestPlan(requestBody); } catch (error: any) { setIsLoading(false); const errorName = error instanceof Error ? error.name : "Unknown error"; @@ -1203,222 +1044,6 @@ const AIChat: React.FC = () => { throw new Error(errorMessage); } } - - async function processBuffer(buffer: string) { - let boundary = buffer.indexOf("\n\n"); - while (boundary !== -1) { - const chunk = buffer.slice(0, boundary + 2); - buffer = buffer.slice(boundary + 2); - await processSSEEvent(chunk); - boundary = buffer.indexOf("\n\n"); - } - return buffer; - } - - async function processSSEEvent(chunk: string) { - try { - const event = parseCopilotSSEEvent(chunk); - if (event.event === CopilotEvent.CONTENT_BLOCK) { - const text = (event.body as CopilotContentBlockContent).text; - assistantResponse += text; - handleContentBlockDelta(text); - } else if (event.event === "error") { - throw new Error(`Streaming Error: ${(event.body as CopilotErrorContent).message}`); - } - } catch (error) { - setIsLoading(false); - const errorMessage = error instanceof Error ? error.message : "Unknown error"; - throw new Error(`Failed to parse SSE event: ${errorMessage}`); - } - } - - function handleContentBlockDelta(text: string) { - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content += text; - return newMessages; - }); - } - - async function handleErrorResponse(response: Response) { - if (response.status === 429) { - const body = await response.json(); - throw new Error(`Too many requests: ${RATE_LIMIT_ERROR}`); - } - - throw new Error(`Failed to fetch response. HTTP Status: ${response.status}`); - } - } - - async function processServiceTestGeneration( - content: [string, Attachment[]], - serviceName: string, - testPlan: string - ) { - let assistantResponse = `${testPlan}`; - - const updateAssistantMessage = (message: string) => { - assistantResponse += message; - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content = assistantResponse; - return newMessages; - }); - }; - - updateAssistantMessage( - `\n\n**Initiating test generation for the ${serviceName} service, following the _outlined test plan_. Please wait...**` - ); - - updateAssistantMessage( - `\n\nGenerating tests for the ${serviceName} service. This may take a moment.` - ); - - try { - const response = await rpcClient.getAiPanelRpcClient().getGeneratedTests({ - backendUri: backendRootUri, - targetType: TestGenerationTarget.Service, - targetIdentifier: serviceName, - testPlan, - }); - updateAssistantMessage(`\nAnalyzing generated tests for potential issues.`); - - const diagnostics = await rpcClient.getAiPanelRpcClient().getTestDiagnostics(response); - let testCode = response.testSource; - const testConfig = response.testConfig; - - if (diagnostics.diagnostics.length > 0) { - updateAssistantMessage( - `\nRefining tests based on feedback to ensure accuracy and reliability.` - ); - const fixedCode = await rpcClient.getAiPanelRpcClient().getGeneratedTests({ - backendUri: backendRootUri, - targetType: TestGenerationTarget.Service, - targetIdentifier: serviceName, - testPlan: testPlan, - diagnostics: diagnostics, - existingTests: response.testSource, - }); - testCode = fixedCode.testSource; - } - - updateAssistantMessage( - `\n\nTest generation completed. Displaying the generated tests for the ${serviceName} service below:` - ); - - setIsLoading(false); - setIsCodeLoading(false); - - updateAssistantMessage( - `\n\n\n\`\`\`ballerina\n${testCode}\n\`\`\`\n` - ); - if (testConfig) { - updateAssistantMessage( - `\n\n\n\`\`\`ballerina\n${testConfig}\n\`\`\`\n` - ); - } - - const userMessage = getUserMessage(content); - addChatEntry("user", userMessage); - addChatEntry("assistant", assistantResponse); - } catch (error) { - throw error; - } - } - - async function processFunctionTestGeneration( - content: [string, Attachment[]], - functionIdentifier: string, - testPlan: string - ) { - const testPath = "tests/test.bal"; - setIsCodeLoading(true); - let assistantResponse = `${testPlan}`; - - const updateAssistantMessage = (message: string) => { - assistantResponse += message; - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content = assistantResponse; - return newMessages; - }); - }; - - updateAssistantMessage( - `\n\n**Initiating test generation for the function ${functionIdentifier}, following the _outlined test plan_. Please wait...**` - ); - - updateAssistantMessage( - `\n\nGenerating tests for the function ${functionIdentifier}. This may take a moment.` - ); - - try { - const response = await rpcClient.getAiPanelRpcClient().getGeneratedTests({ - backendUri: backendRootUri, - targetType: TestGenerationTarget.Function, - targetIdentifier: functionIdentifier, - testPlan, - }); - updateAssistantMessage(`\nAnalyzing generated tests for potential issues.`); - - let existingSource = ""; - try { - existingSource = await rpcClient.getAiPanelRpcClient().getFromFile({ filePath: testPath }); - } catch { - // File doesn't exist - } - const generatedFullSource = existingSource - ? existingSource + - "\n\n// >>>>>>>>>>>>>>TEST CASES NEED TO BE FIXED <<<<<<<<<<<<<<<\n\n" + - response.testSource - : response.testSource; - - const diagnostics = await rpcClient.getAiPanelRpcClient().getTestDiagnostics({ - testSource: generatedFullSource, - }); - - console.log(diagnostics); - - let testCode = response.testSource; - const testConfig = response.testConfig; - - if (diagnostics.diagnostics.length > 0) { - updateAssistantMessage( - `\nRefining tests based on feedback to ensure accuracy and reliability.` - ); - const fixedCode = await rpcClient.getAiPanelRpcClient().getGeneratedTests({ - backendUri: backendRootUri, - targetType: TestGenerationTarget.Function, - targetIdentifier: functionIdentifier, - testPlan: testPlan, - diagnostics: diagnostics, - existingTests: generatedFullSource, - }); - testCode = fixedCode.testSource; - } - - updateAssistantMessage( - `\n\nTest generation completed. Displaying the generated tests for the function ${functionIdentifier} below:` - ); - - setIsLoading(false); - setIsCodeLoading(false); - - updateAssistantMessage( - `\n\n\n\`\`\`ballerina\n${testCode}\n\`\`\`\n` - ); - if (testConfig) { - updateAssistantMessage( - `\n\n\n\`\`\`ballerina\n${testConfig}\n\`\`\`\n` - ); - } - - const userMessage = getUserMessage(content); - addChatEntry("user", userMessage); - addChatEntry("assistant", assistantResponse); - } catch (error) { - throw error; - } } // Process records from another package @@ -1489,14 +1114,14 @@ const AIChat: React.FC = () => { }); const fileName = func.filePath.split("/").pop(); - const contentLines = functionContent.split('\n'); + const contentLines = functionContent.split("\n"); // Filter out commented lines (both // and # style comments) - const nonCommentedLines = contentLines.filter(line => { + const nonCommentedLines = contentLines.filter((line) => { const trimmedLine = line.trim(); - return !(trimmedLine.startsWith('//') || trimmedLine.startsWith('#')); + return !(trimmedLine.startsWith("//") || trimmedLine.startsWith("#")); }); - const cleanContent = nonCommentedLines.join('\n'); - + const cleanContent = nonCommentedLines.join("\n"); + const signatureRegex = /function\s+(\w+)\s*\(([^)]*)\)\s*returns\s+([^{=]+)(?:\s*=>\s*)?/g; // Use matchAll to find all function signatures in the content @@ -1720,44 +1345,67 @@ const AIChat: React.FC = () => { addChatEntry("assistant", assistant_response); } - async function processInlineMappingParameters(message: string, metadata?: Record, attachments?: Attachment[],) { + async function processInlineMappingParameters( + message: string, + metadata?: Record, + attachments?: Attachment[] + ) { let assistant_response = ""; let finalContent = ""; - let fileName = metadata.codeData.lineRange.fileName + + if (!metadata || Object.keys(metadata).length === 0) { + throw new Error(`Please make sure variables are initialized, and then try again.`); + } + + let fileName = metadata.codeData.lineRange.fileName; const variableName = metadata.name; const typeName = metadata.mappingsModel.output.typeName; setIsLoading(true); - const requestPayload: any = { - backendUri: "", - token: "", - metadata - }; - if (attachments && attachments.length > 0) { - requestPayload.attachment = attachments; - } - const allMappingsRequest = await rpcClient.getAiPanelRpcClient().getMappingsFromModel(requestPayload); - const sourceResponse = await rpcClient.getInlineDataMapperRpcClient().getAllDataMapperSource(allMappingsRequest); + try { + const requestPayload: any = { + metadata, + }; + if (attachments && attachments.length > 0) { + requestPayload.attachment = attachments; + } + const allMappingsRequest = await rpcClient.getAiPanelRpcClient().getMappingsFromModel(requestPayload); + const sourceResponse = await rpcClient + .getInlineDataMapperRpcClient() + .getAllDataMapperSource(allMappingsRequest); - setIsLoading(false); + setIsLoading(false); - finalContent = sourceResponse.textEdits[allMappingsRequest.filePath]?.[0]?.newText; + finalContent = sourceResponse.textEdits[allMappingsRequest.filePath]?.[0]?.newText; - assistant_response = `Here are the data mappings:\n\n`; - assistant_response += `\n**Note**: When you click **Add to Integration**, it will override your existing mappings.\n`; + assistant_response = `Here are the data mappings:\n\n`; + assistant_response += `\n**Note**: When you click **Add to Integration**, it will override your existing mappings.\n`; - const formattedContent = `${typeName} ${variableName} = {\n${formatWithProperIndentation(finalContent)}\n};`; - - assistant_response += `\n\`\`\`ballerina\n${formattedContent}\n\`\`\`\n`; + const moduleInfo = metadata.mappingsModel.output.moduleInfo; + const hasModuleInfo = moduleInfo && moduleInfo.moduleName; - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content = assistant_response; - return newMessages; - }); - addChatEntry("user", message); - addChatEntry("assistant", assistant_response); + const typePrefix = hasModuleInfo ? `${moduleInfo.moduleName.split(".").pop()}:${typeName}` : typeName; + + const formattedContent = `${typePrefix} ${variableName} = {\n${formatWithProperIndentation( + finalContent + )}\n};`; + + assistant_response += `\n\`\`\`ballerina\n${formattedContent}\n\`\`\`\n`; + + setMessages((prevMessages) => { + const newMessages = [...prevMessages]; + newMessages[newMessages.length - 1].content = assistant_response; + return newMessages; + }); + addChatEntry("user", message); + addChatEntry("assistant", assistant_response); + + return { success: true, response: assistant_response }; + } catch (error) { + setIsLoading(false); + return { error: error instanceof Error ? error.message : "An unexpected error occurred" }; + } } async function processContextTypeCreation(message: string, attachments: Attachment[]) { @@ -1825,17 +1473,17 @@ const AIChat: React.FC = () => { let formatted_response = ";"; setIsLoading(true); try { - assistant_response = await rpcClient.getAiPanelRpcClient().getFromDocumentation(messageBody); + assistant_response = await rpcClient.getAiPanelRpcClient().getFromDocumentation(messageBody); formatted_response = assistant_response.replace( /^([ \t]*)```ballerina\s*\n([\s\S]*?)^[ \t]*```/gm, (_, indent, codeBlock) => { - // Remove the common indent from all lines in the code block - const cleanedCode = codeBlock - .split('\n') - .map((line: string) => line.startsWith(indent) ? line.slice(indent.length) : line) - .join('\n'); - - return `\n${cleanedCode}\n`; + // Remove the common indent from all lines in the code block + const cleanedCode = codeBlock + .split("\n") + .map((line: string) => (line.startsWith(indent) ? line.slice(indent.length) : line)) + .join("\n"); + + return `\n${cleanedCode}\n`; } ); @@ -1863,239 +1511,29 @@ const AIChat: React.FC = () => { } async function processHealthcareCodeGeneration(useCase: string, message: string) { - let assistant_response = ""; - let project: ProjectSource; - try { - project = await rpcClient.getAiPanelRpcClient().getProjectSource(CodeGenerationType.CODE_GENERATION); - } catch (error) { - throw new Error( - "This workspace doesn't appear to be a Ballerina project. Please open a folder that contains a Ballerina.toml file to continue." - ); - } - const requestBody: any = { + const requestBody: GenerateCodeRequest = { usecase: useCase, chatHistory: chatArray, - sourceFiles: transformProjectSource(project), - packageName: project.projectName, + fileAttachmentContents: [], + operationType: CodeGenerationType.CODE_GENERATION, }; - const response = await fetchWithAuth({ - url: backendRootUri + "/healthcare", - method: "POST", - body: requestBody, - rpcClient: rpcClient, - }); - - if (!response.ok) { - setIsLoading(false); - let error = `Failed to fetch response.`; - if (response.status == 429) { - response.json().then((body) => { - error += RATE_LIMIT_ERROR; - }); - } - throw new Error(error); - } - const reader: ReadableStreamDefaultReader = response.body?.getReader(); - const decoder = new TextDecoder(); - let buffer = ""; - let codeSnippetBuffer = ""; - remainingTokenPercentage = "Unlimited"; - setIsCodeLoading(true); - while (true) { - const { done, value } = await reader.read(); - if (done) { - setIsLoading(false); - break; - } - - buffer += decoder.decode(value, { stream: true }); - - let boundary = buffer.indexOf("\n\n"); - while (boundary !== -1) { - const chunk = buffer.slice(0, boundary + 2); - buffer = buffer.slice(boundary + 2); - try { - await processSSEEvent(chunk); - } catch (error) { - console.error("Failed to parse SSE event:", error); - } - - boundary = buffer.indexOf("\n\n"); - } - } - - async function processSSEEvent(chunk: string) { - const event = parseSSEEvent(chunk); - if (event.event == "content_block_delta") { - let textDelta = event.body.text; - assistant_response += textDelta; - - handleContentBlockDelta(textDelta); - } else if (event.event == "message_stop") { - setIsCodeLoading(false); - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content = assistant_response; - return newMessages; - }); - } else if (event.event == "error") { - console.log("Streaming Error: ", event); - setIsLoading(false); - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content += - "\nUnknown error occurred while receiving the response."; - newMessages[newMessages.length - 1].type = "Error"; - return newMessages; - }); - assistant_response = "\nUnknown error occurred while receiving the response."; - throw new Error("Streaming error"); - } - } - - function handleContentBlockDelta(textDelta: string) { - const matchText = codeSnippetBuffer + textDelta; - const matchedResult = findRegexMatches(matchText); - if (matchedResult.length > 0) { - if (matchedResult[0].end === matchText.length) { - codeSnippetBuffer = matchText; - } else { - codeSnippetBuffer = ""; - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content += matchText; - return newMessages; - }); - } - } else { - codeSnippetBuffer = ""; - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content += matchText; - return newMessages; - }); - } - } - - addChatEntry("user", message); - addChatEntry("assistant", assistant_response); + await rpcClient.getAiPanelRpcClient().generateHealthcareCode(requestBody); } async function processOpenAPICodeGeneration(useCase: string, message: string) { - let assistant_response = ""; const requestBody: any = { query: useCase, chatHistory: chatArray, }; - const response = await fetchWithAuth({ - url: backendRootUri + "/openapi", - method: "POST", - body: requestBody, - rpcClient: rpcClient, - }); - - if (!response.ok) { - setIsLoading(false); - let error = `Failed to fetch response.`; - if (response.status == 429) { - response.json().then((body) => { - error += RATE_LIMIT_ERROR; - }); - } - throw new Error(error); - } - const reader: ReadableStreamDefaultReader = response.body?.getReader(); - const decoder = new TextDecoder(); - let buffer = ""; - let codeSnippetBuffer = ""; - remainingTokenPercentage = "Unlimited"; - setIsCodeLoading(true); - while (true) { - const { done, value } = await reader.read(); - if (done) { - setIsLoading(false); - break; - } - - buffer += decoder.decode(value, { stream: true }); - - let boundary = buffer.indexOf("\n\n"); - while (boundary !== -1) { - const chunk = buffer.slice(0, boundary + 2); - buffer = buffer.slice(boundary + 2); - try { - await processSSEEvent(chunk); - } catch (error) { - console.error("Failed to parse SSE event:", error); - } - - boundary = buffer.indexOf("\n\n"); - } - } - - async function processSSEEvent(chunk: string) { - const event = parseSSEEvent(chunk); - if (event.event == "content_block_delta") { - let textDelta = event.body.text; - assistant_response += textDelta; - - handleContentBlockDelta(textDelta); - } else if (event.event == "message_stop") { - setIsCodeLoading(false); - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content = assistant_response; - return newMessages; - }); - } else if (event.event == "error") { - console.log("Streaming Error: ", event); - setIsLoading(false); - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content += - "\nUnknown error occurred while receiving the response."; - newMessages[newMessages.length - 1].type = "Error"; - return newMessages; - }); - assistant_response = "\nUnknown error occurred while receiving the response."; - throw new Error("Streaming error"); - } - } - - function handleContentBlockDelta(textDelta: string) { - const matchText = codeSnippetBuffer + textDelta; - const matchedResult = findRegexMatches(matchText); - if (matchedResult.length > 0) { - if (matchedResult[0].end === matchText.length) { - codeSnippetBuffer = matchText; - } else { - codeSnippetBuffer = ""; - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content += matchText; - return newMessages; - }); - } - } else { - codeSnippetBuffer = ""; - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content += matchText; - return newMessages; - }); - } - } - - addChatEntry("user", message); - addChatEntry("assistant", assistant_response); + await rpcClient.getAiPanelRpcClient().generateOpenAPI(requestBody); } async function handleStop() { // Abort any ongoing requests - abortFetchWithAuth(); + // abortFetchWithAuth(); // Abort test generation if running - rpcClient.getAiPanelRpcClient().abortTestGeneration(); + rpcClient.getAiPanelRpcClient().abortAIGeneration(); setIsLoading(false); setIsCodeLoading(false); @@ -2249,11 +1687,11 @@ const AIChat: React.FC = () => { }; const generateFunctionTests = async () => { - await processFunctionTestGeneration( - testGenIntermediaryState.content, - testGenIntermediaryState.resourceFunction, - testGenIntermediaryState.testPlan - ); + setIsCodeLoading(true); + await rpcClient.getAiPanelRpcClient().generateFunctionTests({ + testPlan: testGenIntermediaryState.testPlan, + resourceFunction: testGenIntermediaryState.resourceFunction, + }); }; const handleRetryRepair = async () => { @@ -2263,77 +1701,11 @@ const AIChat: React.FC = () => { setIsCodeLoading(true); setIsLoading(true); - try { - const project: ProjectSource = await rpcClient - .getAiPanelRpcClient() - .getProjectSource(CodeGenerationType.CODE_GENERATION); - - const usecase = messages[messages.length - 2].content; - const latestMessage = messages[messages.length - 1].content; - - const diagReq = { - response: latestMessage, - diagnostics: currentDiagnostics, - }; - - const reqBody: any = { - usecase: usecase, - chatHistory: chatArray.slice(0, chatArray.length - 2), - sourceFiles: transformProjectSource(project), - diagnosticRequest: diagReq, - functions: functionsRef.current, - operationType: CodeGenerationType.CODE_GENERATION, - packageName: project.projectName, - }; - - const attatchments = lastAttatchmentsRef.current; - if (attatchments) { - reqBody.fileAttachmentContents = attatchments; - } - console.log("Request body for repair:", reqBody); - const response = await fetchWithAuth({ - url: backendRootUri + "/code/repair", - method: "POST", - body: reqBody, - rpcClient: rpcClient, - }); - - if (!response.ok) { - throw new Error("Repair failed"); - } - - const jsonBody = await response.json(); - const repairResponse = jsonBody.repairResponse; - let fixedResponse = replaceCodeBlocks(latestMessage, repairResponse); - - const postProcessResp: PostProcessResponse = await rpcClient.getAiPanelRpcClient().postProcess({ - assistant_response: fixedResponse, - }); - - fixedResponse = postProcessResp.assistant_response; - currentDiagnosticsRef.current = postProcessResp.diagnostics.diagnostics; - const diagnosedSourceFiles: ProjectSource = getProjectFromResponse(fixedResponse); - setIsSyntaxError(await rpcClient.getAiPanelRpcClient().checkSyntaxError(diagnosedSourceFiles)); - setMessages((prevMessages) => { - const newMessages = [...prevMessages]; - newMessages[newMessages.length - 1].content = fixedResponse; - return newMessages; - }); - - // Update chat entry - const lastIndex = chatArray.length - 1; - if (lastIndex >= 0 && chatArray[lastIndex].actor === "assistant") { - updateChatEntry(lastIndex, { - actor: "assistant", - message: fixedResponse, - }); - } - } catch (error) { - console.error("Repair retry failed:", error); - } finally { - setIsCodeLoading(false); - setIsLoading(false); - } + await rpcClient.getAiPanelRpcClient().repairGeneratedCode({ + diagnostics: currentDiagnostics, + assistantResponse: messages[messages.length - 1].content, + previousMessages: messagesRef.current, + }); }; return ( @@ -2370,7 +1742,7 @@ const AIChat: React.FC = () => { const showGeneratingFiles = !codeSegmentRendered && index === currentGeneratingPromptIndex; const isLastResponse = index === currentGeneratingPromptIndex; const isAssistantMessage = message.role === "Copilot"; - const lastAssistantIndex = otherMessages.map(m => m.role).lastIndexOf("Copilot"); + const lastAssistantIndex = otherMessages.map((m) => m.role).lastIndexOf("Copilot"); const isLatestAssistantMessage = isAssistantMessage && index === lastAssistantIndex; codeSegmentRendered = false; @@ -2434,13 +1806,16 @@ const AIChat: React.FC = () => { isReady={!isCodeLoading} message={message} buttonsActive={showGeneratingFiles} - isSyntaxError={isSyntaxError} + isSyntaxError={isContainsSyntaxError( + currentDiagnosticsRef.current + )} command={segment.command} diagnostics={currentDiagnosticsRef.current} onRetryRepair={handleRetryRepair} isPromptExecutedInCurrentWindow={ isPromptExecutedInCurrentWindow } + isErrorChunkReceived={isErrorChunkReceivedRef.current} /> ); } @@ -2545,14 +1920,14 @@ const AIChat: React.FC = () => { return ; } })} - {/* Show feedback bar only for the latest assistant message and when loading is complete */} - {isAssistantMessage && isLatestAssistantMessage && !isLoading && !isCodeLoading && ( - - )} + {/* Show feedback bar only for the latest assistant message and when loading is complete */} + {isAssistantMessage && isLatestAssistantMessage && !isLoading && !isCodeLoading && ( + + )} ); })} @@ -2631,6 +2006,9 @@ function extractRecordTypes(typesCode: string): { name: string; code: string }[] code: match[0].trim(), })); } +interface ContentBlock { + delta: ContentBlockDeltaBody; +} // Define the different event body types interface ContentBlockDeltaBody { @@ -2643,7 +2021,7 @@ interface OtherEventBody { } // Define the SSEEvent type with a discriminated union for the body -type SSEEvent = { event: "content_block_delta"; body: ContentBlockDeltaBody } | { event: string; body: OtherEventBody }; +type SSEEvent = { event: "content_block_delta"; body: ContentBlock } | { event: string; body: OtherEventBody }; /** * Parses a chunk of text to extract the SSE event and body. @@ -2899,11 +2277,6 @@ function generateChatHistoryForSummarize(chatArray: ChatEntry[]): ChatEntry[] { ); } -interface SourceFiles { - filePath: string; - content: string; -} - function transformProjectSource(project: ProjectSource): SourceFiles[] { const sourceFiles: SourceFiles[] = []; project.sourceFiles.forEach((file) => { @@ -2931,3 +2304,17 @@ function transformProjectSource(project: ProjectSource): SourceFiles[] { }); return sourceFiles; } + +function isContainsSyntaxError(diagnostics: DiagnosticEntry[]): boolean { + return diagnostics.some((diag) => { + if (typeof diag.code === "string" && diag.code.startsWith("BCE")) { + const match = diag.code.match(/^BCE(\d+)$/); + if (match) { + const codeNumber = Number(match[1]); + if (codeNumber < 2000) { + return true; + } + } + } + }); +} diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/components/AIChatInput/hooks/useCommands.ts b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/components/AIChatInput/hooks/useCommands.ts index c48714fcc5f..775a8dd87a3 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/components/AIChatInput/hooks/useCommands.ts +++ b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/components/AIChatInput/hooks/useCommands.ts @@ -92,6 +92,9 @@ export function useCommands({ commandTemplate }: UseCommandsParams) { if (templateQuery.startsWith(" ")) { const filterText = templateQuery.slice(1); filtered = templates.filter((template) => { + if (template.defaultVisibility === false) { + return false; + } return (template.text.toLowerCase().startsWith(filterText) && template.id !== TemplateId.Wildcard); }).map((template) => ({ text: template.text, diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/components/CodeSection.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/components/CodeSection.tsx index cd2c1a4fb92..649fbb03a20 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/components/CodeSection.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/components/CodeSection.tsx @@ -45,6 +45,7 @@ interface CodeSectionProps { diagnostics: any[]; onRetryRepair: () => void; isPromptExecutedInCurrentWindow: boolean; + isErrorChunkReceived: boolean; } const EntryContainer = styled.div<{ hasErrors: boolean; isOpen: boolean; isHovered: boolean }>( @@ -80,6 +81,7 @@ export const CodeSection: React.FC = ({ diagnostics = [], onRetryRepair = () => {}, isPromptExecutedInCurrentWindow, + isErrorChunkReceived }) => { const [isOpen, setIsOpen] = useState(false); const [isCodeAdded, setIsCodeAdded] = useState(false); @@ -153,7 +155,7 @@ export const CodeSection: React.FC = ({ ? "Code was generated for different session, please regenerate again" : "" } - disabled={!buttonsActive || isSyntaxError || !isPromptExecutedInCurrentWindow} + disabled={!buttonsActive || isSyntaxError || !isPromptExecutedInCurrentWindow || isErrorChunkReceived} >   Add to Integration diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/utils/attachment/attachmentManager.ts b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/utils/attachment/attachmentManager.ts index 4ad57bb78e0..e81b4617626 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/utils/attachment/attachmentManager.ts +++ b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/utils/attachment/attachmentManager.ts @@ -51,8 +51,6 @@ const DOCUMENT_TYPES = [ "image/heic", "image/heif", "application/pdf", - "application/vnd.openxmlformats-officedocument.wordprocessingml.document", - "application/msword", ]; /** diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/utils/networkUtils.ts b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/utils/networkUtils.ts index 7eb6e98be93..fa0980a1fea 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/utils/networkUtils.ts +++ b/workspaces/ballerina/ballerina-visualizer/src/views/AIPanel/utils/networkUtils.ts @@ -16,7 +16,7 @@ * under the License. */ -import { AIMachineEventType } from "@wso2/ballerina-core"; +import { AIMachineEventType, LoginMethod } from "@wso2/ballerina-core"; interface FetchWithAuthParams { url: string; @@ -51,7 +51,10 @@ export const fetchWithAuth = async ({ let finalToken; try { - finalToken = await rpcClient.getAiPanelRpcClient().getAccessToken(); + const loginMethod = await rpcClient.getAiPanelRpcClient().getLoginMethod(); + if (loginMethod === LoginMethod.BI_INTEL) { + finalToken = await rpcClient.getAiPanelRpcClient().getAccessToken(); + } } catch (error) { if (isErrorWithMessage(error) && error?.message === "TOKEN_EXPIRED") { rpcClient.sendAIStateEvent(AIMachineEventType.SILENT_LOGOUT); diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AIAgentSidePanel.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AIAgentSidePanel.tsx index 5ed17d18a65..1003b8db813 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AIAgentSidePanel.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AIAgentSidePanel.tsx @@ -31,15 +31,30 @@ import { BISearchRequest, CodeData, AgentToolRequest, + NodeMetadata, + FunctionNode, + FlowNode, + ToolParameters, + ToolParametersValue, + DIRECTORY_MAP, + Property, + ToolParameterItem, + NodeProperties, } from "@wso2/ballerina-core"; import { convertBICategoriesToSidePanelCategories, + convertConfig, convertFunctionCategoriesToSidePanelCategories, } from "../../../utils/bi"; import FormGeneratorNew from "../Forms/FormGeneratorNew"; import { RelativeLoader } from "../../../components/RelativeLoader"; import styled from "@emotion/styled"; +import { URI, Utils } from "vscode-uri"; +import { cloneDeep } from "lodash"; +import { createDefaultParameterValue, createToolInputFields, createToolParameters } from "./formUtils"; +import { FUNCTION_CALL, METHOD_CALL, REMOTE_ACTION_CALL, RESOURCE_ACTION_CALL } from "../../../constants"; +import { NewToolSelectionMode } from "./NewTool"; const LoaderContainer = styled.div` display: flex; @@ -48,6 +63,19 @@ const LoaderContainer = styled.div` height: 100%; `; +const ImplementationInfo = styled.div` + display: flex; + align-items: center; + background-color: var(--vscode-input-background); + border: 1px solid var(--vscode-editorWidget-border); + padding: 10px 10px; + border-radius: 4px; + cursor: pointer; + p { + margin: 0; + } +`; + export enum SidePanelView { NODE_LIST = "NODE_LIST", TOOL_FORM = "TOOL_FORM", @@ -55,25 +83,95 @@ export enum SidePanelView { export interface BIFlowDiagramProps { projectPath: string; - onSubmit: (data: AgentToolRequest) => void; + onSubmit: (data: ExtendedAgentToolRequest) => void; + mode?: NewToolSelectionMode; +} + +export interface ExtendedAgentToolRequest extends AgentToolRequest { + functionNode?: FunctionNode; + flowNode?: FlowNode; } export function AIAgentSidePanel(props: BIFlowDiagramProps) { - const { projectPath, onSubmit } = props; + const { projectPath, onSubmit, mode = NewToolSelectionMode.ALL } = props; const { rpcClient } = useRpcContext(); const [sidePanelView, setSidePanelView] = useState(SidePanelView.NODE_LIST); const [categories, setCategories] = useState([]); const [selectedNodeCodeData, setSelectedNodeCodeData] = useState(undefined); + const [toolNodeId, setToolNodeId] = useState(undefined); + const [injectedComponentIndex, setInjectedComponentIndex] = useState(3); + + const functionNode = useRef(null); + const flowNode = useRef(null); + + const initialFields: FormField[] = [ + { + key: `name`, + label: "Tool Name", + type: "IDENTIFIER", + valueType: "IDENTIFIER", + optional: false, + editable: true, + documentation: "Enter the name of the tool.", + value: "", + valueTypeConstraint: "Global", + enabled: true, + }, + { + key: `description`, + label: "Description", + type: "TEXTAREA", + optional: true, + editable: true, + documentation: "Enter the description of the tool.", + value: "", + valueType: "STRING", + valueTypeConstraint: "", + enabled: true, + }, + ]; + const [loading, setLoading] = useState(false); + const [fields, setFields] = useState(initialFields); const targetRef = useRef({ startLine: { line: 0, offset: 0 }, endLine: { line: 0, offset: 0 } }); const initialCategoriesRef = useRef([]); const selectedNodeRef = useRef(undefined); + const agentFilePath = useRef(Utils.joinPath(URI.file(projectPath), "agents.bal").fsPath); + const functionFilePath = useRef(Utils.joinPath(URI.file(projectPath), "functions.bal").fsPath); useEffect(() => { fetchNodes(); }, []); + const handleBackToNodeList = () => { + setSidePanelView(SidePanelView.NODE_LIST); + setFields(initialFields); + setSelectedNodeCodeData(undefined); + setToolNodeId(undefined); + selectedNodeRef.current = undefined; + functionNode.current = null; + flowNode.current = null; + }; + + const getImplementationString = (codeData: CodeData | undefined): string => { + if (!codeData) { + return ""; + } + switch (codeData.node) { + case RESOURCE_ACTION_CALL: + return `${codeData.parentSymbol} -> ${codeData.symbol} ${codeData.resourcePath}`; + case REMOTE_ACTION_CALL: + return `${codeData.parentSymbol} -> ${codeData.symbol}`; + case FUNCTION_CALL: + return `${codeData.symbol}`; + case METHOD_CALL: + return `${codeData.parentSymbol} -> ${codeData.symbol}`; + default: + return ""; + } + }; + // Use effects to refresh the panel useEffect(() => { rpcClient.onParentPopupSubmitted((parent: ParentPopupData) => { @@ -90,7 +188,7 @@ export function AIAgentSidePanel(props: BIFlowDiagramProps) { setLoading(true); const getNodeRequest: BIAvailableNodesRequest = { position: targetRef.current.startLine, - filePath: projectPath, + filePath: agentFilePath.current, }; rpcClient .getBIDiagramRpcClient() @@ -114,12 +212,20 @@ export function AIAgentSidePanel(props: BIFlowDiagramProps) { const convertedCategories = convertBICategoriesToSidePanelCategories(connectionsCategory); console.log("convertedCategories", convertedCategories); - const filteredFunctions = await handleSearchFunction("", FUNCTION_TYPE.REGULAR, false); - console.log("filteredFunctions", filteredFunctions); + let filteredCategories = []; + + // Filter categories based on mode + if (mode === NewToolSelectionMode.CONNECTION) { + filteredCategories = convertedCategories; + } else if (mode === NewToolSelectionMode.FUNCTION) { + const filteredFunctions = await handleSearchFunction("", FUNCTION_TYPE.REGULAR, false); + filteredCategories = filteredFunctions; + } else { + const filteredFunctions = await handleSearchFunction("", FUNCTION_TYPE.REGULAR, false); + filteredCategories = convertedCategories.concat(filteredFunctions); + } - const filteredCategories = convertedCategories.concat(filteredFunctions); setCategories(filteredCategories); - console.log("filteredCategories", filteredCategories); initialCategoriesRef.current = filteredCategories; // Store initial categories setLoading(false); }) @@ -138,14 +244,14 @@ export function AIAgentSidePanel(props: BIFlowDiagramProps) { startLine: targetRef.current.startLine, endLine: targetRef.current.endLine, }, - filePath: projectPath, + filePath: agentFilePath.current, queryMap: searchText.trim() ? { - q: searchText, - limit: 12, - offset: 0, - includeAvailableFunctions: "true", - } + q: searchText, + limit: 12, + offset: 0, + includeAvailableFunctions: "true", + } : undefined, searchKind: "FUNCTION", }; @@ -164,7 +270,7 @@ export function AIAgentSidePanel(props: BIFlowDiagramProps) { const currentIntegrationCategory = filteredResponse.find((category) => category.metadata.label === "Current Integration"); if (currentIntegrationCategory && Array.isArray(currentIntegrationCategory.items)) { currentIntegrationCategory.items = currentIntegrationCategory.items.filter((item) => { - return !item.metadata?.data?.isAgentTool; + return !(item.metadata?.data as NodeMetadata)?.isAgentTool; }); } @@ -178,12 +284,120 @@ export function AIAgentSidePanel(props: BIFlowDiagramProps) { return convertFunctionCategoriesToSidePanelCategories(filteredResponse, functionType); }; - const handleOnSelectNode = (nodeId: string, metadata?: any) => { + const handleOnSelectNode = async (nodeId: string, metadata?: any) => { const { node } = metadata as { node: AvailableNode }; // default node + setToolNodeId(nodeId); console.log(">>> on select node", { nodeId, metadata }); selectedNodeRef.current = node; setSelectedNodeCodeData(node.codedata); + + let toolInputFields: FormField[] = []; + let functionParameterFields: FormField[] = []; + let nodeParameterFields: FormField[] = []; + + if (nodeId === FUNCTION_CALL) { + try { + const functionNodeResponse = await rpcClient.getBIDiagramRpcClient().getFunctionNode({ + functionName: node.codedata.symbol, + fileName: functionFilePath.current, + projectPath: projectPath, + }); + console.log(">>> Function definition response", { functionNodeResponse }); + + functionNode.current = functionNodeResponse.functionDefinition; + + // Hide unnecessary properties + (["functionName", "functionNameDescription", "isIsolated", "type", "typeDescription"] as Array).forEach( + key => { + if (functionNodeResponse.functionDefinition.properties[key]) { + functionNodeResponse.functionDefinition.properties[key].hidden = true; + } + } + ); + + functionNodeResponse.functionDefinition.properties.parameters.metadata.label = "Tool Inputs"; + functionNodeResponse.functionDefinition.properties.parameters.metadata.description = ""; + + if (functionNodeResponse.functionDefinition.properties) { + toolInputFields = convertConfig(functionNodeResponse.functionDefinition.properties); + } + setInjectedComponentIndex(2 + toolInputFields.length); + console.log(">>> Tool input fields", { toolInputFields }); + + const functionNodeTemplate = await rpcClient.getBIDiagramRpcClient().getNodeTemplate({ + position: functionNodeResponse.functionDefinition.codedata.lineRange.startLine, + filePath: functionFilePath.current, + id: node.codedata + }); + console.log(">>> Function node template response", { functionNodeTemplate }); + + if (functionNodeTemplate.flowNode.properties) { + functionParameterFields = convertConfig(functionNodeTemplate.flowNode.properties); + } + functionParameterFields.forEach((field) => { + field.value = field.key; + field.optional = false; + field.advanced = false; + }); + console.log(">>> Function parameter fields", { functionParameterFields }); + + setFields((prevFields) => { + return [...prevFields, ...toolInputFields, ...functionParameterFields]; + }); + } catch (error) { + console.error(">>> Error fetching function node or template", error); + } + } else if (nodeId === REMOTE_ACTION_CALL || nodeId === RESOURCE_ACTION_CALL || nodeId === METHOD_CALL) { + try { + const nodeTemplate = await rpcClient.getBIDiagramRpcClient().getNodeTemplate({ + position: { line: 0, offset: 0 }, + filePath: agentFilePath.current, + id: node.codedata, + }); + console.log(">>> Node template response", { nodeTemplate }); + + if (nodeTemplate.flowNode) { + flowNode.current = nodeTemplate.flowNode; + } else { + console.error("Node template flowNode not found"); + } + + const includedKeys: string[] = []; + if (nodeTemplate.flowNode.properties) { + nodeParameterFields = convertConfig(nodeTemplate.flowNode.properties); + } + nodeParameterFields.forEach((field) => { + if (["type", "targetType", "variable", "checkError", "connection", "resourcePath"].includes(field.key)) { + field.hidden = true; + return; + } + field.value = field.key; + field.optional = false; + field.advanced = false; + // hack: remove headers and additionalValues from the tool inputs and set default value to () + if (["headers", "additionalValues"].includes(field.key)) { + field.value = "()"; + return; + } + includedKeys.push(field.key); + }); + console.log(">>> Node parameter fields", { nodeParameterFields }); + + const filteredNodeParameterFields = nodeParameterFields.filter(field => includedKeys.includes(field.key)); + toolInputFields = createToolInputFields(filteredNodeParameterFields); + setInjectedComponentIndex(2 + toolInputFields.length); + + console.log(">>> Tool input fields", { toolInputFields }); + + setFields((prevFields) => { + return [...prevFields, ...toolInputFields, ...nodeParameterFields]; + }); + } catch (error) { + console.error(">>> Error fetching node template", error); + } + } + setSidePanelView(SidePanelView.TOOL_FORM); }; @@ -192,12 +406,56 @@ export function AIAgentSidePanel(props: BIFlowDiagramProps) { type: EVENT_TYPE.OPEN_VIEW, location: { view: MACHINE_VIEW.AddConnectionWizard, - documentUri: projectPath, + documentUri: agentFilePath.current, }, isPopup: true, }); }; + const handleOnAddFunction = () => { + rpcClient.getVisualizerRpcClient().openView({ + type: EVENT_TYPE.OPEN_VIEW, + location: { + view: MACHINE_VIEW.BIFunctionForm, + artifactType: DIRECTORY_MAP.FUNCTION, + }, + isPopup: true, + }); + }; + + const updateToolParameters = (params: ToolParameterItem[], baseParams?: ToolParameters): ToolParameters => { + const newToolParameters = baseParams ? cloneDeep(baseParams) : createToolParameters(); + const paramKeys = params.map((param: ToolParameterItem) => param.formValues.variable); + + if (newToolParameters.value && typeof newToolParameters.value === "object" && !Array.isArray(newToolParameters.value)) { + // Remove keys that are no longer present + Object.keys(newToolParameters.value).forEach((key) => { + if (!paramKeys.includes(key)) { + delete (newToolParameters.value as ToolParametersValue)[key]; + } + }); + + // Add or update parameters + paramKeys.forEach((key: string) => { + const paramData = params.find((param: ToolParameterItem) => param.formValues.variable === key)?.formValues; + const existingParam = (newToolParameters.value as ToolParametersValue)[key]; + + if (existingParam?.value?.variable) { + existingParam.value.variable.value = paramData?.variable || key; + existingParam.value.parameterDescription.value = paramData?.parameterDescription || ""; + existingParam.value.type.value = paramData?.type || ""; + } else { + (newToolParameters.value as ToolParametersValue)[key] = createDefaultParameterValue({ + value: paramData?.variable || key, + parameterDescription: paramData?.parameterDescription, + type: paramData?.type, + }); + } + }); + } + return newToolParameters; + }; + const handleToolSubmit = (data: FormValues) => { // Safely convert name to camelCase, handling any input const name = data["name"] || ""; @@ -208,50 +466,91 @@ export function AIAgentSidePanel(props: BIFlowDiagramProps) { data.description = data.description.replace(/\n/g, " "); } - const toolModel: AgentToolRequest = { + console.log(">>> handleToolSubmit", { data }); + console.log(">>> toolNodeId", { toolNodeId }); + console.log(">>> functionNode", { functionNode }); + console.log(">>> flowNode", { flowNode }); + + let toolParameters: ToolParameters | null = null; + let clonedFunctionNode: FunctionNode | null = null; + let clonedFlowNode: FlowNode | null = null; + + if (toolNodeId === FUNCTION_CALL && Array.isArray(data["parameters"])) { + clonedFunctionNode = functionNode.current ? cloneDeep(functionNode.current) : null; + toolParameters = updateToolParameters(data["parameters"], functionNode.current?.properties?.parameters as unknown as ToolParameters | undefined); + + // Update clonedFunctionNode parameter values from data["parameters"] + const parametersValue = clonedFunctionNode?.properties?.parameters?.value; + if (parametersValue && typeof parametersValue === "object" && !Array.isArray(parametersValue)) { + Object.keys(parametersValue).forEach((key) => { + const paramValue = data[key]; + if ((parametersValue as ToolParametersValue)[key]?.value?.variable) { + (parametersValue as ToolParametersValue)[key].value.variable.value = paramValue; + } + }); + } + } else if ((toolNodeId === REMOTE_ACTION_CALL || toolNodeId === RESOURCE_ACTION_CALL || toolNodeId === METHOD_CALL) && Array.isArray(data["parameters"])) { + clonedFlowNode = flowNode.current ? cloneDeep(flowNode.current) : null; + toolParameters = updateToolParameters(data["parameters"]); + + // Update flowNode parameter values from data["parameters"] + if (clonedFlowNode?.properties && typeof clonedFlowNode?.properties === "object" && !Array.isArray(clonedFlowNode?.properties)) { + const newProperties = { ...clonedFlowNode.properties } as Record; + Object.keys(newProperties).forEach((key) => { + const paramValue = data[key]; + if (paramValue !== undefined && newProperties[key]) { + newProperties[key] = { + ...newProperties[key], + value: paramValue + }; + } + // Update resourcePath for RESOURCE_ACTION_CALL nodes + if (toolNodeId === RESOURCE_ACTION_CALL) { + const resourcePathProperty = newProperties["resourcePath"]; + if (resourcePathProperty) { + const path = resourcePathProperty.value; + const updatedPath = typeof path === "string" ? path.replace(key, paramValue) : path; + newProperties["resourcePath"] = { + ...resourcePathProperty, + codedata: resourcePathProperty.codedata ? { + ...resourcePathProperty.codedata, + originalName: typeof updatedPath === "string" ? updatedPath : String(updatedPath) + } : { + originalName: typeof updatedPath === "string" ? updatedPath : String(updatedPath) + }, + value: updatedPath + }; + } + } + }); + clonedFlowNode.properties = newProperties as NodeProperties; + } + } + + console.log(">>> toolParameters", { toolParameters }); + console.log(">>> clonedFunctionNode", { clonedFunctionNode }); + console.log(">>> clonedFlowNode", { clonedFlowNode }); + + const toolModel: ExtendedAgentToolRequest = { toolName: cleanName, description: data["description"], selectedCodeData: selectedNodeCodeData, + toolParameters: toolParameters, + functionNode: clonedFunctionNode, + flowNode: clonedFlowNode, }; console.log("New Agent Tool:", toolModel); onSubmit(toolModel); }; - const fields: FormField[] = [ - { - key: `name`, - label: "Tool Name", - type: "IDENTIFIER", - valueType: "IDENTIFIER", - optional: false, - editable: true, - documentation: "Enter the name of the tool.", - value: "", - valueTypeConstraint: "Global", - enabled: true, - }, - { - key: `description`, - label: "Description", - type: "TEXTAREA", - optional: true, - editable: true, - documentation: "Enter the description of the tool.", - value: "", - valueType: "STRING", - valueTypeConstraint: "", - enabled: true, - }, - ]; - // add concert message to the fields if the tool is a function call let concertMessage = ""; let concertRequired = false; let description = ""; if ( selectedNodeRef.current && - selectedNodeRef.current.codedata.node === "FUNCTION_CALL" && - !selectedNodeRef.current.metadata?.data?.isIsolatedFunction + selectedNodeRef.current.codedata.node === FUNCTION_CALL && + !(selectedNodeRef.current.metadata?.data as NodeMetadata)?.isIsolatedFunction ) { concertMessage = `Convert ${selectedNodeRef.current.metadata.label} function to an isolated function`; concertRequired = true; @@ -259,6 +558,13 @@ export function AIAgentSidePanel(props: BIFlowDiagramProps) { "Only isolated functions can be used as tools. Isolated functions ensure predictable behavior by avoiding shared state."; } + let searchPlaceholder = "Search"; + if (mode === NewToolSelectionMode.CONNECTION) { + searchPlaceholder = "Search connections"; + } else if (mode === NewToolSelectionMode.FUNCTION) { + searchPlaceholder = "Search functions"; + } + return ( <> {loading && ( @@ -271,14 +577,16 @@ export function AIAgentSidePanel(props: BIFlowDiagramProps) { categories={categories} onSelect={handleOnSelectNode} onAddConnection={handleOnAddConnection} + onAddFunction={handleOnAddFunction} onSearchTextChange={(searchText) => handleSearchFunction(searchText, FUNCTION_TYPE.REGULAR, true)} title={"Functions"} - searchPlaceholder={"Search library functions"} + searchPlaceholder={searchPlaceholder} /> )} {sidePanelView === SidePanelView.TOOL_FORM && ( +

Implementation

+ +

{getImplementationString(selectedNodeRef.current.codedata)}

+
+
+ ), + index: injectedComponentIndex, + }, + ]} /> )} diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AIChatAgentWizard.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AIChatAgentWizard.tsx index 187496c71f4..4952ce5a22e 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AIChatAgentWizard.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AIChatAgentWizard.tsx @@ -16,16 +16,20 @@ * under the License. */ -import { useEffect, useState } from 'react'; -import { EVENT_TYPE, ListenerModel } from '@wso2/ballerina-core'; +import { useEffect, useRef, useState } from 'react'; +import { EVENT_TYPE, FlowNode, LinePosition, ListenerModel } from '@wso2/ballerina-core'; import { View, ViewContent, TextField, Button, Typography } from '@wso2/ui-toolkit'; import styled from '@emotion/styled'; import { useRpcContext } from '@wso2/ballerina-rpc-client'; +import { URI, Utils } from "vscode-uri"; import { LoadingContainer } from '../../styles'; import { TitleBar } from '../../../components/TitleBar'; import { TopNavigationBar } from '../../../components/TopNavigationBar'; import { RelativeLoader } from '../../../components/RelativeLoader'; import { FormHeader } from '../../../components/FormHeader'; +import { getAiModuleOrg, getNodeTemplate } from './utils'; +import { cloneDeep } from 'lodash'; +import { AI, BALLERINA, GET_DEFAULT_MODEL_PROVIDER } from '../../../constants'; const FORM_WIDTH = 600; @@ -66,7 +70,6 @@ export function AIChatAgentWizard(props: AIChatAgentWizardProps) { const { rpcClient } = useRpcContext(); const [agentName, setAgentName] = useState(""); const [nameError, setNameError] = useState(""); - const [listenerModel, setListenerModel] = useState(undefined); const [isCreating, setIsCreating] = useState(false); const [currentStep, setCurrentStep] = useState(0); const steps = [ @@ -78,11 +81,11 @@ export function AIChatAgentWizard(props: AIChatAgentWizardProps) { { label: "Completing", description: "Finalizing the agent setup" } ]; - useEffect(() => { - rpcClient.getServiceDesignerRpcClient().getListenerModel({ moduleName: type }).then(res => { - setListenerModel(res.listener); - }); - }, []); + const agentFilePath = useRef(""); + const aiModuleOrg = useRef(""); + const agentCallEndOfFile = useRef(null); + const agentEndOfFile = useRef(null); + const mainFilePath = useRef(""); const validateName = (name: string): boolean => { if (!name) { @@ -107,48 +110,156 @@ export function AIChatAgentWizard(props: AIChatAgentWizardProps) { } setIsCreating(true); try { + // Initialize wizard data when user clicks create setCurrentStep(0); - // Update the listener name and create the listener - const listener = listenerModel; + + // get agent file path + const filePath = await rpcClient.getVisualizerLocation(); + agentFilePath.current = Utils.joinPath(URI.file(filePath.projectUri), "agents.bal").fsPath; + + // get agent org + aiModuleOrg.current = await getAiModuleOrg(rpcClient); + + // fetch agent node - get the agent node + const allAgents = await rpcClient.getAIAgentRpcClient().getAllAgents({ + filePath: agentFilePath.current, + orgName: aiModuleOrg.current + }); + console.log(">>> allAgents", allAgents); + + if (!allAgents.agents.length) { + console.log(">>> no agents found"); + throw new Error("No agents found"); + } + + const agentCodeData = allAgents.agents.at(0); + // get agent node template + const agentNodeTemplate = await getNodeTemplate(rpcClient, agentCodeData, agentFilePath.current); + const agentNode = cloneDeep(agentNodeTemplate); + + // get all llm models + const allModels = await rpcClient + .getAIAgentRpcClient() + .getAllModels({ + agent: agentCodeData.object, + filePath: agentFilePath.current, + orgName: aiModuleOrg.current + }); + console.log(">>> allModels", allModels); + + // get openai model + const defaultModel = allModels.models.find((model) => + model.object === "OpenAiProvider" || (model.org === BALLERINA && model.module === AI) + ); + if (!defaultModel) { + console.log(">>> no default model found"); + throw new Error("No default model found"); + } + + // get model node template + const modelNodeTemplate = await getNodeTemplate(rpcClient, defaultModel, agentFilePath.current); + const defaultModelNode = cloneDeep(modelNodeTemplate); + + // get end of files + // main.bal last line + mainFilePath.current = Utils.joinPath(URI.file(filePath.projectUri), "main.bal").fsPath; + const endOfFile = await rpcClient.getBIDiagramRpcClient().getEndOfFile({ filePath: mainFilePath.current }); + console.log(">>> endOfFile", endOfFile); + agentCallEndOfFile.current = endOfFile; + + // agent.bal file last line + const endOfAgentFile = await rpcClient + .getBIDiagramRpcClient() + .getEndOfFile({ filePath: agentFilePath.current }); + console.log(">>> endOfAgentFile", endOfAgentFile); + agentEndOfFile.current = endOfAgentFile; + const listenerName = agentName + "Listener"; + + // Get listener model + const listenerModelResponse = await rpcClient.getServiceDesignerRpcClient().getListenerModel({ + moduleName: type, + orgName: aiModuleOrg.current + }); + console.log(">>> listenerModelResponse", listenerModelResponse); + + const listener = listenerModelResponse.listener; + // Update the listener name and create the listener listener.properties['name'].value = listenerName; listener.properties['listenOn'].value = "check http:getDefaultListener()"; setCurrentStep(1); - // Set a timeout to show step 2 after 3 seconds - const timeoutId = setTimeout(() => { - setCurrentStep(2); - }, 3000); + await rpcClient.getServiceDesignerRpcClient().addListenerSourceCode({ filePath: "", listener }); - // Clear the timeout if the operation completed before 3 seconds - clearTimeout(timeoutId); setCurrentStep(3); // Update the service name and create the service - await rpcClient.getServiceDesignerRpcClient().getServiceModel({ + const serviceModelResponse = await rpcClient.getServiceDesignerRpcClient().getServiceModel({ filePath: "", moduleName: type, - listenerName: listenerName - }).then(res => { - const serviceModel = res.service; - console.log("Service Model: ", serviceModel); - serviceModel.properties["listener"].editable = true; - serviceModel.properties["listener"].items = [listenerName]; - serviceModel.properties["listener"].values = [listenerName]; - serviceModel.properties["basePath"].value = `/${agentName}`; - rpcClient.getServiceDesignerRpcClient().addServiceSourceCode({ - filePath: "", - service: res.service - }).then((sourceCode) => { - setCurrentStep(4); - const newArtifact = sourceCode.artifacts.find(res => res.isNew); - if (newArtifact) { - setCurrentStep(5); - rpcClient.getVisualizerRpcClient().openView({ type: EVENT_TYPE.OPEN_VIEW, location: { documentUri: newArtifact.path, position: newArtifact.position } }); - return; - } - }); + listenerName: listenerName, + orgName: aiModuleOrg.current, }); + + const serviceModel = serviceModelResponse.service; + console.log("Service Model: ", serviceModel); + serviceModel.properties["listener"].editable = true; + serviceModel.properties["listener"].items = [listenerName]; + serviceModel.properties["listener"].values = [listenerName]; + serviceModel.properties["basePath"].value = `/${agentName}`; + + const sourceCode = await rpcClient.getServiceDesignerRpcClient().addServiceSourceCode({ + filePath: "", + service: serviceModelResponse.service + }); + + setCurrentStep(4); + const newArtifact = sourceCode.artifacts.find(res => res.isNew); + console.log(">>> agent service sourceCode", sourceCode); + console.log(">>> newArtifact", newArtifact); + + // save model node + const modelVarName = `_${agentName}Model`; + defaultModelNode.properties.variable.value = modelVarName; + const modelResponse = await rpcClient + .getBIDiagramRpcClient() + .getSourceCode({ filePath: agentFilePath.current, flowNode: defaultModelNode }); + console.log(">>> modelResponse getSourceCode", { modelResponse }); + + // wait 2 seconds (wait until LS is updated) + console.log(">>> wait 2 seconds"); + await new Promise((resolve) => setTimeout(resolve, 2000)); + + // save the agent node + const updatedAgentNode = cloneDeep(agentNode); + const systemPromptValue = `{role: "", instructions: string \`\`}`; + const agentVarName = `_${agentName}Agent`; + updatedAgentNode.properties.systemPrompt.value = systemPromptValue; + updatedAgentNode.properties.model.value = modelVarName; + updatedAgentNode.properties.tools.value = []; + updatedAgentNode.properties.variable.value = agentVarName; + + const agentResponse = await rpcClient + .getBIDiagramRpcClient() + .getSourceCode({ filePath: agentFilePath.current, flowNode: updatedAgentNode }); + console.log(">>> agentResponse getSourceCode", { agentResponse }); + + // If the selected model is the default WSO2 model provider, configure it + if (defaultModelNode?.codedata?.symbol === GET_DEFAULT_MODEL_PROVIDER) { + await rpcClient.getAIAgentRpcClient().configureDefaultModelProvider(); + } + + // wait 2 seconds (wait until LS is updated) + console.log(">>> wait 2 seconds"); + await new Promise((resolve) => setTimeout(resolve, 2000)); + + if (newArtifact) { + setCurrentStep(5); + rpcClient.getVisualizerRpcClient().openView({ + type: EVENT_TYPE.OPEN_VIEW, + location: { documentUri: newArtifact.path, position: newArtifact.position } + }); + } } catch (error) { console.error("Error creating AI Chat Agent:", error); setIsCreating(false); diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AddMcpServer.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AddMcpServer.tsx new file mode 100644 index 00000000000..e25700dc2a2 --- /dev/null +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AddMcpServer.tsx @@ -0,0 +1,691 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). All Rights Reserved. + * + * This software is the property of WSO2 LLC. and its suppliers, if any. + * Dissemination of any information or reproduction of any material contained + * herein in any form is strictly forbidden, unless permitted by WSO2 expressly. + * You may not alter or remove any copyright or other notice from copies of this content. + */ + +import { useEffect, useRef, useState } from "react"; +import styled from "@emotion/styled"; +import { FlowNode } from "@wso2/ballerina-core"; +import { useRpcContext } from "@wso2/ballerina-rpc-client"; +import { Button, ThemeColors } from "@wso2/ui-toolkit"; +import { RelativeLoader } from "../../../components/RelativeLoader"; +import FormGenerator from "../Forms/FormGenerator"; +import { findAgentNodeFromAgentCallNode, getAgentFilePath } from "./utils"; +import { CheckBox } from '@wso2/ui-toolkit'; +import { FormValues } from "@wso2/ballerina-side-panel"; + + +export const ContentWrapper = styled.div` + display: flex; + flex-direction: column; + gap: 10px; +`; + +const Container = styled.div` + display: flex; + flex-direction: column; + height: 100%; + min-height: 100%; + box-sizing: border-box; +`; + +const LoaderContainer = styled.div` + display: flex; + justify-content: center; + align-items: center; + height: 100%; +`; + +const ToolsContainer = styled.div` + display: flex; + flex-direction: column; + gap: 8px; + margin-top: 12px; + padding: 12px; + border: 1px solid ${ThemeColors.OUTLINE_VARIANT}; + border-radius: 8px; +`; + +const ToolsHeader = styled.div` + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + margin-bottom: 8px; +`; + +const ToolsTitle = styled.div` + font-size: 14px; + font-family: GilmerBold; + color: ${ThemeColors.ON_SURFACE}; +`; + +const ToolCheckboxContainer = styled.div` + display: flex; + flex-direction: column; + gap: 6px; + max-height: 200px; + overflow-y: auto; +`; + +const ToolCheckboxItem = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 8px; + padding: 4px 0; +`; + +const ErrorMessage = styled.div` + color: ${ThemeColors.ERROR}; + font-size: 12px; + margin-top: 4px; +`; + +const LoadingMessage = styled.div` + color: ${ThemeColors.ON_SURFACE_VARIANT}; + font-size: 12px; + display: flex; + align-items: center; + gap: 8px; +`; + +interface Tool { + name: string; + description?: string; +} + +interface AddToolProps { + editMode?: boolean; + name?: string; + agentCallNode: FlowNode; + onAddMcpServer: () => void; + onSave?: () => void; + onBack?: () => void; +} + +export function AddMcpServer(props: AddToolProps): JSX.Element { + const { agentCallNode, onAddMcpServer, onSave, editMode = false } = props; + console.log(">>> Add Mcp Server props", props); + const { rpcClient } = useRpcContext(); + const [mcpToolkitCount, setMcpToolkitCount] = useState(0); + const [agentNode, setAgentNode] = useState(null); + const [existingTools, setExistingTools] = useState([]); + const [toolsStringList, setToolsStringList] = useState(""); + const [selectedTool, setSelectedTool] = useState(null); + const [urlError, setUrlError] = useState(""); + const [nameError, setNameError] = useState(""); + const [mcpToolResponse, setMcpToolResponse] = useState(null); + const [allVariables, setAllVariables] = useState(null); + + const [serviceUrl, setServiceUrl] = useState(""); + const [pendingServiceUrl, setPendingServiceUrl] = useState(""); + const [errorInputs, setErrorInputs] = useState(false); + const [configs, setConfigs] = useState({}); + const [toolSelection, setToolSelection] = useState("All"); + const [name, setName] = useState(props.name || ""); + const [hasUserTyped, setHasUserTyped] = useState(false); + + // New state for MCP server tools + const [mcpTools, setMcpTools] = useState([]); + const [selectedMcpTools, setSelectedMcpTools] = useState>(new Set()); + const [loadingMcpTools, setLoadingMcpTools] = useState(false); + const [mcpToolsError, setMcpToolsError] = useState(""); + + const [loading, setLoading] = useState(false); + const [savingForm, setSavingForm] = useState(false); + + const agentFilePath = useRef(""); + const hasUpdatedToolsField = useRef(false); + const formRef = useRef(null); + + useEffect(() => { + initPanel(); + }, [agentCallNode]); + + useEffect(() => { + if (mcpToolResponse && !hasUpdatedToolsField.current) { + console.log("Running updateMcpToolResponseWithToolsField", mcpToolResponse); + updateMcpToolResponseWithToolsField(); + hasUpdatedToolsField.current = true; + } + }, [mcpToolResponse]); + + // Effect to fetch MCP tools when serviceUrl changes and toolSelection is "Selected" + useEffect(() => { + if (toolSelection === "Selected" && serviceUrl.trim()) { + fetchMcpTools(serviceUrl); + } else { + // Clear tools when not in selected mode or no URL + setMcpTools([]); + setSelectedMcpTools(new Set()); + setMcpToolsError(""); + } + }, [toolSelection, serviceUrl]); + + // Effect to fetch MCP tools when mcpToolResponse serviceUrl changes + useEffect(() => { + console.log(">>> mcpToolResponse serverUrl changed", (mcpToolResponse?.properties as any)?.['serverUrl']?.value); + const serverUrlProp = (mcpToolResponse?.properties as any)?.['serverUrl']?.value; + if (typeof serverUrlProp === "string" && serverUrlProp.trim() !== "") { + fetchMcpTools(serverUrlProp); + } + }, [(mcpToolResponse?.properties as any)?.['serverUrl']?.value]); + + const fetchAgentNode = async () => { + const agentNode = await findAgentNodeFromAgentCallNode(agentCallNode, rpcClient); + setAgentNode(agentNode); + + const mcpToolResponse = await rpcClient + .getBIDiagramRpcClient() + .getNodeTemplate({ + position: { line: 0, offset: 0 }, + filePath: agentFilePath.current, + id: { + node: "NEW_CONNECTION", + org: "ballerina", + module: "mcp", + "packageName": "mcp", + version: "0.9.1", + symbol: "init", + object: "Client" + } + }); + // Remove defaultValue from info if it exists + removeDefaultValueFromInfo(mcpToolResponse.flowNode.properties); + setMcpToolResponse(mcpToolResponse.flowNode) + console.log(">>> response getSourceCode with template ", { mcpToolResponse }); + console.log(">>> agent node ", { agentNode }); + const variableNodes = await rpcClient.getBIDiagramRpcClient().getModuleNodes(); + console.log(">>> variableNodes", variableNodes); + setAllVariables(variableNodes.flowModel.variables); + if (editMode) { + // Find the variable with type 'ai:McpToolKit' + const mcpVariable = variableNodes.flowModel?.variables?.find( + (v) => v.properties?.type?.value === "ai:McpToolKit" && v.properties.variable?.value === name + ); + console.log(">>> mcpVariable", mcpVariable); + // Properly add toolsToInclude to the properties object + const updatedProperties = { ...(mcpVariable.properties || {}) }; + let permittedToolsValue = (mcpVariable.properties as any)?.permittedTools?.value; + if (!permittedToolsValue) { + fieldVal.value = "All"; + } else { + fieldVal.value = permittedToolsValue === "()" ? "All" : "Selected"; + } + (updatedProperties as any)["toolsToInclude"] = fieldVal; + + const updatedMcpToolResponse = { + ...mcpVariable, + properties: updatedProperties, + codedata: mcpVariable.codedata, + }; + removeDefaultValueFromInfo(updatedMcpToolResponse.properties); + setMcpToolResponse(updatedMcpToolResponse); + } + if (agentNode?.properties?.tools?.value) { + const toolsString = agentNode.properties.tools.value.toString(); + const mcpToolkits = extractMcpToolkits(toolsString); + console.log(">>> toolsString", toolsString); + console.log(">>> mcpToolkits", mcpToolkits); + if (mcpToolkits.length > 0) { + setMcpToolkitCount(mcpToolkits.length); + } + setToolsStringList(toolsString); + + if (name.trim() !== "") { + const tools = props.agentCallNode?.metadata?.data?.tools || []; + console.log(">>> tools", tools); + if (tools.length > 0) { + const matchingTool = tools.find(tool => tool.name.includes(name)); + console.log(">>> matching tool", matchingTool); + console.log(">>> existing mcp toolkit", toolsString); + + if (matchingTool) { + // Escape special regex characters in the tool name + const escapedToolName = matchingTool.name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + + // Improved regex pattern to capture URL and permittedTools + const mcpToolkitPattern = `McpToolKit\\(\\s*"([^"]+)"\\s*,\\s*permittedTools\\s*=\\s*(\\([^)]*\\)|\\[[^\\]]*\\])\\s*,\\s*info\\s*=\\s*\\{[^}]*name:\\s*"${escapedToolName}[^"]*"`; + const mcpToolkitRegex = new RegExp(mcpToolkitPattern); + + const match = toolsString.match(mcpToolkitRegex); + console.log(">>> regex match", match); + + if (match) { + // Extract the URL (first capture group) + const url = match[1]; + setServiceUrl(url); + + const permittedToolsStr = match[2]; + if (permittedToolsStr && permittedToolsStr.trim() !== "()") { + setToolSelection("Selected"); + const toolNames = permittedToolsStr + .replace(/[\[\]()]/g, '') + .split(',') + .map(t => t.trim().replace(/"/g, '')) + .filter(t => t !== ''); + setSelectedMcpTools(new Set(toolNames)); + } else { + setToolSelection("All"); + setSelectedMcpTools(new Set()); + } + } + } + } + } + } + }; + + const initPanel = async () => { + hasUpdatedToolsField.current = false; // Reset on panel init + setLoading(true); + // get agent file path + agentFilePath.current = await getAgentFilePath(rpcClient); + // fetch tools and agent node + await fetchExistingTools(); + await fetchAgentNode(); + setLoading(false); + }; + + useEffect(() => { + + }, [name, props.agentCallNode?.metadata?.data?.tools, toolsStringList]); + + const extractMcpToolkits = (toolsString: string): string[] => { + // Remove brackets and whitespace, then split by comma + return toolsString + .replace(/[\[\]\s]/g, '') // Remove [ ] and whitespace + .split(',') + .filter(Boolean); // Remove empty strings + }; + + const fetchExistingTools = async () => { + const existingTools = await rpcClient.getAIAgentRpcClient().getTools({ filePath: agentFilePath.current }); + console.log(">>> existing tools", existingTools); + setExistingTools(existingTools.tools); + }; + + const fetchMcpTools = async (url: string) => { + // Remove leading/trailing double quotes if present + const cleanUrl = url.replace(/^"|"$/g, ''); + if (!cleanUrl.trim()) { + return; + } + setLoadingMcpTools(true); + setMcpToolsError(""); + setMcpTools([]); + if (!editMode) { + setSelectedMcpTools(new Set()); + } + try { + const languageServerClient = rpcClient.getAIAgentRpcClient(); + if (typeof languageServerClient.getMcpTools === 'function') { + const response = await languageServerClient.getMcpTools({ + serviceUrl: cleanUrl.trim(), + configs: configs + }); + if (response.tools && Array.isArray(response.tools)) { + setMcpTools(response.tools); + } else { + setMcpToolsError("No tools found in MCP server response"); + } + } + } catch (error) { + setMcpToolsError(`Failed to fetch tools from MCP server: ${error || 'Unknown error'}`); + } finally { + setLoadingMcpTools(false); + } + }; + + // useEffect to fetch tools when pendingServiceUrl changes + useEffect(() => { + if (pendingServiceUrl.trim()) { + fetchMcpTools(pendingServiceUrl); + } + }, [pendingServiceUrl]); + + const handleToolSelectionChange = (toolName: string, isSelected: boolean) => { + const newSelectedTools = new Set(selectedMcpTools); + if (isSelected) { + newSelectedTools.add(toolName); + } else { + newSelectedTools.delete(toolName); + } + setSelectedMcpTools(newSelectedTools); + }; + + const extractMcpToolkitNames = (toolsString: string): string[] => { + const names: string[] = []; + + // Regex to match McpToolKit with name in info object + const mcpToolkitPattern = /McpToolKit\([^}]*info\s*=\s*\{[^}]*name:\s*"([^"]+)"/g; + let match; + + while ((match = mcpToolkitPattern.exec(toolsString)) !== null) { + names.push(match[1]); + } + + return names; + }; + + const handleSelectAllTools = () => { + if (selectedMcpTools.size === mcpTools.length) { + // Deselect all + setSelectedMcpTools(new Set()); + } else { + // Select all + setSelectedMcpTools(new Set(mcpTools.map(tool => tool.name))); + } + }; + + // Update handleOnSave to accept all submitted form values + const handleOnSave = async ( + node?: FlowNode, + isDataMapper?: boolean, + formImports?: any, + rawFormValues?: FormValues + ) => { + console.log(">>> selected tools", selectedTools) + console.log("All submitted form values:", rawFormValues); + console.log("handle on save node:", node); + + // Use the same logic as the display to determine the name + let finalName; + if (name.trim() !== "") { + finalName = name.trim(); + } else { + finalName = mcpToolkitCount > 1 ? `MCP Server 0${mcpToolkitCount}` : "MCP Server"; + } + + const payload = { + name: finalName, + serviceUrl: serviceUrl.trim(), + configs: configs, + toolSelection, + selectedTools: selectedTools, + mcpTools + }; + // Update node.properties so that each key is an object with a value property + if (rawFormValues && node && node.properties) { + const props = node.properties as Record; + Object.entries(rawFormValues).forEach(([key, value]) => { + if (props[key] && typeof props[key] === "object" && "value" in props[key]) { + props[key].value = value; + } else { + props[key] = { value }; + } + }); + node.properties = props; + } + console.log(">>> Saving with payload:", payload); + + setSavingForm(true); + try { + await rpcClient.getAIAgentRpcClient().updateMCPToolKit({ + agentFlowNode: agentNode, + serviceUrl: `"${payload.serviceUrl}"`, + serverName: finalName, + selectedTools: selectedTools, + updatedNode: node, + codedata: mcpToolResponse.codedata, + mcpTools: payload.mcpTools + }); + setServiceUrl(payload.serviceUrl); + onSave?.(); + } catch (error) { + console.error(">>> Error saving MCP server", error); + } finally { + setSavingForm(false); + } + }; + + const existingMcpToolkits = extractMcpToolkitNames(toolsStringList); + + const generateUniqueValue = () => { + if (hasUserTyped || editMode) { + return name; + } + + let counter = mcpToolkitCount; + let candidateValue = counter > 1 ? `MCP Server 0${counter}` : "MCP Server"; + while (existingMcpToolkits.some(existingName => + existingName.toLowerCase() === candidateValue.trim().toLowerCase() + )) { + counter++; + candidateValue = `MCP Server 0${counter}`; + } + + return candidateValue; + }; + + // Refactored: Accept variables as parameter + const generateUniqueVariable = (variables: FlowNode[] = allVariables) => { + if (hasUserTyped || editMode) { + return name; + } + + let counter = mcpToolkitCount; + let candidateValue = counter >= 1 ? `mcpServer${counter}` : "mcpServer"; + // Loop until candidateValue is unique among variables + while ((variables || []).some(v => { + const val = v.properties?.variable?.value; + return typeof val === 'string' && val.trim().toLowerCase() === candidateValue.trim().toLowerCase(); + })) { + counter++; + candidateValue = `mcpServer${counter}`; + } + return candidateValue; + }; + + + const hasExistingTools = existingTools.length > 0; + const isToolSelected = selectedTool !== null; + const canSave = serviceUrl.trim() && (toolSelection !== "Selected" || selectedMcpTools.size > 0); + + console.log(">>> rendering conditions", { hasExistingTools, isToolSelected, canSave, editMode }); + + // Change renderToolsSelection to accept mcpTools as a parameter + const renderToolsSelection = (tools = mcpTools) => { + if (toolSelection !== "Selected") { + return null; + } + + return ( + + + Available Tools + {tools.length > 0 && ( + + )} + + + {loadingMcpTools && ( + + + Loading tools from MCP server... + + )} + + {mcpToolsError && ( + {mcpToolsError} + )} + + {tools.length > 0 && ( + + {tools.map((tool) => ( + + !loadingMcpTools && handleToolSelectionChange(tool.name, !selectedMcpTools.has(tool.name))} + > + +
+
{tool.name}
+ {tool.description && ( +
+ {tool.description} +
+ )} +
+
+ ))} +
+ )} + + {!loadingMcpTools && !mcpToolsError && tools.length === 0 && serviceUrl.trim() && ( +
+ No tools available from this MCP server +
+ )} +
+ ); + }; + console.log(">>> agentNode", agentCallNode); + + const fieldVal = { + key: "scope", + advanced: false, + codedata: { + kind: 'REQUIRED', + originalName: 'scope', + }, + editable: true, + hidden: false, + metadata: { + label: "Tools to Include", + description: "Select the tools to include in the MCP server." + }, + optional: false, + placeholder: "", + valueType: "SINGLE_SELECT", + valueTypeConstraint: "string", + value: "All", // <-- add this line to fix the linter error + typeMembers: [ + { + type: "string", + packageInfo: "", + packageName: "", + kind: "BASIC_TYPE", + selected: false + } + ], + imports: {}, + defaultValue: "All", + itemOptions: [ { + "id": "All", + "content": "All", + "value": "All" + }, + { + "id": "Selected", + "content": "Selected", + "value": "Selected" + }] + }; + + function removeDefaultValueFromInfo(properties: any) { + if (properties && properties.info && typeof properties.info === 'object' && 'defaultValue' in properties.info) { + delete properties.info.defaultValue; + } + } + + // Refactor to accept variableName as parameter + const updateMcpToolResponseWithToolsField = (variableName?: string) => { + if (mcpToolResponse) { + // Clone properties to avoid mutating state directly + const updatedProperties = { ...(mcpToolResponse.properties || {}) }; + + if (editMode) { + if ("serverUrl" in updatedProperties && updatedProperties["serverUrl"]) { + (updatedProperties["serverUrl"] as { value: string }).value = serviceUrl; + } + // Only update 'info' if it exists in updatedProperties and has a 'value' property + if ("info" in updatedProperties && typeof (updatedProperties["info"] as any)?.value === "string") { + (updatedProperties["info"] as { value: string }).value = ((mcpToolResponse.properties as any)?.info?.value) || ""; + } + } + + if ("variable" in updatedProperties && updatedProperties["variable"]) { + (updatedProperties["variable"] as { value: string }).value = variableName || generateUniqueVariable(allVariables); + } + let permittedToolsValue = (mcpToolResponse.properties as any)?.permittedTools?.value; + if (!permittedToolsValue) { + fieldVal.value = "All"; + } else { + fieldVal.value = permittedToolsValue === "()" ? "All" : "Selected"; + } + // Add fieldVal as a property named 'scope', wrapped as a Property object + (updatedProperties as any)["toolsToInclude"] = fieldVal; + + const updatedMcpToolResponse = { + ...mcpToolResponse, + properties: updatedProperties, + }; + removeDefaultValueFromInfo(updatedMcpToolResponse.properties); + setMcpToolResponse(updatedMcpToolResponse); + } + }; + + const [selectedTools, setSelectedTools] = useState([]); + + const handleToolsChange = (tools: string[]) => { + setSelectedTools(tools); + // You can do other things here as needed + }; + + useEffect(() => { + if (allVariables && Array.isArray(allVariables)) { + const uniqueVar = generateUniqueVariable(allVariables); + updateMcpToolResponseWithToolsField(uniqueVar); + console.log('Generated unique variable:', uniqueVar); + } + }, [allVariables]); + + return ( + + + {loading && ( + + + + )} + + {mcpToolResponse && ( + { + if (fieldKey === "serverUrl") { + setPendingServiceUrl(value); + setServiceUrl(value); + } + }} + mcpTools={mcpTools} + // Pass the handler to FormGenerator + onToolsChange={handleToolsChange} + showProgressIndicator={savingForm} + /> + )} + + ); +} + diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AddTool.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AddTool.tsx index f335228d06d..f0e39b6ffa5 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AddTool.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AddTool.tsx @@ -16,16 +16,12 @@ * under the License. */ -import { useEffect, useRef, useState } from "react"; import styled from "@emotion/styled"; import { FlowNode } from "@wso2/ballerina-core"; -import { useRpcContext } from "@wso2/ballerina-rpc-client"; -import { Button, Codicon, ThemeColors } from "@wso2/ui-toolkit"; -import { RelativeLoader } from "../../../components/RelativeLoader"; -import { addToolToAgentNode, findAgentNodeFromAgentCallNode, getAgentFilePath } from "./utils"; +import { Icon, ThemeColors } from "@wso2/ui-toolkit"; const Container = styled.div` - padding: 16px; + padding: 20px; display: flex; flex-direction: column; height: 100%; @@ -33,215 +29,133 @@ const Container = styled.div` box-sizing: border-box; `; -const LoaderContainer = styled.div` - display: flex; - justify-content: center; - align-items: center; - height: 100%; -`; - const Description = styled.div` font-size: var(--vscode-font-size); color: ${ThemeColors.ON_SURFACE_VARIANT}; - margin-bottom: 8px; + margin-bottom: 24px; + line-height: 1.5; `; const Column = styled.div` display: flex; flex-direction: column; - gap: 8px; + gap: 12px; flex: 1; - overflow-y: auto; `; -const Row = styled.div` +const OptionCard = styled.div` display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - margin-bottom: 8px; -`; - -const Title = styled.div` - font-size: 14px; - font-family: GilmerBold; -`; - -const ToolItem = styled.div<{ isSelected?: boolean }>` - display: flex; - flex-direction: row; - align-items: center; - gap: 5px; - padding: 5px; - border: 1px solid - ${(props: { isSelected: boolean }) => (props.isSelected ? ThemeColors.PRIMARY : ThemeColors.OUTLINE_VARIANT)}; - border-radius: 5px; - height: 36px; - cursor: "pointer"; - font-size: 14px; + flex-direction: column; + gap: 8px; + padding: 14px 12px; + border: 1px solid ${ThemeColors.OUTLINE_VARIANT}; + border-radius: 4px; + cursor: pointer; + transition: all 0.2s ease; + &:hover { background-color: ${ThemeColors.PRIMARY_CONTAINER}; border: 1px solid ${ThemeColors.PRIMARY}; } `; -const PrimaryButton = styled(Button)` - appearance: "primary"; -`; - -const HighlightedButton = styled.div` - margin-top: 10px; - width: 100%; +const OptionHeader = styled.div` display: flex; flex-direction: row; - justify-content: center; - align-items: flex-start; - gap: 8px; - padding: 6px 2px; + align-items: center; + gap: 12px; +`; + +const OptionIcon = styled.div` color: ${ThemeColors.PRIMARY}; - border: 1px dashed ${ThemeColors.PRIMARY}; - border-radius: 5px; - cursor: pointer; - &:hover { - border: 1px solid ${ThemeColors.PRIMARY}; - background-color: ${ThemeColors.PRIMARY_CONTAINER}; - } + font-size: 18px; + display: flex; + align-items: center; `; -const Footer = styled.div` - position: fixed; - bottom: 0; - left: 0; +const OptionTitle = styled.div` + font-size: 14px; + font-family: GilmerBold; + color: ${ThemeColors.ON_SURFACE}; +`; - width: 100%; - display: flex; - justify-content: flex-end; - gap: 12px; - padding: 16px; - background-color: ${ThemeColors.SURFACE_DIM}; - margin-top: auto; +const OptionDescription = styled.div` + font-size: var(--vscode-font-size); + color: ${ThemeColors.ON_SURFACE_VARIANT}; + margin-left: 24px; + line-height: 1.4; `; interface AddToolProps { agentCallNode: FlowNode; - onAddNewTool: () => void; + onUseConnection?: () => void; + onUseFunction?: () => void; + onUseMcpServer?: () => void; onSave?: () => void; + onBack?: () => void; } export function AddTool(props: AddToolProps): JSX.Element { - const { agentCallNode, onAddNewTool, onSave } = props; - console.log(">>> AddTool props", props); - const { rpcClient } = useRpcContext(); - - const [agentNode, setAgentNode] = useState(null); - const [existingTools, setExistingTools] = useState([]); - const [selectedTool, setSelectedTool] = useState(null); - - const [loading, setLoading] = useState(false); - const [savingForm, setSavingForm] = useState(false); - - const agentFilePath = useRef(""); - - useEffect(() => { - initPanel(); - }, [agentCallNode]); - - const initPanel = async () => { - setLoading(true); - // get agent file path - agentFilePath.current = await getAgentFilePath(rpcClient); - // fetch tools and agent node - await fetchExistingTools(); - await fetchAgentNode(); - setLoading(false); - }; + const { onUseConnection, onUseFunction, onUseMcpServer } = props; - const fetchAgentNode = async () => { - // get agent node - const agentNode = await findAgentNodeFromAgentCallNode(agentCallNode, rpcClient); - setAgentNode(agentNode); + const handleUseConnection = () => { + onUseConnection?.(); }; - const fetchExistingTools = async () => { - const existingTools = await rpcClient.getAIAgentRpcClient().getTools({ filePath: agentFilePath.current }); - console.log(">>> existing tools", existingTools); - setExistingTools(existingTools.tools); + const handleUseFunction = () => { + onUseFunction?.(); }; - const handleToolSelection = (tool: string) => { - setSelectedTool(tool); + const handleUseMcpServer = () => { + onUseMcpServer?.(); }; - const handleAddNewTool = () => { - onAddNewTool(); - }; - - const handleOnSave = async () => { - console.log(">>> save value", { selectedTool }); - setSavingForm(true); - // update the agent node - const updatedAgentNode = await addToolToAgentNode(agentNode, selectedTool); - // generate the source code - const agentResponse = await rpcClient - .getBIDiagramRpcClient() - .getSourceCode({ filePath: agentFilePath.current, flowNode: updatedAgentNode }); - console.log(">>> response getSourceCode with template ", { agentResponse }); - - onSave?.(); - setSavingForm(false); - }; - - const hasExistingTools = existingTools.length > 0; - const isToolSelected = selectedTool !== null; - - console.log(">>> rendering conditions", { hasExistingTools, isToolSelected }); - return ( - {loading && ( - - - - )} - {!loading && hasExistingTools && ( - <> - - Choose a tool to add to the Agent or create a new one. - - Tools - - - {existingTools.map((tool) => ( - handleToolSelection(tool)} - key={tool} - isSelected={selectedTool === tool} - > - {tool} - - ))} - -
- - {"Add to Agent"} - -
- - )} - {!loading && !hasExistingTools && !selectedTool && ( - - - No tools are currently available in your integration. Add a new tool to improve your agent's - capabilities. - - - - Create New Tool - - - )} + + Create and add tools to extend your agent's capabilities. Choose the method you'd like to use: + + + + + + + + + Use Connection + + + Turn an existing connection (HTTP client, database, message broker) into an agent tool. + Your agent will be able to make requests and interact with these services. + + + + + + + + + Use Function + + + Create a tool from an existing function in your integration or build a new custom function. + This gives your agent the ability to execute specific business logic. + + + + + + + + + Use MCP Server + + + Connect to a Model Context Protocol (MCP) server to access pre-built tools and resources. + MCP servers provide standardized access to external systems and data sources. + + +
); } diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AgentConfig.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AgentConfig.tsx index f751b430979..d9d02611f3b 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AgentConfig.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/AgentConfig.tsx @@ -24,7 +24,7 @@ import { useRpcContext } from "@wso2/ballerina-rpc-client"; import { convertConfig } from "../../../utils/bi"; import ConfigForm from "./ConfigForm"; import { cloneDeep } from "lodash"; -import { findAgentNodeFromAgentCallNode, getAgentFilePath } from "./utils"; +import { findAgentNodeFromAgentCallNode, getAgentFilePath, getMainFilePath } from "./utils"; const Container = styled.div` padding: 16px; @@ -54,6 +54,7 @@ export function AgentConfig(props: AgentConfigProps): JSX.Element { const [savingForm, setSavingForm] = useState(false); const agentFilePath = useRef(""); + const mainFilePath = useRef(""); useEffect(() => { initPanel(); @@ -68,6 +69,8 @@ export function AgentConfig(props: AgentConfigProps): JSX.Element { const initPanel = async () => { // get agent file path agentFilePath.current = await getAgentFilePath(rpcClient); + // get main file path + mainFilePath.current = await getMainFilePath(rpcClient); // fetch agent node await fetchAgentNode(); await fetchAgentCallNode(); @@ -184,7 +187,9 @@ export function AgentConfig(props: AgentConfigProps): JSX.Element { updatedAgentNode.properties.systemPrompt.value = systemPromptValue; updatedAgentNode.properties.verbose.value = rawData["verbose"]; updatedAgentNode.properties.maxIter.value = rawData["maxIter"]; - updatedAgentNode.properties.agentType.value = rawData["agentType"]; + if ("agentType" in rawData) { + updatedAgentNode.properties.agentType.value = rawData["agentType"]; + } const agentResponse = await rpcClient .getBIDiagramRpcClient() @@ -212,10 +217,12 @@ export function AgentConfig(props: AgentConfigProps): JSX.Element { {agentCallNode?.codedata?.lineRange && ( )} diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/ConfigForm.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/ConfigForm.tsx index 9afd4068909..deeb26ae2ad 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/ConfigForm.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/ConfigForm.tsx @@ -39,6 +39,7 @@ const FormContainer = styled.div` `; interface ConfigProps { + fileName: string; isSaving: boolean; formFields: FormField[]; targetLineRange: LineRange; @@ -48,7 +49,7 @@ interface ConfigProps { } export function ConfigForm(props: ConfigProps) { - const { isSaving, formFields, targetLineRange, disableSaveButton, onSubmit, onBack } = props; + const { fileName, isSaving, formFields, targetLineRange, disableSaveButton, onSubmit, onBack } = props; console.log(">>> ConfigForm props", props); const handleSubmit = async (data: FormValues, formImports: FormImports) => { @@ -68,6 +69,12 @@ export function ConfigForm(props: ConfigProps) { onSubmit(formFields, data); }; + // hack: set default value for modelType field if not set + const modelTypeField = formFields.find((field) => field.key === "modelType"); + if (modelTypeField && modelTypeField.value === undefined && (modelTypeField.defaultValue || modelTypeField.placeholder)) { + modelTypeField.value = modelTypeField.defaultValue || modelTypeField.placeholder; + } + // type field hide const typeField = formFields.find((field) => field.key === "type"); if (typeField) { @@ -80,7 +87,7 @@ export function ConfigForm(props: ConfigProps) { {targetLineRange && ( (false); const agentFilePath = useRef(""); + const aiModuleOrg = useRef(""); const agentNodeRef = useRef(); const moduleConnectionNodes = useRef([]); @@ -84,6 +85,7 @@ export function MemoryManagerConfig(props: MemoryManagerConfigProps): JSX.Elemen const initPanel = async () => { setLoading(true); agentFilePath.current = await getAgentFilePath(rpcClient); + aiModuleOrg.current = await getAiModuleOrg(rpcClient); // fetch all memory managers const memoryManagers = await fetchMemoryManagers(); // fetch selected agent memory manager @@ -101,7 +103,7 @@ export function MemoryManagerConfig(props: MemoryManagerConfigProps): JSX.Elemen try { const memoryManagers = await rpcClient .getAIAgentRpcClient() - .getAllMemoryManagers({ filePath: agentFilePath.current }); + .getAllMemoryManagers({ filePath: agentFilePath.current, orgName: aiModuleOrg.current }); console.log(">>> all memory managers", memoryManagers); if (memoryManagers.memoryManagers) { setMemoryManagersCodeData(memoryManagers.memoryManagers); @@ -122,32 +124,32 @@ export function MemoryManagerConfig(props: MemoryManagerConfigProps): JSX.Elemen console.error("No module connections found"); return; } - + moduleConnectionNodes.current = moduleNodes.flowModel.connections; - + // get agent name const agentName = agentCallNode.properties.connection.value; if (!agentName) { console.error("Agent name not found in agent call node"); return; } - + // get agent node - const agentNode = moduleConnectionNodes.current.find((node) => node.properties.variable.value === agentName); + const agentNode = moduleConnectionNodes.current.find((node) => node.properties.variable.value === agentName); if (!agentNode) { console.error("Agent node not found", agentCallNode); return; } - + agentNodeRef.current = agentNode; - + // get memory manager name const memoryManagerName = (agentNode.properties?.memory?.value as string) || ""; // "new ai:MessageWindowChatMemory(33)" if (!memoryManagerName) { console.log("No memory manager associated with this agent"); return; } - + // get memory manager from available ones const memoryManagerCodeData = memoryManagers.find((memory) => { // Extract the memory manager type from the expression like "new ai:MessageWindowChatMemory(33)" @@ -160,10 +162,11 @@ export function MemoryManagerConfig(props: MemoryManagerConfigProps): JSX.Elemen console.error("Memory manager not found in available memory managers"); return; } - + setSelectedMemoryManagerCodeData(memoryManagerCodeData); - + const selectedMemoryManagerNodeTemplate = await getNodeTemplate( + rpcClient, memoryManagerCodeData, agentFilePath.current ); @@ -171,7 +174,7 @@ export function MemoryManagerConfig(props: MemoryManagerConfigProps): JSX.Elemen console.error("Failed to get node template for memory manager"); return; } - + // set properties size value const sizeValue = memoryManagerName.split("(")[1]?.split(")")[0]?.trim(); if (sizeValue) { @@ -189,7 +192,8 @@ export function MemoryManagerConfig(props: MemoryManagerConfigProps): JSX.Elemen // fetch selected memory manager code data - node template const fetchMemoryManagerNodeTemplate = async (memoryManagerCodeData: CodeData) => { setLoading(true); - const selectedMemoryManagerNodeTemplate = await getNodeTemplate( + const selectedMemoryManagerNodeTemplate = await getNodeTemplate( + rpcClient, memoryManagerCodeData, agentFilePath.current ); @@ -199,23 +203,13 @@ export function MemoryManagerConfig(props: MemoryManagerConfigProps): JSX.Elemen } // set properties variable selectedMemoryManagerNodeTemplate.properties.variable.hidden = true; - + setSelectedMemoryManager(selectedMemoryManagerNodeTemplate); const memoryManagerFields = convertConfig(selectedMemoryManagerNodeTemplate.properties); setSelectedMemoryManagerFields(memoryManagerFields); setLoading(false); }; - const getNodeTemplate = async (codeData: CodeData, filePath: string) => { - const response = await rpcClient.getBIDiagramRpcClient().getNodeTemplate({ - position: { line: 0, offset: 0 }, - filePath: filePath, - id: codeData, - }); - console.log(">>> get node template response", response); - return response?.flowNode; - }; - const handleOnSave = async (data: FormField[], rawData: FormValues) => { console.log(">>> save value", { data, rawData }); setSavingForm(true); @@ -319,6 +313,7 @@ export function MemoryManagerConfig(props: MemoryManagerConfigProps): JSX.Elemen )} {!loading && selectedMemoryManagerFields?.length > 0 && agentNodeRef.current?.codedata?.lineRange && ( void; + onSave?: (response?: UpdatedArtifactsResponse) => void; } export function ModelConfig(props: ModelConfigProps): JSX.Element { @@ -68,6 +107,7 @@ export function ModelConfig(props: ModelConfigProps): JSX.Element { const [savingForm, setSavingForm] = useState(false); const agentFilePath = useRef(""); + const aiModuleOrg = useRef(""); const moduleConnectionNodes = useRef([]); const selectedModelFlowNode = useRef(); @@ -77,13 +117,38 @@ export function ModelConfig(props: ModelConfigProps): JSX.Element { useEffect(() => { if (modelsCodeData.length > 0 && selectedModel && !selectedModelCodeData) { - fetchModelNodeTemplate(selectedModel.codedata); + // Find the initial modelCodeData that matches selectedModel + let initialModelCodeData: CodeData | undefined; + if (aiModuleOrg.current === BALLERINA) { + initialModelCodeData = modelsCodeData.find((model) => model.module === selectedModel.codedata.module); + } else if (aiModuleOrg.current === BALLERINAX) { + initialModelCodeData = modelsCodeData.find((model) => model.object === selectedModel.codedata.object); + } else { + initialModelCodeData = modelsCodeData.find((model) => model.module === selectedModel.codedata.module); + } + if (initialModelCodeData) { + setSelectedModelCodeData(initialModelCodeData); + fetchModelNodeTemplate(initialModelCodeData); + } else { + fetchModelNodeTemplate(selectedModel.codedata); + } } }, [modelsCodeData, selectedModel]); const initPanel = async () => { setLoading(true); - agentFilePath.current = await getAgentFilePath(rpcClient); + if (agentCallNode?.codedata?.node === "NP_FUNCTION") { + agentFilePath.current = await getNPFilePath(rpcClient); + } else { + agentFilePath.current = await getAgentFilePath(rpcClient); + } + + if (agentCallNode?.codedata?.node === "NP_FUNCTION") { + aiModuleOrg.current = "ballerina" + } else { + aiModuleOrg.current = await getAiModuleOrg(rpcClient); + } + // fetch all models await fetchModels(); // fetch selected agent model @@ -91,16 +156,36 @@ export function ModelConfig(props: ModelConfigProps): JSX.Element { setLoading(false); }; + // Helper to get provider name from modelCodeData + const getProviderName = (model: CodeData, useMappedName: boolean = false) => { + if (!model) return ""; + if (aiModuleOrg.current === BALLERINA) { + if (useMappedName) { + return PROVIDER_NAME_MAP[model.module] || model.module; + } + return model.module; + } else if (aiModuleOrg.current === BALLERINAX) { + return model.object; + } + // fallback + return model.module || model.object; + }; + const fetchModels = async () => { console.log(">>> agent call node", agentCallNode); - const agentName = agentCallNode?.properties.connection.value; + let agentName; + if (agentCallNode?.codedata?.node === "NP_FUNCTION") { + agentName = agentCallNode.properties?.modelProvider?.value; + } else { + agentName = agentCallNode?.properties.connection.value; + } if (!agentName) { console.error("Agent name not found", agentCallNode); return; } const models = await rpcClient .getAIAgentRpcClient() - .getAllModels({ agent: agentName, filePath: agentFilePath.current }); + .getAllModels({ agent: agentName, filePath: agentFilePath.current, orgName: aiModuleOrg.current }); console.log(">>> all models", models); setModelsCodeData(models.models); }; @@ -113,7 +198,12 @@ export function ModelConfig(props: ModelConfigProps): JSX.Element { moduleConnectionNodes.current = moduleNodes.flowModel.connections; } // get agent name - const agentName = agentCallNode.properties.connection.value; + let agentName; + if (agentCallNode?.codedata?.node === "NP_FUNCTION") { + agentName = agentCallNode.properties?.modelProvider?.value; + } else { + agentName = agentCallNode.properties.connection.value; + } // get agent node const agentNode = moduleConnectionNodes.current.find((node) => node.properties.variable.value === agentName); console.log(">>> agent node", agentNode); @@ -122,7 +212,7 @@ export function ModelConfig(props: ModelConfigProps): JSX.Element { return; } // get model name - const modelName = agentNode?.properties.model.value; + const modelName = agentNode?.properties?.model?.value || agentNode?.properties?.variable?.value; console.log(">>> model name", modelName); // get model node const modelNode = moduleConnectionNodes.current.find((node) => node.properties.variable.value === modelName); @@ -134,12 +224,21 @@ export function ModelConfig(props: ModelConfigProps): JSX.Element { const fetchModelNodeTemplate = async (modelCodeData: CodeData) => { setLoading(true); let nodeProperties: NodeProperties = {}; - if (selectedModel?.codedata.object === modelCodeData.object) { + // Determine provider match for both aiModuleOrg cases + let isProviderMatch = false; + if (aiModuleOrg.current === BALLERINA) { + isProviderMatch = selectedModel?.codedata.module === modelCodeData.module; + } else if (aiModuleOrg.current === BALLERINAX) { + isProviderMatch = selectedModel?.codedata.object === modelCodeData.object; + } else { + isProviderMatch = selectedModel?.codedata.module === modelCodeData.module; + } + if (isProviderMatch) { // use selected model properties selectedModelFlowNode.current = cloneDeep(selectedModel); nodeProperties = selectedModel?.properties; } else { - const modelNodeTemplate = await getNodeTemplate(modelCodeData, agentFilePath.current); + const modelNodeTemplate = await getNodeTemplate(rpcClient, modelCodeData, agentFilePath.current); console.log(">>> selected model node template", { modelNodeTemplate, modelCodeData }); selectedModelFlowNode.current = cloneDeep(modelNodeTemplate); nodeProperties = modelNodeTemplate.properties; @@ -158,16 +257,6 @@ export function ModelConfig(props: ModelConfigProps): JSX.Element { setLoading(false); }; - const getNodeTemplate = async (codeData: CodeData, filePath: string) => { - const response = await rpcClient.getBIDiagramRpcClient().getNodeTemplate({ - position: { line: 0, offset: 0 }, - filePath: filePath, - id: codeData, - }); - console.log(">>> get node template response", response); - return response?.flowNode; - }; - const handleOnSave = async (data: FormField[], rawData: FormValues) => { console.log(">>> save value", { data, rawData }); setSavingForm(true); @@ -189,36 +278,71 @@ export function ModelConfig(props: ModelConfigProps): JSX.Element { .getBIDiagramRpcClient() .getSourceCode({ filePath: agentFilePath.current, flowNode: nodeTemplate }); console.log(">>> response getSourceCode with template ", { response }); - onSave?.(); + + // If the selected model is the default WSO2 model provider, configure it + if (selectedModelCodeData?.symbol === GET_DEFAULT_MODEL_PROVIDER) { + await rpcClient.getAIAgentRpcClient().configureDefaultModelProvider(); + } + + onSave?.(response); setSavingForm(false); }; return ( {modelsCodeData.length > 0 && ( - - ({ value: model.object, content: model.object })), - ]} - label="Select Model Provider" - description={"Available Providers"} - onValueChange={(value) => { - if (value === "Select a provider...") { - return; // Skip the init option + <> + + (b.symbol === GET_DEFAULT_MODEL_PROVIDER ? 1 : 0) - (a.symbol === GET_DEFAULT_MODEL_PROVIDER ? 1 : 0)) + .map((model) => ({ + value: getProviderName(model), + content: model.symbol === GET_DEFAULT_MODEL_PROVIDER ? WSO2_MODEL_PROVIDER : getProviderName(model, true) + })), + ]} + label="Select Model Provider" + description={"Available Providers"} + onValueChange={(value) => { + if (value === "Select a provider...") { + return; // Skip the init option + } + const selectedModelCodeData = modelsCodeData.find((model) => getProviderName(model) === value); + console.log("Selected Model Code Data: ", selectedModelCodeData); + setSelectedModelCodeData(selectedModelCodeData); + fetchModelNodeTemplate(selectedModelCodeData); + }} + value={ + selectedModelCodeData + ? getProviderName(selectedModelCodeData) + : ((agentCallNode?.metadata.data as NodeMetadata)?.model?.type as string) } - const selectedModelCodeData = modelsCodeData.find((model) => model.object === value); - setSelectedModelCodeData(selectedModelCodeData); - fetchModelNodeTemplate(selectedModelCodeData); - }} - value={selectedModelCodeData?.object || ((agentCallNode?.metadata.data as NodeMetadata)?.model?.type as string)} - containerSx={{ width: "100%" }} - /> - + containerSx={{ width: "100%" }} + /> + + {selectedModelCodeData?.symbol === GET_DEFAULT_MODEL_PROVIDER && ( + + +
+ + Using the default WSO2 Model Provider will automatically add the necessary configuration values to Config.toml. + +
+
+ This can also be done using the VSCode command palette command:
+ + {">"} Ballerina: Configure default WSO2 model provider + +
+
+
+ )} + )} {loading && ( @@ -227,6 +351,7 @@ export function ModelConfig(props: ModelConfigProps): JSX.Element { )} {!loading && selectedModelFields?.length > 0 && selectedModel?.codedata?.lineRange && ( (false); const agentFilePath = useRef(""); + const mainFilePath = useRef(""); + const aiModuleOrg = useRef(""); const agentCallEndOfFile = useRef(null); const agentEndOfFile = useRef(null); @@ -71,6 +75,10 @@ export function NewAgent(props: NewAgentProps): JSX.Element { // get agent file path const filePath = await rpcClient.getVisualizerLocation(); agentFilePath.current = await rpcClient.getVisualizerRpcClient().joinProjectPath("agents.bal"); + // get main file path + mainFilePath.current = Utils.joinPath(URI.file(filePath.projectUri), "main.bal").fsPath; + // get agent org + aiModuleOrg.current = await getAiModuleOrg(rpcClient); // fetch agent node await fetchAgentNode(); // get end of files @@ -95,7 +103,7 @@ export function NewAgent(props: NewAgentProps): JSX.Element { const fetchAgentNode = async () => { // get the agent node - const allAgents = await rpcClient.getAIAgentRpcClient().getAllAgents({ filePath: agentFilePath.current }); + const allAgents = await rpcClient.getAIAgentRpcClient().getAllAgents({ filePath: agentFilePath.current, orgName: aiModuleOrg.current }); console.log(">>> allAgents", allAgents); if (!allAgents.agents.length) { console.log(">>> no agents found"); @@ -103,22 +111,22 @@ export function NewAgent(props: NewAgentProps): JSX.Element { } const agentCodeData = allAgents.agents.at(0); // get agent node template - const agentNodeTemplate = await getNodeTemplate(agentCodeData, agentFilePath.current); + const agentNodeTemplate = await getNodeTemplate(rpcClient, agentCodeData, agentFilePath.current); setAgentNode(agentNodeTemplate); // get all llm models const allModels = await rpcClient .getAIAgentRpcClient() - .getAllModels({ agent: agentCodeData.object, filePath: agentFilePath.current }); + .getAllModels({ agent: agentCodeData.object, filePath: agentFilePath.current, orgName: aiModuleOrg.current }); console.log(">>> allModels", allModels); // get openai model - const defaultModel = allModels.models.find((model) => model.object === "OpenAiProvider"); + const defaultModel = allModels.models.find((model) => model.object === "OpenAiProvider" || (model.org === BALLERINA && model.module === AI)); if (!defaultModel) { console.log(">>> no default model found"); return; } // get model node template - const modelNodeTemplate = await getNodeTemplate(defaultModel, agentFilePath.current); + const modelNodeTemplate = await getNodeTemplate(rpcClient, defaultModel, agentFilePath.current); setDefaultModelNode(modelNodeTemplate); // get agent call node template @@ -128,6 +136,9 @@ export function NewAgent(props: NewAgentProps): JSX.Element { if (!(agentNode && agentCallNode)) { return; } + // overwrite the agent call node properties + agentCallNode.codedata.org = aiModuleOrg.current; + const agentCallFormFields = convertConfig(agentCallNode.properties); const systemPromptProperty = agentNode.properties.systemPrompt; if (systemPromptProperty) { @@ -241,7 +252,9 @@ export function NewAgent(props: NewAgentProps): JSX.Element { updatedAgentNode.properties.tools.value = []; updatedAgentNode.properties.verbose.value = rawData["verbose"]; updatedAgentNode.properties.maxIter.value = rawData["maxIter"]; - updatedAgentNode.properties.agentType.value = rawData["agentType"]; + if ("agentType" in rawData) { + updatedAgentNode.properties.agentType.value = rawData["agentType"]; + } const agentResponse = await rpcClient .getBIDiagramRpcClient() @@ -272,24 +285,15 @@ export function NewAgent(props: NewAgentProps): JSX.Element { .getSourceCode({ filePath: fileName, flowNode: updatedAgentCallNode }); console.log(">>> response getSourceCode with template ", { agentCallResponse }); + // If the selected model is the default WSO2 model provider, configure it + if (defaultModelNode?.codedata?.symbol === GET_DEFAULT_MODEL_PROVIDER) { + await rpcClient.getAIAgentRpcClient().configureDefaultModelProvider(); + } + onSave?.(); setSavingForm(false); }; - const getNodeTemplate = async ( - codeData: CodeData, - filePath: string, - position: LinePosition = { line: 0, offset: 0 } - ) => { - const response = await rpcClient.getBIDiagramRpcClient().getNodeTemplate({ - position: position, - filePath: filePath, - id: codeData, - }); - console.log(">>> get node template response", response); - return response?.flowNode; - }; - return ( {loading && ( @@ -299,6 +303,7 @@ export function NewAgent(props: NewAgentProps): JSX.Element { )} {!loading && ( void; onSave?: () => void; } export function NewTool(props: NewToolProps): JSX.Element { - const { agentCallNode, onSave, onBack } = props; - console.log(">>> NewTool props", props); + const { agentCallNode, mode = NewToolSelectionMode.ALL, onSave, onBack } = props; const { rpcClient } = useRpcContext(); const [agentNode, setAgentNode] = useState(null); @@ -65,10 +71,9 @@ export function NewTool(props: NewToolProps): JSX.Element { const fetchAgentNode = async () => { const agentNode = await findAgentNodeFromAgentCallNode(agentCallNode, rpcClient); setAgentNode(agentNode); - console.log(">>> agent node", { agentNode }); }; - const handleOnSubmit = async (data: AgentToolRequest) => { + const handleOnSubmit = async (data: ExtendedAgentToolRequest) => { console.log(">>> submit value", { data }); setSavingForm(true); if (!data.toolName) { @@ -87,22 +92,17 @@ export function NewTool(props: NewToolProps): JSX.Element { await new Promise((resolve) => setTimeout(resolve, 2000)); // add tools - if (data.selectedCodeData.node === "FUNCTION_CALL") { + if (data.selectedCodeData.node === FUNCTION_CALL) { // create tool from existing function // get function definition - const functionDefinition = await rpcClient.getBIDiagramRpcClient().getFunctionNode({ - functionName: data.selectedCodeData.symbol, - fileName: "functions.bal", - projectPath: projectUri.current, - }); - console.log(">>> response get function definition", { functionDefinition }); - if (!functionDefinition.functionDefinition) { + const functionDefinition = data.functionNode; + if (!functionDefinition) { console.error("Function definition not found"); return; } - if (functionDefinition.functionDefinition?.codedata) { - functionDefinition.functionDefinition.codedata.isNew = true; - functionDefinition.functionDefinition.codedata.lineRange = { + if (functionDefinition?.codedata) { + functionDefinition.codedata.isNew = true; + functionDefinition.codedata.lineRange = { ...agentNode.codedata.lineRange, endLine: agentNode.codedata.lineRange.startLine, }; @@ -112,38 +112,32 @@ export function NewTool(props: NewToolProps): JSX.Element { toolName: data.toolName, description: data.description, filePath: agentFilePath.current, - flowNode: functionDefinition.functionDefinition as FlowNode, + flowNode: functionDefinition as FlowNode, connection: "", + toolParameters: data.toolParameters, }); console.log(">>> response save tool", { toolResponse }); } else { // create tool from existing connection - // get nodeTemplate - const nodeTemplate = await rpcClient.getBIDiagramRpcClient().getNodeTemplate({ - position: { line: 0, offset: 0 }, - filePath: agentFilePath.current, - id: data.selectedCodeData, - }); - console.log(">>> node template", { nodeTemplate }); - if (!nodeTemplate.flowNode) { + if (!data.flowNode) { console.error("Node template not found"); return; } - if (nodeTemplate.flowNode?.codedata) { - nodeTemplate.flowNode.codedata.isNew = true; - nodeTemplate.flowNode.codedata.lineRange = { + if (data.flowNode?.codedata) { + data.flowNode.codedata.isNew = true; + data.flowNode.codedata.lineRange = { ...agentNode.codedata.lineRange, endLine: agentNode.codedata.lineRange.startLine, }; } - updateFlowNodePropertyValuesWithKeys(nodeTemplate.flowNode); // save tool const toolResponse = await rpcClient.getAIAgentRpcClient().genTool({ toolName: data.toolName, description: data.description, filePath: agentFilePath.current, - flowNode: nodeTemplate.flowNode, + flowNode: data.flowNode, connection: data.selectedCodeData.parentSymbol || "", + toolParameters: data.toolParameters, }); console.log(">>> response save tool", { toolResponse }); } @@ -158,7 +152,7 @@ export function NewTool(props: NewToolProps): JSX.Element { return ( <> {agentFilePath.current && !savingForm && ( - + )} {(!agentFilePath.current || savingForm) && ( diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/ToolConfig.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/ToolConfig.tsx index 4e7d1d1fa19..4df044b3841 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/ToolConfig.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/ToolConfig.tsx @@ -120,10 +120,12 @@ export function ToolConfig(props: ToolConfigProps): JSX.Element { )} {!loading && agentCallNode?.codedata?.lineRange && ( )} diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/formUtils.ts b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/formUtils.ts new file mode 100644 index 00000000000..9ab772946da --- /dev/null +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/formUtils.ts @@ -0,0 +1,225 @@ +/** + * 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 { ValueTypeConstraint, ToolParameters } from "@wso2/ballerina-core"; +import { FormField, Parameter } from "@wso2/ballerina-side-panel"; + +export function createToolInputFields(filteredNodeParameterFields: FormField[]): FormField[] { + const paramManagerValues = filteredNodeParameterFields.map((field, idx) => ({ + id: idx, + icon: "", + key: field.key, + value: `${field.valueType} ${field.key}`, + identifierEditable: true, + identifierRange: { + fileName: "functions.bal", + startLine: { line: 0, offset: 0 }, + endLine: { line: 0, offset: 0 } + }, + formValues: { + variable: field.key, + type: field.valueTypeConstraint, + parameterDescription: field.documentation || "" + } + })); + + const paramManagerFormFields: FormField[] = [ + { + key: "type", + label: "Type", + type: "TYPE", + optional: false, + advanced: false, + editable: true, + enabled: true, + hidden: false, + documentation: "Type of the parameter", + value: "", + advanceProps: [], + valueType: "TYPE", + diagnostics: [], + metadata: { label: "Type", description: "Type of the parameter" }, + valueTypeConstraint: "" + }, + { + key: "variable", + label: "Name", + type: "IDENTIFIER", + optional: false, + advanced: false, + editable: true, + enabled: true, + hidden: false, + documentation: "Name of the parameter", + value: "", + advanceProps: [], + valueType: "IDENTIFIER", + diagnostics: [], + metadata: { label: "Name", description: "Name of the parameter" }, + valueTypeConstraint: "" + }, + { + key: "parameterDescription", + label: "Description", + type: "STRING", + optional: true, + advanced: false, + editable: true, + enabled: true, + hidden: false, + documentation: "Description of the parameter", + value: "", + advanceProps: [], + valueType: "STRING", + diagnostics: [], + metadata: { label: "Description", description: "Description of the parameter" }, + valueTypeConstraint: "" + } + ]; + + return [ + { + key: "parameters", + label: "Tool Inputs", + type: "PARAM_MANAGER", + optional: true, + advanced: false, + editable: false, + enabled: true, + hidden: false, + documentation: "", + value: paramManagerValues, + advanceProps: [], + valueType: "PARAM_MANAGER", + diagnostics: [], + valueTypeConstraint: "", + paramManagerProps: { + paramValues: paramManagerValues, + formFields: paramManagerFormFields, + handleParameter: function (parameter: Parameter): Parameter { + return parameter; + } + } + } + ]; +} + + +export function createDefaultParameterValue({ value, parameterDescription, type }: { value: string, parameterDescription?: string, type?: string }): ValueTypeConstraint { + const defaultMetadata = { + label: "", + description: "", + }; + return { + metadata: defaultMetadata, + valueType: "", + value: { + variable: { + value, + metadata: defaultMetadata, + valueType: "", + optional: false, + editable: false, + advanced: false + }, + parameterDescription: { + value: parameterDescription || "", + metadata: defaultMetadata, + valueType: "", + optional: false, + editable: false, + advanced: false + }, + type: { + value: type || "", + metadata: defaultMetadata, + valueType: "", + optional: false, + editable: false, + advanced: false + } + }, + optional: false, + editable: false, + advanced: false + }; +} + +export function createToolParameters(): ToolParameters { + return { + metadata: { + label: "Tool Inputs", + description: "" + }, + valueType: "REPEATABLE_PROPERTY", + valueTypeConstraint: { + metadata: { + label: "Parameter", + description: "Function parameter" + }, + valueType: "FIXED_PROPERTY", + value: { + type: { + metadata: { + label: "Type", + description: "Type of the parameter" + }, + valueType: "TYPE", + value: "", + optional: false, + editable: true, + advanced: false, + hidden: false + }, + variable: { + metadata: { + label: "Name", + description: "Name of the parameter" + }, + valueType: "IDENTIFIER", + value: "", + optional: false, + editable: true, + advanced: false, + hidden: false + }, + parameterDescription: { + metadata: { + label: "Description", + description: "Description of the parameter" + }, + valueType: "STRING", + value: "", + optional: true, + editable: true, + advanced: false, + hidden: false + } + }, + optional: false, + editable: false, + advanced: false, + hidden: false + }, + value: {}, + optional: true, + editable: false, + advanced: false, + hidden: false + }; +} diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/utils.ts b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/utils.ts index 3d15ecd1c8b..b7daf411c67 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/utils.ts +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/AIChatAgent/utils.ts @@ -16,11 +16,35 @@ * under the License. */ -import { FlowNode } from "@wso2/ballerina-core"; +import { BINodeTemplateRequest, CodeData, FlowNode, LinePosition, ValueTypeConstraint } from "@wso2/ballerina-core"; import { BallerinaRpcClient } from "@wso2/ballerina-rpc-client"; import { cloneDeep } from "lodash"; import { URI, Utils } from "vscode-uri"; +export const getNodeTemplate = async ( + rpcClient: BallerinaRpcClient, + codeData: CodeData, + filePath: string, + position: LinePosition = { line: 0, offset: 0 } +) => { + const response = await rpcClient.getBIDiagramRpcClient().getNodeTemplate({ + position: position, + filePath: filePath, + id: codeData, + }); + console.log(">>> get node template response", response); + return response?.flowNode; +}; + +export const getAiModuleOrg = async (rpcClient: BallerinaRpcClient) => { + const filePath = await rpcClient.getVisualizerLocation(); + const aiModuleOrgResponse = await rpcClient + .getAIAgentRpcClient() + .getAiModuleOrg({ projectPath: filePath.projectUri }); + console.log(">>> agent org", aiModuleOrgResponse.orgName); + return aiModuleOrgResponse.orgName; +} + export const getAgentFilePath = async (rpcClient: BallerinaRpcClient) => { // Get the agent file path and update the node const filePath = await rpcClient.getVisualizerLocation(); @@ -29,6 +53,21 @@ export const getAgentFilePath = async (rpcClient: BallerinaRpcClient) => { return agentFilePath; }; +export const getNPFilePath = async (rpcClient: BallerinaRpcClient) => { + const filePath = await rpcClient.getVisualizerLocation(); + // Create the NP file path + const agentFilePath = Utils.joinPath(URI.file(filePath.projectUri), "functions.bal").fsPath; + return agentFilePath; +}; + +export const getMainFilePath = async (rpcClient: BallerinaRpcClient) => { + // Get the main file path and update the node + const filePath = await rpcClient.getVisualizerLocation(); + // Create the main file path + const mainFilePath = Utils.joinPath(URI.file(filePath.projectUri), "main.bal").fsPath; + return mainFilePath; +}; + export const findFlowNodeByModuleVarName = async (variableName: string, rpcClient: BallerinaRpcClient) => { try { // Get all module nodes @@ -98,7 +137,7 @@ export const addToolToAgentNode = async (agentNode: FlowNode, toolName: string) const updatedAgentNode = cloneDeep(agentNode); let toolsValue = updatedAgentNode.properties.tools.value; // remove new lines and normalize whitespace from the tools value - toolsValue = toolsValue.toString().replace(/\s+/g, ""); + // toolsValue = toolsValue.toString().replace(/\s+/g, ""); if (typeof toolsValue === "string") { const toolsArray = parseToolsString(toolsValue); if (toolsArray.length > 0) { @@ -115,12 +154,194 @@ export const addToolToAgentNode = async (agentNode: FlowNode, toolName: string) console.error("Tools value is not a string", toolsValue); return agentNode; } + updatedAgentNode.properties.tools.value = toolsValue; + updatedAgentNode.codedata.isNew = false; + return updatedAgentNode; +}; + +export interface McpServerConfig { + name: string; + serviceUrl: string; + configs: Record; + toolSelection: string; + selectedTools: string[]; +}; + +export const updateMcpServerToAgentNode = async ( + agentNode: FlowNode, + toolConfig: McpServerConfig, + originalToolName: string +) => { + if (!agentNode || agentNode.codedata?.node !== "AGENT") return null; + + const updatedAgentNode = cloneDeep(agentNode); + let toolsValue = updatedAgentNode.properties.tools.value; + + if (typeof toolsValue === "string") { + console.log(">>> Current tools string", toolsValue); + + // Prepare the new tool string based on tool selection + let newToolString; + if (toolConfig.toolSelection.includes("Selected")) { + const toolsString = toolConfig.selectedTools.map(tool => `"${tool}"`).join(", "); + newToolString = `check new ai:McpToolKit("${toolConfig.serviceUrl}", permittedTools = [${toolsString}], info = {name: "${toolConfig.name}", version: ""})`; + } else { + newToolString = `check new ai:McpToolKit("${toolConfig.serviceUrl}", permittedTools = (), info = {name: "${toolConfig.name}", version: ""})`; + } + + // Fixed regex pattern that matches only the specific McpToolKit with the target name + // Uses negated character classes to prevent crossing boundaries + const pattern = new RegExp( + `check new ai:McpToolKit\\([^}]*name:\\s*"${originalToolName}"[^}]*\\}\\)`, + 'g' + ); + + console.log(">>> Regex pattern:", pattern); + console.log(">>> Testing pattern against toolsValue:", pattern.test(toolsValue)); + + // Reset the regex lastIndex since test() modifies it + pattern.lastIndex = 0; + + if (pattern.test(toolsValue)) { + console.log(">>> Found existing tool to replace"); + // Reset lastIndex again before replace + pattern.lastIndex = 0; + toolsValue = toolsValue.replace(pattern, newToolString); + } else { + const trimmedValue = toolsValue.trim(); + const isWrappedInBrackets = trimmedValue.startsWith('[') && trimmedValue.endsWith(']'); + const innerContent = isWrappedInBrackets + ? trimmedValue.slice(1, -1).trim() + : trimmedValue; + toolsValue = innerContent + ? `[${innerContent}, ${newToolString}]` + : `[${newToolString}]`; + } + } else { + console.error("Tools value is not a string", toolsValue); + return agentNode; + } + + updatedAgentNode.properties.tools.value = toolsValue; + updatedAgentNode.codedata.isNew = false; + + console.log(">>> Final updated tools value", toolsValue); + return updatedAgentNode; +}; + +export const addMcpServerToAgentNode = async (agentNode: FlowNode, toolConfig: McpServerConfig) => { + if (!agentNode || agentNode.codedata?.node !== "AGENT") return null; + // clone the node to avoid modifying the original + const updatedAgentNode = cloneDeep(agentNode); + let toolsValue = updatedAgentNode.properties.tools.value; + // remove new lines and normalize whitespace from the tools value + + console.log(">>> add tools", toolConfig); + const toolsString = toolConfig.selectedTools.map(tool => `"${tool}"`).join(", "); + let toolString = `check new ai:McpToolKit("${toolConfig.serviceUrl}", permittedTools = (), info = {name: "${toolConfig.name}", version: ""})`; + if (toolConfig.toolSelection.includes("Selected")) { + toolString = `check new ai:McpToolKit("${toolConfig.serviceUrl}", permittedTools = [${toolsString}], info = {name: "${toolConfig.name}", version: ""})`; + } + if (typeof toolsValue === "string") { + const toolsArray = parseToolsString(toolsValue); + if (toolsArray.length > 0) { + // Add the tool if not exists + if (!toolsArray.includes(toolString)) { + toolsArray.push(toolString); + } + // Update the tools value + toolsValue = toolsArray.length === 1 ? `[${toolsArray[0]}]` : `[${toolsArray.join(", ")}]`; + } else { + toolsValue = `[${toolString}]`; + } + } else { + console.error("Tools value is not a string", toolsValue); + return agentNode; + } // update the node updatedAgentNode.properties.tools.value = toolsValue; updatedAgentNode.codedata.isNew = false; return updatedAgentNode; }; +export const removeMcpServerFromAgentNode = ( + agentNode: FlowNode, + toolkitNameToRemove: string +) => { + if (!agentNode || agentNode.codedata?.node !== "AGENT") return null; + + const updatedAgentNode = cloneDeep(agentNode); + let toolsValue = updatedAgentNode.properties.tools.value; + + if (typeof toolsValue !== "string") { + console.error("Tools value is not a string", toolsValue); + return agentNode; + } + + const startPattern = 'check new ai:McpToolKit('; + let startIndex = 0; + let found = false; + + while (!found && startIndex < toolsValue.length) { + startIndex = toolsValue.indexOf(startPattern, startIndex); + if (startIndex === -1) break; + + let endIndex = toolsValue.indexOf('})', startIndex); + if (endIndex === -1) break; + endIndex += 2; // Include the '})' + + const declaration = toolsValue.substring(startIndex, endIndex); + if (declaration.includes(`name: "${toolkitNameToRemove}"`)) { + let hasCommaAfter = false; + if (toolsValue[endIndex] === ',') { + endIndex++; + hasCommaAfter = true; + } + let hasCommaBefore = false; + let newStartIndex = startIndex; + if (startIndex > 0 && toolsValue[startIndex - 1] === ',') { + newStartIndex--; + hasCommaBefore = true; + } + + let isLastItem = !hasCommaAfter; + + let before = toolsValue.substring(0, newStartIndex); + let after = toolsValue.substring(endIndex); + + if (hasCommaBefore && hasCommaAfter) { + after = after.trim(); + } else if (isLastItem) { + before = before.trim(); + if (before.endsWith(',')) { + before = before.substring(0, before.length - 1).trim(); + } + } + + toolsValue = before + after; + found = true; + } else { + startIndex = endIndex; + } + } + + toolsValue = toolsValue + .replace(/,+/g, ',') + .replace(/, ,/g, ', ') + .replace(/\s*,\s*/g, ', ') + .replace(/, $/, '') + .replace(/^, /, '') + .replace(/\s+/g, ' ') + .trim(); + + if (toolsValue === '[' || toolsValue === '[]') { + toolsValue = '[]'; + } + + updatedAgentNode.properties.tools.value = toolsValue; + return updatedAgentNode; +}; + // remove agent node, model node when removing ag export const removeAgentNode = async (agentCallNode: FlowNode, rpcClient: BallerinaRpcClient): Promise => { if (!agentCallNode || agentCallNode.codedata?.node !== "AGENT_CALL") return false; diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/ComponentDiagram/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/ComponentDiagram/index.tsx index a5506d582f9..82c37a808f7 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/ComponentDiagram/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/ComponentDiagram/index.tsx @@ -34,6 +34,7 @@ import { useRpcContext } from "@wso2/ballerina-rpc-client"; import { Diagram } from "@wso2/component-diagram"; import { ProgressRing, ThemeColors } from "@wso2/ui-toolkit"; import styled from "@emotion/styled"; +import { RelativeLoader } from "../../../components/RelativeLoader"; const SpinnerContainer = styled.div` display: flex; @@ -54,6 +55,7 @@ export function ComponentDiagram(props: ComponentDiagramProps) { const { projectStructure } = props; const [project, setProject] = useState(null); + const [isDeleting, setIsDeleting] = useState(false); const { rpcClient } = useRpcContext(); useEffect(() => { @@ -139,6 +141,7 @@ export function ComponentDiagram(props: ComponentDiagramProps) { const handleDeleteComponent = async (component: CDListener | CDService | CDAutomation | CDConnection) => { console.log(">>> delete component", component); + setIsDeleting(true); rpcClient .getBIDiagramRpcClient() .deleteByComponentInfo({ @@ -156,10 +159,15 @@ export function ComponentDiagram(props: ComponentDiagramProps) { console.log(">>> Updated source code after delete", response); if (!response.textEdits) { console.error(">>> Error updating source code", response); - return; + } else { + fetchProject(); } - // Refresh the component diagram - fetchProject(); + }) + .catch((error) => { + console.error(">>> Error deleting component", error?.message); + }) + .finally(() => { + setIsDeleting(false); }); }; @@ -174,15 +182,23 @@ export function ComponentDiagram(props: ComponentDiagramProps) { return ( {project ? ( - + <> + {isDeleting ? ( + + + + ) : ( + + )} + ) : ( diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/DiagramWrapper/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/DiagramWrapper/index.tsx index 1eb07914181..81ba9dcdd6d 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/DiagramWrapper/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/DiagramWrapper/index.tsx @@ -30,6 +30,7 @@ import { MACHINE_VIEW } from "@wso2/ballerina-core"; import styled from "@emotion/styled"; import { BIFocusFlowDiagram } from "../FocusFlowDiagram"; import { getColorByMethod } from "../ServiceDesigner/components/ResourceAccordion"; +import { SwitchSkeleton, TitleBarSkeleton } from "../../../components/Skeletons"; const ActionButton = styled(Button)` display: flex; @@ -171,7 +172,7 @@ export function DiagramWrapper(param: DiagramWrapperProps) { const [showSequenceDiagram, setShowSequenceDiagram] = useState(false); const [enableSequenceDiagram, setEnableSequenceDiagram] = useState(false); - const [loadingDiagram, setLoadingDiagram] = useState(false); + const [loadingDiagram, setLoadingDiagram] = useState(true); const [fileName, setFileName] = useState(""); const [serviceType, setServiceType] = useState(""); const [basePath, setBasePath] = useState(""); @@ -348,49 +349,68 @@ export function DiagramWrapper(param: DiagramWrapperProps) { return ( - - { - enableSequenceDiagram && !isAgent && ( - - ) - } - { - showSequenceDiagram ? ( - - ) : view ? ( - - ) : ( - - ) - } + {loadingDiagram ? ( + + ) : ( + + )} + {enableSequenceDiagram && !isAgent && + ( + !loadingDiagram ? ( + + ) : ( + + ) + ) + } + { + showSequenceDiagram ? ( + + ) : view ? ( + + ) : ( + + ) + } ); } diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/FlowDiagram/PanelManager.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/FlowDiagram/PanelManager.tsx index 65c7ac83cce..80fb85a018c 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/FlowDiagram/PanelManager.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/FlowDiagram/PanelManager.tsx @@ -16,8 +16,16 @@ * under the License. */ -import { PanelContainer, NodeList, ExpressionFormField } from "@wso2/ballerina-side-panel"; -import { FlowNode, LineRange, SubPanel, SubPanelView, FUNCTION_TYPE, ToolData, NodeMetadata } from "@wso2/ballerina-core"; +import { PanelContainer, NodeList, CardList, ExpressionFormField } from "@wso2/ballerina-side-panel"; +import { + FlowNode, + LineRange, + SubPanel, + SubPanelView, + FUNCTION_TYPE, + ToolData, + NodeMetadata, +} from "@wso2/ballerina-core"; import { HelperView } from "../HelperView"; import FormGenerator from "../Forms/FormGenerator"; import { getContainerTitle, getSubPanelWidth } from "../../../utils/bi"; @@ -26,8 +34,9 @@ import { ToolConfig } from "../AIChatAgent/ToolConfig"; import { AgentConfig } from "../AIChatAgent/AgentConfig"; import { NewAgent } from "../AIChatAgent/NewAgent"; import { AddTool } from "../AIChatAgent/AddTool"; +import { AddMcpServer } from "../AIChatAgent/AddMcpServer"; import { useEffect, useState } from "react"; -import { NewTool } from "../AIChatAgent/NewTool"; +import { NewTool, NewToolSelectionMode } from "../AIChatAgent/NewTool"; import styled from "@emotion/styled"; import { MemoryManagerConfig } from "../AIChatAgent/MemoryManagerConfig"; @@ -43,9 +52,20 @@ export enum SidePanelView { FUNCTION_LIST = "FUNCTION_LIST", DATA_MAPPER_LIST = "DATA_MAPPER_LIST", NP_FUNCTION_LIST = "NP_FUNCTION_LIST", + MODEL_PROVIDERS = "MODEL_PROVIDERS", + MODEL_PROVIDER_LIST = "MODEL_PROVIDER_LIST", + VECTOR_STORES = "VECTOR_STORES", + VECTOR_STORE_LIST = "VECTOR_STORE_LIST", + EMBEDDING_PROVIDERS = "EMBEDDING_PROVIDERS", + EMBEDDING_PROVIDER_LIST = "EMBEDDING_PROVIDER_LIST", + VECTOR_KNOWLEDGE_BASE_LIST = "VECTOR_KNOWLEDGE_BASE_LIST", NEW_AGENT = "NEW_AGENT", ADD_TOOL = "ADD_TOOL", NEW_TOOL = "NEW_TOOL", + NEW_TOOL_FROM_CONNECTION = "NEW_TOOL_FROM_CONNECTION", + NEW_TOOL_FROM_FUNCTION = "NEW_TOOL_FROM_FUNCTION", + ADD_MCP_SERVER = "ADD_MCP_SERVER", + EDIT_MCP_SERVER = "EDIT_MCP_SERVER", AGENT_TOOL = "AGENT_TOOL", AGENT_MODEL = "AGENT_MODEL", AGENT_MEMORY_MANAGER = "AGENT_MEMORY_MANAGER", @@ -68,6 +88,8 @@ interface PanelManagerProps { editForm?: boolean; updatedExpressionField?: ExpressionFormField; showProgressIndicator?: boolean; + canGoBack?: boolean; + selectedMcpToolkitName?: string; // Action handlers onClose: () => void; @@ -77,6 +99,10 @@ interface PanelManagerProps { onAddFunction?: () => void; onAddNPFunction?: () => void; onAddDataMapper?: () => void; + onAddModelProvider?: () => void; + onAddVectorStore?: () => void; + onAddEmbeddingProvider?: () => void; + onAddVectorKnowledgeBase?: () => void; onSubmitForm: (updatedNode?: FlowNode, openInDataMapper?: boolean) => void; onDiscardSuggestions: () => void; onSubPanel: (subPanel: SubPanel) => void; @@ -84,12 +110,18 @@ interface PanelManagerProps { onResetUpdatedExpressionField: () => void; onSearchFunction?: (searchText: string, functionType: FUNCTION_TYPE) => void; onSearchNpFunction?: (searchText: string, functionType: FUNCTION_TYPE) => void; + onSearchModelProvider?: (searchText: string, functionType: FUNCTION_TYPE) => void; + onSearchVectorStore?: (searchText: string, functionType: FUNCTION_TYPE) => void; + onSearchEmbeddingProvider?: (searchText: string, functionType: FUNCTION_TYPE) => void; + onSearchVectorKnowledgeBase?: (searchText: string, functionType: FUNCTION_TYPE) => void; onEditAgent?: () => void; // AI Agent handlers onSelectTool?: (tool: ToolData, node: FlowNode) => void; + onSelectMcpToolkit?: (tool: ToolData, node: FlowNode) => void; onDeleteTool?: (tool: ToolData, node: FlowNode) => void; onAddTool?: (node: FlowNode) => void; + onAddMcpServer?: (node: FlowNode) => void; } export function PanelManager(props: PanelManagerProps) { @@ -109,6 +141,8 @@ export function PanelManager(props: PanelManagerProps) { editForm, updatedExpressionField, showProgressIndicator, + canGoBack, + selectedMcpToolkitName, onClose, onBack, onSelectNode, @@ -116,6 +150,10 @@ export function PanelManager(props: PanelManagerProps) { onAddFunction, onAddNPFunction, onAddDataMapper, + onAddModelProvider, + onAddVectorStore, + onAddEmbeddingProvider, + onAddVectorKnowledgeBase, onSubmitForm, onDiscardSuggestions, onSubPanel, @@ -123,9 +161,13 @@ export function PanelManager(props: PanelManagerProps) { onResetUpdatedExpressionField, onSearchFunction, onSearchNpFunction, + onSearchVectorStore, + onSearchEmbeddingProvider, + onSearchVectorKnowledgeBase, } = props; const [panelView, setPanelView] = useState(sidePanelView); + useEffect(() => { setPanelView(sidePanelView); }, [sidePanelView]); @@ -134,10 +176,30 @@ export function PanelManager(props: PanelManagerProps) { setPanelView(SidePanelView.NEW_TOOL); }; + const handleOnAddMcpServer = () => { + setPanelView(SidePanelView.ADD_MCP_SERVER); + }; + + const handleOnEditMcpServer = () => { + setPanelView(SidePanelView.EDIT_MCP_SERVER); + }; + const handleOnBackToAddTool = () => { setPanelView(SidePanelView.ADD_TOOL); }; + const handleOnUseConnection = () => { + setPanelView(SidePanelView.NEW_TOOL_FROM_CONNECTION); + }; + + const handleOnUseFunction = () => { + setPanelView(SidePanelView.NEW_TOOL_FROM_FUNCTION); + }; + + const handleOnUseMcpServer = () => { + setPanelView(SidePanelView.ADD_MCP_SERVER); + }; + const handleSubmitAndClose = () => { onSubmitForm(); onClose(); @@ -179,30 +241,87 @@ export function PanelManager(props: PanelManagerProps) { agentCallNode={selectedNode} fileName={fileName} lineRange={targetLineRange} - onSave={handleSubmitAndClose} + onSave={onClose} /> ); case SidePanelView.ADD_TOOL: - return ; + return ( + + ); + + case SidePanelView.ADD_MCP_SERVER: + return ( + + ); + + case SidePanelView.EDIT_MCP_SERVER: + return ( + + ); case SidePanelView.NEW_TOOL: - return ; + return ( + + ); + + case SidePanelView.NEW_TOOL_FROM_CONNECTION: + return ( + + ); + + case SidePanelView.NEW_TOOL_FROM_FUNCTION: + return ( + + ); case SidePanelView.AGENT_TOOL: const selectedTool = (selectedNode?.metadata.data as NodeMetadata).tools?.find( (tool) => tool.name === selectedClientName ); - return ; + return ; case SidePanelView.AGENT_MODEL: - return ; + return ; case SidePanelView.AGENT_CONFIG: - return ; + return ; case SidePanelView.AGENT_MEMORY_MANAGER: - return ; + return ; case SidePanelView.FUNCTION_LIST: return ( @@ -214,7 +333,7 @@ export function PanelManager(props: PanelManagerProps) { onClose={onClose} title={"Functions"} searchPlaceholder={"Search library functions"} - onBack={onBack} + onBack={canGoBack ? onBack : undefined} /> ); @@ -227,7 +346,7 @@ export function PanelManager(props: PanelManagerProps) { onAddFunction={onAddNPFunction} onClose={onClose} title={"Natural Functions"} - onBack={onBack} + onBack={canGoBack ? onBack : undefined} /> ); @@ -242,7 +361,106 @@ export function PanelManager(props: PanelManagerProps) { onAddFunction={onAddDataMapper} onClose={onClose} title={"Data Mappers"} - onBack={onBack} + onBack={canGoBack ? onBack : undefined} + /> + ); + + case SidePanelView.MODEL_PROVIDER_LIST: + return ( + + ); + + case SidePanelView.MODEL_PROVIDERS: + return ( + + ); + + case SidePanelView.VECTOR_STORE_LIST: + return ( + onSearchVectorStore?.(searchText, FUNCTION_TYPE.REGULAR)} + onBack={canGoBack ? onBack : undefined} + /> + ); + + case SidePanelView.VECTOR_STORES: + return ( + + ); + + case SidePanelView.EMBEDDING_PROVIDER_LIST: + return ( + + onSearchEmbeddingProvider?.(searchText, FUNCTION_TYPE.REGULAR) + } + onBack={canGoBack ? onBack : undefined} + /> + ); + + case SidePanelView.EMBEDDING_PROVIDERS: + return ( + + ); + + case SidePanelView.VECTOR_KNOWLEDGE_BASE_LIST: + return ( + + onSearchVectorKnowledgeBase?.(searchText, FUNCTION_TYPE.REGULAR) + } + onBack={canGoBack ? onBack : undefined} /> ); @@ -272,7 +490,10 @@ export function PanelManager(props: PanelManagerProps) { }; const onBackCallback = - panelView === SidePanelView.NEW_TOOL + panelView === SidePanelView.NEW_TOOL || + panelView === SidePanelView.NEW_TOOL_FROM_CONNECTION || + panelView === SidePanelView.NEW_TOOL_FROM_FUNCTION || + panelView === SidePanelView.ADD_MCP_SERVER ? handleOnBackToAddTool : panelView === SidePanelView.NEW_AGENT ? onBack diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/FlowDiagram/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/FlowDiagram/index.tsx index 69fe02a75cf..d8868092d7c 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/FlowDiagram/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/FlowDiagram/index.tsx @@ -19,6 +19,7 @@ import { useEffect, useRef, useState, useMemo, useCallback } from "react"; import { useRpcContext } from "@wso2/ballerina-rpc-client"; import styled from "@emotion/styled"; +import { removeMcpServerFromAgentNode } from "../AIChatAgent/utils"; import { MemoizedDiagram } from "@wso2/bi-diagram"; import { BIAvailableNodesRequest, @@ -41,12 +42,19 @@ import { DIRECTORY_MAP, UpdatedArtifactsResponse, ParentMetadata, + NodeMetadata, + SearchKind, + Item, } from "@wso2/ballerina-core"; import { addDraftNodeToDiagram, convertBICategoriesToSidePanelCategories, convertFunctionCategoriesToSidePanelCategories, + convertModelProviderCategoriesToSidePanelCategories, + convertVectorStoreCategoriesToSidePanelCategories, + convertEmbeddingProviderCategoriesToSidePanelCategories, + convertVectorKnowledgeBaseCategoriesToSidePanelCategories, } from "../../../utils/bi"; import { NodePosition, STNode } from "@wso2/syntax-tree"; import { View, ProgressRing, ProgressIndicator, ThemeColors } from "@wso2/ui-toolkit"; @@ -62,6 +70,8 @@ import { removeAgentNode, removeToolFromAgentNode, } from "../AIChatAgent/utils"; +import { DiagramSkeleton } from "../../../components/Skeletons"; +import { GET_DEFAULT_MODEL_PROVIDER } from "../../../constants"; const Container = styled.div` width: 100%; @@ -77,14 +87,23 @@ const SpinnerContainer = styled.div` export interface BIFlowDiagramProps { projectPath: string; - onUpdate: () => void; - onReady: (fileName: string, parentMetadata?: ParentMetadata) => void; breakpointState?: boolean; syntaxTree?: STNode; + onUpdate: () => void; + onReady: (fileName: string, parentMetadata?: ParentMetadata) => void; + onSave?: () => void; +} + +// Navigation stack interface +interface NavigationStackItem { + view: SidePanelView; + categories: PanelCategory[]; + selectedNode?: FlowNode; + clientName?: string; } export function BIFlowDiagram(props: BIFlowDiagramProps) { - const { projectPath, onUpdate, onReady, breakpointState, syntaxTree } = props; + const { projectPath, breakpointState, syntaxTree, onUpdate, onReady, onSave } = props; const { rpcClient } = useRpcContext(); const [model, setModel] = useState(); @@ -97,6 +116,11 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { const [subPanel, setSubPanel] = useState({ view: SubPanelView.UNDEFINED }); const [updatedExpressionField, setUpdatedExpressionField] = useState(undefined); const [breakpointInfo, setBreakpointInfo] = useState(); + const [selectedMcpToolkitName, setSelectedMcpToolkitName] = useState(undefined); + const [forceUpdate, setForceUpdate] = useState(0); + + // Navigation stack for back navigation + const [navigationStack, setNavigationStack] = useState([]); const selectedNodeRef = useRef(); const nodeTemplateRef = useRef(); @@ -107,7 +131,11 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { const selectedClientName = useRef(); const initialCategoriesRef = useRef([]); const showEditForm = useRef(false); - const selectedNodeMetadata = useRef<{ nodeId: string, metadata: any, fileName: string }>(); + const selectedNodeMetadata = useRef<{ nodeId: string; metadata: any; fileName: string }>(); + const isCreatingNewModelProvider = useRef(false); + const isCreatingNewVectorStore = useRef(false); + const isCreatingNewEmbeddingProvider = useRef(false); + const isCreatingNewVectorKnowledgeBase = useRef(false); useEffect(() => { debouncedGetFlowModel(); @@ -116,8 +144,16 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { useEffect(() => { rpcClient.onParentPopupSubmitted((parent: ParentPopupData) => { console.log(">>> on parent popup submitted", parent); - if (parent.artifactType === DIRECTORY_MAP.FUNCTION || parent.artifactType === DIRECTORY_MAP.NP_FUNCTION || parent.artifactType === DIRECTORY_MAP.DATA_MAPPER) { - handleOnSelectNode(selectedNodeMetadata.current.nodeId, selectedNodeMetadata.current.metadata, selectedNodeMetadata.current.fileName); + if ( + parent.artifactType === DIRECTORY_MAP.FUNCTION || + parent.artifactType === DIRECTORY_MAP.NP_FUNCTION || + parent.artifactType === DIRECTORY_MAP.DATA_MAPPER + ) { + handleOnSelectNode( + selectedNodeMetadata.current.nodeId, + selectedNodeMetadata.current.metadata, + selectedNodeMetadata.current.fileName + ); } else { if (!topNodeRef.current || !targetRef.current) { console.error(">>> No parent or target found"); @@ -136,6 +172,189 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { [] ); + // Navigation stack helpers + const pushToNavigationStack = ( + view: SidePanelView, + cats: PanelCategory[], + node?: FlowNode, + clientName?: string + ) => { + const newItem: NavigationStackItem = { + view, + categories: cats, + selectedNode: node, + clientName, + }; + setNavigationStack((prev) => [...prev, newItem]); + }; + + const popFromNavigationStack = () => { + setNavigationStack((prev) => { + if (prev.length === 0) return prev; + const newStack = [...prev]; + const poppedItem = newStack.pop(); + return newStack; + }); + + if (navigationStack.length > 0) { + const lastItem = navigationStack[navigationStack.length - 1]; + setSidePanelView(lastItem.view); + setCategories(lastItem.categories); + selectedNodeRef.current = lastItem.selectedNode; + selectedClientName.current = lastItem.clientName; + return true; + } + return false; + }; + + const clearNavigationStack = () => { + setNavigationStack([]); + }; + + const popNavigationStackUntilView = (targetView: SidePanelView) => { + setNavigationStack((prev) => { + const newStack = [...prev]; + while (newStack.length > 0) { + const lastItem = newStack[newStack.length - 1]; + if (lastItem.view === targetView) { + // Found the target view, restore it + setSidePanelView(lastItem.view); + setCategories(lastItem.categories); + selectedNodeRef.current = lastItem.selectedNode; + selectedClientName.current = lastItem.clientName; + newStack.pop(); + return newStack; + } + newStack.pop(); + } + return []; + }); + + const targetItem = navigationStack.find((item) => item.view === targetView); + return !!targetItem; + }; + + const handleModelProviderAdded = async () => { + console.log(">>> Model provider added, navigating back to model provider list"); + + // Try to navigate back to MODEL_PROVIDER_LIST in the stack + const foundInStack = popNavigationStackUntilView(SidePanelView.MODEL_PROVIDER_LIST); + + if (foundInStack) { + setShowProgressIndicator(true); + try { + const response = await rpcClient.getBIDiagramRpcClient().getAvailableModelProviders({ + position: targetRef.current.startLine, + filePath: model?.fileName, + }); + console.log(">>> Refreshed model provider list", response); + setCategories(convertModelProviderCategoriesToSidePanelCategories(response.categories as Category[])); + setSidePanelView(SidePanelView.MODEL_PROVIDER_LIST); + setShowSidePanel(true); + } catch (error) { + console.error(">>> Error refreshing model providers", error); + } finally { + setShowProgressIndicator(false); + } + } else { + console.log(">>> MODEL_PROVIDER_LIST not found in navigation stack, closing panel"); + handleOnCloseSidePanel(); + } + }; + + const handleVectorStoreAdded = async () => { + console.log(">>> Vector store added, navigating back to vector store list"); + + // Try to navigate back to VECTOR_STORE_LIST in the stack + const foundInStack = popNavigationStackUntilView(SidePanelView.VECTOR_STORE_LIST); + + if (foundInStack) { + setShowProgressIndicator(true); + try { + const response = await rpcClient.getBIDiagramRpcClient().getAvailableVectorStores({ + position: targetRef.current.startLine, + filePath: model?.fileName, + }); + console.log(">>> Refreshed vector store list", response); + setCategories( + convertVectorStoreCategoriesToSidePanelCategories(response.categories as Category[]) + ); + setSidePanelView(SidePanelView.VECTOR_STORE_LIST); + setShowSidePanel(true); + } catch (error) { + console.error(">>> Error refreshing vector stores", error); + } finally { + setShowProgressIndicator(false); + } + } else { + console.log(">>> VECTOR_STORE_LIST not found in navigation stack, closing panel"); + handleOnCloseSidePanel(); + } + }; + + const handleEmbeddingProviderAdded = async () => { + console.log(">>> Embedding provider added, navigating back to embedding provider list"); + + // Try to navigate back to EMBEDDING_PROVIDER_LIST in the stack + const foundInStack = popNavigationStackUntilView(SidePanelView.EMBEDDING_PROVIDER_LIST); + + if (foundInStack) { + setShowProgressIndicator(true); + try { + const response = await rpcClient.getBIDiagramRpcClient().getAvailableEmbeddingProviders({ + position: targetRef.current.startLine, + filePath: model?.fileName, + }); + console.log(">>> Refreshed embedding provider list", response); + setCategories( + convertEmbeddingProviderCategoriesToSidePanelCategories(response.categories as Category[]) + ); + setSidePanelView(SidePanelView.EMBEDDING_PROVIDER_LIST); + setShowSidePanel(true); + } catch (error) { + console.error(">>> Error refreshing embedding providers", error); + } finally { + setShowProgressIndicator(false); + } + } else { + console.log(">>> EMBEDDING_PROVIDER_LIST not found in navigation stack, closing panel"); + handleOnCloseSidePanel(); + } + }; + + const handleVectorKnowledgeBaseAdded = async () => { + console.log(">>> Vector knowledge base added, navigating back to vector knowledge base list"); + + // Try to navigate back to VECTOR_KNOWLEDGE_BASE_LIST in the stack + const foundInStack = popNavigationStackUntilView(SidePanelView.VECTOR_KNOWLEDGE_BASE_LIST); + + if (foundInStack) { + setShowProgressIndicator(true); + try { + const response = await rpcClient.getBIDiagramRpcClient().getAvailableVectorKnowledgeBases({ + position: targetRef.current.startLine, + filePath: model?.fileName, + }); + console.log(">>> Refreshed vector knowledge base list", response); + setCategories( + convertFunctionCategoriesToSidePanelCategories( + response.categories as Category[], + FUNCTION_TYPE.REGULAR + ) + ); + setSidePanelView(SidePanelView.VECTOR_KNOWLEDGE_BASE_LIST); + setShowSidePanel(true); + } catch (error) { + console.error(">>> Error refreshing vector knowledge bases", error); + } finally { + setShowProgressIndicator(false); + } + } else { + console.log(">>> VECTOR_KNOWLEDGE_BASE_LIST not found in navigation stack, closing panel"); + handleOnCloseSidePanel(); + } + }; + const getFlowModel = () => { setShowProgressIndicator(true); onUpdate(); @@ -150,6 +369,7 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { .then((model) => { console.log(">>> flow model", model); if (model?.flowModel) { + updateAgentModelTypes(model?.flowModel); setModel(model.flowModel); const parentMetadata = model.flowModel.nodes.find( (node) => node.codedata.node === "EVENT_START" @@ -164,6 +384,49 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { }); }; + // Hack: Updates agent model types based on ModelProvider connections + // This is so that we render the icons for the models in the AgentCallNodeWidget + function updateAgentModelTypes(flowModel?: Flow) { + if (!flowModel || !Array.isArray(flowModel.connections) || !Array.isArray(flowModel.nodes)) return; + + const setModelType = (modelObj: any, providerName: string) => { + if (modelObj) { + modelObj.type = providerName; + } + }; + + flowModel.connections + .filter( + (connection) => + connection?.codedata?.object === "ModelProvider" || + connection?.codedata?.object === "OpenAiModelProvider" + ) + .forEach((connection) => { + const modelVarName = connection?.properties?.variable?.value; + const modelProviderName = connection?.codedata?.module; + if (!modelVarName || !modelProviderName) return; + + flowModel.nodes.forEach((node: FlowNode) => { + const nodeMetadata = node?.metadata?.data as NodeMetadata; + if (node?.codedata?.node === "AGENT_CALL" && nodeMetadata?.model?.name === modelVarName) { + setModelType(nodeMetadata.model, modelProviderName); + } else if (node?.codedata?.node === "ERROR_HANDLER" && Array.isArray(node.branches)) { + node.branches.forEach((branch) => { + (branch.children ?? []).forEach((child) => { + const childMetadata = child?.metadata?.data as NodeMetadata; + if ( + child.codedata.node === "AGENT_CALL" && + childMetadata?.model?.name === modelVarName + ) { + setModelType(childMetadata.model, modelProviderName); + } + }); + }); + } + }); + }); + } + useEffect(() => { if (model && selectedNodeRef.current?.codedata?.lineRange?.startLine && sidePanelView === SidePanelView.FORM) { const matchingNode = findNodeByStartLine(model, selectedNodeRef.current.codedata.lineRange.startLine); @@ -173,6 +436,7 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { if (matchingNode && matchingNode.id !== selectedNodeRef.current.id) { selectedNodeRef.current = matchingNode; targetRef.current = matchingNode.codedata.lineRange; + setForceUpdate(prev => prev + 1); } } }, [model]); @@ -229,6 +493,8 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { targetRef.current = undefined; selectedClientName.current = undefined; showEditForm.current = false; + isCreatingNewModelProvider.current = false; + clearNavigationStack(); // restore original model if (originalFlowModel.current) { @@ -351,7 +617,7 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { }); }; - const handleSearchNpFunction = async (searchText: string, functionType: FUNCTION_TYPE) => { + const handleSearch = async (searchText: string, functionType: FUNCTION_TYPE, searchKind: SearchKind) => { const request: BISearchRequest = { position: { startLine: targetRef.current.startLine, @@ -366,19 +632,48 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { includeAvailableFunctions: "true", } : undefined, - searchKind: "NP_FUNCTION", + searchKind, }; - console.log(">>> Search np function request", request); + console.log(`>>> Search ${searchKind.toLowerCase()} request`, request); setShowProgressIndicator(true); rpcClient .getBIDiagramRpcClient() .search(request) .then((response) => { - console.log(">>> Searched List of np functions", response); + console.log(`>>> Searched List of ${searchKind.toLowerCase()}`, response); setCategories( convertFunctionCategoriesToSidePanelCategories(response.categories as Category[], functionType) ); - setSidePanelView(SidePanelView.NP_FUNCTION_LIST); + + // Set the appropriate side panel view based on search kind and function type + let panelView: SidePanelView; + switch (searchKind) { + case "FUNCTION": + panelView = + functionType === FUNCTION_TYPE.REGULAR + ? SidePanelView.FUNCTION_LIST + : SidePanelView.DATA_MAPPER_LIST; + break; + case "NP_FUNCTION": + panelView = SidePanelView.NP_FUNCTION_LIST; + break; + case "MODEL_PROVIDER": + panelView = SidePanelView.MODEL_PROVIDER_LIST; + break; + case "VECTOR_STORE": + panelView = SidePanelView.VECTOR_STORE_LIST; + break; + case "EMBEDDING_PROVIDER": + panelView = SidePanelView.EMBEDDING_PROVIDER_LIST; + break; + case "VECTOR_KNOWLEDGE_BASE": + panelView = SidePanelView.VECTOR_KNOWLEDGE_BASE_LIST; + break; + default: + panelView = SidePanelView.NODE_LIST; + } + + setSidePanelView(panelView); setShowSidePanel(true); }) .finally(() => { @@ -386,46 +681,32 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { }); }; + const handleSearchNpFunction = async (searchText: string, functionType: FUNCTION_TYPE) => { + await handleSearch(searchText, functionType, "NP_FUNCTION"); + }; + const handleSearchFunction = async (searchText: string, functionType: FUNCTION_TYPE) => { - const request: BISearchRequest = { - position: { - startLine: targetRef.current.startLine, - endLine: targetRef.current.endLine, - }, - filePath: model.fileName, - queryMap: searchText.trim() - ? { - q: searchText, - limit: 12, - offset: 0, - includeAvailableFunctions: "true", - } - : undefined, - searchKind: "FUNCTION", - }; - console.log(">>> Search function request", request); - setShowProgressIndicator(true); - rpcClient - .getBIDiagramRpcClient() - .search(request) - .then((response) => { - console.log(">>> Searched List of functions", response); - setCategories( - convertFunctionCategoriesToSidePanelCategories(response.categories as Category[], functionType) - ); - setSidePanelView( - functionType === FUNCTION_TYPE.REGULAR - ? SidePanelView.FUNCTION_LIST - : SidePanelView.DATA_MAPPER_LIST - ); - setShowSidePanel(true); - }) - .finally(() => { - setShowProgressIndicator(false); - }); + await handleSearch(searchText, functionType, "FUNCTION"); + }; + + const handleSearchModelProvider = async (searchText: string, functionType: FUNCTION_TYPE) => { + // await handleSearch(searchText, functionType, "MODEL_PROVIDER"); + }; + + const handleSearchVectorStore = async (searchText: string, functionType: FUNCTION_TYPE) => { + // await handleSearch(searchText, functionType, "VECTOR_STORE"); + }; + + const handleSearchEmbeddingProvider = async (searchText: string, functionType: FUNCTION_TYPE) => { + // await handleSearch(searchText, functionType, "EMBEDDING_PROVIDER"); + }; + + const handleSearchVectorKnowledgeBase = async (searchText: string, functionType: FUNCTION_TYPE) => { + // await handleSearch(searchText, functionType, "VECTOR_KNOWLEDGE_BASE"); }; const updateCurrentArtifactLocation = async (artifacts: UpdatedArtifactsResponse) => { + console.log(">>> Updating current artifact location", { artifacts }); // Get the updated component and update the location const currentIdentifier = (await rpcClient.getVisualizerLocation()).identifier; // Find the correct artifact by currentIdentifier (id) @@ -436,18 +717,57 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { } // Check if artifact has resources and find within those if (artifact.resources && artifact.resources.length > 0) { - const resource = artifact.resources.find((resource) => resource.id === currentIdentifier || resource.name === currentIdentifier); + const resource = artifact.resources.find( + (resource) => resource.id === currentIdentifier || resource.name === currentIdentifier + ); if (resource) { currentArtifact = resource; } } }); - await rpcClient.getVisualizerRpcClient().openView({ type: EVENT_TYPE.UPDATE_PROJECT_LOCATION, location: { documentUri: currentArtifact.path, position: currentArtifact.position, identifier: currentIdentifier } }); - } + if (currentArtifact) { + console.log(">>> currentArtifact", currentArtifact); + if (isCreatingNewModelProvider.current) { + isCreatingNewModelProvider.current = false; + await handleModelProviderAdded(); + return; + } + if (isCreatingNewVectorStore.current) { + isCreatingNewVectorStore.current = false; + await handleVectorStoreAdded(); + return; + } + if (isCreatingNewEmbeddingProvider.current) { + isCreatingNewEmbeddingProvider.current = false; + await handleEmbeddingProviderAdded(); + return; + } + if (isCreatingNewVectorKnowledgeBase.current) { + isCreatingNewVectorKnowledgeBase.current = false; + await handleVectorKnowledgeBaseAdded(); + return; + } + } + await rpcClient.getVisualizerRpcClient().openView({ + type: EVENT_TYPE.UPDATE_PROJECT_LOCATION, + location: { + documentUri: currentArtifact.path, + position: currentArtifact.position, + identifier: currentIdentifier, + }, + }); + handleOnCloseSidePanel(); + debouncedGetFlowModel(); + }; const handleOnSelectNode = (nodeId: string, metadata?: any, fileName?: string) => { + console.log(">>> on select node", { nodeId, metadata, fileName }); selectedNodeMetadata.current = { nodeId, metadata, fileName: model?.fileName || fileName }; const { node, category } = metadata as { node: AvailableNode; category?: string }; + + // Push current state to navigation stack before navigating + pushToNavigationStack(sidePanelView, categories, selectedNodeRef.current, selectedClientName.current); + switch (node.codedata.node) { case "FUNCTION": setShowProgressIndicator(true); @@ -526,6 +846,102 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { }); break; + case "MODEL_PROVIDERS": + setShowProgressIndicator(true); + rpcClient + .getBIDiagramRpcClient() + .getAvailableModelProviders({ + position: targetRef.current.startLine, + filePath: model?.fileName || fileName, + }) + .then((response) => { + console.log(">>> List of model providers", response); + setCategories( + convertFunctionCategoriesToSidePanelCategories( + response.categories as Category[], + FUNCTION_TYPE.REGULAR + ) + ); + setSidePanelView(SidePanelView.MODEL_PROVIDER_LIST); + setShowSidePanel(true); + }) + .finally(() => { + setShowProgressIndicator(false); + }); + break; + + case "VECTOR_STORES": + setShowProgressIndicator(true); + rpcClient + .getBIDiagramRpcClient() + .getAvailableVectorStores({ + position: targetRef.current.startLine, + filePath: model?.fileName || fileName, + }) + .then((response) => { + console.log(">>> List of vector stores", response); + setCategories( + convertFunctionCategoriesToSidePanelCategories( + response.categories as Category[], + FUNCTION_TYPE.REGULAR + ) + ); + setSidePanelView(SidePanelView.VECTOR_STORE_LIST); + setShowSidePanel(true); + }) + .finally(() => { + setShowProgressIndicator(false); + }); + break; + + case "EMBEDDING_PROVIDERS": + setShowProgressIndicator(true); + rpcClient + .getBIDiagramRpcClient() + .getAvailableEmbeddingProviders({ + position: targetRef.current.startLine, + filePath: model?.fileName || fileName, + }) + .then((response) => { + console.log(">>> List of embedding providers", response); + setCategories( + convertFunctionCategoriesToSidePanelCategories( + response.categories as Category[], + FUNCTION_TYPE.REGULAR + ) + ); + setSidePanelView(SidePanelView.EMBEDDING_PROVIDER_LIST); + setShowSidePanel(true); + }) + .finally(() => { + setShowProgressIndicator(false); + }); + break; + + case "VECTOR_KNOWLEDGE_BASES": + setShowProgressIndicator(true); + rpcClient + .getBIDiagramRpcClient() + .getAvailableVectorKnowledgeBases({ + position: targetRef.current.startLine, + filePath: model?.fileName || fileName, + }) + .then((response) => { + console.log(">>> List of vector knowledge bases", response); + setCategories( + convertFunctionCategoriesToSidePanelCategories( + response.categories as Category[], + FUNCTION_TYPE.REGULAR + ) + ); + setSidePanelView(SidePanelView.VECTOR_KNOWLEDGE_BASE_LIST); + setShowSidePanel(true); + }) + .finally(() => { + setShowProgressIndicator(false); + }); + break; + default: // default node console.log(">>> on select panel node", { nodeId, metadata }); @@ -542,6 +958,7 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { console.log(">>> FlowNode template", response); selectedNodeRef.current = response.flowNode; showEditForm.current = false; + // if agent_call node, then show agent config panel if (node.codedata.node === "AGENT_CALL") { setSidePanelView(SidePanelView.NEW_AGENT); @@ -572,6 +989,28 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { filePath: model.fileName, flowNode: updatedNode, }) + .then((response) => { + console.log(">>> Updated source code", response); + if (response.codedata) { + rpcClient.getVisualizerRpcClient().openView({ + type: EVENT_TYPE.OPEN_VIEW, + location: { + view: MACHINE_VIEW.InlineDataMapper, + documentUri: model.fileName, + position: { + startLine: response.codedata.lineRange.startLine.line, + startColumn: response.codedata.lineRange.startLine.offset, + endLine: response.codedata.lineRange.endLine.line, + endColumn: response.codedata.lineRange.endLine.offset, + }, + dataMapperMetadata: { + name: updatedNode.properties?.variable?.value as string, + codeData: response.codedata, + } + } + }); + } + }) .finally(() => { setShowSidePanel(false); setShowProgressIndicator(false); @@ -588,16 +1027,18 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { .then(async (response) => { console.log(">>> Updated source code", response); if (response.artifacts.length > 0) { + // If the selected model is the default WSO2 model provider, configure it + if (updatedNode?.codedata?.symbol === GET_DEFAULT_MODEL_PROVIDER) { + await rpcClient.getAIAgentRpcClient().configureDefaultModelProvider(); + } selectedNodeRef.current = undefined; await updateCurrentArtifactLocation(response); - handleOnCloseSidePanel(); } else { console.error(">>> Error updating source code", response); } }) .finally(() => { setShowProgressIndicator(false); - debouncedGetFlowModel(); }); }; @@ -723,21 +1164,65 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { }; const handleOnFormBack = () => { - if ( - sidePanelView === SidePanelView.FUNCTION_LIST || - sidePanelView === SidePanelView.DATA_MAPPER_LIST || - sidePanelView === SidePanelView.NP_FUNCTION_LIST - ) { - setCategories(initialCategoriesRef.current); - setSidePanelView(SidePanelView.NODE_LIST); - } else if (sidePanelView === SidePanelView.FORM && selectedNodeRef.current.codedata.node === "FUNCTION_CALL") { - setSidePanelView(SidePanelView.FUNCTION_LIST); - handleSearchFunction("", FUNCTION_TYPE.REGULAR); - } else { - setSidePanelView(SidePanelView.NODE_LIST); - setSubPanel({ view: SubPanelView.UNDEFINED }); + // Try to navigate back using the navigation stack + const didNavigateBack = popFromNavigationStack(); + + if (!didNavigateBack) { + // Fallback to original logic if stack is empty + if (sidePanelView === SidePanelView.MODEL_PROVIDERS) { + handleOnSelectNode( + selectedNodeMetadata.current.nodeId, + selectedNodeMetadata.current.metadata, + selectedNodeMetadata.current.fileName + ); + setCategories([]); + setSidePanelView(SidePanelView.MODEL_PROVIDER_LIST); + } else if (sidePanelView === SidePanelView.VECTOR_STORES) { + handleOnSelectNode( + selectedNodeMetadata.current.nodeId, + selectedNodeMetadata.current.metadata, + selectedNodeMetadata.current.fileName + ); + setCategories([]); + setSidePanelView(SidePanelView.VECTOR_STORE_LIST); + } else if (sidePanelView === SidePanelView.EMBEDDING_PROVIDERS) { + handleOnSelectNode( + selectedNodeMetadata.current.nodeId, + selectedNodeMetadata.current.metadata, + selectedNodeMetadata.current.fileName + ); + setCategories([]); + setSidePanelView(SidePanelView.EMBEDDING_PROVIDER_LIST); + } else if ( + sidePanelView === SidePanelView.FORM && + selectedNodeMetadata.current.metadata.node.codedata.node === "VECTOR_KNOWLEDGE_BASE" + ) { + handleOnSelectNode( + selectedNodeMetadata.current.nodeId, + selectedNodeMetadata.current.metadata, + selectedNodeMetadata.current.fileName + ); + setCategories([]); + setSidePanelView(SidePanelView.VECTOR_KNOWLEDGE_BASE_LIST); + } else if ( + sidePanelView === SidePanelView.FUNCTION_LIST || + sidePanelView === SidePanelView.DATA_MAPPER_LIST || + sidePanelView === SidePanelView.NP_FUNCTION_LIST || + sidePanelView === SidePanelView.MODEL_PROVIDER_LIST || + sidePanelView === SidePanelView.VECTOR_STORE_LIST || + sidePanelView === SidePanelView.EMBEDDING_PROVIDER_LIST || + sidePanelView === SidePanelView.VECTOR_KNOWLEDGE_BASE_LIST + ) { + setCategories(initialCategoriesRef.current); + setSidePanelView(SidePanelView.NODE_LIST); + } else { + setSidePanelView(SidePanelView.NODE_LIST); + setSubPanel({ view: SubPanelView.UNDEFINED }); + } + selectedNodeRef.current = undefined; } - selectedNodeRef.current = undefined; + + setSubPanel({ view: SubPanelView.UNDEFINED }); }; const handleOnAddConnection = () => { @@ -798,6 +1283,124 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { }); }; + const handleOnAddNewModelProvider = () => { + console.log(">>> Adding new model provider"); + isCreatingNewModelProvider.current = true; + setShowProgressIndicator(true); + + // Push current state to navigation stack + pushToNavigationStack(sidePanelView, categories, selectedNodeRef.current, selectedClientName.current); + + // Use search to get available model provider types + rpcClient + .getBIDiagramRpcClient() + .search({ + position: { startLine: targetRef.current.startLine, endLine: targetRef.current.endLine }, + filePath: model?.fileName, + queryMap: undefined, + searchKind: "MODEL_PROVIDER", + }) + .then((response) => { + console.log(">>> Available model provider types", response); + setCategories(convertModelProviderCategoriesToSidePanelCategories(response.categories as Category[])); + setSidePanelView(SidePanelView.MODEL_PROVIDERS); + setShowSidePanel(true); + }) + .finally(() => { + setShowProgressIndicator(false); + }); + }; + + const handleOnAddNewVectorStore = () => { + console.log(">>> Adding new vector store"); + isCreatingNewVectorStore.current = true; + setShowProgressIndicator(true); + + // Push current state to navigation stack + pushToNavigationStack(sidePanelView, categories, selectedNodeRef.current, selectedClientName.current); + + // Use search to get available vector store types + rpcClient + .getBIDiagramRpcClient() + .search({ + position: { startLine: targetRef.current.startLine, endLine: targetRef.current.endLine }, + filePath: model?.fileName, + queryMap: undefined, + searchKind: "VECTOR_STORE", + }) + .then((response) => { + console.log(">>> Available vector store types", response); + setCategories(convertVectorStoreCategoriesToSidePanelCategories(response.categories as Category[])); + setSidePanelView(SidePanelView.VECTOR_STORES); + setShowSidePanel(true); + }) + .finally(() => { + setShowProgressIndicator(false); + }); + }; + + const handleOnAddNewEmbeddingProvider = () => { + console.log(">>> Adding new embedding provider"); + isCreatingNewEmbeddingProvider.current = true; + setShowProgressIndicator(true); + + // Push current state to navigation stack + pushToNavigationStack(sidePanelView, categories, selectedNodeRef.current, selectedClientName.current); + + // Use search to get available embedding provider types + rpcClient + .getBIDiagramRpcClient() + .search({ + position: { startLine: targetRef.current.startLine, endLine: targetRef.current.endLine }, + filePath: model?.fileName, + queryMap: undefined, + searchKind: "EMBEDDING_PROVIDER", + }) + .then((response) => { + console.log(">>> Available embedding provider types", response); + setCategories( + convertEmbeddingProviderCategoriesToSidePanelCategories(response.categories as Category[]) + ); + setSidePanelView(SidePanelView.EMBEDDING_PROVIDERS); + setShowSidePanel(true); + }) + .finally(() => { + setShowProgressIndicator(false); + }); + }; + + const handleOnAddNewVectorKnowledgeBase = () => { + console.log(">>> Adding new vector knowledge base"); + isCreatingNewVectorKnowledgeBase.current = true; + + // Push current state to navigation stack + pushToNavigationStack(sidePanelView, categories, selectedNodeRef.current, selectedClientName.current); + + // Update the node type to VECTOR_KNOWLEDGE_BASE and get the template + const updatedMetadata = { ...selectedNodeMetadata.current.metadata }; + updatedMetadata.node.codedata.node = "VECTOR_KNOWLEDGE_BASE"; + selectedNodeMetadata.current.metadata = updatedMetadata; + + setShowProgressIndicator(true); + rpcClient + .getBIDiagramRpcClient() + .getNodeTemplate({ + position: targetRef.current.startLine, + filePath: model?.fileName, + id: updatedMetadata.node.codedata, + }) + .then((response) => { + console.log(">>> Vector Knowledge Base template", response); + selectedNodeRef.current = response.flowNode; + showEditForm.current = false; + setSidePanelView(SidePanelView.FORM); + setShowSidePanel(true); + }) + .finally(() => { + setShowProgressIndicator(false); + }); + }; + const handleOnGoToSource = (node: FlowNode) => { const targetPosition: NodePosition = { startLine: node.codedata.lineRange.startLine.line, @@ -969,13 +1572,28 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { // Open the tool selection panel setShowProgressIndicator(true); + setTimeout(() => { + setSidePanelView(SidePanelView.ADD_TOOL); + setShowSidePanel(true); + setShowProgressIndicator(false); + }, 500); + }; + + const handleOnAddMcpServer = (node: FlowNode) => { + console.log(">>> Add MCP Server called", node); + selectedNodeRef.current = node; + selectedClientName.current = "Add MCP Server"; + + // Open the tool selection panel + setShowProgressIndicator(true); + // This would call the API to fetch tools in a real implementation setTimeout(() => { // For now, just use a dummy category const toolCategories: PanelCategory[] = [ { - title: "Tools", - description: "Tools available for the agent", + title: "MCP Servers", + description: "MCP Servers available for the agent", items: [ { id: "web-search", @@ -988,7 +1606,7 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { ]; setCategories(toolCategories); - setSidePanelView(SidePanelView.ADD_TOOL); + setSidePanelView(SidePanelView.ADD_MCP_SERVER); setShowSidePanel(true); setShowProgressIndicator(false); debouncedGetFlowModel(); @@ -1024,19 +1642,67 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { await rpcClient.getVisualizerRpcClient().openView({ type: EVENT_TYPE.OPEN_VIEW, location: context }); }; + const handleOnSelectMcpToolkit = async (tool: ToolData, node: FlowNode) => { + console.log(">>> Edit mcp toolkit called", { node, tool }); + selectedNodeRef.current = node; + selectedClientName.current = tool.name; + showEditForm.current = true; + setSelectedMcpToolkitName(tool.name); + + setShowProgressIndicator(true); + // get project components to find the function + const projectComponents = await rpcClient.getBIDiagramRpcClient().getProjectComponents(); + if (!projectComponents || !projectComponents.components) { + console.error("Project components not found"); + return; + } + console.log(">>> Project info for mcp toolkit", projectComponents); + setTimeout(() => { + const toolCategories: PanelCategory[] = [ + { + title: "MCP Servers", + description: "MCP Servers available for the agent", + items: [ + { + id: "web-search", + label: "Web Search", + description: "Search the web for information", + enabled: true, + }, + ], + }, + ]; + + setCategories(toolCategories); + setSidePanelView(SidePanelView.EDIT_MCP_SERVER); + setShowSidePanel(true); + setShowProgressIndicator(false); + }, 500); + }; + const handleOnDeleteTool = async (tool: ToolData, node: FlowNode) => { console.log(">>> Delete tool called", tool, node); + selectedNodeRef.current = node; setShowProgressIndicator(true); try { const agentNode = await findAgentNodeFromAgentCallNode(node, rpcClient); const updatedAgentNode = await removeToolFromAgentNode(agentNode, tool.name); const agentFilePath = await getAgentFilePath(rpcClient); - // Generate the source code - const agentResponse = await rpcClient - .getBIDiagramRpcClient() - .getSourceCode({ filePath: agentFilePath, flowNode: updatedAgentNode }); - console.log(">>> response getSourceCode after tool deletion", { agentResponse }); + const toolType = tool.type ?? ""; + if (toolType.includes("MCP Server")) { + const updateAgentNode = removeMcpServerFromAgentNode(updatedAgentNode, tool.name); + const agentResponse = await rpcClient + .getBIDiagramRpcClient() + .getSourceCode({ filePath: agentFilePath, flowNode: updateAgentNode }); + onSave?.(); + console.log(">>> response getSourceCode after tool deletion", { agentResponse }); + } else { + const agentResponse = await rpcClient + .getBIDiagramRpcClient() + .getSourceCode({ filePath: agentFilePath, flowNode: updatedAgentNode }); + console.log(">>> response getSourceCode after tool deletion", { agentResponse }); + } } catch (error) { console.error("Error deleting tool:", error); alert(`Failed to remove tool "${tool.name}". Please try again.`); @@ -1089,7 +1755,9 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { agentNode: { onModelSelect: handleOnEditAgentModel, onAddTool: handleOnAddTool, + onAddMcpServer: handleOnAddMcpServer, onSelectTool: handleOnSelectTool, + onSelectMcpToolkit: handleOnSelectMcpToolkit, onDeleteTool: handleOnDeleteTool, goToTool: handleOnGoToTool, onSelectMemoryManager: handleOnSelectMemoryManager, @@ -1113,11 +1781,7 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { )} - {!model && ( - - - - )} + {!model && } {model && } @@ -1137,6 +1801,7 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { projectPath={projectPath} editForm={showEditForm.current} updatedExpressionField={updatedExpressionField} + canGoBack={navigationStack.length > 0} // Regular callbacks onClose={handleOnCloseSidePanel} onBack={handleOnFormBack} @@ -1146,6 +1811,10 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { onAddFunction={handleOnAddFunction} onAddNPFunction={handleOnAddNPFunction} onAddDataMapper={handleOnAddDataMapper} + onAddModelProvider={handleOnAddNewModelProvider} + onAddVectorStore={handleOnAddNewVectorStore} + onAddEmbeddingProvider={handleOnAddNewEmbeddingProvider} + onAddVectorKnowledgeBase={handleOnAddNewVectorKnowledgeBase} onSubmitForm={handleOnFormSubmit} showProgressIndicator={showProgressIndicator} onDiscardSuggestions={onDiscardSuggestions} @@ -1154,11 +1823,17 @@ export function BIFlowDiagram(props: BIFlowDiagramProps) { onResetUpdatedExpressionField={handleResetUpdatedExpressionField} onSearchFunction={handleSearchFunction} onSearchNpFunction={handleSearchNpFunction} + onSearchModelProvider={handleSearchModelProvider} + onSearchVectorStore={handleSearchVectorStore} + onSearchEmbeddingProvider={handleSearchEmbeddingProvider} + onSearchVectorKnowledgeBase={handleSearchVectorKnowledgeBase} // AI Agent specific callbacks onEditAgent={handleEditAgent} onSelectTool={handleOnSelectTool} onDeleteTool={handleOnDeleteTool} onAddTool={handleOnAddTool} + onAddMcpServer={handleOnAddMcpServer} + selectedMcpToolkitName={selectedMcpToolkitName} /> ); diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/FlowDiagram/utils.ts b/workspaces/ballerina/ballerina-visualizer/src/views/BI/FlowDiagram/utils.ts index 469b40cd151..deaab7daf45 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/FlowDiagram/utils.ts +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/FlowDiagram/utils.ts @@ -68,37 +68,6 @@ export const transformCategories = (categories: Category[]): Category[] => { // remove agents from categories filteredCategories = filteredCategories.filter((category) => category.metadata.label !== "Agents"); - // find statement category - const statementCategory = filteredCategories.find((category) => category.metadata.label === "Statement"); - // find AGENT_CALL from statement category - const agentCallNode = statementCategory?.items?.find( - (item) => (item as AvailableNode).codedata?.node === "AGENT_CALL" - ) as AvailableNode; - if (agentCallNode?.codedata) { - // HACK: update agent call node until LS update with the new agent node - agentCallNode.codedata.object = "Agent"; - agentCallNode.codedata.parentSymbol = ""; - } else { - // TODO: this should remove once LS update with the new agent node - // add new item - statementCategory.items.push({ - codedata: { - module: "ai", - node: "AGENT_CALL", - object: "Agent", - org: "ballerinax", - parentSymbol: "", - symbol: "run", - version: "1.0.0", - }, - enabled: true, - metadata: { - label: "Agent", - description: "Add an AI Agent to the flow", - }, - }); - } - return filteredCategories; }; diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/FocusFlowDiagram/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/FocusFlowDiagram/index.tsx index 25bbc1e3fa6..a1d3d6fa42d 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/FocusFlowDiagram/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/FocusFlowDiagram/index.tsx @@ -42,8 +42,11 @@ import { TRIGGER_CHARACTERS, TriggerCharacter, TextEdit, - ParentMetadata + ParentMetadata, + UpdatedArtifactsResponse } from "@wso2/ballerina-core"; +import { PanelContainer } from "@wso2/ballerina-side-panel"; +import { ModelConfig } from "../AIChatAgent/ModelConfig"; import { addDraftNodeToDiagram, @@ -85,6 +88,8 @@ export function BIFocusFlowDiagram(props: BIFocusFlowDiagramProps) { const [suggestedModel, setSuggestedModel] = useState(); const [showProgressIndicator, setShowProgressIndicator] = useState(false); const [breakpointInfo, setBreakpointInfo] = useState(); + const [showModelConfigPanel, setShowModelConfigPanel] = useState(false); + const [selectedNodeForModelConfig, setSelectedNodeForModelConfig] = useState(); const selectedNodeRef = useRef(); const nodeTemplateRef = useRef(); @@ -322,6 +327,41 @@ export function BIFocusFlowDiagram(props: BIFocusFlowDiagramProps) { }); }; + const updateCurrentArtifactLocation = async (artifacts: UpdatedArtifactsResponse) => { + console.log(">>> Updating current artifact location", { artifacts }); + // Get the updated component and update the location + const currentIdentifier = (await rpcClient.getVisualizerLocation()).identifier; + // Find the correct artifact by currentIdentifier (id) + let currentArtifact = artifacts.artifacts.at(0); + artifacts.artifacts.forEach((artifact: any) => { + if (artifact.id === currentIdentifier || artifact.name === currentIdentifier) { + currentArtifact = artifact; + } + // Check if artifact has resources and find within those + if (artifact.resources && artifact.resources.length > 0) { + const resource = artifact.resources.find( + (resource: any) => resource.id === currentIdentifier || resource.name === currentIdentifier + ); + if (resource) { + currentArtifact = resource; + } + } + }); + + if (currentArtifact) { + console.log(">>> currentArtifact", currentArtifact); + await rpcClient.getVisualizerRpcClient().openView({ + type: EVENT_TYPE.UPDATE_PROJECT_LOCATION, + location: { + documentUri: currentArtifact.path, + position: currentArtifact.position, + identifier: currentIdentifier, + }, + }); + } + debouncedGetFlowModel(); + }; + const handleOnEditNode = (node: FlowNode) => { console.log(">>> on edit node", node); selectedNodeRef.current = node; @@ -447,7 +487,7 @@ export function BIFocusFlowDiagram(props: BIFocusFlowDiagramProps) { context: { expression: value, startLine: updateLineRange( - selectedNode.properties['prompt'].codedata.lineRange, + selectedNode.properties['prompt'].codedata.lineRange, expressionOffsetRef.current ).startLine, lineOffset: lineOffset, @@ -527,6 +567,25 @@ export function BIFocusFlowDiagram(props: BIFocusFlowDiagramProps) { handleExpressionEditorCancel(); }; + const handleOnEditAgentModel = (node: FlowNode) => { + console.log(">>> on edit agent model", node); + setSelectedNodeForModelConfig(node); + setShowModelConfigPanel(true); + }; + + const handleSaveModelConfigPanel = (response: UpdatedArtifactsResponse) => { + setShowModelConfigPanel(false); + setSelectedNodeForModelConfig(undefined); + if (response) { + updateCurrentArtifactLocation(response); + } + }; + + const handleCloseModelConfigPanel = () => { + setShowModelConfigPanel(false); + setSelectedNodeForModelConfig(undefined); + }; + const memoizedDiagramProps = useMemo( () => ({ model: flowModel, @@ -546,7 +605,10 @@ export function BIFocusFlowDiagram(props: BIFocusFlowDiagramProps) { onCompletionItemSelect: handleCompletionItemSelect, onBlur: handleExpressionEditorBlur, onCancel: handleExpressionEditorCancel - } + }, + aiNodes: { + onModelSelect: handleOnEditAgentModel, + }, }), [flowModel, projectPath, breakpointInfo, filteredCompletions] ); @@ -566,6 +628,19 @@ export function BIFocusFlowDiagram(props: BIFocusFlowDiagramProps) { {model && }
+ + {showModelConfigPanel && selectedNodeForModelConfig && ( + + + + )} ); } diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/FormGenerator/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/FormGenerator/index.tsx index 45a2d17742a..6af595ddbaa 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/FormGenerator/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/FormGenerator/index.tsx @@ -16,7 +16,7 @@ * under the License. */ -import { RefObject, useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { RefObject, useCallback, useEffect, useMemo, useRef, useState, forwardRef, useImperativeHandle } from "react"; import { EVENT_TYPE, ColorThemeKind, @@ -62,7 +62,7 @@ import { convertNodePropertiesToFormFields, convertToFnSignature, convertToVisibleTypes, - enrichFormPropertiesWithValueConstraint, + enrichFormTemplatePropertiesWithValues, filterUnsupportedDiagnostics, getFormProperties, getImportsForFormFields, @@ -85,6 +85,7 @@ import { FormTypeEditor } from "../../TypeEditor"; import { getTypeHelper } from "../../TypeHelper"; import { EXPRESSION_EXTRACTION_REGEX } from "../../../../constants"; import MatchForm from "../MatchForm"; +import VectorKnowledgeBaseForm from "../VectorKnowledgeBaseForm"; interface TypeEditorState { isOpen: boolean; @@ -103,7 +104,7 @@ interface FormProps { editForm?: boolean; isGraphql?: boolean; submitText?: string; - onSubmit: (node?: FlowNode, openInDataMapper?: boolean, formImports?: FormImports) => void; + onSubmit: (node?: FlowNode, openInDataMapper?: boolean, formImports?: FormImports, rawFormValues?: FormValues) => void; showProgressIndicator?: boolean; subPanelView?: SubPanelView; openSubPanel?: (subPanel: SubPanel) => void; @@ -115,6 +116,11 @@ interface FormProps { description?: string; // Optional description explaining what the action button does callback: () => void; }; + scopeFieldAddon?: React.ReactNode; + newServerUrl?: string; + onChange?: (fieldKey: string, value: any, allValues: FormValues) => void; + mcpTools?: { name: string; description?: string }[]; + onToolsChange?: (selectedTools: string[]) => void; } // Styled component for the action button description @@ -140,7 +146,7 @@ const StyledActionButton = styled(Button)` } `; -export function FormGenerator(props: FormProps) { +export const FormGenerator = forwardRef(function FormGenerator(props: FormProps, ref: React.ForwardedRef) { const { fileName, node, @@ -149,7 +155,6 @@ export function FormGenerator(props: FormProps) { clientName, targetLineRange, projectPath, - editForm, showProgressIndicator, isGraphql, onSubmit, @@ -160,6 +165,10 @@ export function FormGenerator(props: FormProps) { disableSaveButton, actionButtonConfig, submitText, + scopeFieldAddon, + newServerUrl, + onChange, + mcpTools, } = props; const { rpcClient } = useRpcContext(); @@ -234,7 +243,7 @@ export function FormGenerator(props: FormProps) { let enrichedNodeProperties; if (nodeFormTemplate) { const formTemplateProperties = getFormProperties(nodeFormTemplate); - enrichedNodeProperties = enrichFormPropertiesWithValueConstraint(formProperties, formTemplateProperties); + enrichedNodeProperties = enrichFormTemplatePropertiesWithValues(formProperties, formTemplateProperties); console.log(">>> Form properties", { formProperties, formTemplateProperties, enrichedNodeProperties }); } if (Object.keys(formProperties).length === 0) { @@ -784,6 +793,25 @@ export function FormGenerator(props: FormProps) { ); } + // handle vector knowledge base form + if (node?.codedata.node === "VECTOR_KNOWLEDGE_BASE") { + return ( + + ); + } + if (!node) { console.log(">>> Node is undefined"); return null; @@ -811,6 +839,7 @@ export function FormGenerator(props: FormProps) { <> {fields && fields.length > 0 && (
)} {typeEditorState.isOpen && ( @@ -851,6 +885,6 @@ export function FormGenerator(props: FormProps) { )} ); -} +}); export default FormGenerator; diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/FormGeneratorNew/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/FormGeneratorNew/index.tsx index 28564575408..9751e11b995 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/FormGeneratorNew/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/FormGeneratorNew/index.tsx @@ -16,7 +16,7 @@ * under the License. */ -import { RefObject, useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { ReactNode, RefObject, useCallback, useEffect, useMemo, useRef, useState } from "react"; import { EVENT_TYPE, LineRange, @@ -96,6 +96,10 @@ interface FormProps { concertRequired?: boolean; description?: string; preserveFieldOrder?: boolean; + injectedComponents?: { + component: ReactNode; + index: number; + }[]; } export function FormGeneratorNew(props: FormProps) { @@ -123,7 +127,8 @@ export function FormGeneratorNew(props: FormProps) { concertMessage, concertRequired, description, - preserveFieldOrder + preserveFieldOrder, + injectedComponents } = props; const { rpcClient } = useRpcContext(); @@ -702,6 +707,7 @@ export function FormGeneratorNew(props: FormProps) { infoLabel={description} formImports={formImports} preserveOrder={preserveFieldOrder} + injectedComponents={injectedComponents} /> )} {typeEditorState.isOpen && ( diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/McpFormGenerator/index.ts b/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/McpFormGenerator/index.ts new file mode 100644 index 00000000000..e69de29bb2d diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/VectorKnowledgeBaseForm/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/VectorKnowledgeBaseForm/index.tsx new file mode 100644 index 00000000000..c654935848a --- /dev/null +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/Forms/VectorKnowledgeBaseForm/index.tsx @@ -0,0 +1,885 @@ +/** + * 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 { useEffect, useMemo, useRef, useState } from "react"; +import { Button, Dropdown, OptionProps, ProgressRing, ThemeColors, Typography } from "@wso2/ui-toolkit"; +import styled from "@emotion/styled"; + +import { FlowNode, LineRange, SubPanel, SubPanelView } from "@wso2/ballerina-core"; +import { + FormValues, + ExpressionFormField, + FormExpressionEditorProps, + Form, + FormField, + FormImports, +} from "@wso2/ballerina-side-panel"; +import { convertNodePropertiesToFormFields, getFormProperties, getImportsForFormFields } from "../../../../utils/bi"; +import { cloneDeep } from "lodash"; +import { useRpcContext } from "@wso2/ballerina-rpc-client"; +import { + createNodeWithUpdatedLineRange, + processFormData, + removeEmptyNodes, + updateNodeWithProperties, +} from "../form-utils"; + +namespace S { + export const Container = styled.div` + display: flex; + flex-direction: column; + height: calc(100vh - 100px); + min-height: 600px; + `; + + export const ScrollableContent = styled.div` + flex: 1; + overflow-y: auto; + padding: 16px; + display: flex; + flex-direction: column; + gap: 20px; + `; + + export const Content = styled.div` + display: flex; + flex-direction: column; + /* gap: 20px; */ + flex: 1; + `; + + export const SectionTitle = styled.h3` + font-size: 14px; + font-weight: 600; + margin: 0 0 12px 0; + color: ${ThemeColors.ON_SURFACE}; + `; + + export const DropdownContainer = styled.div` + display: flex; + flex-direction: column; + gap: 8px; + `; + + export const Footer = styled.div` + display: flex; + gap: 8px; + flex-direction: row; + justify-content: flex-end; + align-items: center; + padding: 16px; + border-top: 1px solid ${ThemeColors.OUTLINE_VARIANT}; + background: ${ThemeColors.SURFACE_DIM}; + flex-shrink: 0; + `; + + export const FormWrapper = styled.div` + margin-top: 12px; + & > div:first-child { + padding: 0px; + } + `; + + export const Divider = styled.div` + height: 1px; + background: ${ThemeColors.OUTLINE_VARIANT}; + margin-bottom: 20px; + `; + + export const SpinnerContainer = styled.div` + display: flex; + justify-content: center; + align-items: center; + height: 100%; + `; +} + +interface VectorKnowledgeBaseFormProps { + fileName: string; + node: FlowNode; + targetLineRange: LineRange; + expressionEditor: FormExpressionEditorProps; + showProgressIndicator?: boolean; + onSubmit: ( + node?: FlowNode, + openInDataMapper?: boolean, + formImports?: FormImports, + rawFormValues?: FormValues + ) => void; + openSubPanel?: (subPanel: SubPanel) => void; + updatedExpressionField?: ExpressionFormField; + resetUpdatedExpressionField?: () => void; + subPanelView?: SubPanelView; + disableSaveButton?: boolean; +} + +interface ComponentData { + [key: string]: FlowNode; +} + +export function VectorKnowledgeBaseForm(props: VectorKnowledgeBaseFormProps) { + const { + fileName, + node, + targetLineRange, + expressionEditor, + onSubmit, + openSubPanel, + updatedExpressionField, + resetUpdatedExpressionField, + subPanelView, + showProgressIndicator, + disableSaveButton, + } = props; + + const { rpcClient } = useRpcContext(); + const [vectorStoreOptions, setVectorStoreOptions] = useState([]); + const [embeddingProviderOptions, setEmbeddingProviderOptions] = useState([]); + + const [vectorStoreFields, setVectorStoreFields] = useState([]); + const [embeddingProviderFields, setEmbeddingProviderFields] = useState([]); + const [knowledgeBaseFields, setKnowledgeBaseFields] = useState([]); + const [formImports, setFormImports] = useState({}); + const [isVectorStoreFormValid, setIsVectorStoreFormValid] = useState(false); + const [isEmbeddingProviderFormValid, setIsEmbeddingProviderFormValid] = useState(false); + const [isKnowledgeBaseFormValid, setIsKnowledgeBaseFormValid] = useState(false); + const [componentDataMap, setComponentDataMap] = useState({}); + const [isInitialized, setIsInitialized] = useState(false); + const [vectorStoreVariableName, setVectorStoreVariableName] = useState(""); + const [embeddingProviderVariableName, setEmbeddingProviderVariableName] = useState(""); + const [vectorStoreFormValues, setVectorStoreFormValues] = useState({}); + const [embeddingProviderFormValues, setEmbeddingProviderFormValues] = useState({}); + const [knowledgeBaseFormValues, setKnowledgeBaseFormValues] = useState({}); + const [isEditForm, setIsEditForm] = useState(false); + const [selectedVectorStoreOption, setSelectedVectorStoreOption] = useState(""); + const [selectedEmbeddingProviderOption, setSelectedEmbeddingProviderOption] = useState(""); + const [saving, setSaving] = useState(false); + + const vectorStoreTemplateRef = useRef(null); + const embeddingProviderTemplateRef = useRef(null); + const vectorStoreLineRange = useRef(null); + const embeddingProviderLineRange = useRef(null); + + useEffect(() => { + // Check if this is an edit form + const formProperties = getFormProperties(node); + const vectorStoreValue = formProperties.vectorStore?.value as string; + const embeddingModelValue = formProperties.embeddingModel?.value as string; + const isEdit = !!(vectorStoreValue && embeddingModelValue); + setIsEditForm(isEdit); + + if (isEdit) { + editFormInit(); + } else { + initializeForm(); + fetchAvailableComponents(); + } + handleFormOpen(); + + return () => { + handleFormClose(); + }; + }, []); + + // Update knowledge base fields when variable names change + useEffect(() => { + if (vectorStoreVariableName && embeddingProviderVariableName && knowledgeBaseFields.length > 0) { + updateKnowledgeBaseFields(); + } + }, [vectorStoreVariableName, embeddingProviderVariableName]); + + const handleFormOpen = () => { + rpcClient + .getBIDiagramRpcClient() + .formDidOpen({ filePath: fileName }) + .then(() => { + console.log(">>> Vector Knowledge Base form opened"); + }); + }; + + const handleFormClose = () => { + rpcClient + .getBIDiagramRpcClient() + .formDidClose({ filePath: fileName }) + .then(() => { + console.log(">>> Vector Knowledge Base form closed"); + }); + }; + + const initializeForm = () => { + // Initialize knowledge base form fields from the node + const formProperties = getFormProperties(node); + formProperties.vectorStore.hidden = true; + formProperties.embeddingModel.hidden = true; + const fields = convertNodePropertiesToFormFields(formProperties); + setKnowledgeBaseFields(fields); + setFormImports(getImportsForFormFields(fields)); + }; + + const editFormInit = async () => { + try { + // Get the current vector store and embedding model values + const formProperties = getFormProperties(node); + const vectorStoreValue = formProperties.vectorStore?.value; + const embeddingModelValue = formProperties.embeddingModel?.value; + + // Fetch module nodes to find existing components + const moduleNodesResponse = await rpcClient.getBIDiagramRpcClient().getModuleNodes(); + // Find the vector store and embedding provider nodes + let vectorStoreNode: FlowNode | null = null; + let embeddingProviderNode: FlowNode | null = null; + + // Search through module nodes to find matching variable names + moduleNodesResponse.flowModel.connections.forEach((moduleNode) => { + const moduleNodeVariableValue = moduleNode.properties?.variable?.value; + const isStringValue = typeof moduleNodeVariableValue === "string"; + + if (isStringValue && moduleNodeVariableValue === vectorStoreValue) { + if ( + moduleNode.codedata.node === "VECTOR_STORE" || + moduleNode.codedata.object?.includes("VectorStore") + ) { + vectorStoreNode = moduleNode; + vectorStoreTemplateRef.current = moduleNode; + vectorStoreLineRange.current = moduleNode.codedata.lineRange; + setVectorStoreVariableName(vectorStoreValue as string); + } + } + + if (isStringValue && moduleNodeVariableValue === embeddingModelValue) { + if ( + moduleNode.codedata.node === "EMBEDDING_PROVIDER" || + moduleNode.codedata.object?.includes("EmbeddingProvider") || + moduleNode.codedata.symbol?.includes("EmbeddingProvider") + ) { + embeddingProviderNode = moduleNode; + embeddingProviderTemplateRef.current = moduleNode; + embeddingProviderLineRange.current = moduleNode.codedata.lineRange; + setEmbeddingProviderVariableName(embeddingModelValue as string); + } + } + }); + + if (vectorStoreNode && embeddingProviderNode) { + // Process vector store fields + const vectorStoreFormProperties = getFormProperties(vectorStoreNode); + const vectorStoreProps = vectorStoreFormProperties as any; + if (vectorStoreProps.variable) { + vectorStoreProps.variable.hidden = true; + } + if (vectorStoreProps.type) { + vectorStoreProps.type.hidden = true; + } + const vectorStoreFields = convertNodePropertiesToFormFields(vectorStoreFormProperties); + setVectorStoreFields(vectorStoreFields); + + // Set existing vector store form values + const vectorStoreExistingValues: FormValues = {}; + Object.keys(vectorStoreNode.properties || {}).forEach((key) => { + if (key !== "variable" && key !== "type") { + vectorStoreExistingValues[key] = (vectorStoreNode.properties as any)[key].value; + } + }); + setVectorStoreFormValues(vectorStoreExistingValues); + + // Process embedding provider fields + const embeddingProviderFormProperties = getFormProperties(embeddingProviderNode); + const embeddingProviderProps = embeddingProviderFormProperties as any; + if (embeddingProviderProps.variable) { + embeddingProviderProps.variable.hidden = true; + } + if (embeddingProviderProps.type) { + embeddingProviderProps.type.hidden = true; + } + const embeddingProviderFields = convertNodePropertiesToFormFields(embeddingProviderFormProperties); + setEmbeddingProviderFields(embeddingProviderFields); + + // Set existing embedding provider form values + const embeddingProviderExistingValues: FormValues = {}; + Object.keys(embeddingProviderNode.properties || {}).forEach((key) => { + if (key !== "variable" && key !== "type") { + embeddingProviderExistingValues[key] = (embeddingProviderNode.properties as any)[key].value; + } + }); + setEmbeddingProviderFormValues(embeddingProviderExistingValues); + } + + // Initialize knowledge base fields (same as create mode) + const knowledgeBaseProps = formProperties as any; + if (knowledgeBaseProps.vectorStore) { + knowledgeBaseProps.vectorStore.hidden = true; + } + if (knowledgeBaseProps.embeddingModel) { + knowledgeBaseProps.embeddingModel.hidden = true; + } + const knowledgeBaseFields = convertNodePropertiesToFormFields(formProperties); + setKnowledgeBaseFields(knowledgeBaseFields); + setFormImports(getImportsForFormFields(knowledgeBaseFields)); + + // Set existing knowledge base form values + const knowledgeBaseExistingValues: FormValues = {}; + Object.keys(node.properties || {}).forEach((key) => { + if (key !== "vectorStore" && key !== "embeddingModel") { + knowledgeBaseExistingValues[key] = (node.properties as any)[key].value; + } + }); + setKnowledgeBaseFormValues(knowledgeBaseExistingValues); + + // load dropdown options and default selections + fetchAvailableComponentsInEditMode(vectorStoreNode, embeddingProviderNode); + + setIsInitialized(true); + } catch (error) { + console.error("Error initializing edit form:", error); + setIsInitialized(true); // Still set to prevent infinite loading + } + }; + + const fetchAvailableComponents = async () => { + try { + // Fetch available vector stores + const vectorStoreResponse = await rpcClient.getBIDiagramRpcClient().search({ + position: { startLine: targetLineRange.startLine, endLine: targetLineRange.endLine }, + filePath: fileName, + queryMap: undefined, + searchKind: "VECTOR_STORE", + }); + + const vectorStoreOptions: OptionProps[] = []; + const vectorStoreDataMap: ComponentData = {}; + + vectorStoreResponse.categories?.forEach((category) => { + category.items?.forEach((item) => { + // Check if it's an AvailableNode (not a nested Category) + if ("codedata" in item && "enabled" in item) { + const flowNode = item as any; // AvailableNode extends FlowNode + vectorStoreOptions.push({ + id: item.metadata.label, + content: item.metadata.label, + value: item.metadata.label, + }); + vectorStoreDataMap[item.metadata.label] = flowNode; + } + }); + }); + + setVectorStoreOptions(vectorStoreOptions); + + // Fetch available embedding providers + const embeddingProviderResponse = await rpcClient.getBIDiagramRpcClient().search({ + position: { startLine: targetLineRange.startLine, endLine: targetLineRange.endLine }, + filePath: fileName, + queryMap: undefined, + searchKind: "EMBEDDING_PROVIDER", + }); + + const embeddingProviderOptions: OptionProps[] = []; + const embeddingProviderDataMap: ComponentData = {}; + + embeddingProviderResponse.categories?.forEach((category) => { + category.items?.forEach((item) => { + // Check if it's an AvailableNode (not a nested Category) + if ("codedata" in item && "enabled" in item) { + const flowNode = item as any; // AvailableNode extends FlowNode + embeddingProviderOptions.push({ + id: item.metadata.label, + content: item.metadata.label, + value: item.metadata.label, + }); + embeddingProviderDataMap[item.metadata.label] = flowNode; + } + }); + }); + + setEmbeddingProviderOptions(embeddingProviderOptions); + const fullComponentDataMap = { ...vectorStoreDataMap, ...embeddingProviderDataMap }; + setComponentDataMap(fullComponentDataMap); + + // Set default selections and load their forms + const defaultVectorStore = vectorStoreOptions.find((option) => { + const content = option.content?.toString().toLowerCase() || ""; + return content.includes("memory") || content.includes("in-memory"); + }); + + const defaultEmbeddingProvider = embeddingProviderOptions.find((option) => { + const content = option.content?.toString().toLowerCase() || ""; + return content.includes("wso2") || content.includes("default"); + }); + + // Load default vector store + if (defaultVectorStore) { + await handleVectorStoreSelect(defaultVectorStore.value, fullComponentDataMap); + } else if (vectorStoreOptions.length > 0) { + await handleVectorStoreSelect(vectorStoreOptions[0].value, fullComponentDataMap); + } + + // Load default embedding provider + if (defaultEmbeddingProvider) { + await handleEmbeddingProviderSelect(defaultEmbeddingProvider.value, fullComponentDataMap); + } else if (embeddingProviderOptions.length > 0) { + await handleEmbeddingProviderSelect(embeddingProviderOptions[0].value, fullComponentDataMap); + } + + setIsInitialized(true); + } catch (error) { + console.error("Error fetching available components:", error); + } + }; + + const fetchAvailableComponentsInEditMode = async (vectorStoreNode: FlowNode, embeddingProviderNode: FlowNode) => { + try { + // Fetch available vector stores + const vectorStoreResponse = await rpcClient.getBIDiagramRpcClient().search({ + position: { startLine: targetLineRange.startLine, endLine: targetLineRange.endLine }, + filePath: fileName, + queryMap: undefined, + searchKind: "VECTOR_STORE", + }); + + const vectorStoreOptions: OptionProps[] = []; + const vectorStoreDataMap: ComponentData = {}; + + vectorStoreResponse.categories?.forEach((category) => { + category.items?.forEach((item) => { + // Check if it's an AvailableNode (not a nested Category) + if ("codedata" in item && "enabled" in item) { + const flowNode = item as any; // AvailableNode extends FlowNode + vectorStoreOptions.push({ + id: item.metadata.label, + content: item.metadata.label, + value: item.metadata.label, + }); + vectorStoreDataMap[item.metadata.label] = flowNode; + if ( + flowNode.codedata.module === vectorStoreNode.codedata.module && + flowNode.codedata.org === vectorStoreNode.codedata.org + ) { + setSelectedVectorStoreOption(item.metadata.label); + } + } + }); + }); + + setVectorStoreOptions(vectorStoreOptions); + + // Fetch available embedding providers + const embeddingProviderResponse = await rpcClient.getBIDiagramRpcClient().search({ + position: { startLine: targetLineRange.startLine, endLine: targetLineRange.endLine }, + filePath: fileName, + queryMap: undefined, + searchKind: "EMBEDDING_PROVIDER", + }); + + const embeddingProviderOptions: OptionProps[] = []; + const embeddingProviderDataMap: ComponentData = {}; + + embeddingProviderResponse.categories?.forEach((category) => { + category.items?.forEach((item) => { + // Check if it's an AvailableNode (not a nested Category) + if ("codedata" in item && "enabled" in item) { + const flowNode = item as any; // AvailableNode extends FlowNode + embeddingProviderOptions.push({ + id: item.metadata.label, + content: item.metadata.label, + value: item.metadata.label, + }); + embeddingProviderDataMap[item.metadata.label] = flowNode; + if ( + flowNode.codedata.module === embeddingProviderNode.codedata.module && + flowNode.codedata.org === embeddingProviderNode.codedata.org + ) { + setSelectedEmbeddingProviderOption(item.metadata.label); + } + } + }); + }); + + setEmbeddingProviderOptions(embeddingProviderOptions); + const fullComponentDataMap = { ...vectorStoreDataMap, ...embeddingProviderDataMap }; + setComponentDataMap(fullComponentDataMap); + } catch (error) { + console.error("Error fetching available components:", error); + } + }; + + const handleVectorStoreSelect = async (value: string, dataMap?: ComponentData) => { + const currentDataMap = dataMap || componentDataMap; + const vectorStoreNode = currentDataMap[value]; + if (vectorStoreNode) { + vectorStoreTemplateRef.current = vectorStoreNode; + setSelectedVectorStoreOption(value); + + // Get node template for the selected vector store to show its form + try { + const template = await rpcClient.getBIDiagramRpcClient().getNodeTemplate({ + filePath: fileName, + position: { line: targetLineRange.startLine.line, offset: 0 }, + id: vectorStoreNode.codedata, + }); + + const variableName = `${template.flowNode.properties.variable.value || "vectorStore"}`; + setVectorStoreVariableName(variableName); + + // Store template for later use in submission + vectorStoreTemplateRef.current = template.flowNode; + + const formProperties = getFormProperties(template.flowNode); + const props = formProperties as any; + if (props.variable) { + props.variable.hidden = true; + } + if (props.type) { + props.type.hidden = true; + } + const fields = convertNodePropertiesToFormFields(formProperties); + setVectorStoreFields(fields); + + // Update knowledge base fields with the vector store variable name + updateKnowledgeBaseFields(); + } catch (error) { + console.error("Error fetching vector store template:", error); + } + } + }; + + const handleEmbeddingProviderSelect = async (value: string, dataMap?: ComponentData) => { + const currentDataMap = dataMap || componentDataMap; + const embeddingProviderNode = currentDataMap[value]; + if (embeddingProviderNode) { + embeddingProviderTemplateRef.current = embeddingProviderNode; + setSelectedEmbeddingProviderOption(value); + + // Get node template for the selected embedding provider to show its form + try { + const template = await rpcClient.getBIDiagramRpcClient().getNodeTemplate({ + filePath: fileName, + position: { line: targetLineRange.startLine.line, offset: 0 }, + id: embeddingProviderNode.codedata, + }); + + const variableName = `${template.flowNode.properties.variable.value || "embeddingProvider"}`; + setEmbeddingProviderVariableName(variableName); + + // Store template for later use in submission + embeddingProviderTemplateRef.current = template.flowNode; + + const formProperties = getFormProperties(template.flowNode); + const props = formProperties as any; + if (props.variable) { + props.variable.hidden = true; + } + if (props.type) { + props.type.hidden = true; + } + const fields = convertNodePropertiesToFormFields(formProperties); + setEmbeddingProviderFields(fields); + + // Update knowledge base fields with the embedding provider variable name + updateKnowledgeBaseFields(); + } catch (error) { + console.error("Error fetching embedding provider template:", error); + } + } + }; + + const updateKnowledgeBaseFields = () => { + // Update knowledge base fields with variable names from selected components + if (knowledgeBaseFields.length > 0) { + let hasChanges = false; + const updatedFields = knowledgeBaseFields.map((field) => { + if (field.key === "vectorStore" && vectorStoreVariableName && field.value !== vectorStoreVariableName) { + hasChanges = true; + return { ...field, value: vectorStoreVariableName }; + } + if ( + field.key === "embeddingModel" && + embeddingProviderVariableName && + field.value !== embeddingProviderVariableName + ) { + hasChanges = true; + return { ...field, value: embeddingProviderVariableName }; + } + return field; + }); + + if (hasChanges) { + setKnowledgeBaseFields(updatedFields); + } + } + }; + + const mergeFormDataWithFlowNode = (data: FormValues, targetLineRange: LineRange): FlowNode => { + const clonedNode = cloneDeep(node); + const updatedNode = createNodeWithUpdatedLineRange(clonedNode, targetLineRange); + const processedData = processFormData(data); + const nodeWithUpdatedProps = updateNodeWithProperties(clonedNode, updatedNode, processedData, formImports); + return removeEmptyNodes(nodeWithUpdatedProps); + }; + + const handleSubmit = async () => { + if (!vectorStoreTemplateRef.current || !embeddingProviderTemplateRef.current) { + console.error("Vector store and embedding provider must be selected"); + return; + } + + if (!vectorStoreTemplateRef.current || !embeddingProviderTemplateRef.current) { + console.error("Templates not loaded yet"); + return; + } + + try { + setSaving(true); + // Use stored templates instead of fetching again + const vectorStoreTemplate = vectorStoreTemplateRef.current; + const embeddingProviderTemplate = embeddingProviderTemplateRef.current; + + // Merge vector store template with form values + const vectorStoreNode = cloneDeep(vectorStoreTemplate); + const vectorStoreUpdatedNode = updateNodeWithProperties( + vectorStoreNode, + vectorStoreNode, + vectorStoreFormValues, + formImports + ); + // Set the variable name + if (vectorStoreUpdatedNode.properties?.variable) { + vectorStoreUpdatedNode.properties.variable.value = vectorStoreVariableName; + } + + // Merge embedding provider template with form values + const embeddingProviderNode = cloneDeep(embeddingProviderTemplate); + const embeddingProviderUpdatedNode = updateNodeWithProperties( + embeddingProviderNode, + embeddingProviderNode, + embeddingProviderFormValues, + formImports + ); + // Set the variable name + if (embeddingProviderUpdatedNode.properties?.variable) { + embeddingProviderUpdatedNode.properties.variable.value = embeddingProviderVariableName; + } + + if (isEditForm) { + if (!vectorStoreLineRange.current || !embeddingProviderLineRange.current) { + console.error("Vector store and embedding provider line range not found"); + return; + } + // new vector store node + const newVectorStoreNode = cloneDeep(vectorStoreUpdatedNode); + newVectorStoreNode.codedata.lineRange = { + fileName: vectorStoreLineRange.current.fileName, + startLine: vectorStoreLineRange.current.startLine, + endLine: vectorStoreLineRange.current.endLine, + }; + newVectorStoreNode.codedata.isNew = false; + const newEmbeddingProviderNode = cloneDeep(embeddingProviderUpdatedNode); + newEmbeddingProviderNode.codedata.lineRange = { + fileName: embeddingProviderLineRange.current.fileName, + startLine: embeddingProviderLineRange.current.startLine, + endLine: embeddingProviderLineRange.current.endLine, + }; + newEmbeddingProviderNode.codedata.isNew = false; + + // save the vector store and embedding provider nodes + const vectorStoreSourceCode = await rpcClient.getBIDiagramRpcClient().getSourceCode({ + filePath: fileName, + flowNode: newVectorStoreNode, + }); + console.log(">>> vector store source code updated", { newVectorStoreNode, vectorStoreSourceCode }); + const embeddingProviderSourceCode = await rpcClient.getBIDiagramRpcClient().getSourceCode({ + filePath: fileName, + flowNode: newEmbeddingProviderNode, + }); + console.log(">>> embedding provider source code updated", { + newEmbeddingProviderNode, + embeddingProviderSourceCode, + }); + } else { + // save the vector store and embedding provider nodes + const vectorStoreSourceCode = await rpcClient.getBIDiagramRpcClient().getSourceCode({ + filePath: fileName, + flowNode: vectorStoreUpdatedNode, + }); + console.log(">>> vector store source code", { vectorStoreSourceCode }); + const embeddingProviderSourceCode = await rpcClient.getBIDiagramRpcClient().getSourceCode({ + filePath: fileName, + flowNode: embeddingProviderUpdatedNode, + }); + console.log(">>> embedding provider source code", { embeddingProviderSourceCode }); + } + // Create knowledge base node with form values and references + const combinedKnowledgeBaseData = { + ...knowledgeBaseFormValues, + vectorStore: vectorStoreVariableName, + embeddingModel: embeddingProviderVariableName, + }; + + const knowledgeBaseNode = mergeFormDataWithFlowNode(combinedKnowledgeBaseData, targetLineRange); + + onSubmit(knowledgeBaseNode, false, formImports); + } catch (error) { + console.error("Error creating vector knowledge base:", error); + } finally { + setSaving(false); + } + }; + + const isFormValid = useMemo(() => { + return ( + vectorStoreTemplateRef.current && + embeddingProviderTemplateRef.current && + isVectorStoreFormValid && + isEmbeddingProviderFormValid && + isKnowledgeBaseFormValid && + vectorStoreVariableName && + embeddingProviderVariableName + ); + }, [ + isVectorStoreFormValid, + isEmbeddingProviderFormValid, + isKnowledgeBaseFormValid, + vectorStoreVariableName, + embeddingProviderVariableName, + ]); + + if (!isInitialized) { + return ( + + + + + + + + ); + } + + return ( + + + + + handleVectorStoreSelect(e.target.value)} + placeholder="Choose a vector store..." + value={selectedVectorStoreOption} + /> + + + {vectorStoreFields.length > 0 ? ( + { + setVectorStoreFormValues(allValues); + }} + /> + ) : ( + Loading vector store configuration... + )} + + + + handleEmbeddingProviderSelect(e.target.value)} + placeholder="Choose an embedding provider..." + value={selectedEmbeddingProviderOption} + /> + + + + {embeddingProviderFields.length > 0 ? ( + { + setEmbeddingProviderFormValues(allValues); + }} + /> + ) : ( + Loading embedding provider configuration... + )} + + + {knowledgeBaseFields.length > 0 && ( + + { + setKnowledgeBaseFormValues(allValues); + }} + /> + + )} + + + + + + + + ); +} + +export default VectorKnowledgeBaseForm; diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/FunctionForm/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/FunctionForm/index.tsx index 5d22af26aa0..be4f697059d 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/FunctionForm/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/FunctionForm/index.tsx @@ -92,7 +92,6 @@ export function FunctionForm(props: FunctionFormProps) { setTitleSubtitle('Build reusable custom flows'); setFormSubtitle('Define a flow that can be used within your integration'); } - if (functionName) { getExistingFunctionNode(); } else { diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/Overview/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/Overview/index.tsx index 5ac33b98b6b..a77e27ee0d7 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/Overview/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/Overview/index.tsx @@ -18,8 +18,6 @@ import React, { useEffect, useMemo, useRef, useState } from "react"; import { - ProjectDiagnostics, - ProjectSource, ProjectStructureResponse, EVENT_TYPE, MACHINE_VIEW, @@ -505,13 +503,8 @@ export function Overview(props: ComponentDiagramProps) { const { rpcClient } = useRpcContext(); const [workspaceName, setWorkspaceName] = React.useState(""); const [readmeContent, setReadmeContent] = React.useState(""); - const [isCodeGenerating, setIsCodeGenerating] = React.useState(false); const [projectStructure, setProjectStructure] = React.useState(); - const [responseText, setResponseText] = useState(""); - const [isLoading, setIsLoading] = useState(false); - const [loadingMessage, setLoadingMessage] = useState(""); - const backendRootUri = useRef(""); const [enabled, setEnableICP] = useState(false); const { data: devantMetadata } = useQuery({ queryKey: ["devant-metadata", props.projectPath], @@ -552,16 +545,6 @@ export function Overview(props: ComponentDiagramProps) { setEnableICP(res.enabled); }); - // setResponseText(""); - - // Fetching the backend root URI - rpcClient - .getAiPanelRpcClient() - .getBackendUrl() - .then((res) => { - backendRootUri.current = res; - }); - rpcClient .getBIDiagramRpcClient() .getReadmeContent() @@ -583,23 +566,6 @@ export function Overview(props: ComponentDiagramProps) { }); }, []); - useEffect(() => { - console.log(">>> ai responseText", { responseText }); - if (!responseText) { - return; - } - const segments = splitContent(responseText); - console.log(">>> ai code", { segments }); - - segments.forEach((segment) => { - if (segment.isCode) { - let code = segment.text; - let file = segment.fileName; - rpcClient.getAiPanelRpcClient().addToProject({ content: code, filePath: file, isTestCode: false }); - } - }); - }, [responseText]); - const deployableIntegrationTypes = useMemo(() => { if (!projectStructure) { return []; @@ -637,118 +603,6 @@ export function Overview(props: ComponentDiagramProps) { ); } - async function fetchAiResponse(isQuestion: boolean = false) { - if (readmeContent === "" && !isQuestion) { - return; - } - - setIsLoading(true); - setLoadingMessage("Reading..."); - let assistant_response = ""; - const controller = new AbortController(); - const signal = controller.signal; - const url = backendRootUri.current; - const response = await fetch(url + "/code", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ usecase: readmeContent, chatHistory: [] }), - signal: signal, - }); - if (!response.ok) { - setIsLoading(false); - throw new Error("Failed to fetch response"); - } - - const reader = response.body?.getReader(); - const decoder = new TextDecoder(); - let functions: any; - let buffer = ""; - while (true) { - const { done, value } = await reader.read(); - if (done) { - setIsLoading(false); - break; - } - - buffer += decoder.decode(value, { stream: true }); - - let boundary = buffer.indexOf("\n\n"); - while (boundary !== -1) { - const chunk = buffer.slice(0, boundary + 2); - buffer = buffer.slice(boundary + 2); - - try { - const event = parseSSEEvent(chunk); - if (event.event == "libraries") { - setLoadingMessage("Looking for libraries..."); - } else if (event.event == "functions") { - functions = event.body; - setLoadingMessage("Fetching functions..."); - } else if (event.event == "content_block_delta") { - let textDelta = event.body.text; - assistant_response += textDelta; - console.log(">>> Text Delta: " + textDelta); - setLoadingMessage("Generating components..."); - } else if (event.event == "message_stop") { - console.log(">>> Streaming stop: ", { responseText, assistant_response }); - setLoadingMessage("Verifying components..."); - console.log(assistant_response); - const newSourceFiles: ProjectSource = getProjectFromResponse(assistant_response); - // Check diagnostics - const diags: ProjectDiagnostics = await rpcClient - .getAiPanelRpcClient() - .getShadowDiagnostics(newSourceFiles); - if (diags.diagnostics.length > 0) { - console.log("Diagnostics : "); - console.log(diags.diagnostics); - const diagReq = { - response: assistant_response, - diagnostics: diags.diagnostics, - }; - const startTime = performance.now(); - const response = await fetch(url + "/code/repair", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - usecase: readmeContent, - diagnosticRequest: diagReq, - functions: functions, - }), - signal: signal, - }); - if (!response.ok) { - console.log("repair error"); - setIsLoading(false); - } else { - const jsonBody = await response.json(); - const repairResponse = jsonBody.repairResponse; - // replace original response with new code blocks - const fixedResponse = replaceCodeBlocks(assistant_response, repairResponse); - const endTime = performance.now(); - const executionTime = endTime - startTime; - console.log(`Repair call time: ${executionTime} milliseconds`); - assistant_response = fixedResponse; - } - } - setResponseText(assistant_response); - setIsLoading(false); - } else if (event.event == "error") { - console.log(">>> Streaming Error: " + event.body); - setIsLoading(false); - } - } catch (error) { - console.error("Failed to parse SSE event:", error); - } - - boundary = buffer.indexOf("\n\n"); - } - } - } - if (!projectStructure) { return ( diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/ServiceClassEditor/ServiceClassDesigner.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/ServiceClassEditor/ServiceClassDesigner.tsx index 359122803a7..f29f0508e34 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/ServiceClassEditor/ServiceClassDesigner.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/ServiceClassEditor/ServiceClassDesigner.tsx @@ -499,7 +499,7 @@ export function ServiceClassDesigner(props: ServiceClassDesignerProps) {
Class Variables - handleAddVariable()}> + handleAddVariable()}> Variable diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/BI/ServiceDesigner/Forms/ResourceForm/ResourceResponse/ResponseItem.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/BI/ServiceDesigner/Forms/ResourceForm/ResourceResponse/ResponseItem.tsx index 4245ae0c636..f23eeb96776 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/BI/ServiceDesigner/Forms/ResourceForm/ResourceResponse/ResponseItem.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/BI/ServiceDesigner/Forms/ResourceForm/ResourceResponse/ResponseItem.tsx @@ -70,7 +70,7 @@ export function ResponseItem(props: ParamItemProps) { className={readonly ? disabledHeaderLabel : headerLabelStyles} onClick={handleEdit} > - {response.type.value || response.body.value || "anydata"} + {response.name.value || response.body.value || response.type.value || "anydata"}
{!readonly && ( diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/DataMapper/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/DataMapper/index.tsx index 22352e2a5e2..f16c9e408f6 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/DataMapper/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/DataMapper/index.tsx @@ -20,11 +20,10 @@ import React, { useMemo } from "react"; import { DataMapperView } from "@wso2/data-mapper-view"; import { useRpcContext } from "@wso2/ballerina-rpc-client"; -import { STModification, HistoryEntry } from "@wso2/ballerina-core"; +import { STModification, HistoryEntry, EVENT_TYPE } from "@wso2/ballerina-core"; import { FunctionDefinition } from "@wso2/syntax-tree"; import { RecordEditor, StatementEditorComponentProps } from "@wso2/record-creator"; import { View } from "@wso2/ui-toolkit"; -import { URI, Utils } from "vscode-uri"; import { TopNavigationBar } from "../../components/TopNavigationBar"; import { FunctionForm } from "../BI"; @@ -55,7 +54,11 @@ export function DataMapper(props: DataMapperProps) { const goToFunction = async (entry: HistoryEntry) => { - rpcClient.getVisualizerRpcClient().addToHistory(entry); + const documentUri = entry?.location?.documentUri; + const position = entry?.location?.position; + rpcClient + .getVisualizerRpcClient() + .openView({ type: EVENT_TYPE.OPEN_VIEW, location: { documentUri, position } }); }; const applyRecordModifications = async (modifications: STModification[]) => { diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/GraphqlServiceEditor.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/GraphqlServiceEditor.tsx index bf66d5907f0..8b0b0e84715 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/GraphqlServiceEditor.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/GraphqlServiceEditor.tsx @@ -448,7 +448,7 @@ export function GraphqlServiceEditor(props: GraphqlServiceEditorProps) { Query - @@ -480,6 +480,7 @@ export function GraphqlServiceEditor(props: GraphqlServiceEditorProps) { appearance="icon" tooltip={"Add Field"} onClick={handleNewMutationOperation} + data-testid="graphql-add-mutation-btn" > @@ -512,6 +513,7 @@ export function GraphqlServiceEditor(props: GraphqlServiceEditorProps) { appearance="icon" tooltip={"Add Field"} onClick={handleNewSubscriptionOperation} + data-testid="graphql-add-subscription-btn" > diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/ObjectViewer/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/ObjectViewer/index.tsx index f4a2953f494..92dae494004 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/ObjectViewer/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/ObjectViewer/index.tsx @@ -267,9 +267,6 @@ export function GraphqlObjectViewer(props: GraphqlObjectViewerProps) { }); } - const serviceArtifact = artifacts.artifacts.find(artifact => artifact.name === serviceIdentifier); - // Update the state machine context to the updated service artifact - await rpcClient.getVisualizerRpcClient().openView({ type: EVENT_TYPE.UPDATE_PROJECT_LOCATION, location: { documentUri: serviceArtifact.path, position: serviceArtifact.position } }); if (isNew) { setIsNew(false); diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/OperationAccordian.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/OperationAccordian.tsx index 60cb4273a28..7797fca7ba0 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/OperationAccordian.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/OperationAccordian.tsx @@ -140,12 +140,12 @@ export function OperationAccordion(params: OperationAccordionProps) { <> {onEditFunction! && ( - + )} {onDeleteFunction! && ( - + )} diff --git a/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/index.tsx b/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/index.tsx index 4254e9428e1..5b14ae0156e 100644 --- a/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/index.tsx +++ b/workspaces/ballerina/ballerina-visualizer/src/views/GraphQLDiagram/index.tsx @@ -265,6 +265,7 @@ export function GraphQLDiagram(props: GraphQLDiagramProps) { {isServiceEditorOpen && ( (""); const [filteredCompletions, setFilteredCompletions] = useState([]); const expressionOffsetRef = useRef(0); // To track the expression offset on adding import statements + const [isUpdatingSource ,setIsUpdatingSource] = useState(false); // Keep track of previous inputs/outputs and sub mappings for comparison const prevSignatureRef = useRef(null); @@ -170,6 +172,12 @@ export function InlineDataMapperView(props: InlineDataMapperProps) { } }; + const updateExprFromExprBar = async (outputId: string, expression: string, viewId: string, name: string) => { + setIsUpdatingSource(true); + await updateExpression(outputId, expression, viewId, name); + setIsUpdatingSource(false); + } + const addArrayElement = async (outputId: string, viewId: string, name: string) => { try { const addElementRequest: AddArrayElementRequest = { @@ -231,13 +239,19 @@ export function InlineDataMapperView(props: InlineDataMapperProps) { ) } - const convertToQuery = async (outputId: string, viewId: string, name: string) => { + const convertToQuery = async (mapping: Mapping, clauseType: ResultClauseType, viewId: string, name: string) => { try { + const a = viewId.split("."); + const b = mapping.output.split("."); + const targetField = [...a, ...b.slice(1)].join("."); + console.log(">>> [Inline Data Mapper] targetField:", targetField); const convertToQueryRequest: ConvertToQueryRequest = { filePath, codedata: viewState.codedata, + mapping, + clauseType, varName: name, - targetField: outputId, + targetField: viewId, propertyKey: "expression" // TODO: Remove this once the API is updated }; const resp = await rpcClient @@ -256,7 +270,7 @@ export function InlineDataMapperView(props: InlineDataMapperProps) { filePath, codedata: { ...viewState.codedata, - isNew: true + isNew }, index, clause, @@ -386,9 +400,9 @@ export function InlineDataMapperView(props: InlineDataMapperProps) { expressionCompletions = completions .filter((completion) => { const lowerCaseText = currentContent.toLowerCase(); - const lowerCaseLabel = completion.label.toLowerCase(); + const lowerCaseLabel = completion.value.toLowerCase(); - return lowerCaseLabel.includes(lowerCaseText); + return lowerCaseLabel.startsWith(lowerCaseText); }) .sort((a, b) => a.sortText.localeCompare(b.sortText)); } else { @@ -433,15 +447,15 @@ export function InlineDataMapperView(props: InlineDataMapperProps) { expressionCompletions = convertedCompletions .filter((completion) => { const lowerCaseText = currentContent.toLowerCase(); - const lowerCaseLabel = completion.label.toLowerCase(); + const lowerCaseLabel = completion.value.toLowerCase(); - return lowerCaseLabel.includes(lowerCaseText); + return lowerCaseLabel.startsWith(lowerCaseText); }) .sort((a, b) => a.sortText.localeCompare(b.sortText)); } prevCompletionFetchText.current = parentContent ?? ""; - setFilteredCompletions(expressionCompletions); } + setFilteredCompletions(expressionCompletions); }, 150), [filePath, codedata, varName, completions] ); @@ -478,9 +492,10 @@ export function InlineDataMapperView(props: InlineDataMapperProps) { goToFunction={goToFunction} expressionBar={{ completions: filteredCompletions, + isUpdatingSource, triggerCompletions: retrieveCompeletions, onCompletionSelect: handleCompletionSelect, - onSave: updateExpression, + onSave: updateExprFromExprBar, onCancel: handleExpressionCancel, }} /> diff --git a/workspaces/ballerina/bi-diagram/src/components/AIModelIcon/index.tsx b/workspaces/ballerina/bi-diagram/src/components/AIModelIcon/index.tsx new file mode 100644 index 00000000000..9ab36410b4c --- /dev/null +++ b/workspaces/ballerina/bi-diagram/src/components/AIModelIcon/index.tsx @@ -0,0 +1,76 @@ +/** + * 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 { OpenAiIcon } from "../../resources/icons/OpenAiIcon"; +import DefaultLlmIcon from "../../resources/icons/DefaultLlmIcon"; +import { AzureOpenAiIcon } from "../../resources/icons/AzureOpenAiIcon"; +import DeepseekIcon from "../../resources/icons/DeepseekIcon"; +import { AnthropicIcon } from "../../resources/icons/AnthropicIcon"; +import { MistralAIIcon } from "../../resources/icons/MistralAIIcon"; +import { OllamaIcon } from "../../resources/icons/OllamaIcon"; +import { Icon } from "@wso2/ui-toolkit"; +import { CodeData } from "@wso2/ballerina-core"; + +interface AIModelIconProps { + type: string; + codedata?: CodeData; +} + +export function AIModelIcon(props: AIModelIconProps): React.ReactElement { + const { type, codedata } = props; + + if (codedata && isWso2Module(codedata)) { + return ; + } + + switch (type) { + case "OpenAiProvider": + case "ai.openai": + return ; + case "AzureOpenAiProvider": + case "ai.azure": + return ; + case "AnthropicProvider": + case "ai.anthropic": + return ; + case "OllamaProvider": + case "ai.ollama": + return ; + case "MistralAiProvider": + case "ai.mistral": + return ; + case "DeepseekProvider": + case "ai.deepseek": + return ; + default: + return ; + } +} + +export function isWso2Module(codedata: CodeData): boolean { + if (codedata?.module === "ai") { + if (["Wso2ModelProvider", "Wso2EmbeddingProvider"].includes(codedata.object)) { + return true; + } + if (["getDefaultModelProvider", "getDefaultEmbeddingProvider"].includes(codedata.symbol)) { + return true; + } + } + return false; +} diff --git a/workspaces/ballerina/bi-diagram/src/components/ConnectorIcon/index.tsx b/workspaces/ballerina/bi-diagram/src/components/ConnectorIcon/index.tsx index 8a9e951ee64..b89d190da31 100644 --- a/workspaces/ballerina/bi-diagram/src/components/ConnectorIcon/index.tsx +++ b/workspaces/ballerina/bi-diagram/src/components/ConnectorIcon/index.tsx @@ -16,45 +16,51 @@ * under the License. */ -import React, { CSSProperties, useState } from "react"; +import React, { CSSProperties } from "react"; import { Icon } from "@wso2/ui-toolkit"; import { ApiIcon } from "../../resources"; -import { getAIColor, ThemeListener } from "../NodeIcon"; +import OpenAiIcon from "../../resources/icons/OpenAiIcon"; +import AzureOpenAiIcon from "../../resources/icons/AzureOpenAiIcon"; +import AnthropicIcon from "../../resources/icons/AnthropicIcon"; +import OllamaIcon from "../../resources/icons/OllamaIcon"; +import MistralAIIcon from "../../resources/icons/MistralAIIcon"; +import DeepseekIcon from "../../resources/icons/DeepseekIcon"; +import DefaultLlmIcon from "../../resources/icons/DefaultLlmIcon"; +import { CodeData } from "@wso2/ballerina-core"; +import { isWso2Module } from "../AIModelIcon"; interface ConnectorIconProps { url?: string; fallbackIcon?: React.ReactNode; style?: CSSProperties; // Custom style for images className?: string; + codedata?: CodeData; } export function ConnectorIcon(props: ConnectorIconProps): React.ReactElement { - const { url, fallbackIcon, className, style } = props; + const { url, fallbackIcon, className, style, codedata } = props; const [imageError, setImageError] = React.useState(false); - const [themeAwareColor, setThemeAwareColor] = useState(getAIColor()); - - // Update color when theme changes - const handleThemeChange = () => { - setThemeAwareColor(getAIColor()); - }; // use custom icon for http if (url?.includes("ballerina_http_")) { return ; } + // use custom icon for ai model providers + const aiModules = ["ai.openai", "ai.azure", "ai.anthropic", "ai.ollama", "ai.mistral", "ai.deepseek"]; + if (aiModules.some((module) => url?.includes(module))) { + const selectedModule = aiModules.find((module) => url?.includes(module)); + return getLlmModelIcons(selectedModule); + } + + // use custom icon for wso2 module + if (codedata && isWso2Module(codedata)) { + return ; + } + // use custom icon for ai module - if (url?.includes("ballerinax_ai_")) { - return ( - <> - - - - ); + if (url?.includes("ballerinax_ai_") || url?.includes("ballerina_ai")) { + return ; } if (url && isValidUrl(url) && !imageError) { @@ -81,4 +87,33 @@ function isValidUrl(url: string): boolean { } } +// get llm model icons +// this should replace with CDN icons +export function getLlmModelIcons(modelType: string) { + switch (modelType) { + case "OpenAiProvider": + case "ai.openai": + return ; + case "AzureOpenAiProvider": + case "ai.azure": + return ; + case "AnthropicProvider": + case "ai.anthropic": + return ; + case "OllamaProvider": + case "ai.ollama": + return ; + case "MistralAiProvider": + case "ai.mistral": + return ; + case "DeepseekProvider": + case "ai.deepseek": + return ; + case "Wso2ModelProvider": + return ; + default: + return ; + } +} + export default ConnectorIcon; diff --git a/workspaces/ballerina/bi-diagram/src/components/Diagram.tsx b/workspaces/ballerina/bi-diagram/src/components/Diagram.tsx index 8980b261261..0f80ac52f87 100644 --- a/workspaces/ballerina/bi-diagram/src/components/Diagram.tsx +++ b/workspaces/ballerina/bi-diagram/src/components/Diagram.tsx @@ -62,12 +62,18 @@ export interface DiagramProps { agentNode?: { onModelSelect: (node: FlowNode) => void; onAddTool: (node: FlowNode) => void; + onAddMcpServer: (node: FlowNode) => void; onSelectTool: (tool: ToolData, node: FlowNode) => void; + onSelectMcpToolkit: (tool: ToolData, node: FlowNode) => void; onDeleteTool: (tool: ToolData, node: FlowNode) => void; goToTool: (tool: ToolData, node: FlowNode) => void; onSelectMemoryManager: (node: FlowNode) => void; onDeleteMemoryManager: (node: FlowNode) => void; }; + // ai nodes callbacks + aiNodes?: { + onModelSelect: (node: FlowNode) => void; + }; // ai suggestions callbacks suggestions?: { fetching: boolean; @@ -93,6 +99,7 @@ export function Diagram(props: DiagramProps) { goToSource, openView, agentNode, + aiNodes, suggestions, projectPath, addBreakpoint, @@ -125,7 +132,17 @@ export function Diagram(props: DiagramProps) { const getDiagramData = () => { let flowModel = cloneDeep(model); - const initVisitor = new InitVisitor(flowModel, expandedErrorHandler); + // Check if active breakpoint is within onFailure nodes and update expandedErrorHandler before running visitors + let currentExpandedErrorHandler = expandedErrorHandler; + if (breakpointInfo?.activeBreakpoint) { + const errorHandlerToExpand = getErrorHandlerIdForActiveBreakpoint(flowModel, breakpointInfo); + if (errorHandlerToExpand && expandedErrorHandler !== errorHandlerToExpand) { + currentExpandedErrorHandler = errorHandlerToExpand; + setExpandedErrorHandler(errorHandlerToExpand); + } + } + + const initVisitor = new InitVisitor(flowModel, currentExpandedErrorHandler); traverseFlow(flowModel, initVisitor); const sizingVisitor = new SizingVisitor(); traverseFlow(flowModel, sizingVisitor); @@ -147,6 +164,73 @@ export function Diagram(props: DiagramProps) { return { nodes, links }; }; + // Helper function to find error handlers with active breakpoints in onFailure branches + const getErrorHandlerIdForActiveBreakpoint = (flow: Flow, breakpointInfo: BreakpointInfo): string | undefined => { + if (!breakpointInfo.activeBreakpoint) { + return undefined; + } + + let errorHandlerIdToExpand: string | undefined; + const activeBreakpoint = breakpointInfo.activeBreakpoint; + + const checkNode = (node: FlowNode): void => { + if (node.codedata?.node === "ERROR_HANDLER") { + // Find the onFailure branch + const onFailureBranch = node.branches?.find((branch) => branch.codedata?.node === "ON_FAILURE"); + if (onFailureBranch) { + // Check if any child nodes in the onFailure branch match the active breakpoint + const hasActiveBreakpointInOnFailure = checkForActiveBreakpointInBranch(onFailureBranch, activeBreakpoint); + if (hasActiveBreakpointInOnFailure) { + errorHandlerIdToExpand = node.id; + return; + } + } + } + + // Recursively check child nodes + if (node.branches) { + for (const branch of node.branches) { + if (branch.children) { + for (const child of branch.children) { + checkNode(child); + if (errorHandlerIdToExpand) return; + } + } + } + } + }; + + const checkForActiveBreakpointInBranch = (branch: any, activeBreakpoint: any): boolean => { + if (branch.children) { + for (const child of branch.children) { + // Check if this node matches the active breakpoint + if (child.codedata?.lineRange?.startLine?.line === activeBreakpoint.line) { + return true; + } + // Recursively check nested branches + if (child.branches) { + for (const nestedBranch of child.branches) { + if (checkForActiveBreakpointInBranch(nestedBranch, activeBreakpoint)) { + return true; + } + } + } + } + } + return false; + }; + + // Start checking from the root nodes + if (flow.nodes) { + for (const child of flow.nodes) { + checkNode(child); + if (errorHandlerIdToExpand) break; + } + } + + return errorHandlerIdToExpand; + }; + const drawDiagram = (nodes: NodeModel[], links: NodeLinkModel[]) => { const newDiagramModel = new DiagramModel(); newDiagramModel.addLayer(new OverlayLayerModel()); @@ -222,6 +306,7 @@ export function Diagram(props: DiagramProps) { goToSource: goToSource, openView: openView, agentNode: agentNode, + aiNodes: aiNodes, suggestions: suggestions, projectPath: projectPath, readOnly: onAddNode === undefined || onDeleteNode === undefined || onNodeSelect === undefined || readOnly, diff --git a/workspaces/ballerina/bi-diagram/src/components/DiagramContext.tsx b/workspaces/ballerina/bi-diagram/src/components/DiagramContext.tsx index e09a1593aa8..7fefb902bf6 100644 --- a/workspaces/ballerina/bi-diagram/src/components/DiagramContext.tsx +++ b/workspaces/ballerina/bi-diagram/src/components/DiagramContext.tsx @@ -68,12 +68,17 @@ export interface DiagramContextState { agentNode: { onModelSelect: (node: FlowNode) => void; onAddTool: (node: FlowNode) => void; + onAddMcpServer: (node: FlowNode) => void; onSelectTool: (tool: ToolData, node: FlowNode) => void; + onSelectMcpToolkit: (tool: ToolData, node: FlowNode) => void; onDeleteTool: (tool: ToolData, node: FlowNode) => void; goToTool: (tool: ToolData, node: FlowNode) => void; onSelectMemoryManager: (node: FlowNode) => void; onDeleteMemoryManager: (node: FlowNode) => void; }; + aiNodes?: { + onModelSelect: (node: FlowNode) => void; + }; suggestions?: { fetching: boolean; onAccept(): void; @@ -109,12 +114,17 @@ export const DiagramContext = React.createContext({ agentNode: { onModelSelect: () => {}, onAddTool: () => {}, + onAddMcpServer: () => {}, onSelectTool: () => {}, + onSelectMcpToolkit: () => {}, onDeleteTool: () => {}, goToTool: () => {}, onSelectMemoryManager: () => {}, onDeleteMemoryManager: () => {}, }, + aiNodes: { + onModelSelect: () => {}, + }, suggestions: { fetching: false, onAccept: () => {}, diff --git a/workspaces/ballerina/bi-diagram/src/components/NodeIcon/index.tsx b/workspaces/ballerina/bi-diagram/src/components/NodeIcon/index.tsx index 2b9b60ee1d7..d4f122ee0dd 100644 --- a/workspaces/ballerina/bi-diagram/src/components/NodeIcon/index.tsx +++ b/workspaces/ballerina/bi-diagram/src/components/NodeIcon/index.tsx @@ -77,8 +77,20 @@ const NODE_COLOR_GROUPS = { ], // AI/NP function group - cyan variants - CYAN_FUNCTION_GROUP: ["AGENT_CALL", "NP_FUNCTION", "NP_FUNCTION_CALL"], - + CYAN_FUNCTION_GROUP: [ + "AGENT_CALL", + "NP_FUNCTION", + "NP_FUNCTION_CALL", + "MODEL_PROVIDER", + "MODEL_PROVIDERS", + "VECTOR_KNOWLEDGE_BASE", + "VECTOR_KNOWLEDGE_BASES", + "VECTOR_KNOWLEDGE_BASE_CALL", + "VECTOR_STORE", + "VECTOR_STORES", + "EMBEDDING_PROVIDER", + "EMBEDDING_PROVIDERS", + ], // Data related - magenta variants MAGENTA_DATA_GROUP: ["VARIABLE", "NEW_DATA", "UPDATE_DATA", "ASSIGN"], @@ -210,6 +222,15 @@ const NODE_ICONS: Record> = FAIL: ({ size, color }) => , RETRY: ({ size, color }) => , AGENT_CALL: ({ size, color }) => , + MODEL_PROVIDER: ({ size, color }) => , + MODEL_PROVIDERS: ({ size, color }) => , + VECTOR_KNOWLEDGE_BASE: ({ size, color }) => , + VECTOR_KNOWLEDGE_BASES: ({ size, color }) => , + VECTOR_KNOWLEDGE_BASE_CALL: ({ size, color }) => , + VECTOR_STORE: ({ size, color }) => , + VECTOR_STORES: ({ size, color }) => , + EMBEDDING_PROVIDER: ({ size, color }) => , + EMBEDDING_PROVIDERS: ({ size, color }) => , // Default case for any NodeKind not explicitly handled } as Record>; diff --git a/workspaces/ballerina/bi-diagram/src/components/NodeLink/NodeLinkModel.ts b/workspaces/ballerina/bi-diagram/src/components/NodeLink/NodeLinkModel.ts index 64b4a1dfd3d..dec612eed1a 100644 --- a/workspaces/ballerina/bi-diagram/src/components/NodeLink/NodeLinkModel.ts +++ b/workspaces/ballerina/bi-diagram/src/components/NodeLink/NodeLinkModel.ts @@ -201,7 +201,7 @@ export class NodeLinkModel extends DefaultLinkModel { if (isStraight) { // with label if (this.label) { - return { x: (source.x + target.x) / 2, y: (source.y + target.y) / 2 + 2 }; + return { x: (source.x + target.x) / 2, y: (source.y + target.y) / 2 + NODE_GAP_Y / 2 }; } // without label return { x: (source.x + target.x) / 2, y: (source.y + target.y) / 2 - 5 }; diff --git a/workspaces/ballerina/bi-diagram/src/components/NodeLink/NodeLinkWidget.tsx b/workspaces/ballerina/bi-diagram/src/components/NodeLink/NodeLinkWidget.tsx index 172d26a7aa7..ab27721d4a2 100644 --- a/workspaces/ballerina/bi-diagram/src/components/NodeLink/NodeLinkWidget.tsx +++ b/workspaces/ballerina/bi-diagram/src/components/NodeLink/NodeLinkWidget.tsx @@ -140,7 +140,7 @@ export const NodeLinkWidget: React.FC = ({ link, engine }) {link.label && ( diff --git a/workspaces/ballerina/bi-diagram/src/components/nodes/AgentCallNode/AgentCallNodeWidget.tsx b/workspaces/ballerina/bi-diagram/src/components/nodes/AgentCallNode/AgentCallNodeWidget.tsx index 74bbd8429d1..8f7f880a359 100644 --- a/workspaces/ballerina/bi-diagram/src/components/nodes/AgentCallNode/AgentCallNodeWidget.tsx +++ b/workspaces/ballerina/bi-diagram/src/components/nodes/AgentCallNode/AgentCallNodeWidget.tsx @@ -33,20 +33,11 @@ import { NODE_PADDING, NODE_WIDTH, } from "../../../resources/constants"; -import { Button, Icon, Item, Menu, MenuItem, Popover, ThemeColors, Tooltip } from "@wso2/ui-toolkit"; -import { - MoreVertIcon, - OpenAiIcon, - AzureOpenAiIcon, - AnthropicIcon, - OllamaIcon, - DefaultLlmIcon, - MistralAIIcon, - DeepseekIcon -} from "../../../resources/icons"; +import { Button, Icon, Item, Menu, MenuItem, Popover, ThemeColors } from "@wso2/ui-toolkit"; +import { MoreVertIcon } from "../../../resources/icons"; import { AgentData, FlowNode, ToolData } from "../../../utils/types"; import NodeIcon from "../../NodeIcon"; -import ConnectorIcon from "../../ConnectorIcon"; +import ConnectorIcon, { getLlmModelIcons } from "../../ConnectorIcon"; import { useDiagramContext } from "../../DiagramContext"; import { DiagnosticsPopUp } from "../../DiagnosticsPopUp"; import { nodeHasError } from "../../../utils/node"; @@ -364,9 +355,15 @@ export function AgentCallNodeWidget(props: AgentCallNodeWidgetProps) { }; const onToolClick = (tool: ToolData) => { - console.log(">>> onToolClick", tool); - agentNode?.onSelectTool && agentNode.onSelectTool(tool, model.node); - setAnchorEl(null); + console.log(">>> on Tool Click", tool); + const toolType = tool.type ?? ""; + if (toolType === "MCP Server") { + agentNode?.onSelectMcpToolkit && agentNode.onSelectMcpToolkit(tool, model.node); + setAnchorEl(null); + } else { + agentNode?.onSelectTool && agentNode.onSelectTool(tool, model.node); + setAnchorEl(null); + } }; const onAddToolClick = () => { @@ -375,6 +372,12 @@ export function AgentCallNodeWidget(props: AgentCallNodeWidgetProps) { setAnchorEl(null); }; + const onAddMcpServerClick = () => { + console.log(">>> onAddMcpServerClick", model.node); + agentNode?.onAddMcpServer && agentNode.onAddMcpServer(model.node); + setAnchorEl(null); + }; + const onGoToSource = () => { goToSource && goToSource(model.node); setAnchorEl(null); @@ -730,6 +733,7 @@ export function AgentCallNodeWidget(props: AgentCallNodeWidgetProps) { url={tool.path} style={{ width: 24, height: 24, fontSize: 24 }} fallbackIcon={} + codedata={model.node?.codedata} /> )} {!tool.path && } @@ -885,7 +889,7 @@ export function AgentCallNodeWidget(props: AgentCallNodeWidgetProps) { } `} > - Add new tool + Add new tool / MCP server - Add new tool + Add new tool / MCP server @@ -982,24 +986,3 @@ function sanitizeAgentData(data: AgentData) { } return data; } - -// get llm model icons -// this should replace with CDN icons -function getLlmModelIcons(modelType: string) { - switch (modelType) { - case "OpenAiProvider": - return ; - case "AzureOpenAiProvider": - return ; - case "AnthropicProvider": - return ; - case "OllamaProvider": - return ; - case "MistralAiProvider": - return ; - case "DeepseekProvider": - return ; - default: - return ; - } -} diff --git a/workspaces/ballerina/bi-diagram/src/components/nodes/ApiCallNode/ApiCallNodeWidget.tsx b/workspaces/ballerina/bi-diagram/src/components/nodes/ApiCallNode/ApiCallNodeWidget.tsx index f67a0285fb3..c857e43d58d 100644 --- a/workspaces/ballerina/bi-diagram/src/components/nodes/ApiCallNode/ApiCallNodeWidget.tsx +++ b/workspaces/ballerina/bi-diagram/src/components/nodes/ApiCallNode/ApiCallNodeWidget.tsx @@ -210,6 +210,8 @@ export function ApiCallNodeWidget(props: ApiCallNodeWidgetProps) { const isMenuOpen = Boolean(anchorEl); const hasBreakpoint = model.hasBreakpoint(); const isActiveBreakpoint = model.isActiveBreakpoint(); + // show dash line if the node is a class call + const isClassCall = model.node.codedata.node === "VECTOR_KNOWLEDGE_BASE_CALL"; useEffect(() => { if (model.node.suggested) { @@ -363,7 +365,7 @@ export function ApiCallNodeWidget(props: ApiCallNodeWidgetProps) { fill={ThemeColors.SURFACE_DIM} stroke={isCircleHovered && !disabled ? ThemeColors.HIGHLIGHT : ThemeColors.OUTLINE_VARIANT} strokeWidth={1.5} - strokeDasharray={disabled ? "5 5" : "none"} + strokeDasharray={disabled ? "5 5" : "none"} opacity={disabled ? 0.7 : 1} /> - + diff --git a/workspaces/ballerina/bi-diagram/src/components/nodes/BaseNode/BaseNodeWidget.tsx b/workspaces/ballerina/bi-diagram/src/components/nodes/BaseNode/BaseNodeWidget.tsx index e001c8057e4..e9f8c48f4f4 100644 --- a/workspaces/ballerina/bi-diagram/src/components/nodes/BaseNode/BaseNodeWidget.tsx +++ b/workspaces/ballerina/bi-diagram/src/components/nodes/BaseNode/BaseNodeWidget.tsx @@ -241,13 +241,14 @@ export function BaseNodeWidget(props: BaseNodeWidgetProps) { setMenuAnchorEl(null); }; - const openDataMapper = () => { + const openDataMapper = async () => { if (!model.node.properties?.view?.value) { return; } const { fileName, startLine, endLine } = model.node.properties.view.value as ELineRange; + const filePath = await rpcClient.getVisualizerRpcClient().joinProjectPath(fileName); openView && - openView(projectPath + "/" + fileName, { + openView(filePath, { startLine: startLine.line, startColumn: startLine.offset, endLine: endLine.line, @@ -255,13 +256,14 @@ export function BaseNodeWidget(props: BaseNodeWidgetProps) { }); }; - const viewFunction = () => { + const viewFunction = async () => { if (!model.node.properties?.view?.value) { return; } const { fileName, startLine, endLine } = model.node.properties.view.value as ELineRange; + const filePath = await rpcClient.getVisualizerRpcClient().joinProjectPath(fileName); openView && - openView(projectPath + "/" + fileName, { + openView(filePath, { startLine: startLine.line, startColumn: startLine.offset, endLine: endLine.line, diff --git a/workspaces/ballerina/bi-diagram/src/components/nodes/PromptNode/PromptNodeWidget.tsx b/workspaces/ballerina/bi-diagram/src/components/nodes/PromptNode/PromptNodeWidget.tsx index 8154180d53e..21178f6c3d1 100644 --- a/workspaces/ballerina/bi-diagram/src/components/nodes/PromptNode/PromptNodeWidget.tsx +++ b/workspaces/ballerina/bi-diagram/src/components/nodes/PromptNode/PromptNodeWidget.tsx @@ -21,7 +21,11 @@ import styled from "@emotion/styled"; import { DiagramEngine, PortWidget } from "@projectstorm/react-diagrams-core"; import { DRAFT_NODE_BORDER_WIDTH, + LABEL_HEIGHT, + LABEL_WIDTH, NODE_BORDER_WIDTH, + NODE_GAP_X, + NODE_HEIGHT, NODE_PADDING, PROMPT_NODE_HEIGHT, PROMPT_NODE_WIDTH, @@ -30,10 +34,11 @@ import { Button, CompletionItem, FormExpressionEditor, FormExpressionEditorRef, import NodeIcon from "../../NodeIcon"; import { useDiagramContext } from "../../DiagramContext"; import { PromptNodeModel } from "./PromptNodeModel"; -import { ELineRange, ExpressionProperty } from "@wso2/ballerina-core"; +import { ELineRange, ExpressionProperty, NodeMetadata } from "@wso2/ballerina-core"; import { DiagnosticsPopUp } from "../../DiagnosticsPopUp"; -import { getRawTemplate, nodeHasError } from "../../../utils/node"; +import { nodeHasError } from "../../../utils/node"; import { cloneDeep } from "lodash"; +import { getLlmModelIcons } from "../../ConnectorIcon"; export namespace NodeStyles { export type NodeStyleProp = { @@ -177,6 +182,13 @@ export namespace NodeStyles { align-items: center; gap: 8px; `; + + export const StyledCircle = styled.circle` + cursor: pointer; + &:hover { + stroke: ${ThemeColors.HIGHLIGHT}; + } + `; } const FETCH_COMPLETIONS_STATE = { @@ -192,7 +204,7 @@ export interface PromptNodeWidgetProps { engine: DiagramEngine; } -export interface NodeWidgetProps extends Omit {} +export interface NodeWidgetProps extends Omit { } export function PromptNodeWidget(props: PromptNodeWidgetProps) { const { model, engine } = props; @@ -201,7 +213,8 @@ export function PromptNodeWidget(props: PromptNodeWidgetProps) { goToSource, openView, onNodeSave, - expressionContext + expressionContext, + aiNodes, } = useDiagramContext(); const { completions, @@ -225,6 +238,7 @@ export function PromptNodeWidget(props: PromptNodeWidgetProps) { const fetchingStateRef = useRef(FETCH_COMPLETIONS_STATE.IDLE); const invalidateCacheRef = useRef(false); const field: ExpressionProperty = useMemo(() => model.node.properties['prompt'], [model]); + const nodeModelType = (model.node.properties?.modelProvider?.metadata?.data as NodeMetadata)?.module; const handleOnClick = async (event: React.MouseEvent) => { if (event.metaKey) { @@ -408,85 +422,169 @@ export function PromptNodeWidget(props: PromptNodeWidgetProps) { } } + const onModelEditClick = () => { + aiNodes?.onModelSelect(model.node); + }; + + return ( - setIsHovered(true)} - onMouseLeave={() => setIsHovered(false)} - > - {hasBreakpoint && ( -
- )} - - - - - +
+ setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + > + {hasBreakpoint && ( +
+ )} + - - Prompt - - - {hasError && } - - - {!editable && ( - - + + + + + Prompt + + + {hasError && } + + + {!editable && ( + + + + )} + + + + + + {editable && ( + + + + )} - - - - - {editable && ( - - - - - )} - - + + + + + {/* NP function model circle */} + + + + {getLlmModelIcons(nodeModelType)} + + + + + + + + + + + + + +
); } diff --git a/workspaces/ballerina/bi-diagram/src/index.tsx b/workspaces/ballerina/bi-diagram/src/index.tsx index 1b1e83f18ac..894ecf1306d 100644 --- a/workspaces/ballerina/bi-diagram/src/index.tsx +++ b/workspaces/ballerina/bi-diagram/src/index.tsx @@ -22,6 +22,7 @@ export { MemoizedDiagram } from "./components/Diagram"; // components export { NodeIcon } from "./components/NodeIcon"; export { ConnectorIcon } from "./components/ConnectorIcon"; +export { AIModelIcon } from "./components/AIModelIcon"; // types export type { FlowNodeStyle } from "./utils/types"; diff --git a/workspaces/ballerina/bi-diagram/src/visitors/BreakpointVisitor.ts b/workspaces/ballerina/bi-diagram/src/visitors/BreakpointVisitor.ts index 569d85077c1..d0d17b4d9cb 100644 --- a/workspaces/ballerina/bi-diagram/src/visitors/BreakpointVisitor.ts +++ b/workspaces/ballerina/bi-diagram/src/visitors/BreakpointVisitor.ts @@ -89,6 +89,10 @@ export class BreakpointVisitor implements BaseVisitor { this.setBreakpointData(node); } + beginVisitVectorKnowledgeBaseCall?(node: FlowNode, parent?: FlowNode): void { + this.setBreakpointData(node); + } + beginVisitReturn?(node: FlowNode, parent?: FlowNode): void { this.setBreakpointData(node); } diff --git a/workspaces/ballerina/bi-diagram/src/visitors/NodeFactoryVisitor.ts b/workspaces/ballerina/bi-diagram/src/visitors/NodeFactoryVisitor.ts index c8e0e7591e9..f668261fee7 100644 --- a/workspaces/ballerina/bi-diagram/src/visitors/NodeFactoryVisitor.ts +++ b/workspaces/ballerina/bi-diagram/src/visitors/NodeFactoryVisitor.ts @@ -467,7 +467,9 @@ export class NodeFactoryVisitor implements BaseVisitor { containerStartEmptyNode.setParentFlowNode(node); this.nodes.push(containerStartEmptyNode); - // this.updateNodeLinks(node, containerStartEmptyNode); + if (!node.viewState.isTopLevel) { + this.updateNodeLinks(node, containerStartEmptyNode); + } this.addSuggestionsButton(node); this.lastNodeModel = undefined; } @@ -608,6 +610,11 @@ export class NodeFactoryVisitor implements BaseVisitor { this.beginVisitRemoteActionCall(node, parent); } + beginVisitVectorKnowledgeBaseCall(node: FlowNode, parent?: FlowNode): void { + if (!this.validateNode(node)) return; + this.beginVisitRemoteActionCall(node, parent); + } + beginVisitAgentCall(node: FlowNode, parent?: FlowNode): void { if (!this.validateNode(node)) return; if (!node.id) { diff --git a/workspaces/ballerina/bi-diagram/src/visitors/PositionVisitor.ts b/workspaces/ballerina/bi-diagram/src/visitors/PositionVisitor.ts index 293b7df7d2f..74b8c422bc2 100644 --- a/workspaces/ballerina/bi-diagram/src/visitors/PositionVisitor.ts +++ b/workspaces/ballerina/bi-diagram/src/visitors/PositionVisitor.ts @@ -68,7 +68,7 @@ export class PositionVisitor implements BaseVisitor { beginVisitIf(node: FlowNode, parent?: FlowNode): void { if (!this.validateNode(node)) return; node.viewState.y = this.lastNodeY; - this.lastNodeY += node.viewState.h + (NODE_GAP_Y * 3) / 2; + this.lastNodeY += node.viewState.h + (NODE_GAP_Y * 4) / 2; const centerX = getTopNodeCenter(node, parent, this.diagramCenterX); node.viewState.x = centerX - node.viewState.lw; diff --git a/workspaces/ballerina/bi-diagram/src/visitors/SizingVisitor.ts b/workspaces/ballerina/bi-diagram/src/visitors/SizingVisitor.ts index 7d58631f355..8820204cd9a 100644 --- a/workspaces/ballerina/bi-diagram/src/visitors/SizingVisitor.ts +++ b/workspaces/ballerina/bi-diagram/src/visitors/SizingVisitor.ts @@ -240,6 +240,11 @@ export class SizingVisitor implements BaseVisitor { this.createApiCallNode(node); } + endVisitVectorKnowledgeBaseCall(node: FlowNode, parent?: FlowNode): void { + if (!this.validateNode(node)) return; + this.createApiCallNode(node); + } + endVisitAgentCall(node: FlowNode, parent?: FlowNode): void { if (!this.validateNode(node)) return; const nodeWidth = NODE_WIDTH; diff --git a/workspaces/ballerina/data-mapper-view/src/components/DataMapper/ConfigPanel/utils.ts b/workspaces/ballerina/data-mapper-view/src/components/DataMapper/ConfigPanel/utils.ts index 9aa941ee23a..f235b820193 100644 --- a/workspaces/ballerina/data-mapper-view/src/components/DataMapper/ConfigPanel/utils.ts +++ b/workspaces/ballerina/data-mapper-view/src/components/DataMapper/ConfigPanel/utils.ts @@ -105,7 +105,7 @@ function isSupportedType(node: STNode, return [false, TypeNature.TYPE_UNAVAILABLE]; } else if ((isUnionType || isOptionalType) && kind === 'output' && getUnsupportedTypesFromTypeDesc(node).length === 0) { return [true]; - } else if (isUnionType || isMapType || isOptionalType) { + } else if (isMapType) { return [false, TypeNature.YET_TO_SUPPORT]; } else if (isArrayType || isParenthesisedType) { return [getUnsupportedTypesFromTypeDesc(node).length === 0, TypeNature.BLACKLISTED] diff --git a/workspaces/ballerina/data-mapper-view/src/components/DataMapper/DataMapper.tsx b/workspaces/ballerina/data-mapper-view/src/components/DataMapper/DataMapper.tsx index 77be41ec5c9..7a9eb366d79 100644 --- a/workspaces/ballerina/data-mapper-view/src/components/DataMapper/DataMapper.tsx +++ b/workspaces/ballerina/data-mapper-view/src/components/DataMapper/DataMapper.tsx @@ -100,6 +100,18 @@ const classes = { position: 'absolute', left: '50%', transform: 'translateX(-50%)' + }), + errorBanner: css({ + borderColor: "var(--vscode-errorForeground)" + }), + errorMessage: css({ + zIndex: 1, + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: '500px', + animation: `${fadeIn} 0.5s ease-in-out` }) } diff --git a/workspaces/ballerina/data-mapper-view/src/components/Diagram/Label/ArrayMappingOptionsWidget.tsx b/workspaces/ballerina/data-mapper-view/src/components/Diagram/Label/ArrayMappingOptionsWidget.tsx index f7304d96e3a..8ff5483e5d5 100644 --- a/workspaces/ballerina/data-mapper-view/src/components/Diagram/Label/ArrayMappingOptionsWidget.tsx +++ b/workspaces/ballerina/data-mapper-view/src/components/Diagram/Label/ArrayMappingOptionsWidget.tsx @@ -68,13 +68,13 @@ export function ArrayMappingOptionsWidget(props: ArrayMappingOptionsWidgetProps) const targetPortHasLinks = Object.values(targetPort.links) ?.some(link => (link as DataMapperLinkModel)?.isActualLink); - const isValueModifiable = valueType === ValueType.Default - || (valueType === ValueType.NonEmpty && !targetPortHasLinks); + const isValueModifiable = valueType === ValueType.Replaceable + || (valueType === ValueType.Mergeable && !targetPortHasLinks); const onClickMapArrays = async () => { - if (valueType === ValueType.Default) { + if (valueType === ValueType.Replaceable) { await updateExistingValue(sourcePort, targetPort); - } else if (valueType === ValueType.NonEmpty) { + } else if (valueType === ValueType.Mergeable) { await modifySpecificFieldSource(sourcePort, targetPort, link.getID()); } else { await createSourceForMapping(sourcePort, targetPort); @@ -112,9 +112,9 @@ export function ArrayMappingOptionsWidget(props: ArrayMappingOptionsWidgetProps) const onClickMapArraysAccessSingleton = async () => { const newExpr = (sourcePort as RecordFieldPortModel).fieldFQN + genArrayElementAccessSuffix(sourcePort, targetPort); - if (valueType === ValueType.Default) { + if (valueType === ValueType.Replaceable) { await updateExistingValue(sourcePort, targetPort, newExpr); - } else if (valueType === ValueType.NonEmpty) { + } else if (valueType === ValueType.Mergeable) { await modifySpecificFieldSource(sourcePort, targetPort, link.getID(), newExpr); } else { await createSourceForMapping(sourcePort, targetPort, newExpr); diff --git a/workspaces/ballerina/data-mapper-view/src/components/Diagram/Label/IncompatibleMappingOprionsWidget.tsx b/workspaces/ballerina/data-mapper-view/src/components/Diagram/Label/IncompatibleMappingOprionsWidget.tsx index 304690d988b..1ab998a800d 100644 --- a/workspaces/ballerina/data-mapper-view/src/components/Diagram/Label/IncompatibleMappingOprionsWidget.tsx +++ b/workspaces/ballerina/data-mapper-view/src/components/Diagram/Label/IncompatibleMappingOprionsWidget.tsx @@ -67,9 +67,9 @@ export function IncompatibleMappingOprionsWidget(props: IncompatibleMappingOprio const valueType = getValueType(link); const onClickMapDirectly = async () => { - if (valueType === ValueType.Default) { + if (valueType === ValueType.Replaceable) { await updateExistingValue(sourcePort, targetPort); - } else if (valueType === ValueType.NonEmpty) { + } else if (valueType === ValueType.Mergeable) { await modifySpecificFieldSource(sourcePort, targetPort, link.getID()); } else { await createSourceForMapping(sourcePort, targetPort); diff --git a/workspaces/ballerina/data-mapper-view/src/components/Diagram/LinkState/CreateLinkState.ts b/workspaces/ballerina/data-mapper-view/src/components/Diagram/LinkState/CreateLinkState.ts index 84c6882362a..dfea60cfd12 100644 --- a/workspaces/ballerina/data-mapper-view/src/components/Diagram/LinkState/CreateLinkState.ts +++ b/workspaces/ballerina/data-mapper-view/src/components/Diagram/LinkState/CreateLinkState.ts @@ -79,6 +79,13 @@ export class CreateLinkState extends State { if (isLinkModel(element)) { element = (element as DataMapperLinkModel).getTargetPort(); + + if (element instanceof IntermediatePortModel) { + const parentNode = element.getNode(); + if (parentNode instanceof LinkConnectorNode) { + element = parentNode.targetMappedPort; + } + } } } diff --git a/workspaces/ballerina/data-mapper-view/src/components/Diagram/Node/FromClause/FromClauseNode.ts b/workspaces/ballerina/data-mapper-view/src/components/Diagram/Node/FromClause/FromClauseNode.ts index 5fdbfaa73aa..560d6e2f8f9 100644 --- a/workspaces/ballerina/data-mapper-view/src/components/Diagram/Node/FromClause/FromClauseNode.ts +++ b/workspaces/ballerina/data-mapper-view/src/components/Diagram/Node/FromClause/FromClauseNode.ts @@ -35,7 +35,8 @@ import { getFromClauseNodeLabel, getOptionalArrayField, getSearchFilteredInput, - getTypeFromStore + getTypeFromStore, + isOptionalAndNillableField } from "../../utils/dm-utils"; import { DataMapperNodeModel } from "../commons/DataMapperNode"; import { QueryExprMappingType } from "../QueryExpression"; @@ -128,6 +129,12 @@ export class FromClauseNode extends DataMapperNodeModel { parentPort.collapsed ); }); + } else { + const isOptional = isOptionalAndNillableField(this.typeDef); + this.numberOfFields += this.addPortsForInputRecordField( + this.typeDef, "OUT", this.nodeLabel, this.nodeLabel, + EXPANDED_QUERY_SOURCE_PORT_PREFIX, parentPort, this.context.collapsedFields, parentPort.collapsed, isOptional + ); } } } diff --git a/workspaces/ballerina/data-mapper-view/src/components/Diagram/Node/LinkConnector/LinkConnectorNode.ts b/workspaces/ballerina/data-mapper-view/src/components/Diagram/Node/LinkConnector/LinkConnectorNode.ts index 0a5ed2dde43..c1624bfe39f 100644 --- a/workspaces/ballerina/data-mapper-view/src/components/Diagram/Node/LinkConnector/LinkConnectorNode.ts +++ b/workspaces/ballerina/data-mapper-view/src/components/Diagram/Node/LinkConnector/LinkConnectorNode.ts @@ -114,11 +114,13 @@ export class LinkConnectorNode extends DataMapperNodeModel { const inputNode = getInputNodeExpr(field, this); if (inputNode) { const inputPort = getInputPortsForExpr(inputNode, field); - if (!this.sourcePorts.some(port => port.getID() === inputPort.getID())) { - this.sourcePorts.push(inputPort); - this.sourceValues[inputPort.getID()] = [field]; - } else { - this.sourceValues[inputPort.getID()].push(field); + if (inputPort) { + if (!this.sourcePorts.some(port => port.getID() === inputPort.getID())) { + this.sourcePorts.push(inputPort); + this.sourceValues[inputPort.getID()] = [field]; + } else { + this.sourceValues[inputPort.getID()].push(field); + } } } }) diff --git a/workspaces/ballerina/data-mapper-view/src/components/Diagram/Node/LinkConnector/LinkConnectorNodeWidget.tsx b/workspaces/ballerina/data-mapper-view/src/components/Diagram/Node/LinkConnector/LinkConnectorNodeWidget.tsx index d10f49fc20d..ea06525d5a3 100644 --- a/workspaces/ballerina/data-mapper-view/src/components/Diagram/Node/LinkConnector/LinkConnectorNodeWidget.tsx +++ b/workspaces/ballerina/data-mapper-view/src/components/Diagram/Node/LinkConnector/LinkConnectorNodeWidget.tsx @@ -49,7 +49,6 @@ export function LinkConnectorNodeWidget(props: LinkConnectorNodeWidgetProps) { const hasError = node.hasError(); const diagnostic = hasError ? node.diagnostics[0] : null; const fnDef = node.fnDefForFnCall; - const isTnfFunctionCall = fnDef && fnDef.isExprBodiedFn; const hasFieldAccessExpr = hasFieldAccessExpression(node.valueNode); const connectedViaCollectClause = context?.selection.selectedST?.mappingType && context.selection.selectedST.mappingType === QueryExprMappingType.A2SWithCollect; @@ -140,15 +139,15 @@ export function LinkConnectorNodeWidget(props: LinkConnectorNodeWidgetProps) {
- {isTnfFunctionCall ? ( + {fnDef ? ( ) : ( )} - {isTnfFunctionCall && ( + {fnDef && (
)} - {(expanded && !connectedViaLink && !elements?.length) && ( + {(expanded && !connectedViaLink && !elements?.length && arrayField) && ( { - const { isComplex, inputs, output, expression, diagnostics } = mapping; - if (isComplex || inputs.length !== 1) { + const { isComplex, isQueryExpression, isFunctionCall, inputs, output, expression, diagnostics } = mapping; + if (isComplex || isQueryExpression || isFunctionCall || inputs.length !== 1) { // Complex mappings are handled in the LinkConnectorNode return; } diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/ArrayOutput/ArrayOutputWidget.tsx b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/ArrayOutput/ArrayOutputWidget.tsx index b8a4a4da1fa..8bd89653785 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/ArrayOutput/ArrayOutputWidget.tsx +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/ArrayOutput/ArrayOutputWidget.tsx @@ -20,7 +20,7 @@ import React, { useState } from "react"; import { DiagramEngine } from '@projectstorm/react-diagrams'; import { Button, Codicon, ProgressRing, TruncatedLabel } from "@wso2/ui-toolkit"; -import { IOType } from '@wso2/ballerina-core'; +import { IOType, TypeKind } from '@wso2/ballerina-core'; import classnames from "classnames"; import { IDataMapperContext } from "../../../../utils/DataMapperContext/DataMapperContext"; @@ -28,7 +28,7 @@ import { DataMapperPortWidget, PortState, InputOutputPortModel } from '../../Por import { TreeBody, TreeContainer, TreeHeader } from '../commons/Tree/Tree'; import { ArrayOutputFieldWidget } from "./ArrayOuptutFieldWidget"; import { useIONodesStyles } from '../../../styles'; -import { useDMCollapsedFieldsStore, useDMIOConfigPanelStore } from "../../../../store/store"; +import { useDMCollapsedFieldsStore, useDMExpressionBarStore, useDMIOConfigPanelStore } from "../../../../store/store"; import { OutputSearchHighlight } from "../commons/Search"; import FieldActionWrapper from "../commons/FieldActionWrapper"; import { ValueConfigMenu, ValueConfigMenuItem, ValueConfigOption } from "../commons/ValueConfigButton"; @@ -63,6 +63,7 @@ export function ArrayOutputWidget(props: ArrayOutputWidgetProps) { const [isLoading, setLoading] = useState(false); const collapsedFieldsStore = useDMCollapsedFieldsStore(); + const setExprBarFocusedPort = useDMExpressionBarStore(state => state.setFocusedPort); const { setIsIOConfigPanelOpen, setIOConfigPanelType, setIsSchemaOverridden } = useDMIOConfigPanelStore( useShallow(state => ({ @@ -81,6 +82,7 @@ export function ArrayOutputWidget(props: ArrayOutputWidgetProps) { const isRootArray = context.views.length == 1; const portIn = getPort(`${id}.IN`); + const isUnknownType = outputType.kind === TypeKind.Unknown; let expanded = true; if ((portIn && portIn.attributes.collapsed)) { @@ -131,7 +133,7 @@ export function ArrayOutputWidget(props: ArrayOutputWidgetProps) { }; const handleEditValue = () => { - // TODO: Implement edit value + setExprBarFocusedPort(portIn); }; const onRightClick = (event: React.MouseEvent) => { @@ -148,7 +150,12 @@ export function ArrayOutputWidget(props: ArrayOutputWidgetProps) { {valueLabel} )} - + {typeName || ''} @@ -161,11 +168,10 @@ export function ArrayOutputWidget(props: ArrayOutputWidgetProps) { onClick: handleArrayInitialization }] : [ - // { - // title: ValueConfigOption.EditValue, - // onClick: handleEditValue - // } - // TODO: Add edit value option once the feature is implemented + { + title: ValueConfigOption.EditValue, + onClick: handleEditValue + } ]) ]; diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/ArrayOutput/OutputFieldPreviewWidget.tsx b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/ArrayOutput/OutputFieldPreviewWidget.tsx index 9f68e6d1ad3..6600aa8adb2 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/ArrayOutput/OutputFieldPreviewWidget.tsx +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/ArrayOutput/OutputFieldPreviewWidget.tsx @@ -63,7 +63,7 @@ export function OutputFieldPreviewWidget(props: OutputFieldPreviewWidgetProps) { let expanded = true; const typeName = getTypeName(field); - const typeKind = field.kind; + const typeKind = field?.kind; const isArray = typeKind === TypeKind.Array; const isRecord = typeKind === TypeKind.Record; @@ -75,10 +75,10 @@ export function OutputFieldPreviewWidget(props: OutputFieldPreviewWidgetProps) { let portName = updatedParentId !== '' ? fieldName !== '' ? `${updatedParentId}.${fieldName}` : updatedParentId : fieldName; const portIn = getPort(portName + ".IN"); - const fields = (isRecord && field.fields.filter(f => f !== null)) || (isArray && [field.member]); + const fields = (isRecord && field?.fields?.filter(f => f !== null)) || (isArray && [field?.member]); const handleExpand = () => { - if (field.kind === TypeKind.Array){ + if (field?.kind === TypeKind.Array){ const expandedFields = expandedFieldsStore.fields; if (expanded) { expandedFieldsStore.setFields(expandedFields.filter((element) => element !== portName)); @@ -183,20 +183,26 @@ export function OutputFieldPreviewWidget(props: OutputFieldPreviewWidgetProps) {
{fields && expanded && - fields.map((subField, index) => { - return ( - - ); - }) + fields + .filter((subField) => subField) + .map((subField, index) => { + const fieldKey = subField.variableName + ? `${portName}.${subField.variableName}` + : `${portName}.${index}`; + + return ( + + ); + }) } ); diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/Input/InputNode.ts b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/Input/InputNode.ts index e65cd59183f..8eefac80e4c 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/Input/InputNode.ts +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/Input/InputNode.ts @@ -54,7 +54,10 @@ export class InputNode extends DataMapperNodeModel { if (this.filteredInputType) { const collapsedFields = useDMCollapsedFieldsStore.getState().fields; const expandedFields = useDMExpandedFieldsStore.getState().fields; - const focusedFieldFQNs = this.context.model.query?.inputs || []; + const focusedFieldFQNs = [ + ...this.context.views.map(view => view.sourceField).filter(Boolean), + ...(this.context.model.query?.inputs || []) + ]; const parentPort = this.addPortsForHeader({ dmType: this.filteredInputType, name: this.identifier, @@ -66,7 +69,7 @@ export class InputNode extends DataMapperNodeModel { }); if (this.filteredInputType.kind === TypeKind.Record) { - const fields = this.filteredInputType.fields; + const fields = this.filteredInputType.fields?.filter(f => !!f); fields.forEach((subField) => { this.numberOfFields += this.addPortsForInputField({ field: subField, @@ -81,6 +84,41 @@ export class InputNode extends DataMapperNodeModel { focusedFieldFQNs }); }); + } else if (this.filteredInputType.kind === TypeKind.Enum) { + this.filteredInputType.members?.forEach(member => { + this.numberOfFields += this.addPortsForInputField({ + field: member, + portType: "OUT", + parentId: this.identifier, + unsafeParentId: this.identifier, + parent: parentPort, + collapsedFields, + expandedFields, + hidden: parentPort.attributes.collapsed, + isOptional: member?.optional, + focusedFieldFQNs + }); + }); + } else if (this.filteredInputType.kind === TypeKind.Array) { + const focusedMemberId = this.filteredInputType?.focusedMemberId; + if (focusedMemberId) { + const focusedMemberField = this.context.model.inputs.find(input => input.id === focusedMemberId); + if (focusedMemberField) { + this.filteredInputType.member = focusedMemberField; + } + } + this.numberOfFields += this.addPortsForInputField({ + field: this.filteredInputType?.member, + portType: "OUT", + parentId: this.identifier, + unsafeParentId: this.identifier, + parent: parentPort, + collapsedFields, + expandedFields, + hidden: parentPort.attributes.collapsed, + isOptional: this.filteredInputType?.member?.optional, + focusedFieldFQNs + }); } else { this.addPortsForInputField({ field: this.filteredInputType, diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/Input/InputNodeFactory.tsx b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/Input/InputNodeFactory.tsx index 0d7fa691443..4b7b308af75 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/Input/InputNodeFactory.tsx +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/Input/InputNodeFactory.tsx @@ -38,7 +38,12 @@ export class InputNodeFactory extends AbstractReactFactory ); - } else if (event.model.filteredInputType && event.model.filteredInputType.kind === TypeKind.Record) { + } else if (event.model.filteredInputType && + (event.model.filteredInputType.kind === TypeKind.Record || + event.model.filteredInputType.kind === TypeKind.Array || + event.model.filteredInputType.kind === TypeKind.Enum + ) + ) { return ( {fieldName} {dmType.optional && "?"} - {typeName && ( - + {typeName && !isEnumMember(portOut?.getParent() as InputNode) && ( + {typeName} )} @@ -158,7 +159,9 @@ export function InputNodeTreeItemWidget(props: InputNodeTreeItemWidgetProps) { )} {fields && expanded && - fields.map((subField, index) => { + fields + ?.filter(f => !!f) + .map((subField, index) => { return ( {valueLabel ? valueLabel : id} {typeName && ( - + {typeName} )} @@ -126,7 +127,7 @@ export function InputNodeWidget(props: InputNodeWidgetProps) { onMouseLeave={onMouseLeave} > - {hasFields && ( + {fields && ( )} diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/commons/DataMapperNode.ts b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/commons/DataMapperNode.ts index f12bdf9fde0..58ed518daf9 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/commons/DataMapperNode.ts +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Node/commons/DataMapperNode.ts @@ -41,6 +41,7 @@ interface InputPortAttributes { collapsed?: boolean; isOptional?: boolean; focusedFieldFQNs?: string[]; + isPreview?: boolean; }; interface OutputPortAttributes { @@ -110,10 +111,10 @@ export abstract class DataMapperNodeModel extends NodeModel !!f); if (fields && fields.length) { fields.forEach(subField => { numberOfFields += this.addPortsForInputField({ @@ -331,9 +332,9 @@ export abstract class DataMapperNodeModel extends NodeModel input.id === focusedMemberId); if (focusedMemberField) { @@ -344,22 +345,22 @@ export abstract class DataMapperNodeModel extends NodeModel f !== null); + const fields = attributes.field?.fields?.filter(f => !!f); if (fields && fields.length) { fields.forEach((subField) => { this.addPortsForOutputField({ @@ -377,7 +378,7 @@ export abstract class DataMapperNodeModel extends NodeModel { this.addPortsForOutputField({ ...attributes, - field: attributes.field.member, + field: attributes.field?.member, mappings: element.mappings, elementIndex: index }); @@ -385,7 +386,7 @@ export abstract class DataMapperNodeModel extends NodeModel { setPortState(state) @@ -56,7 +57,7 @@ export function PrimitiveTypeInputWidget(props: PrimitiveTypeItemWidgetProps) { {typeName && ":"} {typeName && ( - + {typeName} )} diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Port/model/InputOutputPortModel.ts b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Port/model/InputOutputPortModel.ts index 2604f0fcd06..84492494a73 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Port/model/InputOutputPortModel.ts +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/Port/model/InputOutputPortModel.ts @@ -30,9 +30,9 @@ export interface InputOutputPortModelGenerics { export const INPUT_OUTPUT_PORT = "input-output-port"; export enum ValueType { - Default, Empty, - NonEmpty + Mergeable, + Replaceable, } export interface PortAttributes { diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/common-utils.ts b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/common-utils.ts index 9ade8a125bb..64b1a86e343 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/common-utils.ts +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/common-utils.ts @@ -37,20 +37,43 @@ import { IDataMapperContext } from "../../../utils/DataMapperContext/DataMapperC import { View } from "../../../components/DataMapper/Views/DataMapperView"; import { useDMExpandedFieldsStore } from "../../../store/store"; +const MERGEABLE_TYPES = new Set([ + TypeKind.String, + TypeKind.Int, + TypeKind.Float, + TypeKind.Decimal, + "anydata", + "any" +]); + export function findMappingByOutput(mappings: Mapping[], outputId: string): Mapping { return mappings.find(mapping => (mapping.output === outputId || mapping.output.replaceAll("\"", "") === outputId)); } -export function getMappingType(sourcePort: PortModel, targetPort: PortModel): MappingType { +export function isPendingMappingRequired(mappingType: MappingType): boolean { + return mappingType === MappingType.Incompatible; +} - if (sourcePort instanceof InputOutputPortModel - && targetPort instanceof InputOutputPortModel - && targetPort.attributes.field && sourcePort.attributes.field) { +export function getMappingType(sourcePort: PortModel, targetPort: PortModel): MappingType { - const sourceField = sourcePort.attributes.field; - const targetField = targetPort.attributes.field; + if (sourcePort instanceof InputOutputPortModel && + targetPort instanceof InputOutputPortModel && + targetPort.attributes.field && + sourcePort.attributes.field + ) { if (targetPort.getParent() instanceof PrimitiveOutputNode) return MappingType.ArrayToSingletonWithCollect; + + const sourceNode = sourcePort.getNode(); + + let sourceField = sourcePort.attributes.field; + if (sourceNode instanceof InputNode + && sourceNode.filteredInputType?.kind === TypeKind.Enum + ) { + sourceField = sourceNode.filteredInputType; + } + + const targetField = targetPort.attributes.field; const sourceDim = getDMTypeDim(sourceField); const targetDim = getDMTypeDim(targetField); @@ -61,9 +84,10 @@ export function getMappingType(sourcePort: PortModel, targetPort: PortModel): Ma if (dimDelta > 0) return MappingType.ArrayToSingleton; } - if ((sourceField.kind !== targetField.kind) - || (sourceField.typeName !== targetField.typeName) - || sourceField.typeName === "record") { + if (sourceField.kind !== targetField.kind || + sourceField.typeName !== targetField.typeName || + sourceField.typeName === TypeKind.Record + ) { return MappingType.Incompatible; } @@ -73,20 +97,27 @@ export function getMappingType(sourcePort: PortModel, targetPort: PortModel): Ma } export function getValueType(lm: DataMapperLinkModel): ValueType { - const { attributes: { field, value } } = lm.getTargetPort() as InputOutputPortModel; + const { attributes: { field, value } } = lm.getTargetPort() as InputOutputPortModel; - if (value !== undefined) { - return isDefaultValue(field, value.expression) ? ValueType.Default : ValueType.NonEmpty; - } + if (value !== undefined) { + const isDefault = isDefaultValue(field, value.expression); + if (isDefault) { + return ValueType.Replaceable; + } else { + return isMergeable(field.kind) + ? ValueType.Mergeable + : ValueType.Replaceable; + } + } - return ValueType.Empty; + return ValueType.Empty; } - -export function isPendingMappingRequired(mappingType: MappingType): boolean { - return false; // TODO: Implement logic when LS supports on the fly mappings +export function isMergeable(typeName: string): boolean { + return MERGEABLE_TYPES.has(typeName); } + export function genArrayElementAccessSuffix(sourcePort: PortModel, targetPort: PortModel) { if (sourcePort instanceof InputOutputPortModel && targetPort instanceof InputOutputPortModel) { let suffix = ''; @@ -102,9 +133,23 @@ export function genArrayElementAccessSuffix(sourcePort: PortModel, targetPort: P }; export function isDefaultValue(field: IOType, value: string): boolean { - const defaultValue = getDefaultValue(field.kind); + // For numeric types, compare the parsed values instead of string comparison + if (field?.kind === TypeKind.Int || + field?.kind === TypeKind.Float || + field?.kind === TypeKind.Decimal + ) { + + // Clean the value by removing suffixes like 'f' for floats and 'd' for decimals + const cleanValue = value?.trim().replace(/[fd]$/i, ''); + const numericValue = parseFloat(cleanValue); + + // Check if it's a valid number and equals 0 + return !isNaN(numericValue) && numericValue === 0; + } + + const defaultValue = getDefaultValue(field?.kind); const targetValue = value?.trim().replace(/(\r\n|\n|\r|\s)/g, "") - return targetValue === "null" || defaultValue === targetValue; + return targetValue === "null" || targetValue === "()" || defaultValue === targetValue; } export function getDefaultValue(typeKind: TypeKind): string { @@ -215,3 +260,13 @@ export function handleExpand(id: string, expanded: boolean) { useDMExpandedFieldsStore.getState().setFields([...expandedFields, id]); } } + +export function isExpandable(field: IOType): boolean { + return field?.kind === TypeKind.Record || + field?.kind === TypeKind.Array || + field?.kind === TypeKind.Enum; +} + +export function getTargetField(viewId: string, outputId: string){ + return [...viewId.split("."), ...outputId.split(".").slice(1)].join("."); +} diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/diagram-utils.ts b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/diagram-utils.ts index b4504fa67f7..1a8ae09c65a 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/diagram-utils.ts +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/diagram-utils.ts @@ -75,7 +75,7 @@ export function getFieldCountMismatchIndex(newFieldCounts: FieldCount[], existin const newNode = newFieldCounts[i]; const existingNode = existingFieldCounts[i]; - if (newNode.numberOfFields !== existingNode.numberOfFields) { + if (newNode.numberOfFields !== existingNode?.numberOfFields) { return i; } } diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/link-utils.ts b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/link-utils.ts index 501537d7a39..f0d23ca8422 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/link-utils.ts +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/link-utils.ts @@ -24,7 +24,7 @@ import { DataMapperLinkModel, MappingType } from "../Link"; export function isSourcePortArray(port: PortModel): boolean { if (port instanceof InputOutputPortModel) { const field = port.attributes.field; - return field.kind === TypeKind.Array; + return field?.kind === TypeKind.Array; } return false; } @@ -32,7 +32,7 @@ export function isSourcePortArray(port: PortModel): boolean { export function isTargetPortArray(port: PortModel): boolean { if (port instanceof InputOutputPortModel) { const field = port.attributes.field; - return field.kind === TypeKind.Array; + return field?.kind === TypeKind.Array; } return false; } diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/modification-utils.ts b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/modification-utils.ts index e747c41133f..644034af987 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/modification-utils.ts +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/modification-utils.ts @@ -17,14 +17,16 @@ */ import { DataMapperLinkModel } from "../Link"; import { DataMapperNodeModel } from "../Node/commons/DataMapperNode"; -import { InputOutputPortModel } from "../Port"; +import { InputOutputPortModel, ValueType } from "../Port"; import { IDataMapperContext } from "../../../utils/DataMapperContext/DataMapperContext"; import { MappingFindingVisitor } from "../../../visitors/MappingFindingVisitor"; import { traverseNode } from "../../../utils/model-utils"; -import { getDefaultValue } from "./common-utils"; -import { CustomFnMetadata, CustomFnParams, Mapping } from "@wso2/ballerina-core"; +import { getTargetField, getValueType } from "./common-utils"; +import { CustomFnMetadata, CustomFnParams, Mapping, ResultClauseType } from "@wso2/ballerina-core"; +import { getTypeName, isEnumMember } from "./type-utils"; +import { InputNode } from "../Node/Input/InputNode"; -export async function createNewMapping(link: DataMapperLinkModel) { +export async function createNewMapping(link: DataMapperLinkModel, modifier?: (expr: string) => string) { const sourcePort = link.getSourcePort(); const targetPort = link.getTargetPort(); if (!sourcePort || !targetPort) { @@ -36,7 +38,11 @@ export async function createNewMapping(link: DataMapperLinkModel) { const targetNode = outputPortModel.getNode() as DataMapperNodeModel; - const input = sourcePortModel.attributes.optionalOmittedFieldFQN; + const isSourceEnumMember = isEnumMember(sourcePortModel.getNode() as InputNode); + + const input = isSourceEnumMember + ? sourcePortModel.attributes.field?.typeName + : sourcePortModel.attributes.optionalOmittedFieldFQN; const outputId = outputPortModel.attributes.fieldFQN; const lastView = targetNode.context.views[targetNode.context.views.length - 1]; const viewId = lastView?.targetField || null; @@ -48,10 +54,14 @@ export async function createNewMapping(link: DataMapperLinkModel) { traverseNode(model, mappingFindingVisitor); const targetMapping = mappingFindingVisitor.getTargetMapping(); - let expression = input; + let expression = modifier ? modifier(input) : input; + + if (targetMapping) { + const valueType = getValueType(link); - if (targetMapping && targetMapping.expression.trim() !== getDefaultValue(outputPortModel.attributes.field.kind)) { - expression = `${targetMapping.expression} + ${input}`; + if (valueType === ValueType.Mergeable) { + expression = `${targetMapping.expression} + ${expression}`; + } } return await applyModifications(outputId, expression, viewId, name); @@ -95,14 +105,14 @@ export async function mapWithCustomFn(link: DataMapperLinkModel, context: IDataM const outputField = outputPortModel.attributes.field; const inputParams: CustomFnParams[] = [{ name: inputField.variableName, - type: inputField.typeName.replace("record", "any"), + type: getTypeName(inputField).replace("record", "any"), isOptional: false, isNullable: false, kind: inputField.kind }]; const metadata: CustomFnMetadata = { - returnType: outputField.typeName.replace("record", "any"), + returnType: getTypeName(outputField).replace("record", "any"), parameters: inputParams } @@ -110,6 +120,31 @@ export async function mapWithCustomFn(link: DataMapperLinkModel, context: IDataM } +export async function mapWithQuery(link: DataMapperLinkModel, clauseType: ResultClauseType, context: IDataMapperContext) { + const sourcePort = link.getSourcePort(); + const targetPort = link.getTargetPort(); + if (!sourcePort || !targetPort) { + return; + } + + const sourcePortModel = sourcePort as InputOutputPortModel; + const outputPortModel = targetPort as InputOutputPortModel; + + const input = sourcePortModel.attributes.optionalOmittedFieldFQN; + const outputId = outputPortModel.attributes.fieldFQN; + const lastView = context.views[context.views.length - 1]; + const viewId = lastView?.targetField || null; + const name = context.views[0]?.targetField; + + const mapping: Mapping = { + output: "OUTPUT",// TODO: Remove this once the API is updated, currently output is embedded in to targetField + expression: input + }; + const targetField = getTargetField(viewId, outputId); // TODO: Remove this once the API is updated + + await context?.convertToQuery(mapping, clauseType, targetField, name); +} + export function buildInputAccessExpr(fieldFqn: string): string { // Regular expression to match either quoted strings or non-quoted strings with dots const regex = /"([^"]+)"|'([^"]+)'|([^".]+)/g; diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/node-utils.ts b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/node-utils.ts index 5068344c636..464895f4f01 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/node-utils.ts +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/node-utils.ts @@ -16,17 +16,30 @@ * under the License. */ import { DataMapperNodeModel } from "../Node/commons/DataMapperNode"; -import { InputNode } from "../Node"; +import { InputNode, SubMappingNode } from "../Node"; export function findInputNode(field: string, outputNode: DataMapperNodeModel, focusedField?: string): InputNode { const nodes = outputNode.getModel().getNodes(); - const mappingStartsWith = (focusedField || field).split('.')[0]; + + // Helper function to find input node by field path + const findNodeByField = (fieldPath: string): InputNode | undefined => { + const mappingStartsWith = fieldPath.split('.')[0]; + return nodes.find(node => { + if (node instanceof InputNode) { + return node.inputType.id === mappingStartsWith; + } else if (node instanceof SubMappingNode) { + return node.subMappings.some(subMapping => subMapping.name === mappingStartsWith); + } + }) as InputNode | undefined; + }; - const inputNode = nodes.find(node => { - if (node instanceof InputNode) { - return node.inputType.id === mappingStartsWith; - } - }); + // try finding input node using 'field' (map from other input ports) + let inputNode = findNodeByField(field); + + // if not found and focusedField exists, try with focusedField (map from focused input port) + if (!inputNode && focusedField) { + inputNode = findNodeByField(focusedField); + } - return inputNode ? inputNode as InputNode : undefined; + return inputNode; } diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/port-utils.ts b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/port-utils.ts index 12b4f52e881..53e8a9e8186 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/port-utils.ts +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/port-utils.ts @@ -17,14 +17,17 @@ */ import { NodeModel } from "@projectstorm/react-diagrams"; -import { InputNode, ObjectOutputNode, QueryOutputNode } from "../Node"; +import { InputNode, ObjectOutputNode, QueryOutputNode, SubMappingNode } from "../Node"; import { InputOutputPortModel } from "../Port"; -import { ARRAY_OUTPUT_TARGET_PORT_PREFIX, OBJECT_OUTPUT_TARGET_PORT_PREFIX, PRIMITIVE_OUTPUT_TARGET_PORT_PREFIX, QUERY_OUTPUT_TARGET_PORT_PREFIX } from "./constants"; +import { ARRAY_OUTPUT_TARGET_PORT_PREFIX, OBJECT_OUTPUT_TARGET_PORT_PREFIX, PRIMITIVE_OUTPUT_TARGET_PORT_PREFIX, QUERY_OUTPUT_TARGET_PORT_PREFIX, SUB_MAPPING_INPUT_SOURCE_PORT_PREFIX } from "./constants"; import { ArrayOutputNode } from "../Node/ArrayOutput/ArrayOutputNode"; import { PrimitiveOutputNode } from "../Node/PrimitiveOutput/PrimitiveOutputNode"; export function getInputPort(node: InputNode, inputField: string): InputOutputPortModel { - let port = node.getPort(`${inputField}.OUT`) as InputOutputPortModel; + const portId = node instanceof SubMappingNode + ? `${SUB_MAPPING_INPUT_SOURCE_PORT_PREFIX}.${inputField}.OUT` + : `${inputField}.OUT`; + let port = node.getPort(portId) as InputOutputPortModel; while (port && port.attributes.hidden) { port = port.attributes.parentModel; diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/search-utils.ts b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/search-utils.ts index 06c9b33de57..0ce40389419 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/search-utils.ts +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/search-utils.ts @@ -79,35 +79,35 @@ export const getFilteredSubFields = (field: IOType, searchValue: string) => { return field; } - if (field.kind === TypeKind.Record) { - const matchedSubFields: IOType[] = field.fields + if (field?.kind === TypeKind.Record) { + const matchedSubFields: IOType[] = field?.fields ?.map((fieldItem) => getFilteredSubFields(fieldItem, searchValue)) .filter((fieldItem): fieldItem is IOType => fieldItem !== null); - const matchingName = field.variableName?.toLowerCase().includes(searchValue.toLowerCase()); + const matchingName = field?.variableName?.toLowerCase().includes(searchValue.toLowerCase()); if (matchingName || matchedSubFields?.length > 0) { return { ...field, - fields: matchingName ? field.fields : matchedSubFields + fields: matchingName ? field?.fields : matchedSubFields } } - } else if (field.kind === TypeKind.Array) { - const matchedSubFields: IOType[] = field.member?.fields + } else if (field?.kind === TypeKind.Array) { + const matchedSubFields: IOType[] = field?.member?.fields ?.map((fieldItem) => getFilteredSubFields(fieldItem, searchValue)) .filter((fieldItem): fieldItem is IOType => fieldItem !== null); - const matchingName = field.variableName?.toLowerCase().includes(searchValue.toLowerCase()); + const matchingName = field?.variableName?.toLowerCase().includes(searchValue.toLowerCase()); if (matchingName || matchedSubFields?.length > 0) { return { ...field, memberType: { - ...field.member, - fields: matchingName ? field.member?.fields : matchedSubFields + ...field?.member, + fields: matchingName ? field?.member?.fields : matchedSubFields } } } } else { - return field.variableName?.toLowerCase()?.includes(searchValue.toLowerCase()) ? field : null + return field?.variableName?.toLowerCase()?.includes(searchValue.toLowerCase()) ? field : null } return null; diff --git a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/type-utils.ts b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/type-utils.ts index fc787f4c4d5..c9093257396 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/type-utils.ts +++ b/workspaces/ballerina/inline-data-mapper/src/components/Diagram/utils/type-utils.ts @@ -16,17 +16,22 @@ * under the License. */ import { IOType, TypeKind } from "@wso2/ballerina-core"; +import { InputNode } from "../Node/Input/InputNode"; export function getTypeName(fieldType: IOType): string { if (!fieldType) { return ''; - } + } else if (fieldType.kind === TypeKind.Enum) { + return "Enum"; + } else if (fieldType.kind === TypeKind.Unknown) { + return "Unknown Type"; + } let typeName = fieldType?.typeName || fieldType.kind; - - if (fieldType.kind === TypeKind.Array && fieldType.member) { - typeName = `${getTypeName(fieldType.member)}[]`; - } + + if (fieldType.moduleInfo?.moduleName) { + typeName = `${fieldType.moduleInfo.moduleName}:${typeName}`; + } return typeName; } @@ -40,3 +45,10 @@ export function getDMTypeDim(fieldType: IOType) { } return dim; } + +export function isEnumMember(parent: InputNode): boolean { + if (!parent) { + return false; + } + return parent.filteredInputType.kind === TypeKind.Enum; +} diff --git a/workspaces/ballerina/inline-data-mapper/src/components/styles.ts b/workspaces/ballerina/inline-data-mapper/src/components/styles.ts index fc33b5472c6..5c74ec1f9cc 100644 --- a/workspaces/ballerina/inline-data-mapper/src/components/styles.ts +++ b/workspaces/ballerina/inline-data-mapper/src/components/styles.ts @@ -64,6 +64,10 @@ export const useIONodesStyles = () => ({ typeLabel: css({ ...typeLabel }), + unknownTypeLabel: css({ + ...typeLabel, + color: "var(--vscode-errorForeground)", + }), valueLabel: css({ ...valueLabel }), @@ -228,18 +232,9 @@ export const useIONodesStyles = () => ({ }), addSubMappingButton: css({ "& > vscode-button": { - ...addElementButton, - width: `${IO_NODE_DEFAULT_WIDTH}px`, height: "40px", - border: "1px solid var(--vscode-welcomePage-tileBorder)", - color: "var(--button-primary-foreground)", - opacity: 0.7, - backgroundColor: "var(--vscode-button-secondaryBackground)", - borderRadius: "0px", - textTransform: "none", - "&:hover": { - backgroundColor: "var(--vscode-button-secondaryHoverBackground)" - }, + width: `${IO_NODE_DEFAULT_WIDTH}px`, + border: "none", }, "& > vscode-button > *": { margin: "0px 6px" diff --git a/workspaces/ballerina/inline-data-mapper/src/index.tsx b/workspaces/ballerina/inline-data-mapper/src/index.tsx index 2cb3ffa5a7a..78f3e8a6f97 100644 --- a/workspaces/ballerina/inline-data-mapper/src/index.tsx +++ b/workspaces/ballerina/inline-data-mapper/src/index.tsx @@ -24,7 +24,7 @@ import type {} from "@projectstorm/react-diagrams-core"; import type {} from "@projectstorm/react-diagrams"; import { css, Global } from '@emotion/react'; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -import { IDMFormProps, ModelState, IntermediateClause, Mapping, CodeData, CustomFnMetadata, LineRange } from "@wso2/ballerina-core"; +import { IDMFormProps, ModelState, IntermediateClause, Mapping, CodeData, CustomFnMetadata, LineRange, ResultClauseType } from "@wso2/ballerina-core"; import { CompletionItem, ErrorBoundary } from "@wso2/ui-toolkit"; import { InlineDataMapper } from "./components/DataMapper/DataMapper"; @@ -51,6 +51,7 @@ const globalStyles = css` export interface ExpressionBarProps { completions: CompletionItem[]; + isUpdatingSource?: boolean; triggerCompletions: (outputId: string, viewId: string, value: string, cursorPosition?: number) => void; onCompletionSelect: (value: string) => void; onSave: (outputId: string, value: string, viewId: string, name: string) => Promise; @@ -63,7 +64,7 @@ export interface InlineDataMapperProps { applyModifications: (outputId: string, expression: string, viewId: string, name: string) => Promise; addArrayElement: (outputId: string, viewId: string, name: string) => Promise; generateForm: (formProps: IDMFormProps) => JSX.Element; - convertToQuery: (outputId: string, viewId: string, name: string) => Promise; + convertToQuery: (mapping: Mapping, clauseType: ResultClauseType, viewId: string, name: string) => Promise; addClauses: (clause: IntermediateClause, targetField: string, isNew: boolean, index?:number) => Promise; addSubMapping: (subMappingName: string, type: string, index: number, targetField: string, importsCodedata?: CodeData) => Promise; deleteMapping: (mapping: Mapping, viewId: string) => Promise; diff --git a/workspaces/ballerina/inline-data-mapper/src/utils/DataMapperContext/DataMapperContext.ts b/workspaces/ballerina/inline-data-mapper/src/utils/DataMapperContext/DataMapperContext.ts index 13fdced54e5..1e1ecda2271 100644 --- a/workspaces/ballerina/inline-data-mapper/src/utils/DataMapperContext/DataMapperContext.ts +++ b/workspaces/ballerina/inline-data-mapper/src/utils/DataMapperContext/DataMapperContext.ts @@ -15,7 +15,7 @@ * specific language governing permissions and limitations * under the License. */ -import { CustomFnMetadata, ExpandedDMModel, LineRange, Mapping } from "@wso2/ballerina-core"; +import { CustomFnMetadata, ExpandedDMModel, LineRange, Mapping, ResultClauseType } from "@wso2/ballerina-core"; import { View } from "../../components/DataMapper/Views/DataMapperView"; export interface IDataMapperContext { @@ -25,7 +25,7 @@ export interface IDataMapperContext { applyModifications: (outputId: string, expression: string, viewId: string, name: string) => Promise; addArrayElement: (outputId: string, viewId: string, name: string) => Promise; hasInputsOutputsChanged: boolean; - convertToQuery: (outputId: string, viewId: string, name: string) => Promise; + convertToQuery: (mapping: Mapping, clauseType: ResultClauseType, viewId: string, name: string) => Promise; deleteMapping: (mapping: Mapping, viewId: string) => Promise; mapWithCustomFn: (mapping: Mapping, metadata: CustomFnMetadata, viewId: string) => Promise; goToFunction: (functionRange: LineRange) => Promise; @@ -40,7 +40,7 @@ export class DataMapperContext implements IDataMapperContext { public applyModifications: (outputId: string, expression: string, viewId: string, name: string) => Promise, public addArrayElement: (outputId: string, viewId: string, name: string) => Promise, public hasInputsOutputsChanged: boolean = false, - public convertToQuery: (outputId: string, viewId: string, name: string) => Promise, + public convertToQuery: (mapping: Mapping, clauseType: ResultClauseType, viewId: string, name: string) => Promise, public deleteMapping: (mapping: Mapping, viewId: string) => Promise, public mapWithCustomFn: (mapping: Mapping, metadata: CustomFnMetadata, viewId: string) => Promise, public goToFunction: (functionRange: LineRange) => Promise diff --git a/workspaces/ballerina/inline-data-mapper/src/visitors/IONodeInitVisitor.ts b/workspaces/ballerina/inline-data-mapper/src/visitors/IONodeInitVisitor.ts index d2d37003797..239e25f7e8d 100644 --- a/workspaces/ballerina/inline-data-mapper/src/visitors/IONodeInitVisitor.ts +++ b/workspaces/ballerina/inline-data-mapper/src/visitors/IONodeInitVisitor.ts @@ -39,14 +39,12 @@ export class IONodeInitVisitor implements BaseVisitor { beginVisitOutputType(node: IOType, parent?: ExpandedDMModel): void { // Create output node - if (node.kind === TypeKind.Record) { + if (parent?.query) { + this.outputNode = new QueryOutputNode(this.context, node); + } else if (node.kind === TypeKind.Record) { this.outputNode = new ObjectOutputNode(this.context, node); } else if (node.kind === TypeKind.Array) { - if (parent?.query) { - this.outputNode = new QueryOutputNode(this.context, node); - } else { - this.outputNode = new ArrayOutputNode(this.context, node); - } + this.outputNode = new ArrayOutputNode(this.context, node); } else { this.outputNode = new PrimitiveOutputNode(this.context, node); } @@ -60,4 +58,15 @@ export class IONodeInitVisitor implements BaseVisitor { } return [...this.inputNodes, this.outputNode]; } + + getInputNodes() { + if (this.inputNodes.length === 0) { + this.inputNodes.push(new EmptyInputsNode()); + } + return this.inputNodes; + } + + getOutputNode() { + return this.outputNode; + } } diff --git a/workspaces/ballerina/type-diagram/src/components/entity-relationship/EntityNode/EntityWidget.tsx b/workspaces/ballerina/type-diagram/src/components/entity-relationship/EntityNode/EntityWidget.tsx index b8d857f7863..5355d9ba434 100644 --- a/workspaces/ballerina/type-diagram/src/components/entity-relationship/EntityNode/EntityWidget.tsx +++ b/workspaces/ballerina/type-diagram/src/components/entity-relationship/EntityNode/EntityWidget.tsx @@ -107,7 +107,7 @@ export function EntityWidget(props: EntityWidgetProps) { if (!hasAnyOperations) { return ( - + Create Operations diff --git a/workspaces/bi/bi-extension/CHANGELOG.md b/workspaces/bi/bi-extension/CHANGELOG.md index 13ebd3ff85c..a65e0f449e4 100644 --- a/workspaces/bi/bi-extension/CHANGELOG.md +++ b/workspaces/bi/bi-extension/CHANGELOG.md @@ -1,5 +1,43 @@ # Change log +## **1.2.1** (2025-08-13) + +### Fixed + +- Resolved issues affecting Inline Data Mapper functionality and flow diagram rendering + + +## **1.2.0** (2025-07-29) + +### Major Updates + +- **Enhanced Inline Data Mapper:** Redesigned for improved user experience with AI-driven mapping suggestions and a sub-mapping form. +- **AI Copilot & RAG Workflows:** Upgraded AI Copilot now uses ballerina/ai packages, with low-code support added for advanced RAG workflows. + +### Added + +- **AI Capabilities:** + - Support for Anthropic's Claude Sonnet v4 for code generation. + - Added Vector Knowledge Base node for RAG workflows. + - Configuration options for default AI model providers in the Flow Diagram. +- **Editor & IDE Features:** + - New VSCode setting to manage the visibility of the Sequence Diagram. + - Option to include the current organization in search results. + +### Changes + +- **Data Mapper:** Improved search, label positioning, and performance. Now refreshes automatically when code changes. +- **AI & Copilot:** Streamlined flows for user-friendliness and enhanced agent capabilities with new packages. +- **UI/UX:** Refined diagram rendering and title components for a more responsive interface. + +### Fixed + +- **Data Mapper:** Corrected rendering issues and various bugs in mapping generation and type resolution. +- **AI & Copilot:** Resolved re-rendering bugs and authentication flow issues. +- **Configuration:** Fixed issues with Config.toml management and fast-run command failures. +- **IDE Stability:** Addressed UI freezing, improved state management, and enhanced project handling in multi-root workspaces. + + ## **1.1.0** (2025-07-14) ### Major Features diff --git a/workspaces/bi/bi-extension/package.json b/workspaces/bi/bi-extension/package.json index 5dea0196d3e..097604bf7ab 100644 --- a/workspaces/bi/bi-extension/package.json +++ b/workspaces/bi/bi-extension/package.json @@ -2,7 +2,7 @@ "name": "ballerina-integrator", "displayName": "WSO2 Integrator: BI", "description": "An extension which gives a development environment for designing, developing, debugging, and testing integration solutions.", - "version": "1.1.1", + "version": "1.2.1", "publisher": "wso2", "icon": "resources/images/wso2-ballerina-integrator-logo.png", "repository": { diff --git a/workspaces/bi/bi-extension/src/project-explorer/project-explorer-provider.ts b/workspaces/bi/bi-extension/src/project-explorer/project-explorer-provider.ts index 4eb396051c6..759c6ac10e4 100644 --- a/workspaces/bi/bi-extension/src/project-explorer/project-explorer-provider.ts +++ b/workspaces/bi/bi-extension/src/project-explorer/project-explorer-provider.ts @@ -277,7 +277,7 @@ function getEntriesBI(components: ProjectStructureResponse): ProjectExplorerEntr // ---------- Configurations ---------- const configs = new ProjectExplorerEntry( "Configurations", - vscode.TreeItemCollapsibleState.Expanded, + vscode.TreeItemCollapsibleState.None, null, 'config', false diff --git a/workspaces/bi/bi-extension/src/test/e2e-playwright-tests/api-services/graphql-service.spec.ts b/workspaces/bi/bi-extension/src/test/e2e-playwright-tests/api-services/graphql-service.spec.ts index 7a16af4f38d..a6d3be13f64 100644 --- a/workspaces/bi/bi-extension/src/test/e2e-playwright-tests/api-services/graphql-service.spec.ts +++ b/workspaces/bi/bi-extension/src/test/e2e-playwright-tests/api-services/graphql-service.spec.ts @@ -15,46 +15,47 @@ * specific language governing permissions and limitations * under the License. */ -import { test } from '@playwright/test'; +import { Frame, test } from '@playwright/test'; import { addArtifact, initTest, page } from '../utils'; import { Form, switchToIFrame } from '@wso2/playwright-vscode-tester'; import { ProjectExplorer } from '../ProjectExplorer'; +import { TEST_DATA, GraphQLServiceUtils} from './graphqlUtils'; +import { TypeEditorUtils } from '../type/TypeEditorUtils'; export default function createTests() { test.describe('GraphQL Service Tests', { tag: '@group1', }, async () => { initTest(); + + // Global utility instances for all tests + let graphqlServiceUtils: GraphQLServiceUtils; + let typeEditorUtils: TypeEditorUtils; + let artifactWebView: Frame; + + // Setup utilities before each test + test.beforeEach(async () => { + artifactWebView = await switchToIFrame('WSO2 Integrator: BI', page.page); + if (!artifactWebView) { + throw new Error('WSO2 Integrator: BI webview not found'); + } + graphqlServiceUtils = new GraphQLServiceUtils(page.page, artifactWebView); + typeEditorUtils = new TypeEditorUtils(page.page, artifactWebView); + }); + test('Create GraphQL Service', async ({ }, testInfo) => { const testAttempt = testInfo.retry + 1; console.log('Creating a new service in test attempt: ', testAttempt); // Creating a HTTP Service await addArtifact('GraphQL Service', 'graphql-service-card'); - const artifactWebView = await switchToIFrame('WSO2 Integrator: BI', page.page); - if (!artifactWebView) { - throw new Error('WSO2 Integrator: BI webview not found'); - } - const sampleName = `/sample${testAttempt}`; const form = new Form(page.page, 'WSO2 Integrator: BI', artifactWebView); await form.switchToFormView(false, artifactWebView); - await form.fill({ - values: { - 'Service Base Path*': { - type: 'input', - value: sampleName, - } - } - }); await form.submit('Create'); // Check if the type diagram canvas is visible const typeDiagram = artifactWebView.locator('[data-testid="type-diagram"]'); await typeDiagram.waitFor(); - // Check if the service name is visible - const context = artifactWebView.locator(`text=${sampleName}`).first(); - await context.waitFor(); - // Check if the AI Chat Agent is created in the project explorer const projectExplorer = new ProjectExplorer(page.page); await projectExplorer.findItem(['sample', `GraphQL Service`], true); @@ -68,16 +69,12 @@ export default function createTests() { test('Editing GraphQL Service', async ({ }, testInfo) => { const testAttempt = testInfo.retry + 1; console.log('Editing a service in test attempt: ', testAttempt); - const artifactWebView = await switchToIFrame('WSO2 Integrator: BI', page.page); - if (!artifactWebView) { - throw new Error('WSO2 Integrator: BI webview not found'); - } const editBtn = artifactWebView.locator('[data-testid="edit-service-btn"]'); await editBtn.waitFor(); await editBtn.click({ force: true }); const form = new Form(page.page, 'WSO2 Integrator: BI', artifactWebView); await form.switchToFormView(false, artifactWebView); - const sampleName = `/editedSample${testAttempt}`; + const sampleName = TEST_DATA.editedBasePath(testAttempt); await form.fill({ values: { 'Service Base Path*': { @@ -90,11 +87,68 @@ export default function createTests() { // Check if the type diagram canvas is visible const typeDiagram = artifactWebView.locator('[data-testid="type-diagram"]'); - await typeDiagram.waitFor({ state: 'visible', timeout: 30000 }); + await typeEditorUtils.waitForElement(typeDiagram); // Check if the service name is visible const context = artifactWebView.locator(`text=${sampleName}`).first(); await context.waitFor(); }); + + test('Create Operations in GraphQL Service', async ({ }, testInfo) => { + const testAttempt = testInfo.retry + 1; + console.log('Creating operations in test attempt: ', testAttempt); + + await graphqlServiceUtils.clickButtonByTestId('create-operation-button'); + await graphqlServiceUtils.addGraphQLOperation('query', TEST_DATA.query.name, TEST_DATA.query.fieldType); + await graphqlServiceUtils.addGraphQLOperation('mutation', TEST_DATA.mutation[0].name, TEST_DATA.mutation[0].fieldType); + await graphqlServiceUtils.addGraphQLOperation('subscription', TEST_DATA.subscription.name, TEST_DATA.subscription.fieldType); + }); + + test('Add types and arguments to GraphQL Service', async ({ }, testInfo) => { + const testAttempt = testInfo.retry + 1; + console.log('Adding types and arguments in test attempt: ', testAttempt); + + await graphqlServiceUtils.clickButtonByTestId('graphql-add-mutation-btn'); + await graphqlServiceUtils.addArgumentToGraphQLService(); + await graphqlServiceUtils.createInputObjectFromScratch(); + await graphqlServiceUtils.addOutputObject(); + + await artifactWebView.getByRole('textbox', { name: 'Field Name*The name of the' }).fill(TEST_DATA.mutation[1].name); + await artifactWebView.getByRole('button', { name: 'Save' }).click(); + await graphqlServiceUtils.closePanel(); + + const outputName = TEST_DATA.mutation[1].outputType; + await typeEditorUtils.verifyTypeLink(TEST_DATA.editedBasePath(testAttempt), TEST_DATA.mutation[1].name, outputName); + await typeEditorUtils.verifyTypeNodeExists(outputName); + await graphqlServiceUtils.addFunction("function1", "string"); + }); + + test('Edit and Delete Operations in GraphQL Service', async ({ }, testInfo) => { + const testAttempt = testInfo.retry + 1; + console.log('Adding types and arguments in test attempt: ', testAttempt); + + const editedBasePath = TEST_DATA.editedBasePath(testAttempt); + await artifactWebView.getByTestId(`type-node-${editedBasePath}`).getByText(`${editedBasePath}`).click({ force: true }); + const editButton = await artifactWebView.getByTestId(`edit-button-${TEST_DATA.mutation[0].name}`); + await editButton.click(); + + // Fill mutation name + const mutationNameInput = artifactWebView.getByRole('textbox', { name: 'Mutation Name*The name of the mutation' }); + await typeEditorUtils.waitForElement(mutationNameInput); + await mutationNameInput.fill(TEST_DATA.mutation[0].editedName); + await artifactWebView.getByRole('button', { name: 'Save' }).click(); + + // Delete the mutation + await artifactWebView.getByTestId(`delete-button-${TEST_DATA.mutation[0].editedName}`).click(); + await artifactWebView.getByRole('button', { name: 'Okay' }).click(); + }); + + test('Navigate to respective flow diagram', async ({ }, testInfo) => { + await artifactWebView.getByTestId('side-panel').getByText(TEST_DATA.mutation[1].name).click(); + await artifactWebView.getByTestId('link-add-button-undefined').click(); + await artifactWebView.getByText('Return').click(); + await artifactWebView.getByRole('textbox', { name: 'Expression' }).fill(TEST_DATA.mutation[1].expression); + await artifactWebView.getByRole('button', { name: 'Save' }).click(); + }); }); } diff --git a/workspaces/bi/bi-extension/src/test/e2e-playwright-tests/api-services/graphqlUtils.ts b/workspaces/bi/bi-extension/src/test/e2e-playwright-tests/api-services/graphqlUtils.ts new file mode 100644 index 00000000000..ee4751ae9d8 --- /dev/null +++ b/workspaces/bi/bi-extension/src/test/e2e-playwright-tests/api-services/graphqlUtils.ts @@ -0,0 +1,187 @@ +/** + * 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 { Frame,Page } from '@playwright/test'; +import { TypeEditorUtils } from '../type/TypeEditorUtils'; +import { Form } from '@wso2/playwright-vscode-tester'; + +// Centralized test data for all GraphQL service E2E tests +export const TEST_DATA = { + editedBasePath: (attempt: number) => `/editedSample${attempt}`, + query: { + name: 'query1', + fieldType: 'string', + }, + mutation: [{ + name: 'mutation1', + editedName: 'editedMutation1', + fieldType: 'boolean', + },{ + name: 'mutation2', + fieldType: 'float', + expression: '"Hello World!"', + arguments: [ + { name: 'arg1', type: 'string' }, + { name: 'arg2', type: 'mytype1' }, + ], + outputType: 'outputtype1', + }], + subscription: { + name: 'subscription1', + fieldType: 'float', + }, +}; + +export class GraphQLServiceUtils { + /** + * Constructor for GraphQLServiceUtils + * @param webView - The Playwright frame/locator for the webview + */ + constructor(private page: Page, private webView: Frame) {} + + async addGraphQLOperation(operationType: string, name: string, fieldType: string) { + const addBtnTestId = `graphql-add-${operationType}-btn`; + await this.webView.getByTestId(addBtnTestId).waitFor({ state: 'visible', timeout: 10000 }); + const addBtn = this.webView.getByTestId(addBtnTestId); + await addBtn.click(); + + await this.setSidePanel({ + fieldName: { value: name, label: 'Field Name' }, + fieldType: { value: fieldType, label: 'Field Type' } + }); + } + + async addFunction(name: string, returnType: string) { + const outputType = TEST_DATA.mutation[1].outputType; + await this.webView.getByTestId(`type-node-${outputType}`).getByText(`${outputType}`).click(); + await this.webView.getByRole('button', { name: '   Implement' }).click(); + await this.webView.getByTestId('add-variable-button').click({ force: true }); + await this.setSidePanel({ + fieldName: { value: TEST_DATA.mutation[1].arguments[0].name, label: 'Variable Name' }, + fieldType: { value: TEST_DATA.mutation[1].arguments[0].type, label: 'Variable Type' } + }); + await this.webView.getByTestId('back-button').click(); + } + + private async setSidePanel(params: { + fieldName: { value: string; label: string }; + fieldType: { value: string; label: string }; + }) { + const { fieldName, fieldType } = params; + + const fieldNameBox = this.webView.getByRole('textbox', { name: fieldName.label }); + await this.waitForElement(fieldNameBox); + await fieldNameBox.fill(fieldName.value); + + const fieldTypeBox = this.webView.getByRole('textbox', { name: fieldType.label }); + await this.waitForElement(fieldTypeBox); + await fieldTypeBox.fill(fieldType.value); + + // Wait a short moment to allow UI to register the value + await this.page.waitForTimeout(10000); + const fieldDefaultCompletion = this.webView.getByTestId('add-type-completion'); + await this.waitForElement(fieldDefaultCompletion); + + // TODO: https://github.com/wso2/product-ballerina-integrator/issues/917 + if (await fieldDefaultCompletion.isVisible()) { + await fieldTypeBox.press('Escape'); + } + + const saveBtn = this.webView.getByRole('button', { name: 'Save' }); + await this.waitForElement(saveBtn); + await saveBtn.click(); + await this.page.waitForTimeout(2000); + await this.page.waitForLoadState('domcontentloaded'); + } + + async clickButtonByTestId(testId: string) { + const button = this.webView.getByTestId(testId); + await this.waitForElement(button); + await button.click(); + } + + async addOutputObject() { + const createFromScratchTab = this.webView.getByTestId('create-from-scratch-tab'); + await this.webView.getByRole('textbox', { name: 'Field Type' }).click(); + await this.webView.getByText('Create New Type').click(); + + const form = new Form(this.page, 'WSO2 Integrator: BI', this.webView); + await form.switchToFormView(false, this.webView); + await form.fill({ + values: { + 'Name': { + type: 'input', + value: TEST_DATA.mutation[1].outputType, + }, + 'Kind': { + type: 'dropdown', + value: 'Object', + } + } + }); + const typeEditorUtils = new TypeEditorUtils(this.page, this.webView); + await typeEditorUtils.addFunction("function1", "string"); + await this.webView.getByTestId('type-create-save').getByRole('button', { name: 'Save' }).click(); + } + + async createInputObjectFromScratch() { + const form = new Form(this.page, 'WSO2 Integrator: BI', this.webView); + await this.webView.getByText('Add Argument').click(); + await this.webView.getByRole('textbox', { name: 'Argument Type' }).click(); + await this.webView.getByText('Create New Type').click(); + await form.fill({ + values: { + 'Name': { + type: 'input', + value: TEST_DATA.mutation[1].arguments[1].type, + }, + 'Kind': { + type: 'dropdown', + value: 'Input Object', + } + } + }); + + await this.webView.getByTestId('type-create-save').getByRole('button', { name: 'Save' }).click(); + await this.webView.getByRole('textbox', { name: 'Argument Name*The name of the' }).fill(TEST_DATA.mutation[1].arguments[1].name); + await this.webView.getByRole('button', { name: 'Add' }).click(); + } + + async addArgumentToGraphQLService() { + await this.webView.getByText('Add Argument').click(); + await this.webView.getByRole('textbox', { name: 'Argument Type' }).click(); + await this.webView.getByTitle('string', { exact: true }).click(); + await this.webView.getByRole('textbox', { name: 'Argument Name*The name of the' }).fill(TEST_DATA.mutation[1].arguments[0].name); + await this.webView.getByRole('button', { name: 'Add' }).click(); + } + + async waitForElement(locator: any, timeout = 10000) { + await locator.waitFor({ state: 'visible', timeout }); + } + + async closePanel() { + await this.page.waitForTimeout(2000); + const closeButton = this.webView.getByTestId('close-panel-btn'); + await this.waitForElement(closeButton); + + await closeButton.click({ force: true }); + await closeButton.waitFor({ + state: 'detached', + timeout: 10000 + }); + } +} diff --git a/workspaces/bi/bi-extension/src/test/e2e-playwright-tests/utils.ts b/workspaces/bi/bi-extension/src/test/e2e-playwright-tests/utils.ts index 40593e4a954..519f6c2840f 100644 --- a/workspaces/bi/bi-extension/src/test/e2e-playwright-tests/utils.ts +++ b/workspaces/bi/bi-extension/src/test/e2e-playwright-tests/utils.ts @@ -32,7 +32,7 @@ async function initVSCode() { if (vscode && page) { await page.executePaletteCommand('Reload Window'); } else { - vscode = await startVSCode(resourcesFolder, vscodeVersion, undefined, false, extensionsFolder, newProjectPath); + vscode = await startVSCode(resourcesFolder, vscodeVersion, undefined, false, extensionsFolder, newProjectPath, 'bi-test-profile'); } page = new ExtendedPage(await vscode!.firstWindow({ timeout: 60000 })); } @@ -42,7 +42,7 @@ async function resumeVSCode() { await page.executePaletteCommand('Reload Window'); } else { console.log('Starting VSCode'); - vscode = await startVSCode(resourcesFolder, vscodeVersion, undefined, false, extensionsFolder, path.join(newProjectPath, 'testProject')); + vscode = await startVSCode(resourcesFolder, vscodeVersion, undefined, false, extensionsFolder, path.join(newProjectPath, 'testProject'), 'bi-test-profile'); await new Promise(resolve => setTimeout(resolve, 5000)); } page = new ExtendedPage(await vscode!.firstWindow({ timeout: 60000 })); diff --git a/workspaces/common-libs/font-wso2-vscode/src/icons/bi-ai-model.svg b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-ai-model.svg new file mode 100644 index 00000000000..5739f878d3c --- /dev/null +++ b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-ai-model.svg @@ -0,0 +1,25 @@ + + + + + + + diff --git a/workspaces/common-libs/font-wso2-vscode/src/icons/bi-brain.svg b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-brain.svg new file mode 100644 index 00000000000..35fbdeb0e09 --- /dev/null +++ b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-brain.svg @@ -0,0 +1,21 @@ + + + + diff --git a/workspaces/common-libs/font-wso2-vscode/src/icons/bi-cut.svg b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-cut.svg new file mode 100644 index 00000000000..fe220901cde --- /dev/null +++ b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-cut.svg @@ -0,0 +1,21 @@ + + + + diff --git a/workspaces/common-libs/font-wso2-vscode/src/icons/bi-db-kb.svg b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-db-kb.svg new file mode 100644 index 00000000000..763d8e64c00 --- /dev/null +++ b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-db-kb.svg @@ -0,0 +1,22 @@ + + + + diff --git a/workspaces/common-libs/font-wso2-vscode/src/icons/bi-db.svg b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-db.svg new file mode 100644 index 00000000000..7dbd75707ca --- /dev/null +++ b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-db.svg @@ -0,0 +1,21 @@ + + + + diff --git a/workspaces/common-libs/font-wso2-vscode/src/icons/bi-doc.svg b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-doc.svg new file mode 100644 index 00000000000..cbb8b3ae3a5 --- /dev/null +++ b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-doc.svg @@ -0,0 +1,21 @@ + + + + diff --git a/workspaces/common-libs/font-wso2-vscode/src/icons/bi-mcp.svg b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-mcp.svg new file mode 100644 index 00000000000..30d986f0493 --- /dev/null +++ b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-mcp.svg @@ -0,0 +1,22 @@ + + + + diff --git a/workspaces/common-libs/font-wso2-vscode/src/icons/bi-wso2.svg b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-wso2.svg new file mode 100644 index 00000000000..45a09cd07bc --- /dev/null +++ b/workspaces/common-libs/font-wso2-vscode/src/icons/bi-wso2.svg @@ -0,0 +1,70 @@ + + + + + + + + + diff --git a/workspaces/common-libs/playwright-vscode-tester/src/browser.ts b/workspaces/common-libs/playwright-vscode-tester/src/browser.ts index 459d75319a5..b375dc0d1e9 100644 --- a/workspaces/common-libs/playwright-vscode-tester/src/browser.ts +++ b/workspaces/common-libs/playwright-vscode-tester/src/browser.ts @@ -14,14 +14,16 @@ export class VSBrowser { private customSettings: object; private codeVersion: string; private releaseType: ReleaseQuality; + private profileName: string; private static _instance: VSBrowser; - constructor(codeVersion: string, releaseType: ReleaseQuality, private resources: string[], customSettings: object = {}) { + constructor(codeVersion: string, releaseType: ReleaseQuality, private resources: string[], customSettings: object = {}, profileName?: string, extensionsFolder?: string) { this.storagePath = process.env.TEST_RESOURCES ? process.env.TEST_RESOURCES : os.tmpdir(); - this.extensionsFolder = process.env.EXTENSIONS_FOLDER ? process.env.EXTENSIONS_FOLDER : undefined; + this.extensionsFolder = extensionsFolder || (process.env.EXTENSIONS_FOLDER ? process.env.EXTENSIONS_FOLDER : undefined); this.customSettings = customSettings; this.codeVersion = codeVersion; this.releaseType = releaseType; + this.profileName = profileName || `test-profile-${Date.now()}`; VSBrowser._instance = this; } @@ -38,8 +40,8 @@ export class VSBrowser { '--no-sandbox', '--enable-logging', '--log-level=0', - `--log-file=${path.join(this.storagePath, 'settings', 'chromium-log')}`, - `--crash-reporter-directory=${path.join(this.storagePath, 'settings', 'crash-reports')}`, + `--log-file=${path.join(this.storagePath, 'settings', this.profileName, 'chromium-log')}`, + `--crash-reporter-directory=${path.join(this.storagePath, 'settings', this.profileName, 'crash-reports')}`, '--enable-blink-features=ShadowDOMV0', '--disable-renderer-backgrounding', '--ignore-certificate-errors', @@ -51,11 +53,14 @@ export class VSBrowser { '--disable-ipc-flooding-protection', '--enable-precise-memory-info', '--disable-workspace-trust', - `--user-data-dir=${path.join(this.storagePath, 'settings', 'Code')}`, + `--user-data-dir=${path.join(this.storagePath, 'settings', this.profileName, 'Code')}`, ]; if (this.extensionsFolder) { args.push(`--extensions-dir=${this.extensionsFolder}`); + } else { + // If no extensions folder is specified, use a profile-specific one to ensure isolation + args.push(`--extensions-dir=${path.join(this.storagePath, 'settings', this.profileName, 'extensions')}`); } if (compareVersions(this.codeVersion, '1.39.0') < 0) { @@ -70,9 +75,9 @@ export class VSBrowser { private async writeSettings() { - const userSettings = path.join(this.storagePath, 'settings', 'Code', 'User'); + const userSettings = path.join(this.storagePath, 'settings', this.profileName, 'Code', 'User'); if (fs.existsSync(userSettings)) { - fs.removeSync(path.join(this.storagePath, 'settings')); + fs.removeSync(path.join(this.storagePath, 'settings', this.profileName)); } let defaultSettings = { "workbench.editor.enablePreview": false, diff --git a/workspaces/common-libs/playwright-vscode-tester/src/codeUtil.ts b/workspaces/common-libs/playwright-vscode-tester/src/codeUtil.ts index 7442cb191ea..b02f9eb661a 100644 --- a/workspaces/common-libs/playwright-vscode-tester/src/codeUtil.ts +++ b/workspaces/common-libs/playwright-vscode-tester/src/codeUtil.ts @@ -52,18 +52,21 @@ export class CodeUtil { private cliEnv!: string; private availableVersions: string[]; private extensionsFolder: string | undefined; + private profileName: string; /** * Create an instance of code handler * @param folder Path to folder where all the artifacts will be stored. * @param extensionsFolder Path to use as extensions directory by VSCode + * @param profileName Custom profile name for VSCode user data directory (optional) */ - constructor(folder = 'test-resources', type: ReleaseQuality = ReleaseQuality.Stable, extensionsFolder?: string) { + constructor(folder = 'test-resources', type: ReleaseQuality = ReleaseQuality.Stable, extensionsFolder?: string, profileName?: string) { this.availableVersions = []; this.downloadPlatform = this.getPlatform(); this.downloadFolder = path.resolve(folder); this.extensionsFolder = extensionsFolder ? path.resolve(extensionsFolder) : undefined; this.releaseType = type; + this.profileName = profileName || `test-profile-${Date.now()}`; if (type === ReleaseQuality.Stable) { this.codeFolder = path.join(this.downloadFolder, (process.platform === 'darwin') @@ -156,10 +159,12 @@ export class CodeUtil { } private installExt(pathOrID: string): void { - let command = `${this.cliEnv} "${this.executablePath}" "${this.cliPath}" --ms-enable-electron-run-as-node --force --install-extension "${pathOrID}"`; + let command = `${this.cliEnv} "${this.executablePath}" "${this.cliPath}" --ms-enable-electron-run-as-node --force --install-extension "${pathOrID}" --user-data-dir="${path.join(this.downloadFolder, 'settings', this.profileName, 'Code')}"`; if (this.extensionsFolder) { command += ` --extensions-dir=${this.extensionsFolder}`; } + // If no extensionsFolder is specified, extensions will be installed to the default location + // within the user data directory: {user-data-dir}/extensions/ child_process.execSync(command, { stdio: 'inherit' }); } @@ -169,7 +174,7 @@ export class CodeUtil { */ open(...paths: string[]): void { const segments = paths.map(f => `"${f}"`).join(' '); - const command = `${this.cliEnv} "${this.executablePath}" "${this.cliPath}" --ms-enable-electron-run-as-node -r ${segments} --user-data-dir="${path.join(this.downloadFolder, 'settings')}"`; + const command = `${this.cliEnv} "${this.executablePath}" "${this.cliPath}" --ms-enable-electron-run-as-node -r ${segments} --user-data-dir="${path.join(this.downloadFolder, 'settings', this.profileName, 'Code')}"`; child_process.execSync(command); } @@ -211,10 +216,12 @@ export class CodeUtil { const extension = `${pjson.publisher}.${pjson.name}`; if (cleanup) { - let command = `${this.cliEnv} "${this.executablePath}" "${this.cliPath}" --ms-enable-electron-run-as-node --uninstall-extension "${extension}"`; + let command = `${this.cliEnv} "${this.executablePath}" "${this.cliPath}" --ms-enable-electron-run-as-node --uninstall-extension "${extension}" --user-data-dir="${path.join(this.downloadFolder, 'settings', this.profileName, 'Code')}"`; if (this.extensionsFolder) { command += ` --extensions-dir=${this.extensionsFolder}`; } + // If no extensionsFolder is specified, uninstall from the default location + // within the user data directory: {user-data-dir}/extensions/ child_process.execSync(command, { stdio: 'inherit' }); } } @@ -380,7 +387,7 @@ export class CodeUtil { const key = 'PATH'; finalEnv[key] = [this.downloadFolder, process.env[key]].join(path.delimiter); - const browser = new VSBrowser(literalVersion, this.releaseType, runOptions.resources); + const browser = new VSBrowser(literalVersion, this.releaseType, runOptions.resources, {}, this.profileName, this.extensionsFolder); const launchArgs = await browser.getLaunchArgs() process.env = { diff --git a/workspaces/common-libs/playwright-vscode-tester/src/launcher.ts b/workspaces/common-libs/playwright-vscode-tester/src/launcher.ts index d4e9664ed18..3b0eb19f9e5 100644 --- a/workspaces/common-libs/playwright-vscode-tester/src/launcher.ts +++ b/workspaces/common-libs/playwright-vscode-tester/src/launcher.ts @@ -4,10 +4,10 @@ import { getBrowser, getBrowserLaunchOptions } from './utils'; import { ReleaseQuality } from './codeUtil'; export const startVSCode = async (resourcesFolder: string, vscodeVersion: string, - releaseType: ReleaseQuality = ReleaseQuality.Stable, enableRecorder = false, extensionsFolder?: string, projectPath?: string) => { + releaseType: ReleaseQuality = ReleaseQuality.Stable, enableRecorder = false, extensionsFolder?: string, projectPath?: string, profileName?: string) => { - const browser = await getBrowser(resourcesFolder, vscodeVersion, releaseType, extensionsFolder); - const browserOptions = await getBrowserLaunchOptions(resourcesFolder, vscodeVersion, releaseType, projectPath, extensionsFolder); + const browser = await getBrowser(resourcesFolder, vscodeVersion, releaseType, extensionsFolder, profileName); + const browserOptions = await getBrowserLaunchOptions(resourcesFolder, vscodeVersion, releaseType, projectPath, extensionsFolder, profileName); const args = [...browserOptions.args]; diff --git a/workspaces/common-libs/playwright-vscode-tester/src/utils.ts b/workspaces/common-libs/playwright-vscode-tester/src/utils.ts index cea74eecde7..44bcd1bfacc 100644 --- a/workspaces/common-libs/playwright-vscode-tester/src/utils.ts +++ b/workspaces/common-libs/playwright-vscode-tester/src/utils.ts @@ -3,8 +3,8 @@ import { CodeUtil, ReleaseQuality } from "./codeUtil"; import { BrowserLaunchOptions, Browser } from "./types"; import fs from "fs"; -export async function getBrowser(folder: string, version: string, quality: ReleaseQuality, extensionsFolder?: string): Promise { - const codeUtil = new CodeUtil(folder, quality); +export async function getBrowser(folder: string, version: string, quality: ReleaseQuality, extensionsFolder?: string, profileName?: string): Promise { + const codeUtil = new CodeUtil(folder, quality, extensionsFolder, profileName); const vscodePath = path.join(folder, `Visual Studio Code.app`); if (!fs.existsSync(vscodePath)) { await codeUtil.downloadVSCode(version); @@ -23,8 +23,8 @@ export async function getBrowser(folder: string, version: string, quality: Relea return browser; } -export async function getBrowserLaunchOptions(folder: string, version: string, quality: ReleaseQuality, projectPath?: string, extensionsFolder?: string): Promise { - const codeUtil = new CodeUtil(folder, quality, extensionsFolder); +export async function getBrowserLaunchOptions(folder: string, version: string, quality: ReleaseQuality, projectPath?: string, extensionsFolder?: string, profileName?: string): Promise { + const codeUtil = new CodeUtil(folder, quality, extensionsFolder, profileName); const resources = [] if (projectPath) { resources.push(projectPath); diff --git a/workspaces/common-libs/ui-toolkit/src/components/ExpressionEditor/components/Header/ExpressionEditor.tsx b/workspaces/common-libs/ui-toolkit/src/components/ExpressionEditor/components/Header/ExpressionEditor.tsx index 02bc223962c..d941015c1f4 100644 --- a/workspaces/common-libs/ui-toolkit/src/components/ExpressionEditor/components/Header/ExpressionEditor.tsx +++ b/workspaces/common-libs/ui-toolkit/src/components/ExpressionEditor/components/Header/ExpressionEditor.tsx @@ -65,6 +65,7 @@ export const ExpressionEditor = forwardRef - {isSavingExpression && } + {(isSavingExpression || isUpdatingSource) && + + } {isFocused && createPortal( diff --git a/workspaces/common-libs/ui-toolkit/src/components/ExpressionEditor/types/common.ts b/workspaces/common-libs/ui-toolkit/src/components/ExpressionEditor/types/common.ts index cb7f45e7b25..3fa440c8460 100644 --- a/workspaces/common-libs/ui-toolkit/src/components/ExpressionEditor/types/common.ts +++ b/workspaces/common-libs/ui-toolkit/src/components/ExpressionEditor/types/common.ts @@ -128,6 +128,7 @@ type ExpressionEditorBaseProps = { sx?: React.CSSProperties; completionSx?: React.CSSProperties; inputProps?: InputProps; + isUpdatingSource?: boolean; onChange: (value: string, updatedCursorPosition: number) => void | Promise; onSelectionChange?: (value: string, updatedCursorPosition: number) => void | Promise; onFocus?: (e?: any) => void | Promise; diff --git a/workspaces/common-libs/ui-toolkit/src/components/ProgressIndicator/ProgressIndicator.tsx b/workspaces/common-libs/ui-toolkit/src/components/ProgressIndicator/ProgressIndicator.tsx index 2229fa811f7..011853a8ce4 100644 --- a/workspaces/common-libs/ui-toolkit/src/components/ProgressIndicator/ProgressIndicator.tsx +++ b/workspaces/common-libs/ui-toolkit/src/components/ProgressIndicator/ProgressIndicator.tsx @@ -22,6 +22,7 @@ export interface ProgressBarProps { barWidth?: number; sx?: any; color?: string; + duration?: number; } const Container = styled.div` @@ -60,7 +61,7 @@ const Container = styled.div` &.infinite .progress-bar { animation-name: progress; - animation-duration: 4s; + animation-duration: ${(props: ProgressBarProps) => props.duration || 4}s; animation-iteration-count: infinite; animation-timing-function: steps(100); transform: translateZ(0); @@ -83,9 +84,8 @@ const Container = styled.div` `; export const ProgressIndicator = (props: ProgressBarProps) => { - const { sx, id, barWidth, color } = props; return ( - +
); diff --git a/workspaces/mi/mi-core/src/rpc-types/mi-diagram/types.ts b/workspaces/mi/mi-core/src/rpc-types/mi-diagram/types.ts index bd195fc1a31..fecd53c6520 100644 --- a/workspaces/mi/mi-core/src/rpc-types/mi-diagram/types.ts +++ b/workspaces/mi/mi-core/src/rpc-types/mi-diagram/types.ts @@ -371,7 +371,8 @@ export interface ImportProjectRequest { } export interface MigrateProjectRequest { - source: string; + dir: string; + sources: string[]; } export interface Connector { @@ -1231,7 +1232,7 @@ export interface ImportProjectResponse { } export interface MigrateProjectResponse { - filePath: string; + filePaths: string[]; } export interface FileStructure { diff --git a/workspaces/mi/mi-core/src/rpc-types/mi-visualizer/index.ts b/workspaces/mi/mi-core/src/rpc-types/mi-visualizer/index.ts index dbde60e243b..8a9a36bd035 100644 --- a/workspaces/mi/mi-core/src/rpc-types/mi-visualizer/index.ts +++ b/workspaces/mi/mi-core/src/rpc-types/mi-visualizer/index.ts @@ -57,7 +57,9 @@ import { import { GettingStartedData, SampleDownloadRequest } from "./types"; export interface MIVisualizerAPI { + getProjectUri: () => Promise; getWorkspaces: () => Promise; + findOldProjects: () => Promise; getProjectStructure: (params: ProjectStructureRequest) => Promise; getProjectOverview: (params: ProjectStructureRequest) => Promise; getCurrentThemeKind: () => Promise; diff --git a/workspaces/mi/mi-core/src/rpc-types/mi-visualizer/rpc-type.ts b/workspaces/mi/mi-core/src/rpc-types/mi-visualizer/rpc-type.ts index 0daec95ed07..18e3423af68 100644 --- a/workspaces/mi/mi-core/src/rpc-types/mi-visualizer/rpc-type.ts +++ b/workspaces/mi/mi-core/src/rpc-types/mi-visualizer/rpc-type.ts @@ -59,7 +59,9 @@ import { GettingStartedData, SampleDownloadRequest } from "./types"; import { RequestType, NotificationType } from "vscode-messenger-common"; const _preFix = "mi-visualizer"; +export const getProjectUri: RequestType = { method: `${_preFix}/getProjectUri` }; export const getWorkspaces: RequestType = { method: `${_preFix}/getWorkspaces` }; +export const findOldProjects: RequestType = { method: `${_preFix}/findOldProjects` }; export const getProjectStructure: RequestType = { method: `${_preFix}/getProjectStructure` }; export const getProjectOverview: RequestType = { method: `${_preFix}/getProjectOverview` }; export const getCurrentThemeKind: RequestType = { method: `${_preFix}/getCurrentThemeKind` }; diff --git a/workspaces/mi/mi-core/src/state-machine-types.ts b/workspaces/mi/mi-core/src/state-machine-types.ts index f9583205f5e..604ad75a965 100644 --- a/workspaces/mi/mi-core/src/state-machine-types.ts +++ b/workspaces/mi/mi-core/src/state-machine-types.ts @@ -34,6 +34,7 @@ export enum MACHINE_VIEW { ADD_ARTIFACT = "Add Artifact", Overview = "Project Overview", UnsupportedProject = "Unsupported Project", + UnsupportedWorkspace = "Unsupported Workspace", Disabled = "MI Extension", Diagram = "MI Diagram", ResourceView = "Resource View", @@ -100,7 +101,7 @@ export enum AI_MACHINE_VIEW { } export type MachineStateValue = - | 'initialize' | 'projectDetected' | 'oldProjectDetected' | 'LSInit' | 'ready' | 'disabled' + | 'initialize' | 'projectDetected' | 'oldProjectDetected' | 'oldWorkspaceDetected' | 'LSInit' | 'ready' | 'disabled' | { ready: 'viewReady' } | { ready: 'viewEditing' } | { newProject: 'viewReady' }| { environmentSetup: 'viewReady' }; diff --git a/workspaces/mi/mi-data-mapper/src/components/Diagram/LinkState/CreateLinkState.ts b/workspaces/mi/mi-data-mapper/src/components/Diagram/LinkState/CreateLinkState.ts index 15189229e2f..90758c3e6a3 100644 --- a/workspaces/mi/mi-data-mapper/src/components/Diagram/LinkState/CreateLinkState.ts +++ b/workspaces/mi/mi-data-mapper/src/components/Diagram/LinkState/CreateLinkState.ts @@ -88,6 +88,13 @@ export class CreateLinkState extends State { if (isLinkModel(element)) { element = (element as DataMapperLinkModel).getTargetPort(); + + if (element instanceof IntermediatePortModel) { + const parentNode = element.getNode(); + if (parentNode instanceof LinkConnectorNode) { + element = parentNode.targetMappedPort; + } + } } } diff --git a/workspaces/mi/mi-extension/package.json b/workspaces/mi/mi-extension/package.json index a79747ec08f..8f4f55464a2 100644 --- a/workspaces/mi/mi-extension/package.json +++ b/workspaces/mi/mi-extension/package.json @@ -953,7 +953,7 @@ "node-loader": "~2.1.0", "to-json-schema": "0.2.5", "xml2js": "0.6.2", - "tmp": "~0.2.3", + "tmp": "~0.2.4", "fs-extra": "~11.3.0", "@iarna/toml": "^2.2.5", "@types/tmp": "~0.2.6", diff --git a/workspaces/mi/mi-extension/src/debugger/activate.ts b/workspaces/mi/mi-extension/src/debugger/activate.ts index 1e001ab9ced..eb2d774dea3 100644 --- a/workspaces/mi/mi-extension/src/debugger/activate.ts +++ b/workspaces/mi/mi-extension/src/debugger/activate.ts @@ -76,8 +76,10 @@ export function activateDebugger(context: vscode.ExtensionContext) { } }); - vscode.commands.registerCommand(COMMANDS.REMOTE_DEPLOY_PROJECT, async (postBuildTask?: Function) => { - const projectUri = await askForProject(); + vscode.commands.registerCommand(COMMANDS.REMOTE_DEPLOY_PROJECT, async (projectUri?: string, postBuildTask?: Function) => { + if (!projectUri) { + projectUri = await askForProject(); + } await executeRemoteDeployTask(projectUri, postBuildTask); }); diff --git a/workspaces/mi/mi-extension/src/lang-client/activator.ts b/workspaces/mi/mi-extension/src/lang-client/activator.ts index e9acd5f9070..8f77f750d90 100644 --- a/workspaces/mi/mi-extension/src/lang-client/activator.ts +++ b/workspaces/mi/mi-extension/src/lang-client/activator.ts @@ -53,6 +53,7 @@ import { getJavaHomeFromConfig, getProjectSetupDetails, isMISetup, isJavaSetup } import { SELECTED_SERVER_PATH } from '../debugger/constants'; import { extension } from '../MIExtensionContext'; import { extractCAppDependenciesAsProjects } from '../visualizer/activate'; +import vscode from "vscode"; const exec = util.promisify(require('child_process').exec); export interface ScopeInfo { @@ -173,6 +174,10 @@ export class MILanguageClient { } await isJavaSetup(projectUri, miVersionFromPom); await isMISetup(projectUri, miVersionFromPom); + const versions: string[] = ["4.0.0", "4.1.0", "4.2.0", "4.3.0"]; + const config = vscode.workspace.getConfiguration('MI', vscode.Uri.file(projectUri)); + await config.update("LEGACY_EXPRESSION_ENABLED", miVersionFromPom && versions.includes(miVersionFromPom), + vscode.ConfigurationTarget.WorkspaceFolder); const JAVA_HOME = getJavaHomeFromConfig(this.projectUri); if (JAVA_HOME) { const isJDKCompatible = await this.checkJDKCompatibility(JAVA_HOME); @@ -216,7 +221,7 @@ export class MILanguageClient { fileEvents: workspace.createFileSystemWatcher(new RelativePattern(workspaceFolder, '**/*.zip')) }, // Register the server for synapse xml documents - documentSelector: [{ scheme: 'file', language: 'SynapseXml', pattern: `${workspaceFolder.uri.fsPath}/**/*` }], + documentSelector: [{ scheme: 'file', language: 'SynapseXml' }], middleware: { workspace: { didChangeConfiguration: async () => { diff --git a/workspaces/mi/mi-extension/src/rpc-managers/mi-diagram/rpc-manager.ts b/workspaces/mi/mi-extension/src/rpc-managers/mi-diagram/rpc-manager.ts index a9ac7022be0..13411aff047 100644 --- a/workspaces/mi/mi-extension/src/rpc-managers/mi-diagram/rpc-manager.ts +++ b/workspaces/mi/mi-extension/src/rpc-managers/mi-diagram/rpc-manager.ts @@ -304,7 +304,7 @@ import { UndoRedoManager } from "../../undoRedoManager"; import { copyDockerResources, copyMavenWrapper, createFolderStructure, getAPIResourceXmlWrapper, getAddressEndpointXmlWrapper, getDataServiceXmlWrapper, getDefaultEndpointXmlWrapper, getDssDataSourceXmlWrapper, getFailoverXmlWrapper, getHttpEndpointXmlWrapper, getInboundEndpointXmlWrapper, getLoadBalanceXmlWrapper, getMessageProcessorXmlWrapper, getMessageStoreXmlWrapper, getProxyServiceXmlWrapper, getRegistryResourceContent, getTaskXmlWrapper, getTemplateEndpointXmlWrapper, getTemplateXmlWrapper, getWsdlEndpointXmlWrapper, createGitignoreFile, getEditTemplateXmlWrapper } from "../../util"; import { addNewEntryToArtifactXML, createMetadataFilesForRegistryCollection, deleteRegistryResource, detectMediaType, getAvailableRegistryResources, getMediatypeAndFileExtension, getRegistryResourceMetadata, updateRegistryResourceMetadata } from "../../util/fileOperations"; import { log } from "../../util/logger"; -import { importProject } from "../../util/migrationUtils"; +import { importProjects } from "../../util/migrationUtils"; import { generateSwagger, getResourceInfo, isEqualSwaggers, mergeSwaggers } from "../../util/swagger"; import { getDataSourceXml } from "../../util/template-engine/mustach-templates/DataSource"; import { getClassMediatorContent } from "../../util/template-engine/mustach-templates/classMediator"; @@ -474,7 +474,7 @@ export class MiDiagramRpcManager implements MiDiagramAPI { async getMIVersionFromPom(): Promise { return new Promise(async (resolve) => { - const res = await getMIVersionFromPom(); + const res = await getMIVersionFromPom(this.projectUri); resolve({ version: res ?? '' }); }); } @@ -3133,8 +3133,15 @@ ${endpointAttributes} async getWorkspaceRoot(): Promise { return new Promise(async (resolve) => { const workspaceFolders = workspace.workspaceFolders; - if (workspaceFolders) { - resolve({ path: this.projectUri }); + if (workspaceFolders && this.projectUri) { + const existingProject = path.basename(this.projectUri); + const matched = workspaceFolders.find(folder => path.basename(folder.uri.fsPath) === existingProject); + if (matched) { + const parentPath = path.dirname(this.projectUri); + resolve({ path: parentPath }); + } else { + resolve({ path: this.projectUri }); + } } resolve({ path: getDefaultProjectPath() }); }); @@ -3925,7 +3932,7 @@ ${endpointAttributes} const MI_COPILOT_BACKEND_V2 = process.env.MI_COPILOT_BACKEND_V2 as string; const MI_COPILOT_BACKEND_V3 = process.env.MI_COPILOT_BACKEND_V3 as string; const RUNTIME_THRESHOLD_VERSION = RUNTIME_VERSION_440; - const runtimeVersion = await getMIVersionFromPom(); + const runtimeVersion = await getMIVersionFromPom(this.projectUri); const isVersionThresholdReached = runtimeVersion ? compareVersions(runtimeVersion, RUNTIME_THRESHOLD_VERSION) : -1; @@ -3948,11 +3955,13 @@ ${endpointAttributes} }); } - async migrateProject({ source }: MigrateProjectRequest): Promise { + async migrateProject({ dir, sources }: MigrateProjectRequest): Promise { return new Promise(async (resolve) => { - if (source) { - await importProject({ source, directory: source, open: true }); - resolve({ filePath: source }); + if (sources) { + const importList = sources.map(source => ({ source, directory: dir, open: false })); + const createdProjects = await importProjects(importList); + const filePaths = createdProjects.map(project => project.filePath); + resolve({ filePaths }); } }); } @@ -4009,7 +4018,7 @@ ${endpointAttributes} resolve({ inboundConnectors: connectorCache.get('inbound-connector-data'), outboundConnectors: connectorCache.get('outbound-connector-data'), connectors: connectorCache.get('connectors') }); return; } - const runtimeVersion = miVersion ? miVersion : await getMIVersionFromPom(); + const runtimeVersion = miVersion ? miVersion : await getMIVersionFromPom(this.projectUri); const response = await fetch(APIS.MI_CONNECTOR_STORE); const connectorStoreResponse = await fetch(APIS.MI_CONNECTOR_STORE_BACKEND.replace('${version}', runtimeVersion ?? '')); @@ -4542,9 +4551,9 @@ ${keyValuesXML}`; const workspaceFolderUri = vscode.Uri.file(path.resolve(this.projectUri)); if (workspaceFolderUri) { const config = vscode.workspace.getConfiguration('MI', workspaceFolderUri); - const isRemoteDeploymentEnabled = config.get("REMOTE_DEPLOYMENT_ENABLED"); + const isRemoteDeploymentEnabled = config.get("REMOTE_DEPLOYMENT_ENABLED"); if (isRemoteDeploymentEnabled) { - await commands.executeCommand(COMMANDS.REMOTE_DEPLOY_PROJECT, false); + await commands.executeCommand(COMMANDS.REMOTE_DEPLOY_PROJECT, this.projectUri, false); } else { const configure = await vscode.window.showWarningMessage( 'Remote deployment is not enabled. Do you want to enable and configure it now?', @@ -5581,7 +5590,7 @@ ${keyValuesXML}`; async fetchConnectors(name, operation: 'add' | 'remove') { - const runtimeVersion = await getMIVersionFromPom(); + const runtimeVersion = await getMIVersionFromPom(this.projectUri); const connectorStoreResponse = await fetch(APIS.MI_CONNECTOR_STORE_BACKEND.replace('${version}', runtimeVersion ?? '')); const connectorStoreData = await connectorStoreResponse.json(); diff --git a/workspaces/mi/mi-extension/src/rpc-managers/mi-visualizer/rpc-handler.ts b/workspaces/mi/mi-extension/src/rpc-managers/mi-visualizer/rpc-handler.ts index 56a75194576..d36bf06a76e 100644 --- a/workspaces/mi/mi-extension/src/rpc-managers/mi-visualizer/rpc-handler.ts +++ b/workspaces/mi/mi-extension/src/rpc-managers/mi-visualizer/rpc-handler.ts @@ -42,7 +42,9 @@ import { getProjectOverview, getProjectStructure, getReadmeContent, + getProjectUri, getWorkspaces, + findOldProjects, goBack, goHome, goSelected, @@ -96,7 +98,9 @@ import { MiVisualizerRpcManager } from "./rpc-manager"; export function registerMiVisualizerRpcHandlers(messenger: Messenger, projectUri: string): void { const rpcManger = new MiVisualizerRpcManager(projectUri); + messenger.onRequest(getProjectUri, () => rpcManger.getProjectUri()); messenger.onRequest(getWorkspaces, () => rpcManger.getWorkspaces()); + messenger.onRequest(findOldProjects, () => rpcManger.findOldProjects()); messenger.onRequest(getProjectStructure, (args: ProjectStructureRequest) => rpcManger.getProjectStructure(args)); messenger.onRequest(getProjectOverview, (args: ProjectStructureRequest) => rpcManger.getProjectOverview(args)); messenger.onRequest(getCurrentThemeKind, () => rpcManger.getCurrentThemeKind()); diff --git a/workspaces/mi/mi-extension/src/rpc-managers/mi-visualizer/rpc-manager.ts b/workspaces/mi/mi-extension/src/rpc-managers/mi-visualizer/rpc-manager.ts index e1ecafc1a4e..69895973c6b 100644 --- a/workspaces/mi/mi-extension/src/rpc-managers/mi-visualizer/rpc-manager.ts +++ b/workspaces/mi/mi-extension/src/rpc-managers/mi-visualizer/rpc-manager.ts @@ -89,11 +89,18 @@ const fs = require('fs'); import { TextEdit } from "vscode-languageclient"; import { downloadJavaFromMI, downloadMI, getProjectSetupDetails, getSupportedMIVersionsHigherThan, setPathsInWorkSpace, updateRuntimeVersionsInPom, getMIVersionFromPom } from '../../util/onboardingUtils'; import { extractCAppDependenciesAsProjects } from "../../visualizer/activate"; +import { findMultiModuleProjectsInWorkspaceDir } from "../../util/migrationUtils"; Mustache.escape = escapeXml; export class MiVisualizerRpcManager implements MIVisualizerAPI { constructor(private projectUri: string) { } + async getProjectUri(): Promise { + return new Promise((resolve) => { + resolve(this.projectUri); + }); + } + async getWorkspaces(): Promise { return new Promise(async (resolve) => { const workspaces = workspace.workspaceFolders; @@ -106,6 +113,18 @@ export class MiVisualizerRpcManager implements MIVisualizerAPI { }); } + /** + * Searches for and retrieves a list of old multi-module project paths within the current workspace directory. + * + * @returns {Promise} A promise that resolves to an array of strings, each representing the path to a found project. + */ + async findOldProjects(): Promise { + return new Promise(async (resolve) => { + const foundProjects = await findMultiModuleProjectsInWorkspaceDir(this.projectUri); + resolve(foundProjects); + }); + } + async getProjectStructure(params: ProjectStructureRequest): Promise { return new Promise(async (resolve) => { const langClient = getStateMachine(this.projectUri).context().langClient!; @@ -721,12 +740,12 @@ export class MiVisualizerRpcManager implements MIVisualizerAPI { } async updateProjectSettingsConfig(params: ProjectConfig): Promise { - const config = workspace.getConfiguration('MI'); - await config.update(params.configName, params.value, vscode.ConfigurationTarget.Workspace); + const config = vscode.workspace.getConfiguration('MI', vscode.Uri.file(this.projectUri)); + await config.update(params.configName, params.value, vscode.ConfigurationTarget.WorkspaceFolder); } async isSupportEnabled(configName: string): Promise { - const projectRuntimeVersion = await getMIVersionFromPom(); + const projectRuntimeVersion = await getMIVersionFromPom(this.projectUri); return new Promise((resolve, reject) => { try { if (configName === "LEGACY_EXPRESSION_ENABLED") { @@ -736,8 +755,8 @@ export class MiVisualizerRpcManager implements MIVisualizerAPI { return; } } - const config = workspace.getConfiguration('MI'); - resolve(config.get(configName) || false); + const config = vscode.workspace.getConfiguration('MI', vscode.Uri.file(this.projectUri)); + resolve(config.get(configName) || false); } catch (error) { reject(error); } diff --git a/workspaces/mi/mi-extension/src/stateMachine.ts b/workspaces/mi/mi-extension/src/stateMachine.ts index 5eb77ee8e5b..ae9bc41db27 100644 --- a/workspaces/mi/mi-extension/src/stateMachine.ts +++ b/workspaces/mi/mi-extension/src/stateMachine.ts @@ -7,6 +7,7 @@ import { extension } from './MIExtensionContext'; import { DM_FUNCTION_NAME, EVENT_TYPE, + findOldProjects, HistoryEntry, MACHINE_VIEW, MachineStateValue, @@ -30,6 +31,7 @@ import { DMProject } from './datamapper/DMProject'; import { setupEnvironment } from './util/onboardingUtils'; import { getPopupStateMachine } from './stateMachinePopup'; import { askForProject } from './util/workspace'; +import { containsMultiModuleNatureInProjectFile, containsMultiModuleNatureInPomFile, extractNatureFromPomContent, findMultiModuleProjectsInWorkspaceDir } from './util/migrationUtils'; const fs = require('fs'); interface MachineContext extends VisualizerLocation { @@ -72,6 +74,17 @@ const stateMachine = createMachine({ displayOverview: (context, event) => true, }) }, + { + target: 'oldWorkspaceDetected', + cond: (context, event) => + // Assuming true means old workspace detected + event.data.isOldWorkspace === true && event.data.displayOverview === true, + actions: assign({ + view: (context, event) => MACHINE_VIEW.UnsupportedWorkspace, + projectUri: (context, event) => event.data.projectUri, + displayOverview: (context, event) => true, + }) + }, { target: 'lsInit', cond: (context, event) => @@ -119,6 +132,28 @@ const stateMachine = createMachine({ } } }, + oldWorkspaceDetected: { + initial: "viewLoading", + states: { + viewLoading: { + invoke: [ + { + src: 'openWebPanel', + onDone: { + target: 'viewReady' + } + } + ] + }, + viewReady: { + on: { + REFRESH_ENVIRONMENT: { + target: '#mi.initialize' + } + } + } + } + }, lsInit: { invoke: { src: 'waitForLS', @@ -729,7 +764,7 @@ function updateProjectExplorer(location: VisualizerLocation | undefined) { async function checkIfMiProject(projectUri) { log(`Detecting project in ${projectUri} - ${new Date().toLocaleTimeString()}`); - let isProject = false, isOldProject = false, displayOverview = true, view = MACHINE_VIEW.Overview, isEnvironmentSetUp = false; + let isProject = false, isOldProject = false, isOldWorkspace = false, displayOverview = true, view = MACHINE_VIEW.Overview, isEnvironmentSetUp = false; const customProps: any = {}; try { // Check for pom.xml files excluding node_modules directory @@ -745,15 +780,22 @@ async function checkIfMiProject(projectUri) { // If not found, check for .project files if (!isProject) { const projectFiles = await vscode.workspace.findFiles(new vscode.RelativePattern(projectUri, '.project'), '**/node_modules/**', 1); + if (projectFiles.length > 0) { - const oldProjectNatures = [ - 'org.wso2.developerstudio.eclipse.mavenmultimodule.project.nature', - 'org.eclipse.m2e.core.maven2Nature' - ]; - const projectContent = await vscode.workspace.openTextDocument(projectFiles[0]); - if (oldProjectNatures.some(nature => projectContent.getText().includes(nature))) { + if (await containsMultiModuleNatureInProjectFile(projectFiles[0].fsPath)) { + isOldProject = true; + log("Integration Studio project detected"); + } + } else if (fs.existsSync(pomFilePath)) { + if (await containsMultiModuleNatureInPomFile(pomFilePath)) { isOldProject = true; - log("Integration Studio project detected in " + projectUri); + log("Integration Studio project detected"); + } + } else if (fs.existsSync(projectUri)) { + const foundOldProjects = await findMultiModuleProjectsInWorkspaceDir(projectUri); + if (foundOldProjects.length > 0) { + isOldWorkspace = true; + log("Integration Studio workspace detected"); } } } @@ -795,6 +837,12 @@ async function checkIfMiProject(projectUri) { vscode.commands.executeCommand('setContext', 'MI.status', 'projectDetected'); vscode.commands.executeCommand('setContext', 'MI.projectType', 'oldProject'); // for command enablements await extension.context.workspaceState.update('projectType', 'oldProject'); + } else if (isOldWorkspace) { + const displayState: boolean | undefined = extension.context.workspaceState.get('displayOverview'); + displayOverview = displayState === undefined ? true : displayState; + vscode.commands.executeCommand('setContext', 'MI.status', 'projectDetected'); + vscode.commands.executeCommand('setContext', 'MI.projectType', 'oldWorkspace'); // for command enablements + await extension.context.workspaceState.update('projectType', 'oldWorkspace'); } else { vscode.commands.executeCommand('setContext', 'MI.status', 'unknownProject'); } @@ -812,6 +860,7 @@ async function checkIfMiProject(projectUri) { return { isProject, isOldProject, + isOldWorkspace, displayOverview, projectUri, // Return the path of the detected project view, diff --git a/workspaces/mi/mi-extension/src/test-explorer/activator.ts b/workspaces/mi/mi-extension/src/test-explorer/activator.ts index 99d30638879..0fda010bb25 100644 --- a/workspaces/mi/mi-extension/src/test-explorer/activator.ts +++ b/workspaces/mi/mi-extension/src/test-explorer/activator.ts @@ -28,6 +28,8 @@ import { activateMockServiceTreeView } from "./mock-services/activator"; import { TagRange, TestCase, UnitTest } from "../../../syntax-tree/lib/src"; import { normalize } from "upath"; import { MILanguageClient } from "../lang-client/activator"; +import { webviews } from "../visualizer/webview"; +import vscode from "vscode"; export let testController: TestController; const testDirNodes: string[] = []; @@ -57,8 +59,9 @@ export async function activateTestExplorer(extensionContext: ExtensionContext) { startWatchingWorkspace(testFileMatchPattern, createTestsForAllFiles); commands.registerCommand(COMMANDS.ADD_TEST_SUITE, (args: any) => { - const projectUri = getProjectRoot(Uri.parse(args?.id)); - openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.TestSuite, projectUri }); + const projectUri = vscode.workspace.workspaceFolders?.[0]?.uri; + const webview = [...webviews.values()].find(webview => webview.getWebview()?.active) || [...webviews.values()][0]; + openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.TestSuite, projectUri: webview ? webview.getProjectUri() : projectUri?.fsPath }); console.log('Add Test suite'); }); diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/Utils.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/Utils.ts index c5caf22e358..153555397dc 100644 --- a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/Utils.ts +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/Utils.ts @@ -31,7 +31,7 @@ export const dataFolder = path.join(__dirname, 'data'); const extensionsFolder = path.join(__dirname, '..', '..', '..', 'vsix'); const vscodeVersion = 'latest'; export const resourcesFolder = path.join(__dirname, '..', 'test-resources'); -export const newProjectPath = path.join(dataFolder, 'new-project', 'testProject'); +export const newProjectPath = path.join(dataFolder, 'new-project', 'testProjectFolder'); export const screenShotsFolder = path.join(__dirname, '..', 'test-resources', 'screenshots'); export const videosFolder = path.join(__dirname, '..', 'test-resources', 'videos'); @@ -42,7 +42,7 @@ async function initVSCode() { if (vscode && page) { await page.executePaletteCommand('Reload Window'); } else { - vscode = await startVSCode(resourcesFolder, vscodeVersion, undefined, false, extensionsFolder, newProjectPath); + vscode = await startVSCode(resourcesFolder, vscodeVersion, undefined, false, extensionsFolder, newProjectPath, 'mi-test-profile'); } page = new ExtendedPage(await vscode!.firstWindow({ timeout: 60000 })); } @@ -114,7 +114,7 @@ export async function resumeVSCode() { await page.executePaletteCommand('Reload Window'); } else { console.log('Starting VSCode'); - vscode = await startVSCode(resourcesFolder, vscodeVersion, undefined, false, extensionsFolder, path.join(newProjectPath, 'testProject')); + vscode = await startVSCode(resourcesFolder, vscodeVersion, undefined, false, extensionsFolder, path.join(newProjectPath, 'testProject'), 'mi-test-profile'); await new Promise(resolve => setTimeout(resolve, 5000)); } page = new ExtendedPage(await vscode!.firstWindow({ timeout: 60000 })); diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/ArtifactTest/APITests.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/ArtifactTest/APITests.ts index 100d36926ea..bf009ff0d15 100644 --- a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/ArtifactTest/APITests.ts +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/ArtifactTest/APITests.ts @@ -240,9 +240,12 @@ export class API { console.log("Clicked on open project overview"); const vscodeButton = webview.locator('vscode-button > svg').nth(1); await vscodeButton.waitFor(); + // 2s wait (2000ms) to avoid the intermittent issue of the button not being clickable + console.log("Waiting for 2s before clicking on delete API button"); + await page.page.waitForTimeout(2000); await vscodeButton.click({force: true}); const deleteBtn = webview.getByText('Delete'); - console.log("Clicked on delete API"); + console.log("Clicked on delete API from overview"); await deleteBtn.waitFor(); await deleteBtn.click(); console.log("Clicked on delete"); diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/ArtifactTest/BallerinaModule.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/ArtifactTest/BallerinaModule.ts index fb34290df16..1dd1c75e7f5 100644 --- a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/ArtifactTest/BallerinaModule.ts +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/ArtifactTest/BallerinaModule.ts @@ -145,11 +145,11 @@ export class BallerinaModule { values: { 'Name*': { type: 'input', - value: 'TestBallerinaAPI', + value: moduleName + 'API', }, 'Context*': { type: 'input', - value: '/TestBallerinaAPI', + value: '/' + moduleName + 'API', }, } }); diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/DataMapper.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/DataMapper.ts index 760c5d3e526..5770da32a04 100644 --- a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/DataMapper.ts +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/DataMapper.ts @@ -52,6 +52,17 @@ export class DataMapper { this.tsFile = path.join(newProjectPath, 'testProject', 'src', 'main', 'wso2mi', 'resources', 'datamapper', this._name, `${this._name}.ts`); } + public async add(name: string) { + const seqWebView = await switchToIFrame('Resource View', this._page); + if (!seqWebView) { + throw new Error("Failed to switch to Resource Form iframe"); + } + const seqFrame = seqWebView.locator('#popUpPanel'); + await seqFrame.waitFor(); + await seqFrame.getByRole('textbox', { name: 'Name' }).fill(name); + await seqFrame.getByRole('button', { name: 'Create' }).click(); + } + public getWebView() { return this.webView; } diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/Diagram.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/Diagram.ts index 5f514b3c7df..72595531208 100644 --- a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/Diagram.ts +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/Diagram.ts @@ -142,11 +142,11 @@ export class Diagram { await sidePanel.close(); } - public async addConnectorOperation(connector: string, operation: string) { + public async addConnectorOperation(connector: string, operation: string, operationId?: string) { const sidePanel = new SidePanel(this.diagramWebView); await sidePanel.init(); await sidePanel.search(operation); - await sidePanel.addConnector(connector, operation); + await sidePanel.addConnector(connector, operation, operationId); } public async fillConnectorForm(props: FormFillProps) { @@ -237,6 +237,10 @@ class Mediator { await this.mediatotNode.click(); } + public async clickOnImg() { + await this.mediatotNode.locator('i').click(); + } + public async getEditForm() : Promise { const sidePanel = new SidePanel(this.container); await sidePanel.init(); @@ -316,12 +320,12 @@ export class SidePanel { await this.sidePanel.waitFor({ state: 'detached' }) } - public async addConnector(connectorName: string, operationName: string) { + public async addConnector(connectorName: string, operationName: string, operationId?: string) { const connector = this.sidePanel.locator(`#card-select-${connectorName}`).nth(0); await connector.waitFor(); const connectorComponent = connector.locator(`..`); - const operation = connectorComponent.locator(`#card-select-${operationName}`); + const operation = connectorComponent.locator(`#card-select-${operationId ? operationId : operationName}`); await operation.waitFor(); await operation.click(); } diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/Welcome.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/Welcome.ts index 4afb67f65c7..6ccbb22ff2d 100644 --- a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/Welcome.ts +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/Welcome.ts @@ -51,7 +51,7 @@ export class Welcome { } public async waitUntilDeattached() { - await this.page.page.waitForSelector('iframe.webview.ready', { state: 'detached', timeout: 40000 }); + await this.page.page.waitForSelector('iframe.webview.ready', { state: 'detached', timeout: 75000 }); } public async setupEnvironment() { diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/connectorTests/connector.spec.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/connectorTests/connector.spec.ts index 121d6979e82..ff09b4bd96d 100644 --- a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/connectorTests/connector.spec.ts +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/connectorTests/connector.spec.ts @@ -159,7 +159,7 @@ export default function createTests() { const diagram = new Diagram(page.page, 'Resource'); await diagram.init(); - await diagram.addConnectorOperation('CSV', 'csvToCsv'); + await diagram.addConnectorOperation('CSV', 'CSV to CSV', 'CSV\\ to\\ CSV'); // Fill connector form await diagram.fillConnectorForm({ diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/cache.spec.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/cache.spec.ts index 37ec76f0d19..edf2018a73f 100644 --- a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/cache.spec.ts +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/cache.spec.ts @@ -77,6 +77,8 @@ export default function createTests() { const diagram = new Diagram(page.page, 'Resource'); await diagram.init(); await diagram.addMediator('Cache'); + // Wait for the cache mediator to be added + await page.page.waitForTimeout(2000); await diagram.getMediator('cache', 0, 'group'); }); @@ -204,7 +206,7 @@ export default function createTests() { }); await form.clickAddNewForField('Sequence Key'); const sequence = new Sequence(page.page); - await sequence.createSequence('cacheSeq1', true); + await sequence.createSequence('cacheSeq' + testAttempt, true); await form.submit("Add"); await diagram.getMediator("cache", 0, "group"); }); @@ -220,7 +222,7 @@ export default function createTests() { }, 'Sequence Key': { type: 'combo', - value: 'cacheSeq1', + value: 'cacheSeq' + testAttempt, } } }); @@ -242,7 +244,7 @@ export default function createTests() { }); await form.clickAddNewForField('Sequence Key'); const sequence = new Sequence(page.page); - await sequence.createSequence('cacheSeq2', true); + await sequence.createSequence('cacheNewSeq' + testAttempt, true); await form.submit("Update"); }); }); diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/dataMapper.spec.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/dataMapper.spec.ts new file mode 100644 index 00000000000..ad92f69a872 --- /dev/null +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/dataMapper.spec.ts @@ -0,0 +1,187 @@ +/** + * 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 { test, expect } from '@playwright/test'; +import { Form } from './../components/Form'; +import { AddArtifact } from './../components/AddArtifact'; +import { ServiceDesigner } from './../components/ServiceDesigner'; +import { initTest, page } from '../Utils'; +import { MACHINE_VIEW } from '@wso2/mi-core'; +import { Overview } from '../components/Overview'; +import { Diagram, SidePanel } from './../components/Diagram'; +import { DataMapper } from '../components/DataMapper'; +import { switchToIFrame } from '@wso2/playwright-vscode-tester'; +import { ProjectExplorer } from '../components/ProjectExplorer'; + +export default function createTests() { + test.describe("Data Mapper Mediator Tests", { + tag: '@group4', + }, async () => { + initTest(); + + test("Data Mapper Mediator Tests", async ({}, testInfo) => { + const testAttempt = testInfo.retry + 1; + await test.step('Create new API', async () => { + console.log('Create API for data mapper mediator tests'); + const { title: iframeTitle } = await page.getCurrentWebview(); + + if (iframeTitle === MACHINE_VIEW.Overview) { + const overviewPage = new Overview(page.page); + await overviewPage.init(); + await overviewPage.goToAddArtifact(); + } + + const addArtifactPage = new AddArtifact(page.page); + await addArtifactPage.init(); + await addArtifactPage.add('API'); + + const apiForm = new Form(page.page, 'API Form'); + await apiForm.switchToFormView(); + await apiForm.fill({ + values: { + 'Name*': { + type: 'input', + value: 'dataMapperMediatorAPI' + testAttempt, + }, + 'Context*': { + type: 'input', + value: '/dataMapperMediatorAPI' + testAttempt, + }, + } + }); + await apiForm.submit(); + }); + + await test.step('Service designer', async () => { + const serviceDesigner = new ServiceDesigner(page.page); + await serviceDesigner.init(); + const resource = await serviceDesigner.resource('GET', '/'); + await resource.click(); + }); + + await test.step('Add data mapper mediator with new mapping', async () => { + console.log('Adding data mapper mediator with new mapping'); + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + await diagram.clickPlusButtonByIndex(0); + const sidePanel = new SidePanel(diagram.getDiagramWebView()); + await sidePanel.init(); + await sidePanel.search('Data Mapper'); + await sidePanel.selectMediator('Data\\ Mapper'); + const form = await sidePanel.getForm(); + await form.clickAddNewForField('Name'); + const dataMapperFrom = new DataMapper(page.page, "dm" + testAttempt); + await dataMapperFrom.add('mapping1' + testAttempt); + await form.fill({ + values: { + 'Description': { + type: 'input', + value: 'dm1' + } + } + }); + await form.submit('Add'); + await switchToIFrame('Data Mapper View', page.page); + + // go to resource + const projectExplorer = new ProjectExplorer(page.page); + await projectExplorer.goToOverview("testProject"); + await projectExplorer.findItem(['Project testProject', 'APIs', 'dataMapperMediatorAPI' + testAttempt, '/'], true); + await diagram.getMediator('datamapper', 0, 'reference'); + }); + + await test.step('Delete data mapper mediator', async () => { + console.log('Deleting data mapper mediator'); + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + const mediator = await diagram.getMediator('datamapper', 0, 'reference'); + await mediator.delete(); + const mediatorsCount = await diagram.getMediatorsCount('datamapper', 'reference'); + expect(mediatorsCount).toBe(0); + }); + + await test.step('Add data mapper mediator existing mapping', async () => { + console.log('Adding data mapper mediator with existing mapping'); + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + await diagram.clickPlusButtonByIndex(0); + const sidePanel = new SidePanel(diagram.getDiagramWebView()); + await sidePanel.init(); + await sidePanel.search('Data Mapper'); + await sidePanel.selectMediator('Data\\ Mapper'); + const form = await sidePanel.getForm(); + await form.fill({ + values: { + 'Name': { + type: 'combo', + value: 'datamapper/mapping1' + testAttempt + }, + 'Description': { + type: 'input', + value: 'dm2' + } + } + }); + await form.submit('Add'); + await diagram.getMediator('datamapper', 0, 'reference') + }); + + await test.step('Update data mapper mediator', async () => { + console.log('Updating data mapper mediator'); + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + const mediator = await diagram.getMediator('datamapper', 0, 'reference'); + await mediator.clickOnImg(); + const form = await mediator.getEditForm(); + await form.fill({ + values: { + 'Description': { + type: 'input', + value: 'data mapper 1 edited' + } + } + }); + await form.submit('Update'); + await diagram.getMediator('datamapper', 0, 'reference') + }); + + await test.step('Goto mapping from data mapper mediator', async () => { + console.log('Goto mapping from data mapper mediator'); + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + const mediator = await diagram.getMediator('datamapper', 0, 'reference'); + await mediator.click(); + await switchToIFrame('Data Mapper View', page.page); + + // go to resource + const projectExplorer = new ProjectExplorer(page.page); + await projectExplorer.goToOverview("testProject"); + await projectExplorer.findItem(['Project testProject', 'APIs', 'dataMapperMediatorAPI' + testAttempt, '/'], true); + await diagram.getMediator('datamapper', 0, 'reference'); + }); + + await test.step('Goto mapping from project explorer', async () => { + console.log('Goto mapping from project explorer'); + const projectExplorer = new ProjectExplorer(page.page); + await projectExplorer.goToOverview("testProject"); + await projectExplorer.findItem(['Project testProject', 'Other Artifacts', 'Data Mappers', 'mapping1' + testAttempt], true); + await switchToIFrame('Data Mapper View', page.page); + }); + }); + }); +} diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/dbReport.spec.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/dbReport.spec.ts new file mode 100644 index 00000000000..4dc22cf867b --- /dev/null +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/dbReport.spec.ts @@ -0,0 +1,479 @@ +/** + * 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 { test, expect } from '@playwright/test'; +import { Form } from './../components/Form'; +import { AddArtifact } from './../components/AddArtifact'; +import { ServiceDesigner } from './../components/ServiceDesigner'; +import { initTest, page } from '../Utils'; +import { MACHINE_VIEW } from '@wso2/mi-core'; +import { Overview } from '../components/Overview'; +import { Diagram, SidePanel } from './../components/Diagram'; +import { Resource } from '../components/ArtifactTest/Resource'; + +export default function createTests() { + test.describe("DB Report Mediator Tests", { + tag: '@group4', + }, async () => { + initTest(); + + test("DB Report Mediator Tests", async ({ }, testInfo) => { + const testAttempt = testInfo.retry + 1; + await test.step('Create new API', async () => { + // wait until window reload + const { title: iframeTitle } = await page.getCurrentWebview(); + + if (iframeTitle === MACHINE_VIEW.Overview) { + const overviewPage = new Overview(page.page); + await overviewPage.init(); + await overviewPage.goToAddArtifact(); + } + + const addArtifactPage = new AddArtifact(page.page); + await addArtifactPage.init(); + await addArtifactPage.add('API'); + + const apiForm = new Form(page.page, 'API Form'); + await apiForm.switchToFormView(); + await apiForm.fill({ + values: { + 'Name*': { + type: 'input', + value: 'dbReportMediatorAPI' + testAttempt, + }, + 'Context*': { + type: 'input', + value: '/dbReportMediatorAPI' + testAttempt, + }, + } + }); + await apiForm.submit(); + }); + + await test.step('Service designer', async () => { + // service designer + const serviceDesigner = new ServiceDesigner(page.page); + await serviceDesigner.init(); + const resource = await serviceDesigner.resource('GET', '/'); + await resource.click(); + }); + + await test.step('Add DB Report mediator into resource with custom values', async () => { + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + await diagram.clickPlusButtonByIndex(0); + const sidePanel = new SidePanel(diagram.getDiagramWebView()); + await sidePanel.init(); + await sidePanel.search('DB Report'); + await sidePanel.selectMediator('DB\\ Report'); + const form = await sidePanel.getForm(); + await form.fill({ + values: { + 'Connection Type': { + type: 'combo', + value: 'DB_CONNECTION', + }, + 'Connection DB Type': { + type: 'combo', + value: 'OTHER', + }, + 'Connection DB Driver*': { + type: 'input', + value: 'mysql driver', + }, + 'Connection URL*': { + type: 'input', + value: 'connection url', + }, + 'Connection Username*': { + type: 'input', + value: 'root', + }, + 'Connection Password*': { + type: 'input', + value: 'password', + }, + 'Description': { + type: 'input', + value: 'initial db report mediator', + } + } + }) + await form.submit('Add'); + await diagram.getMediator('dbreport'); + }); + + await test.step('Edit DB Report mediator in resource', async () => { + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + const mediator = await diagram.getMediator('dbreport'); + await mediator.edit({ + values: { + 'Connection DB Driver*': { + type: 'input', + value: 'mongodb driver', + }, + 'Description': { + type: 'input', + value: 'edited db report mediator', + } + } + }); + await diagram.getMediator('dbreport'); + }); + + await test.step('Navigate to new resource creation page with add new button', async () => { + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + const mediator = await diagram.getMediator('dbreport'); + await mediator.click(); + const editForm = await mediator.getEditForm(); + await editForm.fill({ + values: { + 'Is Registry Based Driver Config': { + type: 'checkbox', + value: 'checked', + }, + 'Is Registry Based URL Config': { + type: 'checkbox', + value: 'checked', + }, + 'Is Registry Based User Config': { + type: 'checkbox', + value: 'checked', + }, + 'Is Registry Based Pass Config': { + type: 'checkbox', + value: 'checked', + }, + } + }); + const resource = new Resource(page.page); + + await editForm.clickAddNewForField('Registry Based Connection DB Driver'); + await resource.addFromTemplate({ + name: 'driver', + type: 'JSON File', + registryPath: 'json' + }, true); + + await editForm.clickAddNewForField('Registry Based URL Config Key'); + await resource.addFromTemplate({ + name: 'urlConfig', + type: 'JSON File', + registryPath: 'json' + }, true); + + await editForm.clickAddNewForField('Registry Based User Config Key'); + await resource.addFromTemplate({ + name: 'user', + type: 'JSON File', + registryPath: 'json' + }, true); + + await editForm.clickAddNewForField('Registry Based Pass Config Key'); + await resource.addFromTemplate({ + name: 'pass', + type: 'JSON File', + registryPath: 'json' + }, true); + await editForm.submit('Update'); + await diagram.getMediator('dbreport'); + }); + + await test.step('Select already created resources from drop down', async () => { + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + const mediator = await diagram.getMediator('dbreport'); + await mediator.click(); + const editForm = await mediator.getEditForm(); + await editForm.fill({ + values: { + 'Registry Based Connection DB Driver': { + type: 'combo', + value: 'json/urlConfig.json', + }, + 'Registry Based URL Config Key': { + type: 'combo', + value: 'json/driver.json', + }, + 'Registry Based User Config Key': { + type: 'combo', + value: 'json/pass.json', + }, + 'Registry Based Pass Config Key': { + type: 'combo', + value: 'json/user.json', + }, + } + }); + await editForm.submit('Update'); + await diagram.getMediator('dbreport'); + }); + + await test.step('Add SQL statements', async () => { + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + const mediator = await diagram.getMediator('dbreport'); + await mediator.click(); + const editForm = await mediator.getEditForm(); + + // 1st sql statement + const sqlStatementManager = await editForm.getDefaultParamManager('sqlStatements'); + let sqlStatementForm = await sqlStatementManager.getAddNewForm(); + await sqlStatementForm.fill({ + values: { + 'Query String*': { + type: 'input', + value: 'select * from customer;' + } + } + }); + await sqlStatementForm.submit('Add'); + + // 2nd sql statement + sqlStatementForm = await sqlStatementManager.getAddNewForm(); + await sqlStatementForm.fill({ + values: { + 'Query String*': { + type: 'input', + value: 'select * from teacher;' + } + } + }); + + const parameterManager = await sqlStatementForm.getDefaultParamManager('parameters'); + let parameterForm = await parameterManager.getAddNewForm(); + await parameterForm.fill({ + values: { + 'Value Literal*': { + type: 'input', + value: 'Sam' + } + } + }); + await parameterForm.submit('Add'); + + parameterForm = await parameterManager.getAddNewForm(); + await parameterForm.fill({ + values: { + 'Data Type': { + type: 'combo', + value: 'LONGVARCHAR' + }, + 'Value Type': { + type: 'combo', + value: 'EXPRESSION' + }, + 'Value Expression*': { + type: 'expression', + value: '$ctx:username' + } + } + }); + await parameterForm.submit('Add'); + await sqlStatementForm.submit('Add'); + + // 3rd sql statement + sqlStatementForm = await sqlStatementManager.getAddNewForm(); + await sqlStatementForm.fill({ + values: { + 'Query String*': { + type: 'input', + value: 'select * from school;' + } + } + }); + + const resultManager = await sqlStatementForm.getDefaultParamManager('results'); + let resultForm = await resultManager.getAddNewForm(); + await resultForm.fill({ + values: { + 'Property Name': { + type: 'input', + value: 'field' + }, + 'Column ID': { + type: 'input', + value: 'student count' + } + } + }); + await resultForm.submit('Add'); + await sqlStatementForm.submit('Add'); + + // 4th sql statement + sqlStatementForm = await sqlStatementManager.getAddNewForm(); + await sqlStatementForm.fill({ + values: { + 'Query String*': { + type: 'input', + value: 'select * from district;' + } + } + }); + + parameterForm = await parameterManager.getAddNewForm(); + await parameterForm.fill({ + values: { + 'Data Type': { + type: 'combo', + value: 'NUMERIC' + }, + 'Value Type': { + type: 'combo', + value: 'LITERAL' + }, + 'Value Literal*': { + type: 'input', + value: '12' + } + } + }); + await parameterForm.submit('Add'); + parameterForm = await parameterManager.getAddNewForm(); + await parameterForm.fill({ + values: { + 'Data Type': { + type: 'combo', + value: 'NUMERIC' + }, + 'Value Type': { + type: 'combo', + value: 'EXPRESSION' + }, + 'Value Expression*': { + type: 'expression', + value: '$ctx:value' + } + } + }); + await parameterForm.submit('Add'); + + resultForm = await resultManager.getAddNewForm(); + await resultForm.fill({ + values: { + 'Property Name': { + type: 'input', + value: 'result1' + }, + 'Column ID': { + type: 'input', + value: 'count1' + } + } + }); + await resultForm.submit('Add'); + + resultForm = await resultManager.getAddNewForm(); + await resultForm.fill({ + values: { + 'Property Name': { + type: 'input', + value: 'result2' + }, + 'Column ID': { + type: 'input', + value: 'count2' + } + } + }); + await resultForm.submit('Add'); + await sqlStatementForm.submit('Add'); + await editForm.submit('Update'); + await diagram.getMediator('dbreport'); + }); + + await test.step('Edit SQL statements', async () => { + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + const mediator = await diagram.getMediator('dbreport'); + await mediator.click(); + const editForm = await mediator.getEditForm(); + const sqlStatementManager = await editForm.getDefaultParamManager('sqlStatements'); + const sqlStatementForm = await sqlStatementManager.getEditForm(3); + await sqlStatementForm.fill({ + values: { + 'Query String*': { + type: 'input', + value: 'select * from foreign-country;' + } + } + }); + + // edit parameter + const parameterManager = await sqlStatementForm.getDefaultParamManager('parameters'); + const parameterForm = await parameterManager.getEditForm(1); + await parameterForm.fill({ + values: { + 'Data Type': { + type: 'combo', + value: 'DECIMAL' + } + } + }); + await parameterForm.submit('Update'); + + // edit result + const resultManager = await sqlStatementForm.getDefaultParamManager('results'); + const resultForm = await resultManager.getEditForm(1); + await resultForm.fill({ + values: { + 'Column ID': { + type: 'input', + value: 'column1' + } + } + }); + await resultForm.submit('Update'); + await sqlStatementForm.submit('Update'); + await editForm.submit('Update'); + }); + + await test.step('Delete SQL statements', async () => { + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + const mediator = await diagram.getMediator('dbreport'); + await mediator.click(); + const editForm = await mediator.getEditForm(); + const sqlStatementManager = await editForm.getDefaultParamManager('sqlStatements'); + await sqlStatementManager.deleteParam(1); + + // delete parameter + const sqlStatementForm = await sqlStatementManager.getEditForm(2); + const parameterManager = await sqlStatementForm.getDefaultParamManager('parameters'); + await parameterManager.deleteParam(1); + + // delete result + const resultManager = await sqlStatementForm.getDefaultParamManager('results'); + await resultManager.deleteParam(1); + await sqlStatementForm.submit('Update'); + await editForm.submit('Update'); + }); + + await test.step('Delete DB Report mediator', async () => { + const diagram = new Diagram(page.page, 'Resource'); + await diagram.init(); + const mediator = await diagram.getMediator('dbreport'); + await mediator.delete(); + const logMediatorsCount = await diagram.getMediatorsCount('dbreport'); + expect(logMediatorsCount).toBe(0); + }); + }); + }); +} diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/log.spec.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/log.spec.ts index 12394b61cfd..f12cf017d6a 100644 --- a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/log.spec.ts +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/mediatorTests/log.spec.ts @@ -160,6 +160,8 @@ export default function createTests() { } }); console.log('Log mediator edited successfully'); + // Wait for the mediator to be updated + await page.page.waitForTimeout(2000); const editedDescription = await mediator.getDescription(); console.log('Edited log mediator description:', editedDescription); expect(editedDescription).toBe('log mediator edited'); diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/overviewPageTests/projectSettingPage.spec.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/overviewPageTests/projectSettingPage.spec.ts index 9099f18401d..926067121d5 100644 --- a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/overviewPageTests/projectSettingPage.spec.ts +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/overviewPageTests/projectSettingPage.spec.ts @@ -21,7 +21,7 @@ import { Overview } from '../components/Overview'; import path from "path"; import { initTest, page, waitUntilPomContains, waitUntilPomNotContains } from '../Utils'; const dataFolder = path.join(__dirname, '..', 'data'); -export const newProjectPath = path.join(dataFolder, 'new-project', 'testProject'); +export const newProjectPath = path.join(dataFolder, 'new-project', 'testProjectFolder'); export const pomFilePath = path.join(newProjectPath, 'testProject', 'pom.xml'); export const configFilePath = path.join(newProjectPath, 'testProject', 'src', 'main', 'wso2mi', 'resources', 'conf', 'config.properties'); diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/projectTests/createProject.spec.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/projectTests/createProject.spec.ts index 873426de2cf..63044138314 100644 --- a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/projectTests/createProject.spec.ts +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/projectTests/createProject.spec.ts @@ -26,7 +26,7 @@ import path from "path"; import fs from 'fs'; const dataFolder = path.join( __dirname, '..', 'data'); -export const newProjectPath = path.join(dataFolder, 'new-project', 'testProject'); +export const newProjectPath = path.join(dataFolder, 'new-project', 'testProjectFolder'); export default function createTests() { test.describe("Create Project Tests", { @@ -68,6 +68,9 @@ export default function createTests() { await textInput?.fill(newProjectPath + '/newProject/'); const openBtn = await fileInput?.waitForSelector('a.monaco-button:has-text("Open MI Project")'); await openBtn?.click(); + const newWindowButton = page.page.getByRole('button', { name: 'New Window' }); + await newWindowButton.waitFor({ timeout: 10000 }); + await newWindowButton.click(); const addArtifactSelector = '.tab-label:has-text("Add Artifact")'; await page.page.waitForSelector(addArtifactSelector, { state: 'visible' }); await page.page.waitForSelector(addArtifactSelector, { state: 'attached' }); @@ -86,7 +89,7 @@ export default function createTests() { await page.page.reload(); await page.executePaletteCommand("MI: Open MI Welcome"); await createProject(page, 'newProjectWithAdConfig', '4.4.0', true); - await waitUntilPomContains(page.page, path.join(newProjectPath, 'newProject', 'newProjectWithAdConfig', 'pom.xml'), + await waitUntilPomContains(page.page, path.join(newProjectPath, 'newProjectWithAdConfig', 'pom.xml'), 'test'); console.log('New project with advanced config created successfully'); }); diff --git a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/test.list.ts b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/test.list.ts index 54087abc54d..337fe1c507b 100644 --- a/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/test.list.ts +++ b/workspaces/mi/mi-extension/src/test/e2e-playwright-tests/test.list.ts @@ -28,9 +28,11 @@ import logMediatorTests from './mediatorTests/log.spec'; import cacheMediatorTests from './mediatorTests/cache.spec'; import throttleMediatorTests from './mediatorTests/throttle.spec'; import callSequenceMediatorTests from './mediatorTests/callSequence.spec'; +import validateMediatorTests from './mediatorTests/validate.spec'; +import dataMapperMediatorTests from './mediatorTests/dataMapper.spec'; +import dbReportMediatorTests from './mediatorTests/dbReport.spec'; import overviewPageTests from './overviewPageTests/projectSettingPage.spec'; import openEntryPointArtifact from './overviewPageTests/openEntryPointArtifact.spec'; -import validateMediatorTests from './mediatorTests/validate.spec'; import multiWorkspaceTests from './multiWorkspaceTests/multiWorkspace.spec'; import unitTestSuitTests from './unitTestSuite.spec'; import { page } from './Utils'; @@ -61,7 +63,9 @@ test.describe(cacheMediatorTests); test.describe(throttleMediatorTests); test.describe(callSequenceMediatorTests); test.describe(validateMediatorTests); +test.describe(dataMapperMediatorTests); test.describe(unitTestSuitTests); +test.describe(dbReportMediatorTests); test.describe(artifact430Tests); test.afterAll(async () => { diff --git a/workspaces/mi/mi-extension/src/util/fileOperations.ts b/workspaces/mi/mi-extension/src/util/fileOperations.ts index f11b004f371..427321f9b7d 100644 --- a/workspaces/mi/mi-extension/src/util/fileOperations.ts +++ b/workspaces/mi/mi-extension/src/util/fileOperations.ts @@ -652,7 +652,7 @@ export async function createMetadataFilesForRegistryCollection(collectionRoot: s export async function getAvailableRegistryResources(projectDir: string): Promise { const result: RegistryArtifact[] = []; - const miVersion = await getMIVersionFromPom(); + const miVersion = await getMIVersionFromPom(projectDir); if (miVersion && compareVersions(miVersion, '4.4.0') >= 0) { var artifactXMLPath = path.join(projectDir, 'src', 'main', 'wso2mi', 'resources', 'artifact.xml'); } else { diff --git a/workspaces/mi/mi-extension/src/util/migrationUtils.ts b/workspaces/mi/mi-extension/src/util/migrationUtils.ts index 404fdec0241..cddc33d9383 100644 --- a/workspaces/mi/mi-extension/src/util/migrationUtils.ts +++ b/workspaces/mi/mi-extension/src/util/migrationUtils.ts @@ -43,33 +43,33 @@ enum Nature { } interface ArtifactItem { - file: string; - path: string; - mediaType: string; - properties: any; + file: string; + path: string; + mediaType: string; + properties: any; } interface ArtifactCollection { - directory: string; - path: string; - properties: any; + directory: string; + path: string; + properties: any; } interface Dependency { - groupId: string; - artifactId: string; - version: string; + groupId: string; + artifactId: string; + version: string; } interface Artifact { - '@_name': string; - '@_groupId': string; - '@_version': string; - '@_type': string; - '@_serverRole': string; - file: string; - item: ArtifactItem | ArtifactItem[]; - collection: ArtifactCollection | ArtifactCollection[]; + '@_name': string; + '@_groupId': string; + '@_version': string; + '@_type': string; + '@_serverRole': string; + file: string; + item: ArtifactItem | ArtifactItem[]; + collection: ArtifactCollection | ArtifactCollection[]; } type FileInfo = { @@ -85,30 +85,30 @@ type PomResolutionResult = { }; interface ArtifactsRoot { - artifacts: { - artifact?: Artifact | Artifact[]; - }; + artifacts: { + artifact?: Artifact | Artifact[]; + }; } const xmlParserOptions = { - ignoreAttributes: false, - attributeNamePrefix: '@_', - parseAttributeValue: false, - trimValues: true, - parseTrueNumberOnly: false, - arrayMode: false, - parseTagValue: false, - parseNodeValue: false + ignoreAttributes: false, + attributeNamePrefix: '@_', + parseAttributeValue: false, + trimValues: true, + parseTrueNumberOnly: false, + arrayMode: false, + parseTagValue: false, + parseNodeValue: false }; const xmlBuilderOptions = { - ignoreAttributes: false, - format: true, - indentBy: ' ', - suppressEmptyNode: true, - suppressBooleanAttributes: false, - attributeNamePrefix: '@_', - textNodeName: '#text' + ignoreAttributes: false, + format: true, + indentBy: ' ', + suppressEmptyNode: true, + suppressBooleanAttributes: false, + attributeNamePrefix: '@_', + textNodeName: '#text' }; const BACKUP_DIR = '.backup'; @@ -139,7 +139,33 @@ const SYNAPSE_TO_MI_ARTIFACT_FOLDER_MAP: Record = { 'templates': 'templates' }; -export async function importProject(params: ImportProjectRequest): Promise { +const OLD_MULTI_MODULE_PROJECT_NATURES = [ + 'org.wso2.developerstudio.eclipse.mavenmultimodule.project.nature', + 'org.eclipse.m2e.core.maven2Nature' +]; + +export async function importProjects(params: ImportProjectRequest[]): Promise { + const responses: ImportProjectResponse[] = []; + const allCreatedFolderUris: Uri[] = []; + for (const param of params) { + try { + const createdFolderPaths = await importProject(param); + for (const folder of createdFolderPaths) { + responses.push({ filePath: folder.filePath }); + allCreatedFolderUris.push(Uri.file(folder.filePath)); + } + } catch (error) { + console.error(`Failed to import project from ${param.source}:`, error); + responses.push({ filePath: '' }); + } + } + if (allCreatedFolderUris.length > 0) { + await handleWorkspaceAfterMigration(params[0].directory, allCreatedFolderUris); + } + return responses; +} + +export async function importProject(params: ImportProjectRequest): Promise { const { source, directory, open } = params; const projectUri = workspace.getWorkspaceFolder(Uri.file(source))?.uri?.fsPath; if (!projectUri) { @@ -152,10 +178,6 @@ export async function importProject(params: ImportProjectRequest): Promise 0) { + return createdFolderUris.map(uri => ({ filePath: uri.fsPath })); + } else { + return [{ filePath: source }]; + } } else { - window.showErrorMessage('Could not find the project details from the provided project: ', source); - return { filePath: "" }; + window.showErrorMessage('Could not find the project details from the provided project: ' + source); + return [{ filePath: "" }]; } } @@ -375,10 +401,11 @@ export async function migrateConfigs( projectDirToResolvedPomMap: Map, projectDirsWithType: { projectDir: string, projectType: Nature }[], createdProjectCount: number -): Promise { +): Promise { // determine the project type here - const projectType = determineProjectType(source); + const projectType = await determineProjectType(source); let hasClassMediatorModule = false; + const createdFolderUris: Uri[] = []; if (projectType === Nature.MULTIMODULE) { const artifactIdToFileInfoMap = generateArtifactIdToFileInfoMap(projectDirToResolvedPomMap, projectDirsWithType); @@ -386,7 +413,6 @@ export async function migrateConfigs( const projectDirToMetaFilesMap = generateProjectDirToMetaFilesMap(projectDirsWithType); const allUsedDependencyIds = new Set(); - const createdFolderUris: Uri[] = []; for (const { projectDir, projectType } of projectDirsWithType) { if (projectType === Nature.DISTRIBUTION && artifactIdToFileInfoMap) { // Compute the relative path from source to projectDir, and map it to the target @@ -406,20 +432,19 @@ export async function migrateConfigs( } } writeUnusedFileInfos(allUsedDependencyIds, artifactIdToFileInfoMap, source) - await handleWorkspaceAfterMigration(projectUri, createdFolderUris); } else if (projectType === Nature.LEGACY) { const items = fs.readdirSync(source, { withFileTypes: true }); - items.forEach(item => { + for (const item of items) { if (item.isDirectory()) { const sourceAbsolutePath = path.join(source, item.name); - const moduleType = determineProjectType(path.join(source, item.name)); + const moduleType = await determineProjectType(path.join(source, item.name)); if (moduleType === Nature.LEGACY) { processArtifactsFolder(sourceAbsolutePath, target); processMetaDataFolder(sourceAbsolutePath, target); processTestsFolder(sourceAbsolutePath, target); } } - }); + } } else if (projectType === Nature.ESB || projectType === Nature.DS || projectType === Nature.DATASOURCE || projectType === Nature.CONNECTOR || projectType === Nature.REGISTRY || projectType === Nature.CLASS) { copyConfigsToNewProjectStructure(projectType, source, target); @@ -428,38 +453,33 @@ export async function migrateConfigs( await updatePomForClassMediator(projectUri); } commands.executeCommand('setContext', 'MI.migrationStatus', 'done'); + return createdFolderUris; } /** - * Handles post-migration workspace actions based on the number of created project folders. + * Handles workspace updates after a migration process by opening new folders or updating the workspace configuration. * - * - If the number of created projects is within the allowed limit, it either opens the single project in a new window - * or updates the current workspace with the new folders. - * - If the number exceeds the limit, it shows a warning message and prompts the user to open the projects manually. + * - If there is only one folder in workspace or none, and exactly one new folder was created, it opens that folder in a new window and closes the current one. + * - If multiple folders were created or the workspace already contains multiple folders, it updates the workspace with the new folders. * * @param projectUri - The URI of the original project being migrated. - * @param createdFolderUris - An array of URIs representing the newly created project folders. - * @returns A promise that resolves when the workspace actions are complete. + * @param createdFolderUris - An array of URIs representing the folders created during migration. + * @returns A promise that resolves when the workspace has been updated accordingly. */ async function handleWorkspaceAfterMigration(projectUri: string, createdFolderUris: Uri[]) { const createdProjectCount = createdFolderUris.length; - if (createdProjectCount <= MAX_PROJECTS_TO_OPEN) { - if (!workspace.workspaceFolders || workspace.workspaceFolders.length <= 1) { - if (createdProjectCount === 1) { - await commands.executeCommand('vscode.openFolder', createdFolderUris[0], true); - await commands.executeCommand('workbench.action.closeWindow'); - } else { - await updateWorkspaceWithNewFolders(projectUri, createdFolderUris); - } + if (!workspace.workspaceFolders || workspace.workspaceFolders.length <= 1) { + if (createdProjectCount === 1) { + await commands.executeCommand('workbench.action.closeWindow'); + await commands.executeCommand('vscode.openFolder', createdFolderUris[0], true); } else { + await commands.executeCommand('workbench.action.closeActiveEditor'); await updateWorkspaceWithNewFolders(projectUri, createdFolderUris); } } else { - await window.showWarningMessage( - `Processed ${createdProjectCount} composite exporters and generated the relevant integration projects. Please open them from the file explorer.`, - { modal: true } - ); - commands.executeCommand('workbench.view.explorer'); + // If in a workspace with multiple folders, close the current open tab + await commands.executeCommand('workbench.action.closeActiveEditor'); + await updateWorkspaceWithNewFolders(projectUri, createdFolderUris); } } @@ -536,14 +556,14 @@ function writeUnusedFileInfos( function getProjectDirectoriesWithType(rootDir: string, items?: fs.Dirent[]): { projectDir: string, projectType: Nature }[] { const results: { projectDir: string, projectType: Nature }[] = []; - function traverse(dir: string) { + async function traverse(dir: string) { const items = fs.readdirSync(dir, { withFileTypes: true }); for (const item of items) { const fullPath = path.join(dir, item.name); if (item.isDirectory()) { - const projectType = determineProjectType(fullPath); + const projectType = await determineProjectType(fullPath); if (projectType !== undefined) { results.push({ projectDir: fullPath, projectType }); } @@ -618,7 +638,7 @@ function generateArtifactIdToFileInfoMap( */ function generateConfigToTestAndMockServiceMaps( source: string, - projectDirsWithType: { projectDir: string, projectType: Nature }[] + projectDirsWithType: { projectDir: string, projectType: Nature }[] ): { configToTests: Map, configToMockServices: Map @@ -768,15 +788,15 @@ function getPomIdentifierStr(groupId: string, artifactId: string, version: strin * @returns The extracted XML string if found, or `null` if no `` block is present. */ function extractXmlFromMavenOutput(output: string): string | null { - const start = output.indexOf(''); + const start = output.indexOf(''); - if (start === -1 || end === -1) { - return null; // XML not found - } + if (start === -1 || end === -1) { + return null; // XML not found + } - // +10 to include length of '' - return output.substring(start, end + 10); + // +10 to include length of '' + return output.substring(start, end + 10); } /** @@ -937,58 +957,65 @@ function getFolderStructure( }; } -function determineProjectType(source: string): Nature | undefined { +async function determineProjectType(source: string): Promise { const rootMetaDataFilePath = path.join(source, '.project'); + const rootPomFilePath = path.join(source, 'pom.xml'); let configType; if (fs.existsSync(rootMetaDataFilePath)) { const projectFileContent = fs.readFileSync(rootMetaDataFilePath, 'utf-8'); - parseString(projectFileContent, { explicitArray: false, ignoreAttrs: true }, (err, result) => { - if (err) { - console.error('Error occured while reading ' + rootMetaDataFilePath, err); - return; - } + const result = await new Promise((resolve, reject) => { + parseString(projectFileContent, { explicitArray: false, ignoreAttrs: true }, (err, result) => { + if (err) { + console.error('Error occured while reading ' + rootMetaDataFilePath, err); + resolve(''); + } else { + resolve(result); + } + }); + }); + if (result && result.projectDescription) { const projectDescription = result.projectDescription; if (projectDescription && projectDescription.natures && projectDescription.natures.nature) { let nature = projectDescription.natures.nature; if (Array.isArray(nature)) { nature = nature.find(element => element.startsWith("org.wso2.developerstudio.eclipse")); } - - switch (nature) { - case 'org.wso2.developerstudio.eclipse.mavenmultimodule.project.nature': - configType = Nature.MULTIMODULE; - break; - case 'org.wso2.developerstudio.eclipse.esb.project.nature': - configType = Nature.ESB; - break; - case 'org.wso2.developerstudio.eclipse.ds.project.nature': - configType = Nature.DS; - break; - case 'org.wso2.developerstudio.eclipse.datasource.project.nature': - configType = Nature.DATASOURCE; - break; - case 'org.wso2.developerstudio.eclipse.artifact.connector.project.nature': - configType = Nature.CONNECTOR; - break; - case 'org.wso2.developerstudio.eclipse.general.project.nature': - configType = Nature.REGISTRY; - break; - case 'org.wso2.developerstudio.eclipse.artifact.mediator.project.nature': - configType = Nature.CLASS; - break; - case 'org.eclipse.m2e.core.maven2Nature': - configType = Nature.LEGACY; - break; - case 'org.wso2.developerstudio.eclipse.distribution.project.nature': - configType = Nature.DISTRIBUTION; - break; - } + configType = getNatureFromString(nature); } - }); + } + } else if (fs.existsSync(rootPomFilePath)) { + const pomContent = fs.readFileSync(rootPomFilePath, 'utf-8'); + const fetchedNatureStr = await extractNatureFromPomContent(pomContent); + configType = getNatureFromString(fetchedNatureStr); } return configType; } +function getNatureFromString(nature: string | undefined): Nature | undefined { + switch (nature) { + case 'org.wso2.developerstudio.eclipse.mavenmultimodule.project.nature': + return Nature.MULTIMODULE; + case 'org.wso2.developerstudio.eclipse.esb.project.nature': + return Nature.ESB; + case 'org.wso2.developerstudio.eclipse.ds.project.nature': + return Nature.DS; + case 'org.wso2.developerstudio.eclipse.datasource.project.nature': + return Nature.DATASOURCE; + case 'org.wso2.developerstudio.eclipse.artifact.connector.project.nature': + return Nature.CONNECTOR; + case 'org.wso2.developerstudio.eclipse.general.project.nature': + return Nature.REGISTRY; + case 'org.wso2.developerstudio.eclipse.artifact.mediator.project.nature': + return Nature.CLASS; + case 'org.eclipse.m2e.core.maven2Nature': + return Nature.LEGACY; + case 'org.wso2.developerstudio.eclipse.distribution.project.nature': + return Nature.DISTRIBUTION; + default: + return undefined; + } +} + function copyConfigToNewProjectStructure(sourceFileInfo: FileInfo, target: string) { switch (sourceFileInfo.projectType) { case Nature.ESB: @@ -1418,19 +1445,19 @@ function processArtifactForWrite(artifact: Artifact): void { if (artifact.item) { const items = Array.isArray(artifact.item) ? artifact.item : [artifact.item]; items.forEach(item => { - if (item.file && typeof item.file === 'string') { - const parts = item.file.split('/'); - item.file = parts[parts.length - 1]; - } + if (item.file && typeof item.file === 'string') { + const parts = item.file.split('/'); + item.file = parts[parts.length - 1]; + } }); artifact.item = Array.isArray(artifact.item) ? items : items[0]; } else if (artifact.collection) { const collections = Array.isArray(artifact.collection) ? artifact.collection : [artifact.collection]; collections.forEach(collection => { - if (collection.directory && typeof collection.directory === 'string') { - const parts = collection.directory.split('/'); - collection.directory = parts[parts.length - 1]; - } + if (collection.directory && typeof collection.directory === 'string') { + const parts = collection.directory.split('/'); + collection.directory = parts[parts.length - 1]; + } }); artifact.collection = Array.isArray(artifact.collection) ? collections : collections[0]; } @@ -1579,6 +1606,130 @@ function readPomDependencies(source: string, projectDirToResolvedPomMap: Map value from the given pom.xml content. + * Assumes structure always contains one or more elements. + */ +export function extractNatureFromPomContent(pomXmlContent: string): Promise { + return new Promise((resolve, reject) => { + parseString(pomXmlContent, { explicitArray: false, ignoreAttrs: true }, (err, result) => { + if (err) { + return reject('Failed to parse pom.xml: ' + err); + } + + const nature = findProjectNature(result); + resolve(nature); + }); + }); +} + +/** + * Recursively searches for ... + * and returns the first matching value that starts with the expected prefix. + */ +function findProjectNature(node: any): string | undefined { + if (typeof node !== 'object' || node === null) return undefined; + + for (const key of Object.keys(node)) { + const value = node[key]; + + if (key.toLowerCase() === 'projectnatures') { + const natures = value.projectnature; + + if (typeof natures === 'string') { + if (natures.startsWith('org.wso2.developerstudio.eclipse')) { + return natures; + } + } else if (Array.isArray(natures)) { + const match = natures.find(n => + typeof n === 'string' && n.startsWith('org.wso2.developerstudio.eclipse') + ); + if (match) return match; + } + } + + // Recurse into nested objects + if (typeof value === 'object') { + const nestedResult = findProjectNature(value); + if (nestedResult) return nestedResult; + } + } + + return undefined; +} + +/** + * Checks if the specified project file contains any of the old multi-module project natures. + * + * @param filePath - The path to the project file to check. + * @returns A promise that resolves to `true` if the file contains any of the old multi-module project natures, otherwise `false`. + */ +export async function containsMultiModuleNatureInProjectFile(filePath: string): Promise { + if (!fs.existsSync(filePath)) return false; + const content = await fs.promises.readFile(filePath, 'utf-8'); + return OLD_MULTI_MODULE_PROJECT_NATURES.some(nature => content.includes(`${nature}`)); +} + +/** + * Checks if the given POM file contains a multi-module project nature. + * + * Reads the specified POM file, extracts its project nature, and determines + * whether it matches any of the known old multi-module project natures. + * + * @param filePath - The absolute path to the POM file to check. + * @returns A promise that resolves to `true` if the POM file contains a multi-module nature, or `false` otherwise. + */ +export async function containsMultiModuleNatureInPomFile(filePath: string): Promise { + if (!fs.existsSync(filePath)) return false; + const pomContent = await fs.promises.readFile(filePath, 'utf-8'); + const projectNature = await extractNatureFromPomContent(pomContent); + return OLD_MULTI_MODULE_PROJECT_NATURES.includes(projectNature ?? ''); +} + +/** + * Recursively searches the given workspace directory for multi-module projects. + * + * A multi-module project is identified by either: + * - A `.project` file containing multi-module nature + * - A `pom.xml` file containing multi-module nature + * + * Directories named `.backup` are skipped. + * + * @param workspaceDir - The root directory of the workspace to search. + * @returns A promise that resolves to an array of directory paths containing multi-module projects. + */ +export async function findMultiModuleProjectsInWorkspaceDir(workspaceDir: string): Promise { + const foundProjects: string[] = []; + + async function checkDir(dir: string) { + if (path.basename(dir) === '.backup') { + return; // Skip .backup directories + } + const projectFile = path.join(dir, '.project'); + const pomFile = path.join(dir, 'pom.xml'); + if (fs.existsSync(projectFile)) { + if (await containsMultiModuleNatureInProjectFile(projectFile)) { + foundProjects.push(dir); + } + } else if (fs.existsSync(pomFile)) { + if (await containsMultiModuleNatureInPomFile(pomFile)) { + foundProjects.push(dir); + } + } else { + // Recurse into subdirectories + const dirs = fs.readdirSync(dir, { withFileTypes: true }); + for (const dirent of dirs) { + if (dirent.isDirectory()) { + await checkDir(path.join(dir, dirent.name)); + } + } + } + } + + await checkDir(workspaceDir); + return foundProjects; +} + /** * Extracts and returns a record of property key-value pairs from the given XML object. * diff --git a/workspaces/mi/mi-extension/src/util/onboardingUtils.ts b/workspaces/mi/mi-extension/src/util/onboardingUtils.ts index 16a448c82ae..92b657bce2e 100644 --- a/workspaces/mi/mi-extension/src/util/onboardingUtils.ts +++ b/workspaces/mi/mi-extension/src/util/onboardingUtils.ts @@ -60,10 +60,9 @@ export async function setupEnvironment(projectUri: string, isOldProject: boolean return false; } const versions: string[] = ["4.0.0", "4.1.0", "4.2.0", "4.3.0"]; - if (miVersionFromPom && versions.includes(miVersionFromPom)) { - const config = vscode.workspace.getConfiguration('MI', vscode.Uri.file(projectUri)); - await config.update("LEGACY_EXPRESSION_ENABLED", true, vscode.ConfigurationTarget.WorkspaceFolder); - } + const config = vscode.workspace.getConfiguration('MI', vscode.Uri.file(projectUri)); + await config.update("LEGACY_EXPRESSION_ENABLED", miVersionFromPom && versions.includes(miVersionFromPom), + vscode.ConfigurationTarget.WorkspaceFolder); const isMISet = await isMISetup(projectUri, miVersionFromPom); const isJavaSet = await isJavaSetup(projectUri, miVersionFromPom); @@ -97,7 +96,7 @@ export async function isMIUpToDate(): Promise { } export async function getProjectSetupDetails(projectUri: string): Promise { - const miVersion = await getMIVersionFromPom(); + const miVersion = await getMIVersionFromPom(projectUri); if (!miVersion) { vscode.window.showErrorMessage('Failed to get WSO2 Integrator: MI version from pom.xml.'); return { miVersionStatus: 'missing', javaDetails: { status: 'not-valid' }, miDetails: { status: 'not-valid' } }; @@ -110,8 +109,9 @@ export async function getProjectSetupDetails(projectUri: string): Promise { - const pomFiles = await vscode.workspace.findFiles('pom.xml', '**/node_modules/**', 1); +export async function getMIVersionFromPom(projectUri: string): Promise { + const pattern = new vscode.RelativePattern(projectUri, 'pom.xml'); + const pomFiles = await vscode.workspace.findFiles(pattern, '**/node_modules/**', 1); if (pomFiles.length === 0) { vscode.window.showErrorMessage('pom.xml not found.'); return null; @@ -585,7 +585,7 @@ function isMIInstalledAtPath(miPath: string): boolean { return fs.existsSync(path.join(miPath, 'bin', miExecutable)); } export async function setPathsInWorkSpace(request: SetPathRequest): Promise { - const projectMIVersion = await getMIVersionFromPom(); + const projectMIVersion = await getMIVersionFromPom(request.projectUri); let response: PathDetailsResponse = { status: 'not-valid' }; if (projectMIVersion) { diff --git a/workspaces/mi/mi-extension/src/visualizer/activate.ts b/workspaces/mi/mi-extension/src/visualizer/activate.ts index 2345c343192..fee9bd6c8ed 100644 --- a/workspaces/mi/mi-extension/src/visualizer/activate.ts +++ b/workspaces/mi/mi-extension/src/visualizer/activate.ts @@ -17,7 +17,7 @@ */ import * as vscode from 'vscode'; -import { commands, window } from 'vscode'; +import { commands, window, workspace } from 'vscode'; import { getStateMachine, navigate, openView, refreshUI } from '../stateMachine'; import { COMMANDS, REFRESH_ENABLED_DOCUMENTS, SWAGGER_LANG_ID, SWAGGER_REL_DIR } from '../constants'; import { EVENT_TYPE, MACHINE_VIEW, onDocumentSave } from '@wso2/mi-core'; @@ -42,6 +42,22 @@ export function activateVisualizer(context: vscode.ExtensionContext, firstProjec window.showOpenDialog({ canSelectFolders: true, canSelectFiles: true, filters: { 'CAPP': ['car', 'zip'] }, openLabel: 'Open MI Project' }) .then(uri => { if (uri && uri[0]) { + const handleOpenProject = (folderUri: vscode.Uri) => { + window.showInformationMessage('Where would you like to open the project?', + { modal: true }, + 'Current Window', + 'New Window' + ).then(selection => { + if (selection === "Current Window") { + const workspaceFolders = workspace.workspaceFolders || []; + if (!workspaceFolders.some(folder => folder.uri.fsPath === folderUri.fsPath)) { + workspace.updateWorkspaceFolders(workspaceFolders.length, 0, { uri: folderUri }); + } + } else if (selection === "New Window") { + commands.executeCommand('vscode.openFolder', folderUri); + } + }); + }; if (uri[0].fsPath.endsWith('.car') || uri[0].fsPath.endsWith('.zip')) { window.showInformationMessage('A car file (CAPP) is selected.\n Do you want to extract it?', { modal: true }, 'Extract') .then(option => { @@ -50,12 +66,20 @@ export function activateVisualizer(context: vscode.ExtensionContext, firstProjec .then(extractUri => { if (extractUri && extractUri[0]) { importCapp({ source: uri[0].fsPath, directory: extractUri[0].fsPath, open: false }); + handleOpenProject(extractUri[0]); } }); } }); } else { - commands.executeCommand('vscode.openFolder', uri[0]); + const webview = [...webviews.values()].find(webview => webview.getWebview()?.active) || [...webviews.values()][0]; + const projectUri = webview ? webview.getProjectUri() : firstProject; + const projectOpened = getStateMachine(projectUri).context().projectOpened; + if (projectOpened) { + handleOpenProject(uri[0]); + } else { + commands.executeCommand('vscode.openFolder', uri[0]); + } } } }); diff --git a/workspaces/mi/mi-rpc-client/src/rpc-clients/mi-visualizer/rpc-client.ts b/workspaces/mi/mi-rpc-client/src/rpc-clients/mi-visualizer/rpc-client.ts index f5be2016491..8cd06c4e3eb 100644 --- a/workspaces/mi/mi-rpc-client/src/rpc-clients/mi-visualizer/rpc-client.ts +++ b/workspaces/mi/mi-rpc-client/src/rpc-clients/mi-visualizer/rpc-client.ts @@ -55,7 +55,9 @@ import { getProjectOverview, getProjectStructure, getReadmeContent, + getProjectUri, getWorkspaces, + findOldProjects, goBack, goHome, goSelected, @@ -116,10 +118,18 @@ export class MiVisualizerRpcClient implements MIVisualizerAPI { this._messenger = messenger; } + getProjectUri(): Promise { + return this._messenger.sendRequest(getProjectUri, HOST_EXTENSION); + } + getWorkspaces(): Promise { return this._messenger.sendRequest(getWorkspaces, HOST_EXTENSION); } + findOldProjects(): Promise { + return this._messenger.sendRequest(findOldProjects, HOST_EXTENSION); + } + getProjectStructure(params: ProjectStructureRequest): Promise { return this._messenger.sendRequest(getProjectStructure, HOST_EXTENSION, params); } diff --git a/workspaces/mi/mi-visualizer/src/RuntimeServicesPanel.tsx b/workspaces/mi/mi-visualizer/src/RuntimeServicesPanel.tsx index 30db1ccbe90..a4dbfbc0f1f 100644 --- a/workspaces/mi/mi-visualizer/src/RuntimeServicesPanel.tsx +++ b/workspaces/mi/mi-visualizer/src/RuntimeServicesPanel.tsx @@ -162,7 +162,7 @@ export function RuntimeServicePanel() { const { rpcClient } = useVisualizerContext(); const [services, setAvailableServices] = useState(); const [isSwaggerEnabled, setSwaggerEnabled] = useState({ isSwaggerTriggered: false }); - const [serverRunStatus, setServerRunStatus] = useState('Stopped' as MiServerRunStatus); + const [serverRunStatus, setServerRunStatus] = useState('Running' as MiServerRunStatus); useEffect(() => { if (rpcClient) { diff --git a/workspaces/mi/mi-visualizer/src/Visualizer.tsx b/workspaces/mi/mi-visualizer/src/Visualizer.tsx index bbebf5e80ca..6050597b0ee 100644 --- a/workspaces/mi/mi-visualizer/src/Visualizer.tsx +++ b/workspaces/mi/mi-visualizer/src/Visualizer.tsx @@ -30,6 +30,7 @@ import { RuntimeServicePanel } from "./RuntimeServicesPanel"; import { SwaggerPanel } from "./SwaggerPanel"; import { gitIssueUrl } from "./constants"; import { EnvironmentSetup } from "./views/EnvironmentSetup"; +import { UnsupportedProject } from "./views/UnsupportedProject"; const LoaderWrapper = styled.div` display: flex; @@ -79,6 +80,8 @@ export function Visualizer({ mode, swaggerData }: { mode: string, swaggerData?: setCurrentView('welcome'); } else if ('environmentSetup' in newState && newState.environmentSetup === "viewReady") { setCurrentView('environmentSetup'); + } else if ('oldWorkspaceDetected' in newState && newState.oldWorkspaceDetected === "viewReady") { + setCurrentView('oldWorkspaceDetected'); } } else if (newState === 'disabled') { setCurrentView('disabled'); @@ -115,6 +118,9 @@ export function Visualizer({ mode, swaggerData }: { mode: string, swaggerData?: case 'environmentSetup': setView(); break; + case 'oldWorkspaceDetected': + setView(); + break; case 'disabled': setView(); break; diff --git a/workspaces/mi/mi-visualizer/src/constants/index.ts b/workspaces/mi/mi-visualizer/src/constants/index.ts index 52c4795d5b5..998837ad6ca 100644 --- a/workspaces/mi/mi-visualizer/src/constants/index.ts +++ b/workspaces/mi/mi-visualizer/src/constants/index.ts @@ -54,6 +54,7 @@ export const gitIssueUrl = "https://github.com/wso2/mi-vscode/issues"; export const COMMANDS = { MIGRATE_PROJECT: "MI.migrateProject", + OPEN_PROJECT: "MI.openProject" } // Actions for service designer diff --git a/workspaces/mi/mi-visualizer/src/views/Overview/ProjectInformation/ProjectInformationForm.tsx b/workspaces/mi/mi-visualizer/src/views/Overview/ProjectInformation/ProjectInformationForm.tsx index 975bb33e731..93a55660ebd 100644 --- a/workspaces/mi/mi-visualizer/src/views/Overview/ProjectInformation/ProjectInformationForm.tsx +++ b/workspaces/mi/mi-visualizer/src/views/Overview/ProjectInformation/ProjectInformationForm.tsx @@ -53,6 +53,7 @@ const sectionTitleStyle = { margin: 0, paddingLeft: 20 }; // Field name to pom property name mapping export const fieldToPomPropertyMap: Record = { "buildDetails-enableFatCar": "fat.car.enable", + "buildDetails-dockerDetails-cipherToolEnable": "ciphertool.enable" }; export function ProjectInformationForm(props: ProjectInformationFormProps) { @@ -70,7 +71,7 @@ export function ProjectInformationForm(props: ProjectInformationFormProps) { "buildDetails-dockerDetails-dockerFileBaseImage": yup.string().required("Base image is required"), "buildDetails-dockerDetails-dockerName": yup.string().required("Docker name is required"), "buildDetails-enableFatCar": yup.boolean(), - "buildDetails-dockerDetails-enableCipherTool": yup.boolean(), + "buildDetails-dockerDetails-cipherToolEnable": yup.boolean(), "buildDetails-dockerDetails-keyStoreName": yup.string(), "buildDetails-dockerDetails-keyStoreAlias": yup.string(), "buildDetails-dockerDetails-keyStoreType": yup.string(), @@ -176,7 +177,7 @@ export function ProjectInformationForm(props: ProjectInformationFormProps) { "buildDetails-dockerDetails-dockerFileBaseImage": response.buildDetails?.dockerDetails?.dockerFileBaseImage?.value, "buildDetails-dockerDetails-dockerName": response.buildDetails?.dockerDetails?.dockerName.value, "buildDetails-enableFatCar": response.buildDetails?.enableFatCar?.value === 'true', - "buildDetails-dockerDetails-enableCipherTool": Boolean(response.buildDetails?.dockerDetails?.cipherToolEnable?.value), + "buildDetails-dockerDetails-cipherToolEnable": response.buildDetails?.dockerDetails?.cipherToolEnable?.value === 'true', "buildDetails-dockerDetails-keyStoreName": response.buildDetails?.dockerDetails?.keyStoreName?.value, "buildDetails-dockerDetails-keyStoreAlias": response.buildDetails?.dockerDetails?.keyStoreAlias?.value, "buildDetails-dockerDetails-keyStoreType": response.buildDetails?.dockerDetails?.keyStoreType?.value, @@ -511,7 +512,7 @@ export function ProjectInformationForm(props: ProjectInformationFormProps) { descriptionSx={{ margin: "10px 0" }} control={control as any} sx={fieldStyle} - {...register("buildDetails-dockerDetails-enableCipherTool")} + {...register("buildDetails-dockerDetails-cipherToolEnable")} /> = ({ title, description, expanded, onClick }) => }; export function UnsupportedProject(props: UnsupportedProjectProps) { + const PROJECT = 'Project'; + const WORKSPACE = 'Workspace'; const { displayOverview = true } = props; const { rpcClient } = useVisualizerContext(); - const [activeWorkspaces, setActiveWorkspaces] = React.useState(undefined); + const [openedDirectory, setOpenedDirectory] = React.useState(undefined); + const [foundOldProjects, setFoundOldProjects] = React.useState([]); + const [projectType, setProjectType] = React.useState(PROJECT); // 'Project' or 'Workspace' const [activeCard, setActiveCard] = React.useState(0); const [currentThemeKind, setCurrentThemeKind] = React.useState(undefined); const [displayOverviewOnStartup, setDisplayOverviewOnStartup] = React.useState(displayOverview); + const [isMigrating, setIsMigrating] = React.useState(false); const cards = [ { @@ -219,20 +229,39 @@ export function UnsupportedProject(props: UnsupportedProjectProps) { setDisplayOverviewOnStartup(!displayOverviewOnStartup); }; - const migrateProject = async () => { - await rpcClient.getMiDiagramRpcClient() - .executeCommand({ commands: [COMMANDS.MIGRATE_PROJECT, { source: undefined }] }); + const migrate = async () => { + if (openedDirectory) { + setIsMigrating(true); + try { + await rpcClient.getMiDiagramRpcClient().migrateProject({ dir: openedDirectory, sources: foundOldProjects }); + } catch (error) { + console.error('Migration failed:', error); + setIsMigrating(false); + } + } } useEffect(() => { - rpcClient - .getMiVisualizerRpcClient() - .getWorkspaces() - .then(response => { - setActiveWorkspaces(response.workspaces[0]); - }); + rpcClient.getMiVisualizerRpcClient().getProjectUri().then((uri) => { + setOpenedDirectory(uri); + }); }, []); + useEffect(() => { + if (openedDirectory) { + rpcClient.getMiVisualizerRpcClient().findOldProjects().then((response) => { + if (response && response.length > 0) { + setFoundOldProjects(response); + if (response.length > 1) { + setProjectType(WORKSPACE); + } else if (response.length === 1 && openedDirectory !== response[0]) { + setProjectType(WORKSPACE); + } + } + }); + } + }, [openedDirectory]); // Runs when openedDirectory changes + // Set current theme useEffect(() => { if (rpcClient) { @@ -263,24 +292,58 @@ export function UnsupportedProject(props: UnsupportedProjectProps) { return ( - + - Unsupported Project Detected + + {`Unsupported ${projectType} Detected`} + - This project was identified as being created with Integration Studio. The MI VSCode extension has limited - functionality for these projects. + {`This ${projectType} was identified as being created with Integration Studio. The MI VSCode extension has limited + functionality for these projects.`} - We recommend migrating your project to the latest format to unlock the full suite of features available. + {`We recommend migrating your ${projectType.toLowerCase()} to the latest format to unlock the full suite of features available.`} For more information, refer to the{' '} migration documentation . + {foundOldProjects.length > 0 && projectType === WORKSPACE && ( +
+ + Found projects: + +
    + {foundOldProjects.map((project, idx) => ( +
  • + {project} +
  • + ))} +
+
+ )}
- +
diff --git a/workspaces/mi/mi-visualizer/src/views/WelcomeView/index.tsx b/workspaces/mi/mi-visualizer/src/views/WelcomeView/index.tsx index 75c1a2d2bf5..09e63d3523e 100644 --- a/workspaces/mi/mi-visualizer/src/views/WelcomeView/index.tsx +++ b/workspaces/mi/mi-visualizer/src/views/WelcomeView/index.tsx @@ -25,6 +25,7 @@ import { Button, Codicon, ComponentCard } from "@wso2/ui-toolkit"; import { ProjectWizard } from "../Forms/ProjectForm"; import { VSCodeButton, VSCodeLink } from "@vscode/webview-ui-toolkit/react"; import { ImportProjectWizard } from "../Forms/ImportProjectForm"; +import { COMMANDS } from "../../constants"; const TextWrapper = styled.div` display: flex; @@ -142,6 +143,10 @@ export function WelcomeView() { }); } + const goToOpenProject = async () => { + await rpcClient.getMiDiagramRpcClient().executeCommand({ commands: [COMMANDS.OPEN_PROJECT] }); + } + const handleMoreSamples = () => { rpcClient.getMiVisualizerRpcClient().openView({ type: EVENT_TYPE.OPEN_VIEW, @@ -195,18 +200,18 @@ export function WelcomeView() {
- {/* this has to be given in the activity for an old project - Import - Import an existing project. - - */} + + Open Project + Open an existing integration project. + + Troubleshooting Experiencing problems? Start with our Troubleshooting Guide.