diff --git a/.github/actions/setup-ui-deps/action.yml b/.github/actions/setup-ui-deps/action.yml new file mode 100644 index 0000000000..fdb40c7c3a --- /dev/null +++ b/.github/actions/setup-ui-deps/action.yml @@ -0,0 +1,44 @@ +name: Setup UI dependencies +description: 'Setup UI dependencies for linting and testing' +runs: + using: 'composite' + steps: + - name: Set up Node.js + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + with: + node-version: '22' + + - name: Set up pnpm + uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + with: + package_json_file: 'ui/package.json' + version: latest + + - name: Print pnpm version + shell: bash + run: pnpm --version + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Upload lockfile + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + with: + name: pnpm-lock + path: ui/pnpm-lock.yaml + + - name: Install node dependencies + shell: bash + working-directory: ./ui + run: | + pnpm install --frozen-lockfile diff --git a/.github/workflows/build-webui.yml b/.github/workflows/build-webui.yml index 0426f5ce63..f79fd2adff 100644 --- a/.github/workflows/build-webui.yml +++ b/.github/workflows/build-webui.yml @@ -25,34 +25,7 @@ jobs: with: fetch-depth: 0 - - name: Set up Node.js - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 - with: - node-version: '21' - - - name: Set up pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 - with: - standalone: true - package_json_file: 'ui/package.json' - version: latest - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - working-directory: ./ui - run: pnpm install + - uses: ./.github/actions/setup-ui-deps - name: Build working-directory: ./ui diff --git a/.github/workflows/built-tests.yml b/.github/workflows/built-tests.yml index 02e988741e..234ac6362d 100644 --- a/.github/workflows/built-tests.yml +++ b/.github/workflows/built-tests.yml @@ -183,30 +183,7 @@ jobs: with: fetch-depth: 0 - - name: Set up Node.js - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 - with: - node-version: '22' - - - name: Set up pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 - with: - standalone: true - package_json_file: 'ui/package.json' - version: latest - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- + - uses: ./.github/actions/setup-ui-deps - name: Install dependencies working-directory: ./ui @@ -254,35 +231,7 @@ jobs: with: fetch-depth: 0 - - name: Set up Node.js - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 - with: - node-version: '21' - - - name: Set up pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 - with: - standalone: true - package_json_file: 'ui/package.json' - version: latest - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install node dependencies - working-directory: ./ui - run: | - pnpm install + - uses: ./.github/actions/setup-ui-deps - name: Download WASM uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 4c2980e3a8..9ceaf09916 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -22,34 +22,7 @@ jobs: - name: Checkout code uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - name: Set up Node.js - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 - with: - node-version: '21' - - - name: Set up pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 - with: - standalone: true - package_json_file: 'ui/package.json' - version: latest - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - working-directory: ./ui - run: pnpm install + - uses: ./.github/actions/setup-ui-deps - name: Run ESLint working-directory: ./ui diff --git a/ui/package.json b/ui/package.json index a80dca6c82..57fd313796 100644 --- a/ui/package.json +++ b/ui/package.json @@ -32,6 +32,7 @@ "devDependencies": { "@antfu/eslint-config": "^3.6.2", "@codecov/vite-plugin": "1.0.1", + "@eslint-react/eslint-plugin": "^1.14.1", "@microsoft/eslint-formatter-sarif": "^3.1.0", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.5.0", @@ -59,7 +60,8 @@ "vite": "^5.4.5", "vite-plugin-html": "^3.2.2", "vite-plugin-singlefile": "^2.0.2", - "vitest": "^2.1.1" + "vitest": "^2.1.1", + "vitest-fetch-mock": "^0.3.0" }, "pnpm": { "peerDependencyRules": { diff --git a/ui/pnpm-lock.yaml b/ui/pnpm-lock.yaml index bc9501477f..b92f2264ca 100644 --- a/ui/pnpm-lock.yaml +++ b/ui/pnpm-lock.yaml @@ -56,10 +56,13 @@ importers: devDependencies: '@antfu/eslint-config': specifier: ^3.6.2 - version: 3.6.2(@eslint-react/eslint-plugin@1.5.20(eslint@9.10.0)(typescript@5.6.2))(@typescript-eslint/utils@8.5.0(eslint@9.10.0)(typescript@5.6.2))(@vue/compiler-sfc@3.4.31)(eslint-plugin-react-hooks@5.1.0-rc.0(eslint@9.10.0))(eslint-plugin-react-refresh@0.4.12(eslint@9.10.0))(eslint@9.10.0)(typescript@5.6.2)(vitest@2.1.1(@types/node@22.5.5)(happy-dom@14.12.3)(jsdom@24.1.0)(lightningcss@1.25.1)(sass@1.78.0)(terser@5.32.0)) + version: 3.6.2(@eslint-react/eslint-plugin@1.14.1(eslint@9.10.0)(typescript@5.6.2))(@typescript-eslint/utils@8.5.0(eslint@9.10.0)(typescript@5.6.2))(@vue/compiler-sfc@3.4.31)(eslint-plugin-react-hooks@5.1.0-rc.0(eslint@9.10.0))(eslint-plugin-react-refresh@0.4.12(eslint@9.10.0))(eslint@9.10.0)(typescript@5.6.2)(vitest@2.1.1(@types/node@22.5.5)(happy-dom@14.12.3)(jsdom@24.1.0)(lightningcss@1.25.1)(sass@1.78.0)(terser@5.32.0)) '@codecov/vite-plugin': specifier: 1.0.1 version: 1.0.1(vite@5.4.5(@types/node@22.5.5)(lightningcss@1.25.1)(sass@1.78.0)(terser@5.32.0))(webpack-sources@3.2.3) + '@eslint-react/eslint-plugin': + specifier: ^1.14.1 + version: 1.14.1(eslint@9.10.0)(typescript@5.6.2) '@microsoft/eslint-formatter-sarif': specifier: ^3.1.0 version: 3.1.0 @@ -144,6 +147,9 @@ importers: vitest: specifier: ^2.1.1 version: 2.1.1(@types/node@22.5.5)(happy-dom@14.12.3)(jsdom@24.1.0)(lightningcss@1.25.1)(sass@1.78.0)(terser@5.32.0) + vitest-fetch-mock: + specifier: ^0.3.0 + version: 0.3.0(vitest@2.1.1(@types/node@22.5.5)(happy-dom@14.12.3)(jsdom@24.1.0)(lightningcss@1.25.1)(sass@1.78.0)(terser@5.32.0)) packages: @@ -244,14 +250,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/runtime@7.24.8': - resolution: {integrity: sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.25.0': - resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.25.6': resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} engines: {node: '>=6.9.0'} @@ -313,9 +311,6 @@ packages: '@types/react': optional: true - '@emotion/serialize@1.3.0': - resolution: {integrity: sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA==} - '@emotion/serialize@1.3.1': resolution: {integrity: sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==} @@ -335,9 +330,6 @@ packages: '@emotion/unitless@0.10.0': resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} - '@emotion/unitless@0.9.0': - resolution: {integrity: sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ==} - '@emotion/use-insertion-effect-with-fallbacks@1.1.0': resolution: {integrity: sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==} peerDependencies: @@ -503,44 +495,40 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.0': - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.11.1': resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-react/ast@1.5.20': - resolution: {integrity: sha512-T55Z8qU5+qb5u2WjQvHVJUkD8EYi7udsmUhU1j229a8xFzcMK0izneHlrdTApM0iORV9SPKUl4AtBTwvPHZ6lA==} + '@eslint-react/ast@1.14.1': + resolution: {integrity: sha512-FzhWRl/kBF5cZky4G/I5kkRiwVUTjGNfP+fwwx94NImaH1CvnMk6ataBNNtvxXKrbWGpZSexT4vHjotfZTEXMA==} - '@eslint-react/core@1.5.20': - resolution: {integrity: sha512-Kv8KKWPMNa6YgGFN41XwOOl3xL97cH3grcsnqe7BfJaYL8VvcSH0ZueNOgmZmfKUxVSeW9wiGspJ2UUQ9qvbPw==} + '@eslint-react/core@1.14.1': + resolution: {integrity: sha512-SK19+40fAYWtliPV9cRIZr0cnKIBkQJE8XWr0R2QobrWw2tkKKYqCLWwR0TpuxrjAd/JpG5TTcPHAgffCRtliw==} - '@eslint-react/eslint-plugin@1.5.20': - resolution: {integrity: sha512-Y38u7D1jU3qtMPMHm128FrnC5YLaS48TfQb12t/80/N0y/pTAHV6IA9h0Ug4FUn/wD6G5Lria1lKnRNoW7l6GQ==} + '@eslint-react/eslint-plugin@1.14.1': + resolution: {integrity: sha512-aMuUJrSbUCj/+S4McaMNuEg2R8JA8aZVLgdLf5bYuNi7YYpZ7kIMaKdlLW53UlaER9kRb8lrorFUL3cyg7Yc4w==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ^5.3.3 + typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true - '@eslint-react/jsx@1.5.20': - resolution: {integrity: sha512-bkOLOVThEkXquWAwQbC+Xhsk6iu/vlR6McgbnWHHbBbqXV+RoKP19MNXTWn08NjhZQcmGPs7zaeWlOXG/1aHsQ==} + '@eslint-react/jsx@1.14.1': + resolution: {integrity: sha512-NN8pIM3gZDk7Zusd2fFBaA78Zv98PxBDEBP/lxwSZNkuuUtgrHEBYWKRYs10hz1B6Vp1bvhIcnLO/BQThvJJog==} - '@eslint-react/shared@1.5.20': - resolution: {integrity: sha512-6CuI5ZwhvLoMpR2hjP2JP/93C3lxe0K+zMxfo9Vj++1b43EQ5fus/UcK24rgL4AsY27VfPAccLAjtfk+92DXiQ==} + '@eslint-react/shared@1.14.1': + resolution: {integrity: sha512-gceHz2fZeJh+EwxQC+ozh+cFbnpDALnDxpamDFxZI1QRdy0wtrB0MjJFSSZ9F6WUITWxoic2T3071U9BCjI3/Q==} - '@eslint-react/tools@1.5.20': - resolution: {integrity: sha512-zb9RV+UK5ihw9gFvMb1/UIX9T+jXvZg+G0qre8JVPGYGHKeOJgtoLQ4iZZeCwUYw5zwpFOng99ZFLfxM2oCGjA==} + '@eslint-react/tools@1.14.1': + resolution: {integrity: sha512-4kutt+JCXuLatE6fBuNJ6IA2+ndgdymEvq/HQuhW2Xs6+pEqaxwrHT2GeaQbc5U8pfJCEWAYvYX1r0XF/v9gJQ==} - '@eslint-react/types@1.5.20': - resolution: {integrity: sha512-2x3+398m76vjKcPvHV8g5Z7p1UTvgcSkohNzaXClB9g4va4fU/xc5tOvLkIA+IBscKjLUsedNvvtc+VeWAowlQ==} + '@eslint-react/types@1.14.1': + resolution: {integrity: sha512-WWw6e8/EHMIMOmN3SvvfiNyKJdQOrt1ugTAJIPHnNyKzOgCKhpN0xbtIQY3ghjhAm3GBO87aWB42q6a/YZd00w==} - '@eslint-react/var@1.5.20': - resolution: {integrity: sha512-BeBIGZG3nBd/FNLa8hdRUOgx84fc3I40eCTFigMycnMSFsgHBwOTpmbodFLpI2kR9a0i1IMVZVSbGwVfEVHJow==} + '@eslint-react/var@1.14.1': + resolution: {integrity: sha512-dzjwC4XM5v3aT1pc+1JxV3aZne4eyjiu+/ajkpCgnDM7Cual63uaHNBTE4LBUQiA2/oYU4iHAa9EcEn31k3EhA==} '@eslint/compat@1.1.1': resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} @@ -1080,28 +1068,10 @@ packages: typescript: optional: true - '@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.4.0': - resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.5.0': resolution: {integrity: sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@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.5.0': resolution: {integrity: sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1111,36 +1081,10 @@ packages: typescript: optional: true - '@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.4.0': - resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.5.0': resolution: {integrity: sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@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.4.0': - resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/typescript-estree@8.5.0': resolution: {integrity: sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1150,32 +1094,12 @@ packages: typescript: optional: true - '@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.4.0': - resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/utils@8.5.0': resolution: {integrity: sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.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.4.0': - resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.5.0': resolution: {integrity: sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1327,10 +1251,6 @@ packages: array-timsort@1.0.3: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -1362,6 +1282,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + birecord@0.1.1: + resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -1544,6 +1467,9 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} + cross-fetch@4.0.0: + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -1665,10 +1591,6 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -1853,22 +1775,32 @@ packages: vue-eslint-parser: optional: true - eslint-plugin-react-dom@1.5.20: - resolution: {integrity: sha512-M+4Wy920PtQB70L8aSGLBuL6ur4HhqaIBB7gFV9kS1Tpovqsr/h0K6tNe098c9CVL4b51UEA4APBpi40QWAxVA==} + eslint-plugin-react-debug@1.14.1: + resolution: {integrity: sha512-VFkRmXGCgmCCgUsdBpmARYhFvKbK7XgF41hgQrEhJAfYA0lXE2Urb+VkVpk57xUk+ZxMQy3sy6A1P4tQ+83hrQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ^5.3.3 + typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true - eslint-plugin-react-hooks-extra@1.5.20: - resolution: {integrity: sha512-RhXwuNzT75WUFYVozdUz/Jx232ZOnkRisJi036gpnvarEdykvgLPljw+DqLNvbK8r7OuDX275r5ef3RDSZiiVg==} + eslint-plugin-react-dom@1.14.1: + resolution: {integrity: sha512-hVcublIn4aAvudpl39I0l/1ldJJvn5rINHc71m+balFeKt5Qk0nPTUdPRCWRyp4ExD/mEbWAcEIP/pS0b5B/Vg==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ^5.3.3 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-hooks-extra@1.14.1: + resolution: {integrity: sha512-R5BOTZYY9fm7qTPN1hRZxk9mj8JwvnpXbxhEZwphM3Sn2legwXVHdXXkuUqaDR6AWw+z3wfLkb8xhVBu+uY1Hg==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true @@ -1879,12 +1811,12 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-naming-convention@1.5.20: - resolution: {integrity: sha512-RJd422S0p/jXrymUBvSRS+2Y9ru35Ee4Y34MQM7JCJefp/n15uw0NrN5npTMHmxoNXodnBrPWV5kO5+RJquXIQ==} + eslint-plugin-react-naming-convention@1.14.1: + resolution: {integrity: sha512-F3HCtRXwtT66/KNBuhSPxk63z/1iIxV3LUrwKAPVomTpGEIGrF/vzvNjJK0eaxf2Ae7h+SGMrDvJcRaYtRpRvQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ^5.3.3 + typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true @@ -1894,12 +1826,22 @@ packages: peerDependencies: eslint: '>=7' - eslint-plugin-react-x@1.5.20: - resolution: {integrity: sha512-48VcmcHBvcneS3A0wrt7wVlTCzsREMYYU7dzCh78SbQTINxmA8AJ1Z8McEJzU2VkZ/vB2D5TWqdBKP+aSJSW7w==} + eslint-plugin-react-web-api@1.14.1: + resolution: {integrity: sha512-1qS15Wfh+++1UHtGRf6palH2nfDVlKSNMaUjaANnUss04PW0PXeNF540cTuWwMPHyh8xIxcEgDzqx+8MokCtCw==} + engines: {bun: '>=1.0.15', node: '>=18.18.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ^4.9.5 || ^5.3.3 + peerDependenciesMeta: + typescript: + optional: true + + eslint-plugin-react-x@1.14.1: + resolution: {integrity: sha512-69KBSAX9X+1Az/wfWjvztPJyaZq2PSurlYYju0bH+iWon7pBV7zSqWiGhkizLpa2bSKFhAGzbMhSuaEqPiZQkA==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ^5.3.3 + typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true @@ -2120,9 +2062,6 @@ packages: get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-tsconfig@4.8.0: - resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==} - get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} @@ -2158,10 +2097,6 @@ packages: resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} engines: {node: '>=18'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -2296,6 +2231,12 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-immutable-type@5.0.0: + resolution: {integrity: sha512-mcvHasqbRBWJznuPqqHRKiJgYAz60sZ0mvO3bN70JbkuK7ksfmgc489aKZYxMEjIbRvyOseaTjaRZLRF/xFeRA==} + peerDependencies: + eslint: '*' + typescript: '>=4.7.4' + is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} @@ -2672,6 +2613,10 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2716,6 +2661,15 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + 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-html-parser@5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} @@ -3091,6 +3045,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + short-unique-id@5.2.0: + resolution: {integrity: sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==} + hasBin: true + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -3104,10 +3062,6 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - slashes@3.0.12: resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} @@ -3166,6 +3120,9 @@ packages: std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + string-ts@2.2.0: + resolution: {integrity: sha512-VTP0LLZo4Jp9Gz5IiDVMS9WyLx/3IeYh0PXUn0NdPqusUFNgkHPWiEdbB9TU2Iv3myUskraD5WtYEdHUrQEIlQ==} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -3286,6 +3243,9 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@5.0.0: resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} @@ -3296,11 +3256,16 @@ packages: peerDependencies: typescript: '>=4.2.0' + ts-declaration-location@1.0.4: + resolution: {integrity: sha512-r4JoxYhKULbZuH81Pjrp9OEG5St7XWk7zXwGkLKhmVcjiBVHTJXV5wK6dEa9JKW5QGSTW6b1lOjxAKp8R1SQhg==} + peerDependencies: + typescript: '>=4.0.0' + ts-easing@0.2.0: resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + ts-pattern@5.3.1: + resolution: {integrity: sha512-1RUMKa8jYQdNfmnK4jyzBK3/PS/tnjcZ1CW0v1vWDeYe5RBklc/nquw03MEoB66hVBm4BnlCfmOqDVxHyT1DpA==} tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} @@ -3404,9 +3369,6 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - valibot@0.35.0: - resolution: {integrity: sha512-+i2aCRkReTrd5KBN/dW2BrPOvFnU5LXTV2xjZnjnqUIO8YUx6P2+MgRrkwF2FhkexgyKq/NIZdPdknhHf5A/Ww==} - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -3458,6 +3420,12 @@ packages: terser: optional: true + vitest-fetch-mock@0.3.0: + resolution: {integrity: sha512-g6upWcL8/32fXL43/5f4VHcocuwQIi9Fj5othcK9gPO8XqSEGtnIZdenr2IaipDr61ReRFt+vaOEgo8jiUUX5w==} + engines: {node: '>=14.14.0'} + peerDependencies: + vitest: '>=2.0.0' + vitest@2.1.1: resolution: {integrity: sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -3496,6 +3464,9 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -3523,6 +3494,9 @@ packages: resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} engines: {node: '>=18'} + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -3636,7 +3610,7 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/eslint-config@3.6.2(@eslint-react/eslint-plugin@1.5.20(eslint@9.10.0)(typescript@5.6.2))(@typescript-eslint/utils@8.5.0(eslint@9.10.0)(typescript@5.6.2))(@vue/compiler-sfc@3.4.31)(eslint-plugin-react-hooks@5.1.0-rc.0(eslint@9.10.0))(eslint-plugin-react-refresh@0.4.12(eslint@9.10.0))(eslint@9.10.0)(typescript@5.6.2)(vitest@2.1.1(@types/node@22.5.5)(happy-dom@14.12.3)(jsdom@24.1.0)(lightningcss@1.25.1)(sass@1.78.0)(terser@5.32.0))': + '@antfu/eslint-config@3.6.2(@eslint-react/eslint-plugin@1.14.1(eslint@9.10.0)(typescript@5.6.2))(@typescript-eslint/utils@8.5.0(eslint@9.10.0)(typescript@5.6.2))(@vue/compiler-sfc@3.4.31)(eslint-plugin-react-hooks@5.1.0-rc.0(eslint@9.10.0))(eslint-plugin-react-refresh@0.4.12(eslint@9.10.0))(eslint@9.10.0)(typescript@5.6.2)(vitest@2.1.1(@types/node@22.5.5)(happy-dom@14.12.3)(jsdom@24.1.0)(lightningcss@1.25.1)(sass@1.78.0)(terser@5.32.0))': dependencies: '@antfu/install-pkg': 0.4.1 '@clack/prompts': 0.7.0 @@ -3675,7 +3649,7 @@ snapshots: yaml-eslint-parser: 1.2.3 yargs: 17.7.2 optionalDependencies: - '@eslint-react/eslint-plugin': 1.5.20(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/eslint-plugin': 1.14.1(eslint@9.10.0)(typescript@5.6.2) eslint-plugin-react-hooks: 5.1.0-rc.0(eslint@9.10.0) eslint-plugin-react-refresh: 0.4.12(eslint@9.10.0) transitivePeerDependencies: @@ -3727,14 +3701,6 @@ snapshots: dependencies: '@babel/types': 7.25.6 - '@babel/runtime@7.24.8': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/runtime@7.25.0': - dependencies: - regenerator-runtime: 0.14.1 - '@babel/runtime@7.25.6': dependencies: regenerator-runtime: 0.14.1 @@ -3798,7 +3764,7 @@ snapshots: '@emotion/babel-plugin@11.12.0': dependencies: '@babel/helper-module-imports': 7.24.7 - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.6 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.1 @@ -3829,7 +3795,7 @@ snapshots: '@emotion/react@11.13.3(@types/react@18.3.5)(react@18.3.1)': dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.6 '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.1 '@emotion/serialize': 1.3.1 @@ -3843,14 +3809,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@emotion/serialize@1.3.0': - dependencies: - '@emotion/hash': 0.9.2 - '@emotion/memoize': 0.9.0 - '@emotion/unitless': 0.9.0 - '@emotion/utils': 1.4.0 - csstype: 3.1.3 - '@emotion/serialize@1.3.1': dependencies: '@emotion/hash': 0.9.2 @@ -3863,11 +3821,11 @@ snapshots: '@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.5)(react@18.3.1))(@types/react@18.3.5)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.6 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.0 '@emotion/react': 11.13.3(@types/react@18.3.5)(react@18.3.1) - '@emotion/serialize': 1.3.0 + '@emotion/serialize': 1.3.1 '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) '@emotion/utils': 1.4.0 react: 18.3.1 @@ -3878,8 +3836,6 @@ snapshots: '@emotion/unitless@0.10.0': {} - '@emotion/unitless@0.9.0': {} - '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@18.3.1)': dependencies: react: 18.3.1 @@ -3979,115 +3935,114 @@ snapshots: eslint: 9.10.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.0': {} - '@eslint-community/regexpp@4.11.1': {} - '@eslint-react/ast@1.5.20(eslint@9.10.0)(typescript@5.6.2)': + '@eslint-react/ast@1.14.1(eslint@9.10.0)(typescript@5.6.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) - '@eslint-react/tools': 1.5.20 - '@eslint-react/types': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + birecord: 0.1.1 + string-ts: 2.2.0 + ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color - typescript - optional: true - '@eslint-react/core@1.5.20(eslint@9.10.0)(typescript@5.6.2)': - dependencies: - '@eslint-react/ast': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/jsx': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/shared': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/tools': 1.5.20 - '@eslint-react/types': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/var': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/core@1.14.1(eslint@9.10.0)(typescript@5.6.2)': + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + birecord: 0.1.1 + short-unique-id: 5.2.0 + ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color - typescript - optional: true - '@eslint-react/eslint-plugin@1.5.20(eslint@9.10.0)(typescript@5.6.2)': + '@eslint-react/eslint-plugin@1.14.1(eslint@9.10.0)(typescript@5.6.2)': dependencies: - '@eslint-react/shared': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/tools': 1.5.20 - '@eslint-react/types': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) eslint: 9.10.0 - eslint-plugin-react-dom: 1.5.20(eslint@9.10.0)(typescript@5.6.2) - eslint-plugin-react-hooks-extra: 1.5.20(eslint@9.10.0)(typescript@5.6.2) - eslint-plugin-react-naming-convention: 1.5.20(eslint@9.10.0)(typescript@5.6.2) - eslint-plugin-react-x: 1.5.20(eslint@9.10.0)(typescript@5.6.2) + eslint-plugin-react-debug: 1.14.1(eslint@9.10.0)(typescript@5.6.2) + eslint-plugin-react-dom: 1.14.1(eslint@9.10.0)(typescript@5.6.2) + eslint-plugin-react-hooks-extra: 1.14.1(eslint@9.10.0)(typescript@5.6.2) + eslint-plugin-react-naming-convention: 1.14.1(eslint@9.10.0)(typescript@5.6.2) + eslint-plugin-react-web-api: 1.14.1(eslint@9.10.0)(typescript@5.6.2) + eslint-plugin-react-x: 1.14.1(eslint@9.10.0)(typescript@5.6.2) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - optional: true - '@eslint-react/jsx@1.5.20(eslint@9.10.0)(typescript@5.6.2)': + '@eslint-react/jsx@1.14.1(eslint@9.10.0)(typescript@5.6.2)': dependencies: - '@eslint-react/ast': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/shared': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/tools': 1.5.20 - '@eslint-react/types': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/var': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/ast': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color - typescript - optional: true - '@eslint-react/shared@1.5.20(eslint@9.10.0)(typescript@5.6.2)': + '@eslint-react/shared@1.14.1(eslint@9.10.0)(typescript@5.6.2)': dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) - valibot: 0.35.0 + '@eslint-react/tools': 1.14.1 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + picomatch: 4.0.2 transitivePeerDependencies: - eslint - supports-color - typescript - optional: true - '@eslint-react/tools@1.5.20': - optional: true + '@eslint-react/tools@1.14.1': {} - '@eslint-react/types@1.5.20(eslint@9.10.0)(typescript@5.6.2)': + '@eslint-react/types@1.14.1(eslint@9.10.0)(typescript@5.6.2)': dependencies: - '@eslint-react/tools': 1.5.20 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) transitivePeerDependencies: - eslint - supports-color - typescript - optional: true - '@eslint-react/var@1.5.20(eslint@9.10.0)(typescript@5.6.2)': + '@eslint-react/var@1.14.1(eslint@9.10.0)(typescript@5.6.2)': dependencies: - '@eslint-react/ast': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/tools': 1.5.20 - '@eslint-react/types': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/ast': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + ts-pattern: 5.3.1 transitivePeerDependencies: - eslint - supports-color - typescript - optional: true '@eslint/compat@1.1.1': {} @@ -4486,7 +4441,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.6 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -4610,35 +4565,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - optional: true - - '@typescript-eslint/scope-manager@8.4.0': - dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/visitor-keys': 8.4.0 - '@typescript-eslint/scope-manager@8.5.0': dependencies: '@typescript-eslint/types': 8.5.0 '@typescript-eslint/visitor-keys': 8.5.0 - '@typescript-eslint/type-utils@7.18.0(eslint@9.10.0)(typescript@5.6.2)': - dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2) - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) - debug: 4.3.7 - eslint: 9.10.0 - ts-api-utils: 1.3.0(typescript@5.6.2) - optionalDependencies: - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - optional: true - '@typescript-eslint/type-utils@8.5.0(eslint@9.10.0)(typescript@5.6.2)': dependencies: '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) @@ -4651,44 +4582,8 @@ snapshots: - eslint - supports-color - '@typescript-eslint/types@7.18.0': - optional: true - - '@typescript-eslint/types@8.4.0': {} - '@typescript-eslint/types@8.5.0': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.2)': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.7 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.2) - optionalDependencies: - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - optional: true - - '@typescript-eslint/typescript-estree@8.4.0(typescript@5.6.2)': - dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/visitor-keys': 8.4.0 - debug: 4.3.7 - fast-glob: 3.3.2 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.2) - optionalDependencies: - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.5.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 8.5.0 @@ -4704,29 +4599,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@9.10.0)(typescript@5.6.2)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2) - eslint: 9.10.0 - transitivePeerDependencies: - - supports-color - - typescript - optional: true - - '@typescript-eslint/utils@8.4.0(eslint@9.10.0)(typescript@5.6.2)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.6.2) - eslint: 9.10.0 - transitivePeerDependencies: - - supports-color - - typescript - '@typescript-eslint/utils@8.5.0(eslint@9.10.0)(typescript@5.6.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) @@ -4738,17 +4610,6 @@ snapshots: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 - optional: true - - '@typescript-eslint/visitor-keys@8.4.0': - dependencies: - '@typescript-eslint/types': 8.4.0 - eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.5.0': dependencies: '@typescript-eslint/types': 8.5.0 @@ -4925,9 +4786,6 @@ snapshots: array-timsort@1.0.3: {} - array-union@2.1.0: - optional: true - assertion-error@2.0.1: {} async@3.2.5: {} @@ -4939,7 +4797,7 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.25.0 + '@babel/runtime': 7.25.6 cosmiconfig: 7.1.0 resolve: 1.22.8 @@ -4951,6 +4809,8 @@ snapshots: binary-extensions@2.3.0: {} + birecord@0.1.1: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -5134,6 +4994,12 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + cross-fetch@4.0.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 @@ -5243,11 +5109,6 @@ snapshots: dependencies: dequal: 2.0.3 - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - optional: true - doctrine@3.0.0: dependencies: esutils: 2.0.3 @@ -5401,12 +5262,12 @@ snapshots: eslint-plugin-import-x@4.2.1(eslint@9.10.0)(typescript@5.6.2): dependencies: - '@typescript-eslint/utils': 8.4.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) debug: 4.3.7 doctrine: 3.0.0 eslint: 9.10.0 eslint-import-resolver-node: 0.3.9 - get-tsconfig: 4.8.0 + get-tsconfig: 4.8.1 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 @@ -5471,91 +5332,133 @@ snapshots: - supports-color - typescript - eslint-plugin-react-dom@1.5.20(eslint@9.10.0)(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/core': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/jsx': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/shared': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/tools': 1.5.20 - '@eslint-react/types': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/var': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) + eslint-plugin-react-debug@1.14.1(eslint@9.10.0)(typescript@5.6.2): + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/core': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) eslint: 9.10.0 + string-ts: 2.2.0 + ts-pattern: 5.3.1 optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - optional: true - eslint-plugin-react-hooks-extra@1.5.20(eslint@9.10.0)(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/core': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/jsx': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/shared': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/tools': 1.5.20 - '@eslint-react/types': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/var': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) + eslint-plugin-react-dom@1.14.1(eslint@9.10.0)(typescript@5.6.2): + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/core': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) eslint: 9.10.0 + ts-pattern: 5.3.1 + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-hooks-extra@1.14.1(eslint@9.10.0)(typescript@5.6.2): + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/core': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + eslint: 9.10.0 + ts-pattern: 5.3.1 optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - optional: true eslint-plugin-react-hooks@5.1.0-rc.0(eslint@9.10.0): dependencies: eslint: 9.10.0 - eslint-plugin-react-naming-convention@1.5.20(eslint@9.10.0)(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/core': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/jsx': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/shared': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/tools': 1.5.20 - '@eslint-react/types': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) + eslint-plugin-react-naming-convention@1.14.1(eslint@9.10.0)(typescript@5.6.2): + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/core': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) eslint: 9.10.0 + ts-pattern: 5.3.1 optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - optional: true eslint-plugin-react-refresh@0.4.12(eslint@9.10.0): dependencies: eslint: 9.10.0 - eslint-plugin-react-x@1.5.20(eslint@9.10.0)(typescript@5.6.2): - dependencies: - '@eslint-react/ast': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/core': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/jsx': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/shared': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/tools': 1.5.20 - '@eslint-react/types': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@eslint-react/var': 1.5.20(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/utils': 7.18.0(eslint@9.10.0)(typescript@5.6.2) + eslint-plugin-react-web-api@1.14.1(eslint@9.10.0)(typescript@5.6.2): + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/core': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + birecord: 0.1.1 + eslint: 9.10.0 + ts-pattern: 5.3.1 + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-x@1.14.1(eslint@9.10.0)(typescript@5.6.2): + dependencies: + '@eslint-react/ast': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/core': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/jsx': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/shared': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/tools': 1.14.1 + '@eslint-react/types': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@eslint-react/var': 1.14.1(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) eslint: 9.10.0 + is-immutable-type: 5.0.0(eslint@9.10.0)(typescript@5.6.2) + ts-pattern: 5.3.1 optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - optional: true eslint-plugin-regexp@2.6.0(eslint@9.10.0): dependencies: @@ -5651,7 +5554,7 @@ snapshots: eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.11.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 @@ -5694,7 +5597,7 @@ snapshots: eslint@9.10.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.11.1 '@eslint/config-array': 0.18.0 '@eslint/eslintrc': 3.1.0 '@eslint/js': 9.10.0 @@ -5870,10 +5773,6 @@ snapshots: get-func-name@2.0.2: {} - get-tsconfig@4.8.0: - dependencies: - resolve-pkg-maps: 1.0.0 - get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -5914,16 +5813,6 @@ snapshots: globals@15.9.0: {} - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - optional: true - graceful-fs@4.2.11: {} graphemer@1.4.0: {} @@ -6065,6 +5954,16 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-immutable-type@5.0.0(eslint@9.10.0)(typescript@5.6.2): + dependencies: + '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) + eslint: 9.10.0 + ts-api-utils: 1.3.0(typescript@5.6.2) + ts-declaration-location: 1.0.4(typescript@5.6.2) + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + is-interactive@1.0.0: {} is-number@7.0.0: {} @@ -6604,6 +6503,10 @@ snapshots: min-indent@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -6653,6 +6556,10 @@ snapshots: lower-case: 2.0.2 tslib: 2.7.0 + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + node-html-parser@5.4.2: dependencies: css-select: 4.3.0 @@ -6867,10 +6774,10 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-universal-interface@0.6.2(react@18.3.1)(tslib@2.6.3): + react-universal-interface@0.6.2(react@18.3.1)(tslib@2.7.0): dependencies: react: 18.3.1 - tslib: 2.6.3 + tslib: 2.7.0 react-use@17.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -6883,13 +6790,13 @@ snapshots: nano-css: 5.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-universal-interface: 0.6.2(react@18.3.1)(tslib@2.6.3) + react-universal-interface: 0.6.2(react@18.3.1)(tslib@2.7.0) resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 set-harmonic-interval: 1.0.1 throttle-debounce: 3.0.1 ts-easing: 0.2.0 - tslib: 2.6.3 + tslib: 2.7.0 react@18.3.1: dependencies: @@ -7052,6 +6959,8 @@ snapshots: shebang-regex@3.0.0: {} + short-unique-id@5.2.0: {} + siginfo@2.0.0: {} signal-exit@3.0.7: {} @@ -7060,9 +6969,6 @@ snapshots: sisteransi@1.0.5: {} - slash@3.0.0: - optional: true - slashes@3.0.12: {} source-map-js@1.2.1: {} @@ -7120,6 +7026,8 @@ snapshots: std-env@3.7.0: {} + string-ts@2.2.0: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -7231,6 +7139,8 @@ snapshots: url-parse: 1.5.10 optional: true + tr46@0.0.3: {} + tr46@5.0.0: dependencies: punycode: 2.3.1 @@ -7240,9 +7150,14 @@ snapshots: dependencies: typescript: 5.6.2 + ts-declaration-location@1.0.4(typescript@5.6.2): + dependencies: + minimatch: 10.0.1 + typescript: 5.6.2 + ts-easing@0.2.0: {} - tslib@2.6.3: {} + ts-pattern@5.3.1: {} tslib@2.7.0: {} @@ -7335,9 +7250,6 @@ snapshots: uuid@8.3.2: {} - valibot@0.35.0: - optional: true - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -7394,6 +7306,13 @@ snapshots: sass: 1.78.0 terser: 5.32.0 + vitest-fetch-mock@0.3.0(vitest@2.1.1(@types/node@22.5.5)(happy-dom@14.12.3)(jsdom@24.1.0)(lightningcss@1.25.1)(sass@1.78.0)(terser@5.32.0)): + dependencies: + cross-fetch: 4.0.0 + vitest: 2.1.1(@types/node@22.5.5)(happy-dom@14.12.3)(jsdom@24.1.0)(lightningcss@1.25.1)(sass@1.78.0)(terser@5.32.0) + transitivePeerDependencies: + - encoding + vitest@2.1.1(@types/node@22.5.5)(happy-dom@14.12.3)(jsdom@24.1.0)(lightningcss@1.25.1)(sass@1.78.0)(terser@5.32.0): dependencies: '@vitest/expect': 2.1.1 @@ -7452,6 +7371,8 @@ snapshots: dependencies: defaults: 1.0.4 + webidl-conversions@3.0.1: {} + webidl-conversions@7.0.0: optional: true @@ -7477,6 +7398,11 @@ snapshots: webidl-conversions: 7.0.0 optional: true + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + which@2.0.2: dependencies: isexe: 2.0.0 diff --git a/ui/src/worker/helper.test.ts b/ui/src/worker/helper.test.ts index 8799ae19c0..28790bef0a 100644 --- a/ui/src/worker/helper.test.ts +++ b/ui/src/worker/helper.test.ts @@ -1,21 +1,23 @@ // @vitest-environment node import { readFile } from "node:fs/promises"; - import path from "node:path"; import { describe, expect, it, vi } from "vitest"; +import createFetchMock from "vitest-fetch-mock"; import { GsaInstance } from "./helper.ts"; import "@vitest/web-worker"; import "../runtime/wasm_exec.js"; -vi.mock("../../gsa.wasm?init", async () => { +const fetchMocker = createFetchMock(vi); +fetchMocker.enableMocks(); + +// @ts-expect-error the mocker got the wrong type +fetchMocker.mockResponse(async () => { const buffer = await readFile(path.join(__dirname, "../../gsa.wasm")); - // create blob - return { - default: async (i: WebAssembly.Imports) => { - return (await WebAssembly.instantiate(buffer, i)).instance; - }, - }; + return new Response(buffer, { + status: 200, + headers: { "Content-Type": "application/octet-stream" }, + }); }); describe("worker helper", () => {