diff --git a/.changeset/expo-native-e2e-runner.md b/.changeset/expo-native-e2e-runner.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/expo-native-e2e-runner.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/.github/workflows/expo-native-build.yml b/.github/workflows/expo-native-build.yml index c4f1573535b..7fe76c6d0dd 100644 --- a/.github/workflows/expo-native-build.yml +++ b/.github/workflows/expo-native-build.yml @@ -7,6 +7,7 @@ on: - main paths: - '.github/workflows/expo-native-build.yml' + - 'integration/e2e.expo-native.config.ts' - 'integration/templates/expo-native/**' - 'integration/tests/expo-native/**' - 'packages/expo/**' @@ -28,10 +29,8 @@ env: SDK_PACK_DIR: /tmp/clerk-expo-pack E2E_INSTANCE_NAME: clerkstage-with-native-components BAPI_URL: https://api.clerkstage.dev - MAESTRO_VERSION: '2.10.0' - MAESTRO_CLI_NO_ANALYTICS: '1' - MAESTRO_SHARDS: '2' - MAESTRO_DRIVER_STARTUP_TIMEOUT: '180000' + IOS_SIMULATORS: '2' + E2E_TELEMETRY_DISABLED: '1' jobs: native-build: @@ -39,6 +38,8 @@ jobs: name: Native ${{ matrix.run-e2e == true && 'E2E' || 'Build' }} (${{ matrix.platform }}, sdk ${{ matrix.expo-sdk }}) runs-on: ${{ matrix.runner }} timeout-minutes: ${{ matrix.run-e2e == true && 60 || 45 }} + env: + CLERK_TEST_USERNAME_PREFIX: e2e_${{ github.run_id }}_${{ matrix.platform }}_ strategy: fail-fast: false matrix: @@ -108,16 +109,16 @@ jobs: # Bump the version when native build commands change. key: expo-native-build-v1-${{ runner.os }}-${{ matrix.expo-sdk }}-${{ matrix.platform }}-${{ matrix.run-e2e == true && 'e2e' || 'build' }}-${{ env.E2E_INSTANCE_NAME }}-${{ steps.native-build-key.outputs.hash }} - - if: steps.native-build-cache.outputs.cache-hit != 'true' + - if: steps.native-build-cache.outputs.cache-hit != 'true' || matrix.run-e2e == true uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 - - if: steps.native-build-cache.outputs.cache-hit != 'true' + - if: steps.native-build-cache.outputs.cache-hit != 'true' || matrix.run-e2e == true uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: 24.15.0 cache: pnpm - name: Install monorepo dependencies - if: steps.native-build-cache.outputs.cache-hit != 'true' + if: steps.native-build-cache.outputs.cache-hit != 'true' || matrix.run-e2e == true run: pnpm install --frozen-lockfile - name: Build and pack Clerk packages @@ -144,7 +145,7 @@ jobs: BIOMETRICS_TARBALL="$(ls "$SDK_PACK_DIR"/clerk-expo-biometrics-*.tgz)" pnpm add "$SDK_TARBALL" "$GOOGLE_SIGNIN_TARBALL" "$BIOMETRICS_TARBALL" -w # expo-dev-client makes even release builds boot into the dev - # launcher (unreachable Metro in CI), which stalls every Maestro + # launcher (unreachable Metro in CI), which stalls every e2e # flow on a blank screen. Skip it on e2e jobs only. DEV_CLIENT="expo-dev-client" if [ "$RUN_E2E" = "true" ]; then DEV_CLIENT=""; fi @@ -241,83 +242,38 @@ jobs: - name: Boot iOS simulators if: matrix.platform == 'ios' && matrix.run-e2e == true && steps.keys.outputs.pk != '' - run: ${{ env.E2E_DIR }}/boot-ios-simulators.sh boot "$MAESTRO_SHARDS" + run: ${{ env.E2E_DIR }}/boot-ios-simulators.sh boot "$IOS_SIMULATORS" - - name: Cache maestro CLI - if: steps.keys.outputs.pk != '' + - name: Cache iOS automation runner + if: matrix.platform == 'ios' && steps.keys.outputs.pk != '' uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: - path: ~/.maestro - key: maestro-${{ runner.os }}-${{ env.MAESTRO_VERSION }} + path: ~/.agent-device + key: agent-device-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} + restore-keys: agent-device-${{ runner.os }}- - - name: Install maestro CLI - if: steps.keys.outputs.pk != '' - run: | - if [ -x "$HOME/.maestro/bin/maestro" ]; then - echo "Using cached Maestro" - else - archive="$RUNNER_TEMP/maestro.zip" - curl -fLs --retry 3 --retry-delay 5 -o "$archive" \ - "https://github.com/mobile-dev-inc/Maestro/releases/download/cli-$MAESTRO_VERSION/maestro.zip" - unzip -q "$archive" -d "$RUNNER_TEMP/maestro-dist" - mv "$RUNNER_TEMP/maestro-dist/maestro" "$HOME/.maestro" - fi - echo "$HOME/.maestro/bin" >> "$GITHUB_PATH" - test "$("$HOME/.maestro/bin/maestro" --version)" = "$MAESTRO_VERSION" - - # Provisioned as late as possible so live credentials exist for the - # shortest window. - - name: Provision test user via BAPI - id: user - if: steps.keys.outputs.pk != '' - continue-on-error: true - env: - CLERK_SECRET_KEY: ${{ steps.keys.outputs.sk }} - run: | - email="ci-${GITHUB_RUN_ID}-${RANDOM}+clerk_test@clerkcookie.com" - username="ci_${GITHUB_RUN_ID}_${RANDOM}" - password="ClerkCI!$(openssl rand -hex 8)Aa1" - http_code=$(curl -sS -o /tmp/bapi_response.json -w "%{http_code}" -X POST "$BAPI_URL/v1/users" \ - -H "Authorization: Bearer $CLERK_SECRET_KEY" \ - -H "Content-Type: application/json" \ - -d "{\"email_address\":[\"$email\"],\"username\":\"$username\",\"password\":\"$password\"}") - if [ "$http_code" -lt 200 ] || [ "$http_code" -ge 300 ]; then - echo "::error::BAPI user creation failed (HTTP $http_code)" - cat /tmp/bapi_response.json - exit 1 - fi - user_id=$(jq -er '.id' /tmp/bapi_response.json) - echo "::add-mask::$password" - { - echo "email=$email" - echo "password=$password" - echo "user_id=$user_id" - } >> "$GITHUB_OUTPUT" - - - name: Run iOS e2e (Maestro) + - name: Run iOS e2e id: run_e2e_ios - if: matrix.platform == 'ios' && steps.user.outputs.user_id != '' - working-directory: ${{ env.FIXTURE_DIR }} + if: matrix.platform == 'ios' && steps.keys.outputs.sk != '' env: - CLERK_TEST_EMAIL: ${{ steps.user.outputs.email }} - CLERK_TEST_PASSWORD: ${{ steps.user.outputs.password }} + CLERK_SECRET_KEY: ${{ steps.keys.outputs.sk }} + CLERK_API_URL: ${{ env.BAPI_URL }} run: | - "$GITHUB_WORKSPACE/$E2E_DIR/boot-ios-simulators.sh" wait - mkdir -p "$RUNNER_TEMP/maestro-debug" + "$E2E_DIR/boot-ios-simulators.sh" wait + mkdir -p "$RUNNER_TEMP/e2e-device-logs" log_pids=() trap 'kill "${log_pids[@]}" 2>/dev/null || true; wait "${log_pids[@]}" 2>/dev/null || true' EXIT - for udid in ${MAESTRO_UDID//,/ }; do - xcrun simctl install "$udid" ios/build/Build/Products/Release-iphonesimulator/ClerkExpoNativeBuildFixture.app + for udid in ${CLERK_TEST_DEVICES//,/ }; do + xcrun simctl install "$udid" "$FIXTURE_DIR/ios/build/Build/Products/Release-iphonesimulator/ClerkExpoNativeBuildFixture.app" xcrun simctl spawn "$udid" log stream --style compact \ --predicate 'processImagePath CONTAINS "ClerkExpoNativeBuildFixture"' \ - > "$RUNNER_TEMP/maestro-debug/$udid-console.log" 2>&1 & + > "$RUNNER_TEMP/e2e-device-logs/$udid-console.log" 2>&1 & log_pids+=($!) done - PLATFORM=ios MAESTRO_DEBUG_OUTPUT="$RUNNER_TEMP/maestro-debug" \ - "$GITHUB_WORKSPACE/$E2E_DIR/run-flows.sh" + pnpm test:integration:expo-native:ios --reporter list,junit,markdown - name: Enable KVM - if: matrix.platform == 'android' && steps.user.outputs.user_id != '' + if: matrix.platform == 'android' && steps.keys.outputs.sk != '' run: | echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules sudo udevadm control --reload-rules @@ -325,7 +281,7 @@ jobs: - name: AVD cache id: avd-cache - if: matrix.platform == 'android' && steps.user.outputs.user_id != '' + if: matrix.platform == 'android' && steps.keys.outputs.sk != '' uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: | @@ -334,7 +290,7 @@ jobs: key: avd-34-google_apis-x86_64-v1 - name: Create AVD snapshot - if: matrix.platform == 'android' && steps.user.outputs.user_id != '' && steps.avd-cache.outputs.cache-hit != 'true' + if: matrix.platform == 'android' && steps.keys.outputs.sk != '' && steps.avd-cache.outputs.cache-hit != 'true' uses: reactivecircus/android-emulator-runner@a421e43855164a8197daf9d8d40fe71c6996bb0d # v2 with: api-level: 34 @@ -345,73 +301,69 @@ jobs: disable-animations: false script: echo "Generated AVD snapshot for caching." - - name: Run Android e2e (Maestro) + - name: Run Android e2e id: run_e2e_android - if: matrix.platform == 'android' && steps.user.outputs.user_id != '' + if: matrix.platform == 'android' && steps.keys.outputs.sk != '' uses: reactivecircus/android-emulator-runner@a421e43855164a8197daf9d8d40fe71c6996bb0d # v2 env: - CLERK_TEST_EMAIL: ${{ steps.user.outputs.email }} - CLERK_TEST_PASSWORD: ${{ steps.user.outputs.password }} + CLERK_SECRET_KEY: ${{ steps.keys.outputs.sk }} + CLERK_API_URL: ${{ env.BAPI_URL }} with: api-level: 34 target: google_apis arch: x86_64 force-avd-creation: false - # read-only: a writable instance holds a lock the shard emulators wait on forever - emulator-options: -read-only -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim + emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim disable-animations: true # The action runs each script line in a separate sh -c; the folded # scalar (>-) plus && keeps everything in one shell invocation. script: >- - cd integration/tests/expo-native && - MAESTRO_DEBUG_OUTPUT="$RUNNER_TEMP/maestro-debug" ./run-android-flows.sh - "$GITHUB_WORKSPACE/$FIXTURE_DIR/android/app/build/outputs/apk/release/app-release.apk" - - # Runs before the artifact upload so the credentials are already dead - # by the time the debug files become downloadable. - - name: Cleanup test user - if: always() && steps.user.outputs.user_id != '' + mkdir -p "$RUNNER_TEMP/e2e-device-logs" && + adb install -r "$FIXTURE_DIR/android/app/build/outputs/apk/release/app-release.apk" && + (adb logcat -v threadtime > "$RUNNER_TEMP/e2e-device-logs/logcat.log" 2>&1 &) && + pnpm test:integration:expo-native:android --reporter list,junit,markdown + + - name: Delete leftover test users + if: always() && steps.keys.outputs.sk != '' env: CLERK_SECRET_KEY: ${{ steps.keys.outputs.sk }} - USER_ID: ${{ steps.user.outputs.user_id }} - run: | - curl -fsS -X DELETE "$BAPI_URL/v1/users/$USER_ID" \ - -H "Authorization: Bearer $CLERK_SECRET_KEY" || true - - # Test reports record flow env (and typed input) in plaintext; - # add-mask only covers step logs, not artifact contents. Must run whenever - # the upload does, or a passing run uploads the password. - - name: Scrub test credentials from Maestro debug output - id: scrub - if: always() && steps.user.outputs.user_id != '' - env: - CLERK_TEST_PASSWORD: ${{ steps.user.outputs.password }} run: | - [ -d "$RUNNER_TEMP/maestro-debug" ] || exit 0 - [ -n "$CLERK_TEST_PASSWORD" ] || exit 0 - # shellcheck disable=SC2016 - find "$RUNNER_TEMP/maestro-debug" -type f \ - \( -name '*.html' -o -name '*.json' -o -name '*.log' -o -name '*.txt' -o -name '*.xml' -o -name '*.yaml' \) \ - -exec perl -pi -e 's/\Q$ENV{CLERK_TEST_PASSWORD}\E/[REDACTED]/g' {} + - - - name: Upload Maestro artifacts - if: always() && steps.scrub.outcome == 'success' + curl -fsS -G "$BAPI_URL/v1/users" --data-urlencode "limit=100" --data-urlencode "query=$CLERK_TEST_USERNAME_PREFIX" -H "Authorization: Bearer $CLERK_SECRET_KEY" | + jq -r --arg p "$CLERK_TEST_USERNAME_PREFIX" '.[] | select((.username // "") | startswith($p)) | .id' | + while read -r user_id; do + curl -fsS --retry 3 --retry-delay 1 -o /dev/null -X DELETE "$BAPI_URL/v1/users/$user_id" -H "Authorization: Bearer $CLERK_SECRET_KEY" || + echo "::warning::Could not delete leftover test user $user_id" + done + + - name: Upload e2e artifacts + if: always() && steps.keys.outputs.sk != '' uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: - name: maestro-${{ matrix.platform }} - path: ${{ runner.temp }}/maestro-debug + name: e2e-${{ matrix.platform }} + include-hidden-files: true + path: | + integration/.e2e + ${{ runner.temp }}/e2e-device-logs if-no-files-found: warn retention-days: 7 - name: Report e2e outcome - if: always() && steps.user.outputs.user_id != '' + if: always() && steps.keys.outputs.sk != '' env: IOS_OUTCOME: ${{ steps.run_e2e_ios.outcome }} ANDROID_OUTCOME: ${{ steps.run_e2e_android.outcome }} run: | outcome="$IOS_OUTCOME" [ "$outcome" = "skipped" ] && outcome="$ANDROID_OUTCOME" - echo "## Maestro e2e (${{ matrix.platform }}): $outcome" >> "$GITHUB_STEP_SUMMARY" + echo "## Native e2e (${{ matrix.platform }}): $outcome" >> "$GITHUB_STEP_SUMMARY" + if [ -f integration/.e2e/summary.md ]; then + cat integration/.e2e/summary.md >> "$GITHUB_STEP_SUMMARY" + fi if [ "$outcome" = "failure" ]; then - echo "::error::Maestro e2e failed. See the maestro-${{ matrix.platform }} artifact." + echo "::error::Native e2e failed. See the e2e-${{ matrix.platform }} artifact." + fi + flaky=$(jq -r '[.run.results[] | select(.status == "flaky") | .file] | join(", ")' integration/.e2e/report.json 2>/dev/null || true) + if [ -n "$flaky" ]; then + echo "::error::Flaky flow(s), failed then passed on the retry: $flaky" + exit 1 fi diff --git a/.gitignore b/.gitignore index 24d1b33d3a8..f0aef8bbd7a 100644 --- a/.gitignore +++ b/.gitignore @@ -67,6 +67,7 @@ packages/*/examples/*/package-lock.json packages/*/examples/*/yarn.lock /test-results/ /playwright-report/ +/integration/.e2e/ /playwright/.cache/ # integration testing diff --git a/integration/e2e.expo-native.config.ts b/integration/e2e.expo-native.config.ts new file mode 100644 index 00000000000..88c47c58e57 --- /dev/null +++ b/integration/e2e.expo-native.config.ts @@ -0,0 +1,15 @@ +import { mobile } from '@e2e-dev/mobile'; +import type { E2EConfig } from 'e2e'; + +const app = { bundleId: 'com.clerk.exponativebuildfixture' }; +const devices = process.env.CLERK_TEST_DEVICES?.split(','); + +export default { + tests: 'tests/expo-native/*.e2e.ts', + targets: [ + { name: 'ios', engine: mobile({ platform: 'ios', device: devices }), app }, + { name: 'android', engine: mobile({ platform: 'android', device: devices }), app }, + ], + workers: devices?.length ?? 1, + timeout: 300_000, +} satisfies E2EConfig; diff --git a/integration/tests/expo-native/.gitignore b/integration/tests/expo-native/.gitignore deleted file mode 100644 index e33609d251c..00000000000 --- a/integration/tests/expo-native/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.png diff --git a/integration/tests/expo-native/auth-view.e2e.ts b/integration/tests/expo-native/auth-view.e2e.ts new file mode 100644 index 00000000000..7f9718a7c9c --- /dev/null +++ b/integration/tests/expo-native/auth-view.e2e.ts @@ -0,0 +1,22 @@ +import { expect } from 'e2e'; + +import { testWithUser as test } from './fixtures.ts'; + +test.describe('@clerk/expo ', () => { + test.beforeEach(({ po }) => po.app.reset()); + + test('rehosts the React logo and still signs in after the host view is detached and reattached', async ({ + po, + screen, + user, + }) => { + await po.authView.open(); + await expect(screen.getByText('E2E Custom Logo')).toBeVisible({ timeout: 10_000 }); + await po.authView.dismiss(); + await po.authView.open(); + await expect(screen.getByText('E2E Custom Logo')).toBeVisible({ timeout: 15_000 }); + await po.authView.signIn(user); + await po.app.expectSignedIn(); + await po.app.signOut(); + }); +}); diff --git a/integration/tests/expo-native/boot-ios-simulators.sh b/integration/tests/expo-native/boot-ios-simulators.sh index 139335fd1b3..2c216a2c608 100755 --- a/integration/tests/expo-native/boot-ios-simulators.sh +++ b/integration/tests/expo-native/boot-ios-simulators.sh @@ -14,14 +14,14 @@ boot() { udids+=("$(xcrun simctl create "$model $i" "$device_type" "$runtime")") xcrun simctl boot "${udids[$((i - 1))]}" done - MAESTRO_UDID=$(IFS=,; echo "${udids[*]}") - echo "Booting $count x $model on $runtime: $MAESTRO_UDID" - if [ -n "${GITHUB_ENV:-}" ]; then echo "MAESTRO_UDID=$MAESTRO_UDID" >> "$GITHUB_ENV"; fi + CLERK_TEST_DEVICES=$(IFS=,; echo "${udids[*]}") + echo "Booting $count x $model on $runtime: $CLERK_TEST_DEVICES" + if [ -n "${GITHUB_ENV:-}" ]; then echo "CLERK_TEST_DEVICES=$CLERK_TEST_DEVICES" >> "$GITHUB_ENV"; fi } wait_ready() { local udid key - IFS=, read -r -a udids <<< "${MAESTRO_UDID:?MAESTRO_UDID is required}" + IFS=, read -r -a udids <<< "${CLERK_TEST_DEVICES:?CLERK_TEST_DEVICES is required}" for udid in "${udids[@]}"; do xcrun simctl bootstatus "$udid" -b & local pid=$! elapsed=0 diff --git a/integration/tests/expo-native/config.yaml b/integration/tests/expo-native/config.yaml deleted file mode 100644 index 94e3659b694..00000000000 --- a/integration/tests/expo-native/config.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Maestro workspace config: https://docs.maestro.dev/reference/workspace-configuration -# Top-level files under flows/ are cross-platform tests; flows/subflows/ holds -# runFlow-only pieces that discovery never runs standalone. Selectors use -# English text/labels: clerk-android ships no testTag/resource-ids (clerk-ios -# does expose accessibility identifiers like clerk.auth.start.identifier, but -# shared flows can't rely on iOS-only ids), and both native SDKs localize all -# strings, so devices must run the en locale. -appId: com.clerk.exponativebuildfixture -flows: - - 'flows/*.yaml' -platform: - ios: - disableAnimations: true - android: - disableAnimations: true diff --git a/integration/tests/expo-native/fixtures.ts b/integration/tests/expo-native/fixtures.ts new file mode 100644 index 00000000000..159a29b050a --- /dev/null +++ b/integration/tests/expo-native/fixtures.ts @@ -0,0 +1,20 @@ +import { test as base } from '@e2e-dev/mobile'; + +import type { PageObjects } from './page-objects/index.ts'; +import { createPageObjects } from './page-objects/index.ts'; +import type { TestUser } from './users.ts'; +import { createTestUser, deleteTestUser } from './users.ts'; + +export const test = base.extend<{ po: PageObjects }>({ + po: async (fixtures, provide) => { + await provide(createPageObjects(fixtures)); + }, +}); + +export const testWithUser = test.extend<{ user: TestUser }>({ + user: async (_fixtures, provide) => { + const user = await createTestUser(); + await provide(user); + await deleteTestUser(user); + }, +}); diff --git a/integration/tests/expo-native/flows/authview-detach-reattach.yaml b/integration/tests/expo-native/flows/authview-detach-reattach.yaml deleted file mode 100644 index ecb1c592d98..00000000000 --- a/integration/tests/expo-native/flows/authview-detach-reattach.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# Dismiss the native AuthView mid-flow and reopen it: the native view must -# survive detach/reattach and still complete a sign-in afterwards. Dismissal -# is the platform-native gesture: Android's system back button (doubling as -# the back-dismisses-AuthView regression), iOS's sheet Close control -# (clerk-ios exposes the stable clerk.dismissButton identifier). -# Also asserts the custom `logo` React element is rehosted into the native -# logo slot with a nonzero size, both on first mount and after reattach. -appId: com.clerk.exponativebuildfixture -name: AuthView survives detach and reattach ---- -- runFlow: subflows/open-app.yaml -- tapOn: - id: 'open-auth-view-button' -- extendedWaitUntil: - visible: 'Welcome! Sign in to continue\.?' - timeout: 25000 -# Retrying wait (not assertVisible): the rehosted logo is sized on the first -# RN layout pass, so it can lag the welcome copy by a frame or two. -- extendedWaitUntil: - visible: 'E2E Custom Logo' - timeout: 10000 -- runFlow: - when: - platform: Android - commands: - - back -- runFlow: - when: - platform: iOS - commands: - - tapOn: - id: 'clerk.dismissButton' -- extendedWaitUntil: - visible: - id: 'open-auth-view-button' - timeout: 15000 -- tapOn: - id: 'open-auth-view-button' -- extendedWaitUntil: - visible: 'E2E Custom Logo' - timeout: 15000 -- runFlow: subflows/sign-in-email-password.yaml -- runFlow: subflows/assert-signed-in.yaml -- tapOn: - id: 'sign-out-button' -- runFlow: subflows/assert-signed-out.yaml diff --git a/integration/tests/expo-native/flows/biometric-availability.yaml b/integration/tests/expo-native/flows/biometric-availability.yaml deleted file mode 100644 index 10fb9ce88aa..00000000000 --- a/integration/tests/expo-native/flows/biometric-availability.yaml +++ /dev/null @@ -1,9 +0,0 @@ -appId: com.clerk.exponativebuildfixture -name: useBiometricCredentials reaches the expo-biometrics native module ---- -- runFlow: subflows/open-app.yaml -- tapOn: - id: 'biometric-availability-button' -- extendedWaitUntil: - visible: 'biometric availability: .*' - timeout: 15000 diff --git a/integration/tests/expo-native/flows/embedded-profile-host-back.yaml b/integration/tests/expo-native/flows/embedded-profile-host-back.yaml deleted file mode 100644 index 360a99e8ed7..00000000000 --- a/integration/tests/expo-native/flows/embedded-profile-host-back.yaml +++ /dev/null @@ -1,58 +0,0 @@ -# Embedded UserProfileView (onHostBack): internal navigation stays native, -# and the host-supplied root back button closes the screen from JS. -appId: com.clerk.exponativebuildfixture -name: Embedded UserProfileView host back round trip ---- -- runFlow: subflows/open-app.yaml -- tapOn: - id: 'open-auth-view-button' -- runFlow: subflows/sign-in-email-password.yaml -- runFlow: subflows/assert-signed-in.yaml -- tapOn: - id: 'open-embedded-profile-button' -# The internal push differs per platform: clerk-ios pushes a Security screen -# from the profile root, clerk-android uses tabs at the root and pushes the -# Manage account screen instead. The double-Back contract below is the same: -# both back buttons read 'Back' but only one exists at a time, so the first -# tap pops Clerk's internal stack and the second is the host chevron firing -# onHostBack. -- runFlow: - when: - platform: iOS - commands: - - extendedWaitUntil: - visible: 'Security' - timeout: 20000 - - tapOn: - text: 'Security' - - extendedWaitUntil: - visible: 'Password|Passkeys|Two-step verification|Active devices' - timeout: 15000 - - tapOn: 'Back' - - extendedWaitUntil: - visible: 'Security' - timeout: 15000 -- runFlow: - when: - platform: Android - commands: - - extendedWaitUntil: - visible: 'Edit profile' - timeout: 20000 - - tapOn: - text: 'Manage account' - - extendedWaitUntil: - visible: 'EMAIL ADDRESSES|Add email address' - timeout: 15000 - - tapOn: 'Back' - - extendedWaitUntil: - visible: 'Edit profile' - timeout: 15000 -- tapOn: 'Back' -- extendedWaitUntil: - visible: - id: 'open-embedded-profile-button' - timeout: 15000 -- tapOn: - id: 'sign-out-button' -- runFlow: subflows/assert-signed-out.yaml diff --git a/integration/tests/expo-native/flows/google-sign-in-missing-credentials.yaml b/integration/tests/expo-native/flows/google-sign-in-missing-credentials.yaml deleted file mode 100644 index 417319758f3..00000000000 --- a/integration/tests/expo-native/flows/google-sign-in-missing-credentials.yaml +++ /dev/null @@ -1,9 +0,0 @@ -appId: com.clerk.exponativebuildfixture -name: useSignInWithGoogle surfaces the missing-credentials error ---- -- runFlow: subflows/open-app.yaml -- tapOn: - id: 'google-sign-in-button' -- extendedWaitUntil: - visible: '.*Google Sign-In credentials not found.*' - timeout: 15000 diff --git a/integration/tests/expo-native/flows/sign-in.yaml b/integration/tests/expo-native/flows/sign-in.yaml deleted file mode 100644 index 19aeba4c21a..00000000000 --- a/integration/tests/expo-native/flows/sign-in.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Native sign-in observed by JS, kept across a restart without clearing state, then JS sign-out. -appId: com.clerk.exponativebuildfixture -name: Native AuthView sign-in syncs to JS and survives a restart ---- -- runFlow: subflows/open-app.yaml -- tapOn: - id: 'open-auth-view-button' -- runFlow: subflows/sign-in-email-password.yaml -- runFlow: subflows/assert-signed-in.yaml -- stopApp -- launchApp -- extendedWaitUntil: - visible: 'signed in' - timeout: 45000 -- assertVisible: - id: 'user-id' -- tapOn: - id: 'sign-out-button' -- runFlow: subflows/assert-signed-out.yaml diff --git a/integration/tests/expo-native/flows/subflows/_warmup.yaml b/integration/tests/expo-native/flows/subflows/_warmup.yaml deleted file mode 100644 index 6c880b05805..00000000000 --- a/integration/tests/expo-native/flows/subflows/_warmup.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Cold-boot warmup, not a test. Lets the JS bundle parse and the a11y tree -# populate once, so the first real flow doesn't eat the cold-start cost and -# flake its in-flow waits. Excluded from the per-flow loop (lives in subflows/). -appId: com.clerk.exponativebuildfixture ---- -# Android can kill a fresh launch when pm clear's task removal lands after am start. -- retry: - maxRetries: 1 - commands: - - launchApp: - clearState: true - clearKeychain: true - - extendedWaitUntil: - visible: - id: 'auth-state' - timeout: 90000 diff --git a/integration/tests/expo-native/flows/subflows/assert-signed-in.yaml b/integration/tests/expo-native/flows/subflows/assert-signed-in.yaml deleted file mode 100644 index 65bcc55159d..00000000000 --- a/integration/tests/expo-native/flows/subflows/assert-signed-in.yaml +++ /dev/null @@ -1,9 +0,0 @@ -# Subflow: assert the JS layer observed the native sign-in (bridge sync). -# extendedWaitUntil retries until timeout; assertVisible does not. -appId: com.clerk.exponativebuildfixture ---- -- extendedWaitUntil: - visible: 'signed in' - timeout: 30000 -- assertVisible: - id: 'user-id' diff --git a/integration/tests/expo-native/flows/subflows/assert-signed-out.yaml b/integration/tests/expo-native/flows/subflows/assert-signed-out.yaml deleted file mode 100644 index 72986f7cae9..00000000000 --- a/integration/tests/expo-native/flows/subflows/assert-signed-out.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Subflow: assert the JS layer is signed out. -appId: com.clerk.exponativebuildfixture ---- -- extendedWaitUntil: - visible: 'signed out' - timeout: 20000 diff --git a/integration/tests/expo-native/flows/subflows/open-app.yaml b/integration/tests/expo-native/flows/subflows/open-app.yaml deleted file mode 100644 index 308bc4836f9..00000000000 --- a/integration/tests/expo-native/flows/subflows/open-app.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Subflow: launch from a clean state and land signed out. -appId: com.clerk.exponativebuildfixture ---- -# Android can kill a fresh launch when pm clear's task removal lands after am start. -- retry: - maxRetries: 1 - commands: - - launchApp: - clearState: true - clearKeychain: true - - extendedWaitUntil: - visible: - id: 'auth-state' - timeout: 30000 -# Text-only matching from here on: iOS failed combined id+text filters on RN -# Text elements in CI while id-only and text-only both match. Also wait out -# clerk-js init ('loading') with a retrying wait; assertVisible never retries. -- extendedWaitUntil: - visible: 'signed (in|out)' - timeout: 45000 -- assertVisible: 'signed out' diff --git a/integration/tests/expo-native/flows/subflows/sign-in-email-password.yaml b/integration/tests/expo-native/flows/subflows/sign-in-email-password.yaml deleted file mode 100644 index 17b4f364ac9..00000000000 --- a/integration/tests/expo-native/flows/subflows/sign-in-email-password.yaml +++ /dev/null @@ -1,125 +0,0 @@ -# Subflow: enter email + password into the native AuthView and submit. -# Requires CLERK_TEST_EMAIL and CLERK_TEST_PASSWORD env vars. -appId: com.clerk.exponativebuildfixture ---- -- extendedWaitUntil: - visible: 'Welcome! Sign in to continue\.?' - timeout: 25000 -# The AuthView sometimes renders its welcome text a beat before the email -# field; don't tap until the field is actually present. The placeholder -# varies by instance config (email-only vs email+username). -- extendedWaitUntil: - visible: 'Enter your email( or username)?' - timeout: 25000 -# Clear any pre-populated identifier (Clerk persists the last-used one in -# secure-store, surviving clearState). On iOS eraseText is cursor-dependent, -# so Select-all via the edit menu when it shows (the menu is unreliable on a -# remounted AuthView). On Android eraseText clears the whole field, and the -# long-press can open Gboard's features panel over the screen instead of the -# edit menu, so skip the menu dance there. The retry gates on reaching the -# password step, so a mangled identifier gets a clean second attempt. -- retry: - maxRetries: 2 - commands: - - tapOn: - text: 'Enter your email( or username)?' - - waitForAnimationToEnd: - timeout: 2000 - # A remounted AuthView prefills the last-used identifier, which is the - # same email this flow signs in with, and clearing a prefilled field is - # cursor-position dependent on Android. Only clear and retype when the - # field does not already hold the right value. - - runFlow: - when: - notVisible: ${CLERK_TEST_EMAIL} - commands: - - runFlow: - when: - platform: iOS - commands: - - longPressOn: - text: 'Enter your email( or username)?' - - runFlow: - when: - visible: 'Select All' - commands: - - tapOn: - text: 'Select All' - - eraseText: 60 - - inputText: ${CLERK_TEST_EMAIL} - # Wait for the typed value to land before tapping: the tap can race the - # recomposition that enables the button, and this also catches a mangled - # identifier inside the retry instead of at the next screen's timeout. - - extendedWaitUntil: - visible: ${CLERK_TEST_EMAIL} - timeout: 5000 - - waitForAnimationToEnd: - timeout: 2000 - - tapOn: - text: 'Continue' - index: 0 - # Which first factor comes next depends on instance config AND SDK: - # clerk-ios can go email-code-first where clerk-android goes - # password-first. Accept either screen. - - extendedWaitUntil: - visible: 'Enter your password|Check your email' - timeout: 15000 -# Email-code-first: for +clerk_test@ emails the documented test code is -# 424242: https://clerk.com/docs/testing/test-emails-and-phones -- runFlow: - when: - visible: 'Check your email' - commands: - - inputText: '424242' - - waitForAnimationToEnd: - timeout: 5000 -- runFlow: - when: - visible: 'Enter your password' - commands: - - tapOn: - text: 'Enter your password' - - inputText: ${CLERK_TEST_PASSWORD} - # The password is masked so its value can't be asserted; settle for the - # screen going stable so the tap doesn't race the enabling recomposition. - - waitForAnimationToEnd: - timeout: 2000 - - tapOn: - text: 'Continue' - index: 0 - - waitForAnimationToEnd: - timeout: 5000 - # The screen stays stable while the sign-in request is in flight, so the - # animation wait alone can return before the next screen exists. Wait for - # either outcome so the conditional below sees the real screen. - - extendedWaitUntil: - visible: 'Check your email|signed in' - timeout: 15000 - optional: true -# Some instances ask for the email code after the password instead. -- runFlow: - when: - visible: 'Check your email' - commands: - - inputText: '424242' - - waitForAnimationToEnd: - timeout: 5000 -# Android Google Password Manager may prompt to save the password. -- runFlow: - when: - visible: '.*Google Password Manager.*' - commands: - - tapOn: - text: 'Not now|Never' - - waitForAnimationToEnd: - timeout: 2000 -# iOS system Save Password / iCloud Keychain prompt overlays the app. -- runFlow: - when: - visible: 'Save Password|Strong Password|Use Strong Password|AutoFill Passwords' - commands: - - tapOn: - text: 'Not Now|Never for This Website|Don.t Save' - optional: true - - waitForAnimationToEnd: - timeout: 2000 diff --git a/integration/tests/expo-native/flows/user-button-sign-out-re-sign-in.yaml b/integration/tests/expo-native/flows/user-button-sign-out-re-sign-in.yaml deleted file mode 100644 index eb1a2a12cb7..00000000000 --- a/integration/tests/expo-native/flows/user-button-sign-out-re-sign-in.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# Native UserButton -> account sheet -> native sign-out, asserting the JS -# layer observes it (the reverse bridge direction from sign-in.yaml). -# clerk-android exposes no test identifiers (no testTag / resource-ids), so -# shared selectors are English text / accessibility labels. -# -# Ends with a second sign-in in the SAME app process (no restart, no -# clearState): a past regression had the second native sign-in complete -# natively while the JS SDK never observed it. Every other flow cold-launches -# with clearState, so this is the only place that path is exercised. -appId: com.clerk.exponativebuildfixture -name: UserButton native sign-out, then same-process re-sign-in ---- -- runFlow: subflows/open-app.yaml -- tapOn: - id: 'open-auth-view-button' -- runFlow: subflows/sign-in-email-password.yaml -- runFlow: subflows/assert-signed-in.yaml -# iOS labels the trigger "Open account"; Android "Open user profile". -- tapOn: - text: 'Open (account|user profile)' -- extendedWaitUntil: - visible: 'Manage account' - timeout: 15000 -- assertVisible: 'Sign out' -- tapOn: - text: 'Sign out' -- runFlow: subflows/assert-signed-out.yaml -# Second sign-in without restarting the app: the remounted AuthView must -# work and the JS layer must observe the new session. -- tapOn: - id: 'open-auth-view-button' -- runFlow: subflows/sign-in-email-password.yaml -- runFlow: subflows/assert-signed-in.yaml -- tapOn: - id: 'sign-out-button' -- runFlow: subflows/assert-signed-out.yaml diff --git a/integration/tests/expo-native/flows/user-profile-custom-pages.yaml b/integration/tests/expo-native/flows/user-profile-custom-pages.yaml deleted file mode 100644 index 0b408084b51..00000000000 --- a/integration/tests/expo-native/flows/user-profile-custom-pages.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# A custom page's React Native content is mounted as a child of the native host -# and rehosted into the destination its row pushes, then survives the trip back. -appId: com.clerk.exponativebuildfixture -name: UserProfileView renders a custom page ---- -- runFlow: subflows/open-app.yaml -- tapOn: - id: 'open-auth-view-button' -- runFlow: subflows/sign-in-email-password.yaml -- runFlow: subflows/assert-signed-in.yaml -- tapOn: - id: 'open-embedded-profile-button' -# Retrying wait: the row list lands a frame after the native profile paints. -- extendedWaitUntil: - visible: 'E2E Custom Page' - timeout: 20000 -- tapOn: - text: 'E2E Custom Page' -- extendedWaitUntil: - visible: 'Rehosted RN body' - timeout: 15000 -# The Android destination is a bare AndroidView with no back chrome, unlike the -# iOS page which clerk-ios pushes onto its own NavigationStack. -- runFlow: - when: - platform: iOS - commands: - - tapOn: 'Back' -- runFlow: - when: - platform: Android - commands: - - back -- extendedWaitUntil: - visible: 'E2E Custom Page' - timeout: 15000 -# The host chevron firing onHostBack, which reads 'Back' on both platforms. -- tapOn: 'Back' -- extendedWaitUntil: - visible: - id: 'open-embedded-profile-button' - timeout: 15000 -- tapOn: - id: 'sign-out-button' -- runFlow: subflows/assert-signed-out.yaml diff --git a/integration/tests/expo-native/native-modules.e2e.ts b/integration/tests/expo-native/native-modules.e2e.ts new file mode 100644 index 00000000000..52d344989be --- /dev/null +++ b/integration/tests/expo-native/native-modules.e2e.ts @@ -0,0 +1,17 @@ +import { expect } from 'e2e'; + +import { test } from './fixtures.ts'; + +test.describe('@clerk/expo native modules', () => { + test.beforeEach(({ po }) => po.app.reset()); + + test('useSignInWithGoogle surfaces the missing-credentials error', async ({ screen }) => { + await screen.getByTestId('google-sign-in-button').tap(); + await expect(screen.getByText(/Google Sign-In credentials not found/)).toBeVisible({ timeout: 15_000 }); + }); + + test('useBiometricCredentials reaches the expo-biometrics native module', async ({ screen }) => { + await screen.getByTestId('biometric-availability-button').tap(); + await expect(screen.getByText(/^biometric availability: /)).toBeVisible({ timeout: 15_000 }); + }); +}); diff --git a/integration/tests/expo-native/page-objects/app.ts b/integration/tests/expo-native/page-objects/app.ts new file mode 100644 index 00000000000..e2e53549e79 --- /dev/null +++ b/integration/tests/expo-native/page-objects/app.ts @@ -0,0 +1,29 @@ +import { expect } from 'e2e'; + +import type { DeviceFixtures } from '../types.ts'; + +export const createAppPageObject = ({ app, device, platform, screen }: DeviceFixtures) => { + const self = { + reset: async () => { + await app.open(); + if (platform === 'ios') { + await device.clearKeychain(); + } + await app.clearState(); + await expect(screen.getByText(/^signed (in|out)$/)).toBeVisible({ timeout: 45_000 }); + await self.expectSignedOut(); + }, + expectSignedIn: async () => { + await expect(screen.getByText('signed in')).toBeVisible({ timeout: 45_000 }); + await expect(screen.getByTestId('user-id')).toBeVisible(); + }, + expectSignedOut: () => { + return expect(screen.getByText('signed out')).toBeVisible({ timeout: 20_000 }); + }, + signOut: async () => { + await screen.getByTestId('sign-out-button').tap(); + await self.expectSignedOut(); + }, + }; + return self; +}; diff --git a/integration/tests/expo-native/page-objects/authView.ts b/integration/tests/expo-native/page-objects/authView.ts new file mode 100644 index 00000000000..0debc89a922 --- /dev/null +++ b/integration/tests/expo-native/page-objects/authView.ts @@ -0,0 +1,78 @@ +import { expect } from 'e2e'; + +import type { DeviceFixtures } from '../types.ts'; +import type { TestUser } from '../users.ts'; +import { fill, focus, tapUntilVisible } from './gestures.ts'; + +const welcome = /^Welcome! Sign in to continue\.?$/; +const iosPasswordPrompt = /^(Save Password|Strong Password|Use Strong Password|AutoFill Passwords)$/i; +const androidPasswordPrompt = /Google Password Manager/; +const afterPassword = new RegExp(`^signed in$|${iosPasswordPrompt.source}|${androidPasswordPrompt.source}`, 'i'); + +export const createAuthViewPageObject = ({ device, platform, screen }: DeviceFixtures) => { + const openButton = screen.getByTestId('open-auth-view-button'); + + const dismissAndroidPasswordPrompt = async () => { + if (await screen.getByText(androidPasswordPrompt).first().isVisible()) { + await screen + .getByText(/^(Not now|Never)$/i) + .first() + .tap(); + } + }; + + const dismissIosPasswordPrompt = async () => { + const dismiss = screen.getByText(/^(Not Now|Never for This Website|Don.t Save)$/i).first(); + if ((await screen.getByText(iosPasswordPrompt).first().isVisible()) && (await dismiss.isVisible())) { + await dismiss.tap(); + } + }; + + const self = { + open: () => { + return tapUntilVisible(openButton, screen.getByText(welcome)); + }, + dismiss: async () => { + if (platform === 'android') { + await device.back(); + await expect(openButton).toBeVisible({ timeout: 15_000 }); + } else { + await tapUntilVisible(screen.getByRole('button', 'Close'), openButton); + } + await expect(screen.getByText(welcome)).toBeHidden({ timeout: 15_000 }); + }, + setIdentifier: async (identifier: string) => { + const label = screen.getByText(/^Enter your email( or username)?$/); + await expect(label).toBeVisible({ timeout: 25_000 }); + await tapUntilVisible(label, screen.getByRole('textbox')); + const value = screen.getByDisplayValue(identifier); + if (!(await value.isVisible())) { + await fill(screen.getByRole('textbox'), identifier); + } + await expect(value).toBeVisible(); + }, + setPassword: async (password: string) => { + const field = screen.getByRole('textbox').last(); + await focus(field); + await field.pressSequentially(password); + }, + continue: () => { + return screen.getByText('Continue').tap(); + }, + dismissPasswordPrompt: async () => { + await dismissAndroidPasswordPrompt(); + await dismissIosPasswordPrompt(); + }, + signIn: async ({ email, password }: TestUser) => { + await expect(screen.getByText(welcome)).toBeVisible({ timeout: 25_000 }); + await self.setIdentifier(email); + await self.continue(); + await expect(screen.getByText('Enter your password').first()).toBeVisible({ timeout: 15_000 }); + await self.setPassword(password); + await self.continue(); + await expect(screen.getByText(afterPassword).first()).toBeVisible({ timeout: 45_000 }); + await self.dismissPasswordPrompt(); + }, + }; + return self; +}; diff --git a/integration/tests/expo-native/page-objects/gestures.ts b/integration/tests/expo-native/page-objects/gestures.ts new file mode 100644 index 00000000000..5528b3e99d1 --- /dev/null +++ b/integration/tests/expo-native/page-objects/gestures.ts @@ -0,0 +1,53 @@ +import type { Locator } from 'e2e'; +import { expect } from 'e2e'; + +import type { DeviceFixtures } from '../types.ts'; + +export async function tapUntilVisible(control: Locator, outcome: Locator) { + await expect + .poll( + async () => { + if (!(await outcome.isVisible()) && (await control.isVisible())) { + await control.tap(); + } + return outcome.isVisible(); + }, + { timeout: 30_000, interval: 1000 }, + ) + .toBe(true); +} + +export async function tapCenter({ screen }: DeviceFixtures, control: Locator) { + await expect(control).toBeVisible(); + const box = await control.boundingBox(); + if (!box) { + throw new Error('Control has no bounding box'); + } + await screen.tapAt({ x: box.x + box.width / 2, y: box.y + box.height / 2 }); +} + +export async function tapControl(fixtures: DeviceFixtures, control: Locator) { + if (fixtures.platform === 'android') { + await tapCenter(fixtures, control); + } else { + await control.tap(); + } +} + +function retryEngineFailure(action: () => Promise) { + return action().catch((error: { code?: string }) => { + if (error.code !== 'ENGINE_FAILURE') { + throw error; + } + return action(); + }); +} + +export function focus(field: Locator) { + return retryEngineFailure(() => field.tap()); +} + +export async function fill(field: Locator, value: string) { + await focus(field); + await retryEngineFailure(() => field.fill(value)); +} diff --git a/integration/tests/expo-native/page-objects/index.ts b/integration/tests/expo-native/page-objects/index.ts new file mode 100644 index 00000000000..e2174890569 --- /dev/null +++ b/integration/tests/expo-native/page-objects/index.ts @@ -0,0 +1,16 @@ +import type { DeviceFixtures } from '../types.ts'; +import { createAppPageObject } from './app.ts'; +import { createAuthViewPageObject } from './authView.ts'; +import { createUserButtonPageObject } from './userButton.ts'; +import { createUserProfilePageObject } from './userProfile.ts'; + +export const createPageObjects = (fixtures: DeviceFixtures) => { + return { + app: createAppPageObject(fixtures), + authView: createAuthViewPageObject(fixtures), + userButton: createUserButtonPageObject(fixtures), + userProfile: createUserProfilePageObject(fixtures), + }; +}; + +export type PageObjects = ReturnType; diff --git a/integration/tests/expo-native/page-objects/userButton.ts b/integration/tests/expo-native/page-objects/userButton.ts new file mode 100644 index 00000000000..d41c073c197 --- /dev/null +++ b/integration/tests/expo-native/page-objects/userButton.ts @@ -0,0 +1,18 @@ +import { expect } from 'e2e'; + +import type { DeviceFixtures } from '../types.ts'; +import { tapControl } from './gestures.ts'; + +export const createUserButtonPageObject = (fixtures: DeviceFixtures) => { + const { screen } = fixtures; + const self = { + open: async () => { + await screen.getByLabel(/^Open (account|user profile)$/).tap(); + await expect(screen.getByText('Manage account')).toBeVisible({ timeout: 15_000 }); + }, + signOut: () => { + return tapControl(fixtures, screen.getByText('Sign out')); + }, + }; + return self; +}; diff --git a/integration/tests/expo-native/page-objects/userProfile.ts b/integration/tests/expo-native/page-objects/userProfile.ts new file mode 100644 index 00000000000..6025cb71304 --- /dev/null +++ b/integration/tests/expo-native/page-objects/userProfile.ts @@ -0,0 +1,27 @@ +import { expect } from 'e2e'; + +import type { DeviceFixtures } from '../types.ts'; +import { tapCenter, tapControl, tapUntilVisible } from './gestures.ts'; + +export const createUserProfilePageObject = (fixtures: DeviceFixtures) => { + const { screen } = fixtures; + const openButton = screen.getByTestId('open-embedded-profile-button'); + const self = { + open: () => { + return tapUntilVisible(openButton, screen.getByText('E2E Custom Page')); + }, + openRow: (name: string) => { + return tapControl(fixtures, screen.getByText(name)); + }, + back: () => { + return tapCenter(fixtures, screen.getByLabel('Back').last()); + }, + leaveCustomPage: () => { + return fixtures.platform === 'android' ? fixtures.device.back() : self.back(); + }, + expectClosed: () => { + return expect(openButton).toBeVisible({ timeout: 15_000 }); + }, + }; + return self; +}; diff --git a/integration/tests/expo-native/run-android-flows.sh b/integration/tests/expo-native/run-android-flows.sh deleted file mode 100755 index d1751b0bd0b..00000000000 --- a/integration/tests/expo-native/run-android-flows.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env bash -# Usage: ./run-android-flows.sh (inside reactivecircus/android-emulator-runner) -set -euo pipefail -cd "$(dirname "${BASH_SOURCE[0]}")" - -apk_path=${1:?APK path is required} -command -v adb >/dev/null 2>&1 || { - echo 'adb is required' - exit 1 -} - -shards=${MAESTRO_SHARDS:-1} -devices=(emulator-5554) -sdk=$(dirname "$(dirname "$(command -v adb)")") -debug=${MAESTRO_DEBUG_OUTPUT:-${TMPDIR:-/tmp}/clerk-expo-maestro-runner} -mkdir -p "$debug" - -for ((i = 1; i < shards; i++)); do - port=$((5554 + i * 2)) - "$sdk/emulator/emulator" -avd "${AVD_NAME:-test}" -read-only -port "$port" \ - -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -no-snapshot-save \ - > "$debug/emulator-$port.log" 2>&1 & - devices+=("emulator-$port") -done - -# adb wait-for-device never returns for an emulator that died at startup -wait_for_boot() { - local device=$1 elapsed=0 - until [ "$(adb -s "$device" shell getprop sys.boot_completed 2>/dev/null | tr -d '\r')" = 1 ]; do - if [ "$elapsed" -ge 240 ]; then - echo "::error::$device did not boot within ${elapsed}s" - [ -f "$debug/$device.log" ] && tail -n 40 "$debug/$device.log" - return 1 - fi - sleep 5 - elapsed=$((elapsed + 5)) - done - echo "$device booted" -} -for device in "${devices[@]}"; do - wait_for_boot "$device" - adb -s "$device" install -r "$apk_path" -done - -logcat_pids=() -stop_logcat() { - local pid - for pid in ${logcat_pids[@]+"${logcat_pids[@]}"}; do - kill "$pid" >/dev/null 2>&1 || true - wait "$pid" 2>/dev/null || true - done -} -trap stop_logcat EXIT - -for device in "${devices[@]}"; do - adb -s "$device" logcat -c || true - adb -s "$device" logcat -v threadtime > "$debug/$device-logcat.log" 2>&1 & - logcat_pids+=($!) -done - -PLATFORM=android MAESTRO_UDID=$(IFS=,; echo "${devices[*]}") ./run-flows.sh diff --git a/integration/tests/expo-native/run-flows.sh b/integration/tests/expo-native/run-flows.sh deleted file mode 100755 index 26b5fc8f4fa..00000000000 --- a/integration/tests/expo-native/run-flows.sh +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/env bash -# Usage: PLATFORM= [MAESTRO_UDID=a,b] [MAESTRO_DEBUG_OUTPUT=dir] ./run-flows.sh -set -euo pipefail -cd "$(dirname "${BASH_SOURCE[0]}")" - -# Runs the official maestro CLI. maestro-runner was tried and reverted: its -# drivers mangle typed text and resolve text selectors by substring, so -# tapOn 'Continue' hits the 'Continue to ' title instead of the button. -command -v maestro >/dev/null 2>&1 || { - echo "maestro is required: https://docs.maestro.dev" - exit 1 -} - -: "${PLATFORM:?PLATFORM (ios|android) is required}" -: "${CLERK_TEST_EMAIL:?CLERK_TEST_EMAIL is required}" -: "${CLERK_TEST_PASSWORD:?CLERK_TEST_PASSWORD is required}" - -app_id=com.clerk.exponativebuildfixture -output_root=${MAESTRO_DEBUG_OUTPUT:-${TMPDIR:-/tmp}/clerk-expo-maestro-runner} -IFS=, read -r -a devices <<< "${MAESTRO_UDID:-}" -device_count=${#devices[@]} -[ "$device_count" -gt 0 ] || device_count=1 - -force_stop() { - local device - for device in "${devices[@]:-booted}"; do - if [ "$PLATFORM" = ios ]; then - xcrun simctl terminate "$device" "$app_id" >/dev/null 2>&1 || true - elif [ "$device" = booted ]; then - adb shell am force-stop "$app_id" >/dev/null 2>&1 || true - else - adb -s "$device" shell am force-stop "$app_id" >/dev/null 2>&1 || true - fi - done -} - -run_maestro() { - local output_name=$1 mode=$2 shards=$3 - shift 3 - local shard_args=() - if [ "$shards" -gt 1 ]; then shard_args=("--shard-$mode" "$shards"); fi - maestro ${MAESTRO_UDID:+--udid "$MAESTRO_UDID"} test \ - ${shard_args[@]+"${shard_args[@]}"} \ - --debug-output "$output_root/$output_name" \ - --flatten-debug-output \ - --format JUNIT \ - --output "$output_root/$output_name/report.xml" \ - -e CLERK_TEST_EMAIL="$CLERK_TEST_EMAIL" \ - -e CLERK_TEST_PASSWORD="$CLERK_TEST_PASSWORD" \ - "$@" -} - -report_rows() { - python3 - "$1" <<'PY' -import sys, xml.etree.ElementTree as ET -for case in ET.parse(sys.argv[1]).getroot().iter('testcase'): - print(f"{case.get('file')}\t{case.get('status')}\t{float(case.get('time') or 0):.0f}") -PY -} - -started=$SECONDS -warmup_result=failed -for warmup_attempt in 1 2; do - if run_maestro "warmup-attempt-$warmup_attempt" all "$device_count" flows/subflows/_warmup.yaml; then - warmup_result=passed - break - fi - force_stop - if [ "$warmup_attempt" -eq 1 ]; then - echo "::warning::Warmup failed attempt 1, retrying after 10s..." - sleep 10 - fi -done -echo "Warmup: $warmup_result after $warmup_attempt attempt(s) in $((SECONDS - started))s" -if [ "$warmup_result" != passed ]; then - echo "::error::Warmup failed after 2 attempts; aborting Maestro flows" - exit 1 -fi - -# Force-stop so the first launchApp clearState doesn't race the warm process. -force_stop - -run_maestro flows split "$device_count" flows/*.yaml || true -report_rows "$output_root/flows/report.xml" > "$output_root/attempt-1.tsv" - -failed=() -while IFS=$'\t' read -r file status _; do - [ "$status" = SUCCESS ] || failed+=("$file") -done < "$output_root/attempt-1.tsv" - -if [ "${#failed[@]}" -gt 0 ]; then - echo "::warning::${#failed[@]} flow(s) failed, rerunning after 10s to tell flaky from deterministic: ${failed[*]}" - force_stop - sleep 10 - shards=$device_count - [ "${#failed[@]}" -lt "$shards" ] && shards=${#failed[@]} - run_maestro rerun split "$shards" "${failed[@]}" || true - report_rows "$output_root/rerun/report.xml" > "$output_root/attempt-2.tsv" -fi - -if [ -n "${GITHUB_STEP_SUMMARY:-}" ]; then - { - echo "### Maestro flow timings ($device_count device(s))" - echo '| Flow | Result | Attempts | Duration |' - echo '| --- | --- | ---: | ---: |' - } >> "$GITHUB_STEP_SUMMARY" -fi - -status=0 -while IFS=$'\t' read -r file result seconds; do - attempts=1 - if [ "$result" = SUCCESS ]; then - result=passed - else - status=1 - result=failed - rerun=$(awk -F'\t' -v f="$file" '$1 == f { print $2 "\t" $3 }' "$output_root/attempt-2.tsv" 2>/dev/null || true) - if [ -n "$rerun" ]; then - attempts=2 - IFS=$'\t' read -r rerun_result seconds <<< "$rerun" - [ "$rerun_result" = SUCCESS ] && result='flaky (failed, then passed on the rerun)' - fi - echo "::error::Flow $file: $result" - fi - echo "Flow $file: $result after $attempts attempt(s) in ${seconds}s" - if [ -n "${GITHUB_STEP_SUMMARY:-}" ]; then - printf '| `%s` | %s | %s | %ss |\n' "$file" "$result" "$attempts" "$seconds" >> "$GITHUB_STEP_SUMMARY" - fi -done < "$output_root/attempt-1.tsv" -exit $status diff --git a/integration/tests/expo-native/session-sync.e2e.ts b/integration/tests/expo-native/session-sync.e2e.ts new file mode 100644 index 00000000000..45ecedfc3f2 --- /dev/null +++ b/integration/tests/expo-native/session-sync.e2e.ts @@ -0,0 +1,30 @@ +import { testWithUser as test } from './fixtures.ts'; + +test.describe('@clerk/expo native session sync', () => { + test.beforeEach(({ po }) => po.app.reset()); + + test('a native sign-in reaches the JS SDK and survives an app restart', async ({ app, po, user }) => { + await po.authView.open(); + await po.authView.signIn(user); + await po.app.expectSignedIn(); + await app.restart(); + await po.app.expectSignedIn(); + await po.app.signOut(); + }); + + test('a native sign-out reaches the JS SDK, and so does a second sign-in in the same process', async ({ + po, + user, + }) => { + await po.authView.open(); + await po.authView.signIn(user); + await po.app.expectSignedIn(); + await po.userButton.open(); + await po.userButton.signOut(); + await po.app.expectSignedOut(); + await po.authView.open(); + await po.authView.signIn(user); + await po.app.expectSignedIn(); + await po.app.signOut(); + }); +}); diff --git a/integration/tests/expo-native/types.ts b/integration/tests/expo-native/types.ts new file mode 100644 index 00000000000..4eee9dc425b --- /dev/null +++ b/integration/tests/expo-native/types.ts @@ -0,0 +1,4 @@ +import type { Device } from '@e2e-dev/mobile'; +import type { TestFixtures } from 'e2e'; + +export type DeviceFixtures = TestFixtures & { device: Device }; diff --git a/integration/tests/expo-native/user-profile.e2e.ts b/integration/tests/expo-native/user-profile.e2e.ts new file mode 100644 index 00000000000..3fef2a7c810 --- /dev/null +++ b/integration/tests/expo-native/user-profile.e2e.ts @@ -0,0 +1,40 @@ +import { expect } from 'e2e'; + +import { testWithUser as test } from './fixtures.ts'; + +const internalPush = { + android: { root: 'Edit profile', row: 'Manage account', detail: /^(EMAIL ADDRESSES|Add email address)$/ }, + ios: { root: 'Security', row: 'Security', detail: /^(Password|Passkeys|Two-step verification|Active devices)$/i }, +}; + +test.describe('@clerk/expo ', () => { + test.beforeEach(async ({ po, user }) => { + await po.app.reset(); + await po.authView.open(); + await po.authView.signIn(user); + await po.app.expectSignedIn(); + await po.userProfile.open(); + }); + + test('onHostBack closes the embedded profile from JS after native navigation', async ({ platform, po, screen }) => { + const { root, row, detail } = internalPush[platform as keyof typeof internalPush]; + await expect(screen.getByText(root)).toBeVisible({ timeout: 20_000 }); + await po.userProfile.openRow(row); + await expect(screen.getByText(detail).first()).toBeVisible({ timeout: 15_000 }); + await po.userProfile.back(); + await expect(screen.getByText(root)).toBeVisible({ timeout: 15_000 }); + await po.userProfile.back(); + await po.userProfile.expectClosed(); + await po.app.signOut(); + }); + + test('a custom page renders React Native content inside the native profile', async ({ po, screen }) => { + await po.userProfile.openRow('E2E Custom Page'); + await expect(screen.getByText('Rehosted RN body')).toBeVisible({ timeout: 15_000 }); + await po.userProfile.leaveCustomPage(); + await expect(screen.getByText('E2E Custom Page')).toBeVisible({ timeout: 15_000 }); + await po.userProfile.back(); + await po.userProfile.expectClosed(); + await po.app.signOut(); + }); +}); diff --git a/integration/tests/expo-native/users.ts b/integration/tests/expo-native/users.ts new file mode 100644 index 00000000000..2a22e74b419 --- /dev/null +++ b/integration/tests/expo-native/users.ts @@ -0,0 +1,37 @@ +import { randomBytes } from 'node:crypto'; + +export type TestUser = { id: string; email: string; password: string }; + +function bapi(path: string, init: RequestInit) { + return fetch(`${process.env.CLERK_API_URL ?? 'https://api.clerk.com'}/v1${path}`, { + ...init, + headers: { Authorization: `Bearer ${process.env.CLERK_SECRET_KEY}`, 'Content-Type': 'application/json' }, + }); +} + +export async function createTestUser(): Promise { + const suffix = randomBytes(2).toString('hex'); + const email = `${suffix}+clerk_test@clerkcookie.com`; + const password = `ClerkCI!${randomBytes(8).toString('hex')}Aa1`; + const response = await bapi('/users', { + method: 'POST', + body: JSON.stringify({ + email_address: [email], + username: `${process.env.CLERK_TEST_USERNAME_PREFIX ?? 'e2e_local_'}${suffix}`, + password, + bypass_client_trust: true, + }), + }); + if (!response.ok) { + throw new Error(`BAPI user creation failed (HTTP ${response.status}): ${await response.text()}`); + } + const { id } = (await response.json()) as { id: string }; + return { id, email, password }; +} + +export async function deleteTestUser({ id }: TestUser) { + const response = await bapi(`/users/${id}`, { method: 'DELETE' }); + if (!response.ok && response.status !== 404) { + console.warn(`BAPI user deletion failed for ${id} (HTTP ${response.status}): ${await response.text()}`); + } +} diff --git a/package.json b/package.json index cf74d032ebc..f5a7b07221d 100644 --- a/package.json +++ b/package.json @@ -46,8 +46,8 @@ "test:integration:custom": "pnpm test:integration:base --grep @custom", "test:integration:deployment:nextjs": "pnpm playwright test --config integration/playwright.deployments.config.ts", "test:integration:electron": "pnpm test:integration:base --grep @electron", - "test:integration:expo-native:android": "PLATFORM=android integration/tests/expo-native/run-flows.sh", - "test:integration:expo-native:ios": "PLATFORM=ios integration/tests/expo-native/run-flows.sh", + "test:integration:expo-native:android": "e2e run --config integration/e2e.expo-native.config.ts --target android", + "test:integration:expo-native:ios": "e2e run --config integration/e2e.expo-native.config.ts --target ios", "test:integration:expo-web:disabled": "E2E_APP_ID=expo.expo-web pnpm test:integration:base --grep @expo-web", "test:integration:express": "E2E_APP_ID=express.* pnpm test:integration:base --grep @express", "test:integration:fastify": "E2E_APP_ID=fastify.* pnpm test:integration:base --grep @fastify", @@ -85,6 +85,7 @@ "@clerk/testing": "workspace:*", "@commitlint/cli": "^20.5.2", "@commitlint/config-conventional": "^20.5.0", + "@e2e-dev/mobile": "0.8.1", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "9.31.0", "@faker-js/faker": "^9.9.0", @@ -108,6 +109,7 @@ "cpy-cli": "^5.0.0", "cross-spawn": "^7.0.6", "dotenv": "^16.6.1", + "e2e": "0.15.1", "eslint": "9.31.0", "eslint-config-prettier": "10.1.8", "eslint-config-turbo": "2.5.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a9c773b275d..fdee895c620 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -143,6 +143,9 @@ importers: '@commitlint/config-conventional': specifier: ^20.5.0 version: 20.5.0 + '@e2e-dev/mobile': + specifier: 0.8.1 + version: 0.8.1(e2e@0.15.1(@cfworker/json-schema@4.1.1)) '@eslint/eslintrc': specifier: ^3.3.5 version: 3.3.5 @@ -187,10 +190,10 @@ importers: version: 18.3.7(@types/react@18.3.28) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + version: 4.7.0(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) '@vitest/browser-playwright': specifier: 5.0.0 - version: 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0) + version: 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0) '@vitest/coverage-v8': specifier: 5.0.0 version: 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) @@ -212,6 +215,9 @@ importers: dotenv: specifier: ^16.6.1 version: 16.6.1 + e2e: + specifier: 0.15.1 + version: 0.15.1(@cfworker/json-schema@4.1.1) eslint: specifier: 9.31.0 version: 9.31.0(jiti@2.7.0) @@ -328,10 +334,10 @@ importers: version: 1.2.2 tsdown: specifier: catalog:repo - version: 0.22.2(@arethetypeswrong/core@0.18.3)(publint@0.3.18)(tsx@4.20.6)(typescript@6.0.3)(unrun@0.3.1(synckit@0.11.11))(vue-tsc@3.2.4(typescript@6.0.3)) + version: 0.22.2(@arethetypeswrong/core@0.18.3)(publint@0.3.18)(tsx@4.23.14)(typescript@6.0.3)(unrun@0.3.1(synckit@0.11.11))(vue-tsc@3.2.4(typescript@6.0.3)) tsup: specifier: catalog:repo - version: 8.5.1(@microsoft/api-extractor@7.58.7(@types/node@22.20.1))(jiti@2.7.0)(postcss@8.5.26)(tsx@4.20.6)(typescript@6.0.3)(yaml@2.9.0) + version: 8.5.1(@microsoft/api-extractor@7.58.7(@types/node@22.20.1))(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.14)(typescript@6.0.3)(yaml@2.9.0) turbo: specifier: ^2.10.11 version: 2.10.12 @@ -358,7 +364,7 @@ importers: version: 11.1.1 vitest: specifier: 5.0.0 - version: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + version: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) zx: specifier: catalog:repo version: 8.8.5 @@ -383,7 +389,7 @@ importers: version: link:../ui astro: specifier: ^7.0.0 - version: 7.2.9(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@25.6.0)(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.11.0)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + version: 7.2.9(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@25.6.0)(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.11.0)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) packages/backend: dependencies: @@ -615,13 +621,13 @@ importers: version: 9.31.0(jiti@2.7.0) tsdown: specifier: catalog:repo - version: 0.22.2(@arethetypeswrong/core@0.18.3)(publint@0.3.18)(tsx@4.20.6)(typescript@6.0.3)(unrun@0.3.1(synckit@0.11.11))(vue-tsc@3.2.4(typescript@6.0.3)) + version: 0.22.2(@arethetypeswrong/core@0.18.3)(publint@0.3.18)(tsx@4.23.14)(typescript@6.0.3)(unrun@0.3.1(synckit@0.11.11))(vue-tsc@3.2.4(typescript@6.0.3)) typescript: specifier: catalog:repo version: 6.0.3 vitest: specifier: 5.0.0 - version: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + version: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) packages/expo: dependencies: @@ -813,7 +819,7 @@ importers: version: 0.19.0 '@stylexjs/unplugin': specifier: 0.19.0 - version: 0.19.0(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + version: 0.19.0(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) '@testing-library/dom': specifier: ^10.4.1 version: 10.4.1 @@ -858,7 +864,7 @@ importers: version: 18.3.1(react@18.3.1) tsdown: specifier: catalog:repo - version: 0.22.2(@arethetypeswrong/core@0.18.3)(publint@0.3.18)(tsx@4.20.6)(typescript@6.0.3)(unrun@0.3.1(synckit@0.11.11))(vue-tsc@3.2.4(typescript@6.0.3)) + version: 0.22.2(@arethetypeswrong/core@0.18.3)(publint@0.3.18)(tsx@4.23.14)(typescript@6.0.3)(unrun@0.3.1(synckit@0.11.11))(vue-tsc@3.2.4(typescript@6.0.3)) vitest-axe: specifier: ^0.1.0 version: 0.1.0(vitest@5.0.0) @@ -922,7 +928,7 @@ importers: version: link:../vue '@nuxt/kit': specifier: ^4.1.3 - version: 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + version: 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) '@nuxt/schema': specifier: ^4.1.3 version: 4.5.2 @@ -932,7 +938,7 @@ importers: version: 1.15.11 nuxt: specifier: ^4.5.1 - version: 4.5.2(@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.29.7))(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.134.0)(@parcel/watcher@2.5.6)(@rspack/core@2.0.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.42)(bufferutil@4.1.0)(cac@6.7.14)(commander@14.0.3)(db0@0.3.4)(esbuild@0.28.1)(eslint@9.31.0(jiti@2.7.0))(idb-keyval@6.2.1)(ioredis@5.11.0)(lightningcss@1.33.0)(magicast@0.5.4)(meow@13.2.0)(optionator@0.9.4)(rolldown@1.1.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.1.0)(rollup@4.61.0))(rollup@4.61.0)(terser@5.46.1)(tsx@4.20.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue-tsc@3.2.4(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1))(yaml@2.9.0) + version: 4.5.2(@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.29.7))(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.134.0)(@parcel/watcher@2.5.6)(@rspack/core@2.0.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.42)(bufferutil@4.1.0)(cac@6.7.14)(commander@15.0.0)(db0@0.3.4)(esbuild@0.28.1)(eslint@9.31.0(jiti@2.7.0))(idb-keyval@6.2.1)(ioredis@5.11.0)(lightningcss@1.33.0)(magicast@0.5.4)(meow@13.2.0)(optionator@0.9.4)(rolldown@1.1.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.1.0)(rollup@4.61.0))(rollup@4.61.0)(terser@5.46.1)(tsx@4.23.14)(typescript@6.0.3)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue-tsc@3.2.4(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1))(yaml@2.9.0) typescript: specifier: catalog:repo version: 6.0.3 @@ -1201,7 +1207,7 @@ importers: version: 1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start': specifier: 1.168.60 - version: 1.168.60(@rspack/core@2.0.6)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + version: 1.168.60(@rspack/core@2.0.6)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) esbuild-plugin-file-path-extensions: specifier: ^2.1.4 version: 2.1.4 @@ -1314,7 +1320,7 @@ importers: version: 10.2.6 tsdown: specifier: catalog:repo - version: 0.22.2(@arethetypeswrong/core@0.18.3)(publint@0.3.18)(tsx@4.20.6)(typescript@6.0.3)(unrun@0.3.1(synckit@0.11.11))(vue-tsc@3.2.4(typescript@6.0.3)) + version: 0.22.2(@arethetypeswrong/core@0.18.3)(publint@0.3.18)(tsx@4.23.14)(typescript@6.0.3)(unrun@0.3.1(synckit@0.11.11))(vue-tsc@3.2.4(typescript@6.0.3)) unplugin: specifier: ^2.3.11 version: 2.3.11 @@ -1379,13 +1385,13 @@ importers: version: 8.1.0(@vue/compiler-sfc@3.5.42)(vue@3.5.33(typescript@6.0.3)) '@vitejs/plugin-vue': specifier: ^6.0.5 - version: 6.0.8(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.33(typescript@6.0.3)) + version: 6.0.8(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.33(typescript@6.0.3)) '@vue.ts/tsx-auto-props': specifier: ^1.0.0-beta.13 - version: 1.0.0-beta.13(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))))(typescript@6.0.3)(vue@3.5.33(typescript@6.0.3)) + version: 1.0.0-beta.13(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))))(typescript@6.0.3)(vue@3.5.33(typescript@6.0.3)) unplugin-vue: specifier: 7.0.8 - version: 7.0.8(@types/node@25.6.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.1)(tsx@4.20.6)(vue@3.5.33(typescript@6.0.3))(yaml@2.9.0) + version: 7.0.8(@types/node@25.6.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.1)(tsx@4.23.14)(vue@3.5.33(typescript@6.0.3))(yaml@2.9.0) vue: specifier: catalog:repo version: 3.5.33(typescript@6.0.3) @@ -1421,6 +1427,10 @@ packages: '@adraffy/ens-normalize@1.11.1': resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} + '@ai-sdk/provider@4.0.18': + resolution: {integrity: sha512-+GZJIgz1jk86pwEbb3f1BD2bdoSKyWE4Jg4YUc7NMnMozbWemSKYZcw2F4nMaO5qwsL5A8RmioAKW81YktRpIQ==} + engines: {node: '>=22'} + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -2375,12 +2385,12 @@ packages: '@changesets/write@0.4.0': resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} - '@clack/core@1.4.3': - resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==} + '@clack/core@1.5.1': + resolution: {integrity: sha512-iHTrHA8MtVuLl2TfZySmcKv1qO2PoyC9Z7pfSDozEuV5vtY3/wcOPKJXlqJ5Oq2Cx5DDGQGAMVx6HZfRRoVEbQ==} engines: {node: '>= 20.12.0'} - '@clack/prompts@1.7.0': - resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==} + '@clack/prompts@1.8.1': + resolution: {integrity: sha512-dlT1m5e/0yUL0kRNcQn7yGLVThkgbB0Ga/1AmfDDC/8ik6AIiSf2QLQO2zPYvefsHP0aFgxO93cVLCCfDp7kzQ==} engines: {node: '>= 20.12.0'} '@cloudflare/kv-asset-handler@0.4.2': @@ -2562,6 +2572,16 @@ packages: '@dxup/unimport@0.1.2': resolution: {integrity: sha512-/B8YJGPzaYq1NbsQmwgP8EZqg40NpTw4ZB3suuI0TplbxKHeK94jeaawLmVhCv+YwUnOpiWEz9U6SeThku/8JQ==} + '@e2e-dev/mobile@0.8.1': + resolution: {integrity: sha512-aUbqIUxgeyxebNtySH7Cw+IvZPauHqOM5oUBTCzF8YMpInjqs8vi7iiW6eiZsQPxrINTy/3KoSvIAnPU8bXFYg==} + engines: {node: '>=22.12.0'} + peerDependencies: + ai: ^7.0.0 + e2e: '>=0.15.0 <1' + peerDependenciesMeta: + ai: + optional: true + '@ecies/ciphers@0.2.6': resolution: {integrity: sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==} engines: {bun: '>=1', deno: '>=2.7.10', node: '>=16'} @@ -2664,12 +2684,6 @@ packages: resolution: {integrity: sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==} engines: {node: '>=18'} - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.27.7': resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} engines: {node: '>=18'} @@ -2682,12 +2696,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.27.7': resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} engines: {node: '>=18'} @@ -2700,12 +2708,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.27.7': resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} engines: {node: '>=18'} @@ -2718,12 +2720,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.27.7': resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} engines: {node: '>=18'} @@ -2736,12 +2732,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.27.7': resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} engines: {node: '>=18'} @@ -2754,12 +2744,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.27.7': resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} engines: {node: '>=18'} @@ -2772,12 +2756,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.27.7': resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} engines: {node: '>=18'} @@ -2790,12 +2768,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.27.7': resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} engines: {node: '>=18'} @@ -2808,12 +2780,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.27.7': resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} engines: {node: '>=18'} @@ -2826,12 +2792,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.27.7': resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} engines: {node: '>=18'} @@ -2844,12 +2804,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.27.7': resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} engines: {node: '>=18'} @@ -2862,12 +2816,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.27.7': resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} engines: {node: '>=18'} @@ -2880,12 +2828,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.27.7': resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} @@ -2898,12 +2840,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.27.7': resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} engines: {node: '>=18'} @@ -2916,12 +2852,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.27.7': resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} engines: {node: '>=18'} @@ -2934,12 +2864,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.27.7': resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} engines: {node: '>=18'} @@ -2952,12 +2876,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.27.7': resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} engines: {node: '>=18'} @@ -2970,12 +2888,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.27.7': resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} engines: {node: '>=18'} @@ -2988,12 +2900,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.27.7': resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} @@ -3006,12 +2912,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.27.7': resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} engines: {node: '>=18'} @@ -3024,12 +2924,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.27.7': resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} @@ -3042,12 +2936,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/openharmony-arm64@0.27.7': resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} engines: {node: '>=18'} @@ -3060,12 +2948,6 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.27.7': resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} engines: {node: '>=18'} @@ -3078,12 +2960,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.27.7': resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} engines: {node: '>=18'} @@ -3096,12 +2972,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.27.7': resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} engines: {node: '>=18'} @@ -3114,12 +2984,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.27.7': resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} engines: {node: '>=18'} @@ -3923,8 +3787,8 @@ packages: '@microsoft/tsdoc@0.16.0': resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} - '@modelcontextprotocol/sdk@1.26.0': - resolution: {integrity: sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==} + '@modelcontextprotocol/sdk@1.30.1': + resolution: {integrity: sha512-H2HxLvC3HDNybePJaLdSrU1hhUK5iQw+WvV1b01myFyI7sdVGe1u/IPTE5D9fGCiJDVtgMV/lmFkQXLmQyIFYA==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 @@ -5685,6 +5549,9 @@ packages: '@stablelib/base64@1.0.1': resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@stripe/react-stripe-js@3.1.1': resolution: {integrity: sha512-+JzYFgUivVD7koqYV7LmLlt9edDMAwKH7XhZAHFQMo7NeRC+6D2JmQGzp9tygWerzwttwFLlExGp4rAOvD6l9g==} peerDependencies: @@ -6707,6 +6574,9 @@ packages: '@vitest/browser': optional: true + '@vitest/expect@5.0.2': + resolution: {integrity: sha512-pd6YDkhOHptwC65NYNpGpNxWlJH9M9Gxwtej73osTddb1NpiE0Jz5CIjTTEGXRgK0YtiSN7qBokmBXZ5uPJL1w==} + '@vitest/istanbul-lib-coverage@1.0.1': resolution: {integrity: sha512-k3DJZ8LhMBK9NS4SclF1ASD3OgXEWDorbIcPTRDK0/Zae6fRvu+fJRxtFdLfHsa9Y24beCdPnoNZ4LviTNstfA==} engines: {node: '>=22'} @@ -6729,9 +6599,15 @@ packages: '@vitest/pretty-format@5.0.0': resolution: {integrity: sha512-PVRNuB3wpReb4SQEs4zTKM4KWFhQ5pw3spE8naoDJNB5T5aWRzGKHwXcLUllr0WeOTXpB6bSr3CJLo5+7XQSSQ==} + '@vitest/pretty-format@5.0.2': + resolution: {integrity: sha512-YHM+mQQ7N1ROHMugJ7P/M+fC/q1G4zs/iAMZZCvhHcY8WkwPQcXBHD+z18oz+808Cfa12K7jOr3XPQMcLIovjw==} + '@vitest/spy@5.0.0': resolution: {integrity: sha512-uy+luWBAPw9XfthoHi5AkfHUnuPYEESjl0p/r+meoBnU8bxg5GDQ3Ey8MjcJ6sqahkL4PFyrvfMJJBw7LbU06g==} + '@vitest/spy@5.0.2': + resolution: {integrity: sha512-Ijc7T1nT9efNb5LxvjaBrEqw3f/QwUv5EE0nKqZxgqsaV/FxAAZ8baGylA8X/Z2oS4Lp+K74Jr6dTJsDKxJDeg==} + '@vitest/ui@5.0.0': resolution: {integrity: sha512-h2FIFwggCY2GxUd2UdQoYNVQkOIqEQLPhNREcl3FUiRsdzQep7NWwYbSmhGEA9nFLPDq5pXzRMcBZQU8Py83sg==} peerDependencies: @@ -6740,6 +6616,9 @@ packages: '@vitest/utils@5.0.0': resolution: {integrity: sha512-dO++xL3vDfvhTAVimfkuQUA3k+JClIF1i1vAkPqpcGAthRmeWnXmHB7YPViPvgCwviX8u7Y5W1u2N//AaQr3fw==} + '@vitest/utils@5.0.2': + resolution: {integrity: sha512-mgpUtxFhKeOKVaArBVHNJGdYHAeRh135o59l13uVmPUCS1OUtis5pBqXEgE25iqRgFqEBwXvJlkhknRsYnMeqg==} + '@volar/language-core@2.4.27': resolution: {integrity: sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==} @@ -7030,6 +6909,16 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} + agent-device@0.21.18: + resolution: {integrity: sha512-ptNJ7a4jkAXFLSmZqKJDwxL+YpCEUuZv3oCBY76PwE3b2W+yQqQuG0ej0/bOspIHJRmMGNOkWhtxm3gmRW9hRQ==} + engines: {node: '>=22.12'} + hasBin: true + peerDependencies: + ai: ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + ai: + optional: true + agent-install@0.0.5: resolution: {integrity: sha512-nHlms9BkP8ZiY79HrwCGiA2DcNaXrAaJrCM/BEqQ7MEsSKyCk+2A76xPGylIfASZSZE0SaU3T0bNSg4rBPIJAQ==} hasBin: true @@ -7980,6 +7869,10 @@ packages: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -8681,6 +8574,25 @@ packages: duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + e2e@0.15.1: + resolution: {integrity: sha512-HYuc4xFbLqG4TMZkzZEZEoYa20qKvqyZ9nodDOZ8Yo05YlspzC4GV4guEql1pVIdspqj0fDMINx2rsn3REVrHA==} + engines: {node: '>=22.12.0'} + hasBin: true + peerDependencies: + '@ai-sdk/openai': ^4.0.0 + '@ai-sdk/openai-compatible': ^3.0.0 + '@ai-sdk/xai': ^5.0.0 + ai: ^7.0.0 + peerDependenciesMeta: + '@ai-sdk/openai': + optional: true + '@ai-sdk/openai-compatible': + optional: true + '@ai-sdk/xai': + optional: true + ai: + optional: true + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -8886,11 +8798,6 @@ packages: resolution: {integrity: sha512-lNjylaAsJMprYg28zjUyBivP3y0ms9b7RJZ5tdhDUFLa3sCbqZw4wDnbFUSmnyZYWhCYDPxxp7KkXM2TXGw3PQ==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.27.7: resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} @@ -14313,8 +14220,8 @@ packages: typescript: optional: true - tsx@4.20.6: - resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} + tsx@4.23.14: + resolution: {integrity: sha512-yFwMnbAsUFz/T3kR8P2ENc/DDUaYd9tKg4oVYo0lhkX0LlK4UuqYAO6mpQ2y6lmcyip1uPJ34C2kPACopDwG4w==} engines: {node: '>=18.0.0'} hasBin: true @@ -15468,6 +15375,9 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.6.1: + resolution: {integrity: sha512-341aRWQsve0rvronKNTqZpjmzdbUDlFuzHaI/XLg/Ej82qffDJRRfBTCuv7+9q/rMjB6LSLyEBnW4InJeMtt/Q==} + zod@4.6.5: resolution: {integrity: sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==} @@ -15523,6 +15433,10 @@ snapshots: '@adraffy/ens-normalize@1.11.1': {} + '@ai-sdk/provider@4.0.18': + dependencies: + json-schema: 0.4.0 + '@alloc/quick-lru@5.2.0': {} '@andrewbranch/untar.js@1.0.3': {} @@ -16582,11 +16496,11 @@ snapshots: '@blazediff/core@1.10.0': {} - '@bomb.sh/tab@0.0.19(cac@6.7.14)(citty@0.2.2)(commander@14.0.3)': + '@bomb.sh/tab@0.0.19(cac@6.7.14)(citty@0.2.2)(commander@15.0.0)': optionalDependencies: cac: 6.7.14 citty: 0.2.2 - commander: 14.0.3 + commander: 15.0.0 '@braidai/lang@1.1.2': {} @@ -16778,14 +16692,14 @@ snapshots: human-id: 4.1.2 prettier: 2.8.8 - '@clack/core@1.4.3': + '@clack/core@1.5.1': dependencies: fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 - '@clack/prompts@1.7.0': + '@clack/prompts@1.8.1': dependencies: - '@clack/core': 1.4.3 + '@clack/core': 1.5.1 fast-string-width: 3.0.2 fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 @@ -17022,17 +16936,17 @@ snapshots: '@dual-bundle/import-meta-resolve@4.2.1': {} - '@dxup/nuxt@0.5.10(@rspack/core@2.0.6)(esbuild@0.28.1)(magicast@0.5.4)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))': + '@dxup/nuxt@0.5.10(@rspack/core@2.0.6)(esbuild@0.28.1)(magicast@0.5.4)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))': dependencies: '@dxup/unimport': 0.1.2 - '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) '@vue/compiler-dom': 3.5.42 chokidar: 5.0.0 knitwork: 1.3.0 magic-string: 1.2.3 pathe: 2.0.3 tinyglobby: 0.2.17 - unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -17048,6 +16962,13 @@ snapshots: '@dxup/unimport@0.1.2': {} + '@e2e-dev/mobile@0.8.1(e2e@0.15.1(@cfworker/json-schema@4.1.1))': + dependencies: + agent-device: 0.21.18 + e2e: 0.15.1(@cfworker/json-schema@4.1.1) + pngjs: 7.0.0 + zod: 4.6.1 + '@ecies/ciphers@0.2.6(@noble/ciphers@1.3.0)': dependencies: '@noble/ciphers': 1.3.0 @@ -17209,234 +17130,156 @@ snapshots: esquery: 1.6.0 jsdoc-type-pratt-parser: 4.1.0 - '@esbuild/aix-ppc64@0.25.12': - optional: true - '@esbuild/aix-ppc64@0.27.7': optional: true '@esbuild/aix-ppc64@0.28.1': optional: true - '@esbuild/android-arm64@0.25.12': - optional: true - '@esbuild/android-arm64@0.27.7': optional: true '@esbuild/android-arm64@0.28.1': optional: true - '@esbuild/android-arm@0.25.12': - optional: true - '@esbuild/android-arm@0.27.7': optional: true '@esbuild/android-arm@0.28.1': optional: true - '@esbuild/android-x64@0.25.12': - optional: true - '@esbuild/android-x64@0.27.7': optional: true '@esbuild/android-x64@0.28.1': optional: true - '@esbuild/darwin-arm64@0.25.12': - optional: true - '@esbuild/darwin-arm64@0.27.7': optional: true '@esbuild/darwin-arm64@0.28.1': optional: true - '@esbuild/darwin-x64@0.25.12': - optional: true - '@esbuild/darwin-x64@0.27.7': optional: true '@esbuild/darwin-x64@0.28.1': optional: true - '@esbuild/freebsd-arm64@0.25.12': - optional: true - '@esbuild/freebsd-arm64@0.27.7': optional: true '@esbuild/freebsd-arm64@0.28.1': optional: true - '@esbuild/freebsd-x64@0.25.12': - optional: true - '@esbuild/freebsd-x64@0.27.7': optional: true '@esbuild/freebsd-x64@0.28.1': optional: true - '@esbuild/linux-arm64@0.25.12': - optional: true - '@esbuild/linux-arm64@0.27.7': optional: true '@esbuild/linux-arm64@0.28.1': optional: true - '@esbuild/linux-arm@0.25.12': - optional: true - '@esbuild/linux-arm@0.27.7': optional: true '@esbuild/linux-arm@0.28.1': optional: true - '@esbuild/linux-ia32@0.25.12': - optional: true - '@esbuild/linux-ia32@0.27.7': optional: true '@esbuild/linux-ia32@0.28.1': optional: true - '@esbuild/linux-loong64@0.25.12': - optional: true - '@esbuild/linux-loong64@0.27.7': optional: true '@esbuild/linux-loong64@0.28.1': optional: true - '@esbuild/linux-mips64el@0.25.12': - optional: true - '@esbuild/linux-mips64el@0.27.7': optional: true '@esbuild/linux-mips64el@0.28.1': optional: true - '@esbuild/linux-ppc64@0.25.12': - optional: true - '@esbuild/linux-ppc64@0.27.7': optional: true '@esbuild/linux-ppc64@0.28.1': optional: true - '@esbuild/linux-riscv64@0.25.12': - optional: true - '@esbuild/linux-riscv64@0.27.7': optional: true '@esbuild/linux-riscv64@0.28.1': optional: true - '@esbuild/linux-s390x@0.25.12': - optional: true - '@esbuild/linux-s390x@0.27.7': optional: true '@esbuild/linux-s390x@0.28.1': optional: true - '@esbuild/linux-x64@0.25.12': - optional: true - '@esbuild/linux-x64@0.27.7': optional: true '@esbuild/linux-x64@0.28.1': optional: true - '@esbuild/netbsd-arm64@0.25.12': - optional: true - '@esbuild/netbsd-arm64@0.27.7': optional: true '@esbuild/netbsd-arm64@0.28.1': optional: true - '@esbuild/netbsd-x64@0.25.12': - optional: true - '@esbuild/netbsd-x64@0.27.7': optional: true '@esbuild/netbsd-x64@0.28.1': optional: true - '@esbuild/openbsd-arm64@0.25.12': - optional: true - '@esbuild/openbsd-arm64@0.27.7': optional: true '@esbuild/openbsd-arm64@0.28.1': optional: true - '@esbuild/openbsd-x64@0.25.12': - optional: true - '@esbuild/openbsd-x64@0.27.7': optional: true '@esbuild/openbsd-x64@0.28.1': optional: true - '@esbuild/openharmony-arm64@0.25.12': - optional: true - '@esbuild/openharmony-arm64@0.27.7': optional: true '@esbuild/openharmony-arm64@0.28.1': optional: true - '@esbuild/sunos-x64@0.25.12': - optional: true - '@esbuild/sunos-x64@0.27.7': optional: true '@esbuild/sunos-x64@0.28.1': optional: true - '@esbuild/win32-arm64@0.25.12': - optional: true - '@esbuild/win32-arm64@0.27.7': optional: true '@esbuild/win32-arm64@0.28.1': optional: true - '@esbuild/win32-ia32@0.25.12': - optional: true - '@esbuild/win32-ia32@0.27.7': optional: true '@esbuild/win32-ia32@0.28.1': optional: true - '@esbuild/win32-x64@0.25.12': - optional: true - '@esbuild/win32-x64@0.27.7': optional: true @@ -18574,7 +18417,7 @@ snapshots: '@microsoft/tsdoc@0.16.0': optional: true - '@modelcontextprotocol/sdk@1.26.0(@cfworker/json-schema@4.1.1)(zod@3.25.76)': + '@modelcontextprotocol/sdk@1.30.1(@cfworker/json-schema@4.1.1)(zod@3.25.76)': dependencies: '@hono/node-server': 1.19.14(hono@4.13.4) ajv: 8.20.0 @@ -18598,6 +18441,30 @@ snapshots: transitivePeerDependencies: - supports-color + '@modelcontextprotocol/sdk@1.30.1(@cfworker/json-schema@4.1.1)(zod@4.6.1)': + dependencies: + '@hono/node-server': 1.19.14(hono@4.13.4) + ajv: 8.20.0 + ajv-formats: 3.0.1(ajv@8.20.0) + content-type: 1.0.5 + cors: 2.8.6 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + eventsource-parser: 3.0.8 + express: 5.2.1 + express-rate-limit: 8.3.2(express@5.2.1) + hono: 4.13.4 + jose: 6.2.2 + json-schema-typed: 8.0.2 + pkce-challenge: 5.0.1 + raw-body: 3.0.2 + zod: 4.6.1 + zod-to-json-schema: 3.25.2(zod@4.6.1) + optionalDependencies: + '@cfworker/json-schema': 4.1.1 + transitivePeerDependencies: + - supports-color + '@mswjs/interceptors@0.41.9': dependencies: '@open-draft/deferred-promise': 2.2.0 @@ -18965,10 +18832,10 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@nuxt/cli@3.37.0(@nuxt/schema@4.5.2)(cac@6.7.14)(commander@14.0.3)(magicast@0.5.4)': + '@nuxt/cli@3.37.0(@nuxt/schema@4.5.2)(cac@6.7.14)(commander@15.0.0)(magicast@0.5.4)': dependencies: - '@bomb.sh/tab': 0.0.19(cac@6.7.14)(citty@0.2.2)(commander@14.0.3) - '@clack/prompts': 1.7.0 + '@bomb.sh/tab': 0.0.19(cac@6.7.14)(citty@0.2.2)(commander@15.0.0) + '@clack/prompts': 1.8.1 c12: 3.3.4(magicast@0.5.4) citty: 0.2.2 confbox: 0.2.4 @@ -19005,11 +18872,11 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@3.4.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))': + '@nuxt/devtools-kit@3.4.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))': dependencies: - '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) execa: 8.0.1 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) transitivePeerDependencies: - magic-string - magicast @@ -19019,7 +18886,7 @@ snapshots: '@nuxt/devtools-wizard@3.4.2': dependencies: - '@clack/prompts': 1.7.0 + '@clack/prompts': 1.8.1 consola: 3.4.2 diff: 8.0.4 execa: 8.0.1 @@ -19028,11 +18895,11 @@ snapshots: pkg-types: 2.3.1 semver: 7.8.5 - '@nuxt/devtools@3.4.2(bufferutil@4.1.0)(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.11.0)(magic-string@1.2.3)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))': + '@nuxt/devtools@3.4.2(bufferutil@4.1.0)(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.11.0)(magic-string@1.2.3)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))': dependencies: - '@nuxt/devtools-kit': 3.4.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + '@nuxt/devtools-kit': 3.4.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) '@nuxt/devtools-wizard': 3.4.2 - '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) '@vue/devtools-core': 8.2.1(vue@3.5.42(typescript@6.0.3)) '@vue/devtools-kit': 8.2.1 birpc: 4.0.0 @@ -19059,9 +18926,9 @@ snapshots: structured-clone-es: 2.0.1 tinyglobby: 0.2.17 unstorage: 1.17.5(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.11.0) - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) - vite-plugin-inspect: 11.4.1(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) - vite-plugin-vue-tracer: 1.4.0(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) + vite-plugin-inspect: 11.4.1(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) + vite-plugin-vue-tracer: 1.4.0(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) which: 6.0.1 ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) transitivePeerDependencies: @@ -19093,7 +18960,7 @@ snapshots: - utf-8-validate - vue - '@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))': + '@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))': dependencies: c12: 3.3.4(magicast@0.5.4) consola: 3.4.2 @@ -19113,7 +18980,7 @@ snapshots: scule: 1.3.0 tinyglobby: 0.2.17 ufo: 1.6.4 - unctx: 3.0.1(magic-string@1.2.3)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + unctx: 3.0.1(magic-string@1.2.3)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) untyped: 2.0.0 verkit: 0.3.2 transitivePeerDependencies: @@ -19123,11 +18990,11 @@ snapshots: - rolldown - unplugin - '@nuxt/nitro-server@4.5.2(879ff76bb2e0ee98f31f9b2805059646)': + '@nuxt/nitro-server@4.5.2(5d71b80bb60d18d09b48b3f6ca65979c)': dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) - '@unhead/vue': 3.4.0(@oxc-project/types@0.134.0)(@rspack/core@2.0.6)(esbuild@0.28.1)(lightningcss@1.33.0)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1)) + '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + '@unhead/vue': 3.4.0(@oxc-project/types@0.134.0)(@rspack/core@2.0.6)(esbuild@0.28.1)(lightningcss@1.33.0)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1)) '@vue/shared': 3.5.42 consola: 3.4.2 defu: 6.1.7 @@ -19137,19 +19004,19 @@ snapshots: escape-string-regexp: 5.0.0 exsolve: 1.1.1 h3: 1.15.11 - impound: 1.2.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + impound: 1.2.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) klona: 2.0.6 mocked-exports: 0.1.1 - nitropack: 2.13.4(@rspack/core@2.0.6)(idb-keyval@6.2.1)(rolldown@1.1.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + nitropack: 2.13.4(@rspack/core@2.0.6)(idb-keyval@6.2.1)(rolldown@1.1.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) nostics: 1.2.0 - nuxt: 4.5.2(@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.29.7))(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.134.0)(@parcel/watcher@2.5.6)(@rspack/core@2.0.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.42)(bufferutil@4.1.0)(cac@6.7.14)(commander@14.0.3)(db0@0.3.4)(esbuild@0.28.1)(eslint@9.31.0(jiti@2.7.0))(idb-keyval@6.2.1)(ioredis@5.11.0)(lightningcss@1.33.0)(magicast@0.5.4)(meow@13.2.0)(optionator@0.9.4)(rolldown@1.1.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.1.0)(rollup@4.61.0))(rollup@4.61.0)(terser@5.46.1)(tsx@4.20.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue-tsc@3.2.4(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1))(yaml@2.9.0) + nuxt: 4.5.2(@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.29.7))(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.134.0)(@parcel/watcher@2.5.6)(@rspack/core@2.0.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.42)(bufferutil@4.1.0)(cac@6.7.14)(commander@15.0.0)(db0@0.3.4)(esbuild@0.28.1)(eslint@9.31.0(jiti@2.7.0))(idb-keyval@6.2.1)(ioredis@5.11.0)(lightningcss@1.33.0)(magicast@0.5.4)(meow@13.2.0)(optionator@0.9.4)(rolldown@1.1.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.1.0)(rollup@4.61.0))(rollup@4.61.0)(terser@5.46.1)(tsx@4.23.14)(typescript@6.0.3)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue-tsc@3.2.4(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1))(yaml@2.9.0) nypm: 0.6.9 ohash: 2.0.11 pathe: 2.0.3 rou3: 0.9.2 std-env: 4.2.0 ufo: 1.6.4 - unctx: 3.0.1(magic-string@1.2.3)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + unctx: 3.0.1(magic-string@1.2.3)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) unstorage: 1.17.5(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.11.0) vue: 3.5.42(typescript@6.0.3) vue-bundle-renderer: 2.3.2 @@ -19216,20 +19083,20 @@ snapshots: pkg-types: 2.3.1 std-env: 4.2.0 - '@nuxt/telemetry@2.8.0(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))))': + '@nuxt/telemetry@2.8.0(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))))': dependencies: - '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) citty: 0.2.2 consola: 3.4.2 ofetch: 2.0.0-alpha.3 rc9: 3.0.1 std-env: 4.2.0 - '@nuxt/vite-builder@4.5.2(200211434b3910e3f7a6f479cdd8d4fb)': + '@nuxt/vite-builder@4.5.2(29f1a007dbea6b2d37230221b704cc42)': dependencies: - '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) - '@vitejs/plugin-vue': 6.0.8(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) - '@vitejs/plugin-vue-jsx': 5.1.6(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) + '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + '@vitejs/plugin-vue': 6.0.8(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) + '@vitejs/plugin-vue-jsx': 5.1.6(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) autoprefixer: 10.5.4(postcss@8.5.26) consola: 3.4.2 cssnano: 8.0.10(postcss@8.5.26) @@ -19243,7 +19110,7 @@ snapshots: knitwork: 1.3.0 mlly: 1.8.2 mocked-exports: 0.1.1 - nuxt: 4.5.2(@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.29.7))(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.134.0)(@parcel/watcher@2.5.6)(@rspack/core@2.0.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.42)(bufferutil@4.1.0)(cac@6.7.14)(commander@14.0.3)(db0@0.3.4)(esbuild@0.28.1)(eslint@9.31.0(jiti@2.7.0))(idb-keyval@6.2.1)(ioredis@5.11.0)(lightningcss@1.33.0)(magicast@0.5.4)(meow@13.2.0)(optionator@0.9.4)(rolldown@1.1.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.1.0)(rollup@4.61.0))(rollup@4.61.0)(terser@5.46.1)(tsx@4.20.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue-tsc@3.2.4(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1))(yaml@2.9.0) + nuxt: 4.5.2(@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.29.7))(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.134.0)(@parcel/watcher@2.5.6)(@rspack/core@2.0.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.42)(bufferutil@4.1.0)(cac@6.7.14)(commander@15.0.0)(db0@0.3.4)(esbuild@0.28.1)(eslint@9.31.0(jiti@2.7.0))(idb-keyval@6.2.1)(ioredis@5.11.0)(lightningcss@1.33.0)(magicast@0.5.4)(meow@13.2.0)(optionator@0.9.4)(rolldown@1.1.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.1.0)(rollup@4.61.0))(rollup@4.61.0)(terser@5.46.1)(tsx@4.23.14)(typescript@6.0.3)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue-tsc@3.2.4(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1))(yaml@2.9.0) nypm: 0.6.9 pathe: 2.0.3 pkg-types: 2.3.1 @@ -19253,9 +19120,9 @@ snapshots: std-env: 4.2.0 ufo: 1.6.4 unenv: 2.0.0-rc.24 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) - vite-node: 6.0.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) - vite-plugin-checker: 0.14.5(eslint@9.31.0(jiti@2.7.0))(meow@13.2.0)(optionator@0.9.4)(typescript@6.0.3)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue-tsc@3.2.4(typescript@6.0.3)) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) + vite-node: 6.0.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) + vite-plugin-checker: 0.14.5(eslint@9.31.0(jiti@2.7.0))(meow@13.2.0)(optionator@0.9.4)(typescript@6.0.3)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue-tsc@3.2.4(typescript@6.0.3)) vue: 3.5.42(typescript@6.0.3) vue-bundle-renderer: 2.3.2 optionalDependencies: @@ -20763,6 +20630,8 @@ snapshots: '@stablelib/base64@1.0.1': {} + '@standard-schema/spec@1.1.0': {} + '@stripe/react-stripe-js@3.1.1(@stripe/stripe-js@5.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@stripe/stripe-js': 5.6.0 @@ -20835,7 +20704,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@stylexjs/unplugin@0.19.0(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))': + '@stylexjs/unplugin@0.19.0(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))': dependencies: '@babel/core': 7.29.7 '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.29.7) @@ -20844,7 +20713,7 @@ snapshots: '@stylexjs/babel-plugin': 0.19.0 browserslist: 4.28.8 lightningcss: 1.33.0 - unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) transitivePeerDependencies: - supports-color @@ -21131,14 +21000,14 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@tanstack/react-start-rsc@0.1.59(@rspack/core@2.0.6)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))': + '@tanstack/react-start-rsc@0.1.59(@rspack/core@2.0.6)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))': dependencies: '@tanstack/react-router': 1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/router-core': 1.171.34 '@tanstack/router-utils': 1.162.3 '@tanstack/start-client-core': 1.170.34 '@tanstack/start-fn-stubs': 1.162.0 - '@tanstack/start-plugin-core': 1.171.49(@rspack/core@2.0.6)(@tanstack/react-router@1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + '@tanstack/start-plugin-core': 1.171.49(@rspack/core@2.0.6)(@tanstack/react-router@1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) '@tanstack/start-storage-context': 1.167.36 pathe: 2.0.3 react: 18.3.1 @@ -21169,21 +21038,21 @@ snapshots: transitivePeerDependencies: - crossws - '@tanstack/react-start@1.168.60(@rspack/core@2.0.6)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))': + '@tanstack/react-start@1.168.60(@rspack/core@2.0.6)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))': dependencies: '@tanstack/react-router': 1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start-client': 1.168.39(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/react-start-rsc': 0.1.59(@rspack/core@2.0.6)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + '@tanstack/react-start-rsc': 0.1.59(@rspack/core@2.0.6)(esbuild@0.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) '@tanstack/react-start-server': 1.167.46(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/router-utils': 1.162.3 '@tanstack/start-client-core': 1.170.34 - '@tanstack/start-plugin-core': 1.171.49(@rspack/core@2.0.6)(@tanstack/react-router@1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + '@tanstack/start-plugin-core': 1.171.49(@rspack/core@2.0.6)(@tanstack/react-router@1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) '@tanstack/start-server-core': 1.169.39 pathe: 2.0.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -21225,7 +21094,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.168.42(@rspack/core@2.0.6)(@tanstack/react-router@1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))': + '@tanstack/router-plugin@1.168.42(@rspack/core@2.0.6)(@tanstack/react-router@1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))': dependencies: '@babel/core': 7.29.7 '@babel/template': 7.29.7 @@ -21234,11 +21103,11 @@ snapshots: '@tanstack/router-generator': 1.167.40 '@tanstack/router-utils': 1.162.3 chokidar: 5.0.0 - unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) zod: 4.6.5 optionalDependencies: '@tanstack/react-router': 1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) webpack: 5.102.1(esbuild@0.28.1) transitivePeerDependencies: - '@farmfe/core' @@ -21272,7 +21141,7 @@ snapshots: '@tanstack/start-fn-stubs@1.162.0': {} - '@tanstack/start-plugin-core@1.171.49(@rspack/core@2.0.6)(@tanstack/react-router@1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))': + '@tanstack/start-plugin-core@1.171.49(@rspack/core@2.0.6)(@tanstack/react-router@1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))': dependencies: '@babel/code-frame': 7.29.7 '@babel/core': 7.29.7 @@ -21280,7 +21149,7 @@ snapshots: '@jridgewell/remapping': 2.3.5 '@tanstack/router-core': 1.171.34 '@tanstack/router-generator': 1.167.40 - '@tanstack/router-plugin': 1.168.42(@rspack/core@2.0.6)(@tanstack/react-router@1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + '@tanstack/router-plugin': 1.168.42(@rspack/core@2.0.6)(@tanstack/react-router@1.170.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) '@tanstack/router-utils': 1.162.3 '@tanstack/start-server-core': 1.169.39 exsolve: 1.1.1 @@ -21292,11 +21161,11 @@ snapshots: srvx: 0.11.22 tinyglobby: 0.2.17 ufo: 1.6.4 - vitefu: 1.1.3(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vitefu: 1.1.3(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) xmlbuilder2: 4.0.3 zod: 4.6.5 optionalDependencies: - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -21800,17 +21669,17 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@unhead/bundler@3.4.0(@oxc-project/types@0.134.0)(@rspack/core@2.0.6)(esbuild@0.28.1)(lightningcss@1.33.0)(rolldown@1.1.0)(rollup@4.61.0)(unhead@3.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))': + '@unhead/bundler@3.4.0(@oxc-project/types@0.134.0)(@rspack/core@2.0.6)(esbuild@0.28.1)(lightningcss@1.33.0)(rolldown@1.1.0)(rollup@4.61.0)(unhead@3.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))': dependencies: magic-string: 1.2.3 oxc-walker: 1.1.1(@oxc-project/types@0.134.0)(rolldown@1.1.0) - unhead: 3.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) - unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unhead: 3.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) optionalDependencies: esbuild: 0.28.1 lightningcss: 1.33.0 rolldown: 1.1.0 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) webpack: 5.102.1(esbuild@0.28.1) transitivePeerDependencies: - '@farmfe/core' @@ -21820,15 +21689,15 @@ snapshots: - rollup - unloader - '@unhead/vue@3.4.0(@oxc-project/types@0.134.0)(@rspack/core@2.0.6)(esbuild@0.28.1)(lightningcss@1.33.0)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1))': + '@unhead/vue@3.4.0(@oxc-project/types@0.134.0)(@rspack/core@2.0.6)(esbuild@0.28.1)(lightningcss@1.33.0)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1))': dependencies: - '@unhead/bundler': 3.4.0(@oxc-project/types@0.134.0)(@rspack/core@2.0.6)(esbuild@0.28.1)(lightningcss@1.33.0)(rolldown@1.1.0)(rollup@4.61.0)(unhead@3.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + '@unhead/bundler': 3.4.0(@oxc-project/types@0.134.0)(@rspack/core@2.0.6)(esbuild@0.28.1)(lightningcss@1.33.0)(rolldown@1.1.0)(rollup@4.61.0)(unhead@3.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) hookable: 6.1.1 - unhead: 3.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) - unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unhead: 3.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) vue: 3.5.42(typescript@6.0.3) optionalDependencies: - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) webpack: 5.102.1(esbuild@0.28.1) transitivePeerDependencies: - '@farmfe/core' @@ -21934,7 +21803,7 @@ snapshots: - rollup - supports-color - '@vitejs/plugin-react@4.7.0(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))': + '@vitejs/plugin-react@4.7.0(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.7 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.7) @@ -21942,54 +21811,54 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@5.1.6(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))': + '@vitejs/plugin-vue-jsx@5.1.6(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))': dependencies: '@babel/core': 7.29.7 '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7) '@rolldown/pluginutils': 1.0.1 '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.7) - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) vue: 3.5.42(typescript@6.0.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.8(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.33(typescript@6.0.3))': + '@vitejs/plugin-vue@6.0.8(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.33(typescript@6.0.3))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) vue: 3.5.33(typescript@6.0.3) - '@vitejs/plugin-vue@6.0.8(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))': + '@vitejs/plugin-vue@6.0.8(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) vue: 3.5.42(typescript@6.0.3) - '@vitest/browser-playwright@5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0)': + '@vitest/browser-playwright@5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@vitest/browser': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0) - '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + '@vitest/browser': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) playwright: 1.62.1 tinyrainbow: 3.1.1 - vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser-playwright@5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0)': + '@vitest/browser-playwright@5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@vitest/browser': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0) - '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + '@vitest/browser': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) playwright: 1.62.1 tinyrainbow: 3.1.1 - vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw @@ -21997,13 +21866,13 @@ snapshots: - vite optional: true - '@vitest/browser-playwright@5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0)': + '@vitest/browser-playwright@5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@vitest/browser': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0) - '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + '@vitest/browser': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) playwright: 1.62.1 tinyrainbow: 3.1.1 - vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw @@ -22011,17 +21880,17 @@ snapshots: - vite optional: true - '@vitest/browser@5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0)': + '@vitest/browser@5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0)': dependencies: '@blazediff/core': 1.10.0 - '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) '@vitest/ui': 5.0.0(vitest@5.0.0) '@vitest/utils': 5.0.0 magic-string: 1.2.3 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.1 - vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -22029,17 +21898,17 @@ snapshots: - utf-8-validate - vite - '@vitest/browser@5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0)': + '@vitest/browser@5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0)': dependencies: '@blazediff/core': 1.10.0 - '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) '@vitest/ui': 5.0.0(vitest@5.0.0) '@vitest/utils': 5.0.0 magic-string: 1.2.3 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.1 - vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -22048,17 +21917,17 @@ snapshots: - vite optional: true - '@vitest/browser@5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0)': + '@vitest/browser@5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0)': dependencies: '@blazediff/core': 1.10.0 - '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) '@vitest/ui': 5.0.0(vitest@5.0.0) '@vitest/utils': 5.0.0 magic-string: 1.2.3 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.1 - vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -22077,9 +21946,18 @@ snapshots: obug: 2.1.4 std-env: 4.2.0 tinyrainbow: 3.1.1 - vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) optionalDependencies: - '@vitest/browser': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/browser': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0) + + '@vitest/expect@5.0.2': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 5.0.2 + '@vitest/utils': 5.0.2 + chai: 6.2.2 + tinyrainbow: 3.1.1 '@vitest/istanbul-lib-coverage@1.0.1': {} @@ -22087,7 +21965,7 @@ snapshots: dependencies: '@vitest/istanbul-lib-coverage': 1.0.1 - '@vitest/mocker@5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))': + '@vitest/mocker@5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))': dependencies: '@jridgewell/trace-mapping': 0.3.31 '@vitest/spy': 5.0.0 @@ -22095,9 +21973,9 @@ snapshots: magic-string: 1.2.3 optionalDependencies: msw: 2.15.0(@types/node@22.20.1)(typescript@6.0.3) - vite: 8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) - '@vitest/mocker@5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))': + '@vitest/mocker@5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))': dependencies: '@jridgewell/trace-mapping': 0.3.31 '@vitest/spy': 5.0.0 @@ -22105,9 +21983,9 @@ snapshots: magic-string: 1.2.3 optionalDependencies: msw: 2.15.0(@types/node@22.20.1)(typescript@6.0.3) - vite: 8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) - '@vitest/mocker@5.0.0(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))': + '@vitest/mocker@5.0.0(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))': dependencies: '@jridgewell/trace-mapping': 0.3.31 '@vitest/spy': 5.0.0 @@ -22115,14 +21993,20 @@ snapshots: magic-string: 1.2.3 optionalDependencies: msw: 2.15.0(@types/node@25.6.0)(typescript@6.0.3) - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) '@vitest/pretty-format@5.0.0': dependencies: tinyrainbow: 3.1.1 + '@vitest/pretty-format@5.0.2': + dependencies: + tinyrainbow: 3.1.1 + '@vitest/spy@5.0.0': {} + '@vitest/spy@5.0.2': {} + '@vitest/ui@5.0.0(vitest@5.0.0)': dependencies: '@vitest/utils': 5.0.0 @@ -22131,7 +22015,7 @@ snapshots: pathe: 2.0.3 sirv: 3.0.2 tinyrainbow: 3.1.1 - vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) '@vitest/utils@5.0.0': dependencies: @@ -22139,6 +22023,12 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.1.1 + '@vitest/utils@5.0.2': + dependencies: + '@vitest/pretty-format': 5.0.2 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.1 + '@volar/language-core@2.4.27': dependencies: '@volar/source-map': 2.4.27 @@ -22171,7 +22061,7 @@ snapshots: dependencies: defu: 6.1.7 - '@vue.ts/tsx-auto-props@1.0.0-beta.13(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))))(typescript@6.0.3)(vue@3.5.33(typescript@6.0.3))': + '@vue.ts/tsx-auto-props@1.0.0-beta.13(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))))(typescript@6.0.3)(vue@3.5.33(typescript@6.0.3))': dependencies: '@vue.ts/language': 1.0.0-beta.13 '@vue.ts/shared': 1.0.0-beta.13 @@ -22180,7 +22070,7 @@ snapshots: unplugin: 2.3.11 vue: 3.5.33(typescript@6.0.3) optionalDependencies: - '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) '@vue/babel-helper-vue-transform-on@2.0.1': {} @@ -22536,6 +22426,8 @@ snapshots: agent-base@7.1.4: {} + agent-device@0.21.18: {} + agent-install@0.0.5: dependencies: '@iarna/toml': 2.2.5 @@ -22838,14 +22730,14 @@ snapshots: astring@1.9.0: {} - astro@7.2.9(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@25.6.0)(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.11.0)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0): + astro@7.2.9(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@25.6.0)(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.11.0)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0): dependencies: '@astrojs/compiler-rs': 0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) '@astrojs/internal-helpers': 0.10.4 '@astrojs/markdown-satteri': 0.3.8 '@astrojs/telemetry': 3.3.3 '@capsizecss/unpack': 4.0.0 - '@clack/prompts': 1.7.0 + '@clack/prompts': 1.8.1 '@oslojs/encoding': 1.1.0 am-i-vibing: 0.4.0 aria-query: 5.3.2 @@ -22888,8 +22780,8 @@ snapshots: ultrahtml: 1.7.0 unifont: 0.7.5 unstorage: 1.17.5(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.11.0) - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) - vitefu: 1.1.3(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) + vitefu: 1.1.3(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 zod: 4.6.5 @@ -23675,6 +23567,8 @@ snapshots: commander@14.0.3: {} + commander@15.0.0: {} + commander@2.20.3: {} commander@4.1.1: {} @@ -24391,6 +24285,21 @@ snapshots: duplexer@0.1.2: {} + e2e@0.15.1(@cfworker/json-schema@4.1.1): + dependencies: + '@ai-sdk/provider': 4.0.18 + '@clack/prompts': 1.8.1 + '@modelcontextprotocol/sdk': 1.30.1(@cfworker/json-schema@4.1.1)(zod@4.6.1) + '@vitest/expect': 5.0.2 + commander: 15.0.0 + picocolors: 1.1.1 + pngjs: 7.0.0 + tsx: 4.23.14 + zod: 4.6.1 + transitivePeerDependencies: + - '@cfworker/json-schema' + - supports-color + eastasianwidth@0.2.0: {} ecc-jsbn@0.1.2: @@ -24670,36 +24579,6 @@ snapshots: esbuild-plugin-file-path-extensions@2.1.4: {} - esbuild@0.25.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 - optional: true - esbuild@0.27.7: optionalDependencies: '@esbuild/aix-ppc64': 0.27.7 @@ -26403,12 +26282,12 @@ snapshots: import-without-cache@0.4.0: {} - impound@1.2.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)): + impound@1.2.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)): dependencies: '@jridgewell/trace-mapping': 0.3.31 es-module-lexer: 2.3.2 pathe: 2.0.3 - unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) unplugin-utils: 0.3.2 transitivePeerDependencies: - '@farmfe/core' @@ -28537,7 +28416,7 @@ snapshots: nice-try@1.0.5: {} - nitropack@2.13.4(@rspack/core@2.0.6)(idb-keyval@6.2.1)(rolldown@1.1.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)): + nitropack@2.13.4(@rspack/core@2.0.6)(idb-keyval@6.2.1)(rolldown@1.1.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)): dependencies: '@cloudflare/kv-asset-handler': 0.4.2 '@rollup/plugin-alias': 6.0.0(rollup@4.61.0) @@ -28602,7 +28481,7 @@ snapshots: uncrypto: 0.1.3 unctx: 2.5.0 unenv: 2.0.0-rc.24 - unimport: 6.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unimport: 6.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) unplugin-utils: 0.3.2 unstorage: 1.17.5(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.11.0) untyped: 2.0.0 @@ -28773,17 +28652,17 @@ snapshots: nullthrows@1.1.1: {} - nuxt@4.5.2(@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.29.7))(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.134.0)(@parcel/watcher@2.5.6)(@rspack/core@2.0.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.42)(bufferutil@4.1.0)(cac@6.7.14)(commander@14.0.3)(db0@0.3.4)(esbuild@0.28.1)(eslint@9.31.0(jiti@2.7.0))(idb-keyval@6.2.1)(ioredis@5.11.0)(lightningcss@1.33.0)(magicast@0.5.4)(meow@13.2.0)(optionator@0.9.4)(rolldown@1.1.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.1.0)(rollup@4.61.0))(rollup@4.61.0)(terser@5.46.1)(tsx@4.20.6)(typescript@6.0.3)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue-tsc@3.2.4(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1))(yaml@2.9.0): + nuxt@4.5.2(@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.29.7))(@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7))(@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7))(@oxc-project/types@0.134.0)(@parcel/watcher@2.5.6)(@rspack/core@2.0.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.42)(bufferutil@4.1.0)(cac@6.7.14)(commander@15.0.0)(db0@0.3.4)(esbuild@0.28.1)(eslint@9.31.0(jiti@2.7.0))(idb-keyval@6.2.1)(ioredis@5.11.0)(lightningcss@1.33.0)(magicast@0.5.4)(meow@13.2.0)(optionator@0.9.4)(rolldown@1.1.0)(rollup-plugin-visualizer@7.0.1(rolldown@1.1.0)(rollup@4.61.0))(rollup@4.61.0)(terser@5.46.1)(tsx@4.23.14)(typescript@6.0.3)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue-tsc@3.2.4(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1))(yaml@2.9.0): dependencies: - '@dxup/nuxt': 0.5.10(@rspack/core@2.0.6)(esbuild@0.28.1)(magicast@0.5.4)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) - '@nuxt/cli': 3.37.0(@nuxt/schema@4.5.2)(cac@6.7.14)(commander@14.0.3)(magicast@0.5.4) - '@nuxt/devtools': 3.4.2(bufferutil@4.1.0)(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.11.0)(magic-string@1.2.3)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) - '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) - '@nuxt/nitro-server': 4.5.2(879ff76bb2e0ee98f31f9b2805059646) + '@dxup/nuxt': 0.5.10(@rspack/core@2.0.6)(esbuild@0.28.1)(magicast@0.5.4)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + '@nuxt/cli': 3.37.0(@nuxt/schema@4.5.2)(cac@6.7.14)(commander@15.0.0)(magicast@0.5.4) + '@nuxt/devtools': 3.4.2(bufferutil@4.1.0)(db0@0.3.4)(idb-keyval@6.2.1)(ioredis@5.11.0)(magic-string@1.2.3)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)) + '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + '@nuxt/nitro-server': 4.5.2(5d71b80bb60d18d09b48b3f6ca65979c) '@nuxt/schema': 4.5.2 - '@nuxt/telemetry': 2.8.0(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))) - '@nuxt/vite-builder': 4.5.2(200211434b3910e3f7a6f479cdd8d4fb) - '@unhead/vue': 3.4.0(@oxc-project/types@0.134.0)(@rspack/core@2.0.6)(esbuild@0.28.1)(lightningcss@1.33.0)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1)) + '@nuxt/telemetry': 2.8.0(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)))) + '@nuxt/vite-builder': 4.5.2(29f1a007dbea6b2d37230221b704cc42) + '@unhead/vue': 3.4.0(@oxc-project/types@0.134.0)(@rspack/core@2.0.6)(esbuild@0.28.1)(lightningcss@1.33.0)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1)) '@vue/shared': 3.5.42 chokidar: 5.0.0 compatx: 0.2.0 @@ -28797,7 +28676,7 @@ snapshots: fnv1a-64: 0.1.2 hookable: 6.1.1 ignore: 7.0.6 - impound: 1.2.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + impound: 1.2.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) jiti: 2.7.0 klona: 2.0.6 knitwork: 1.3.0 @@ -28824,17 +28703,17 @@ snapshots: ufo: 1.6.4 ultrahtml: 1.7.0 uncrypto: 0.1.3 - unctx: 3.0.1(magic-string@1.2.3)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + unctx: 3.0.1(magic-string@1.2.3)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) undici: 8.10.0 - unhead: 3.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) - unimport: 6.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) - unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unhead: 3.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unimport: 6.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) unrouting: 0.2.3 untyped: 2.0.0 verkit: 0.3.2 vue: 3.5.42(typescript@6.0.3) vue-component-type-helpers: 3.3.11 - vue-router: 5.3.0(@rspack/core@2.0.6)(@vue/compiler-sfc@3.5.42)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1)) + vue-router: 5.3.0(@rspack/core@2.0.6)(@vue/compiler-sfc@3.5.42)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1)) optionalDependencies: '@parcel/watcher': 2.5.6 '@types/node': 25.6.0 @@ -29499,13 +29378,13 @@ snapshots: dependencies: postcss: 8.5.26 - postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.26)(tsx@4.20.6)(yaml@2.9.0): + postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.14)(yaml@2.9.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.7.0 postcss: 8.5.26 - tsx: 4.20.6 + tsx: 4.23.14 yaml: 2.9.0 postcss-merge-longhand@8.0.4(postcss@8.5.26): @@ -30641,7 +30520,7 @@ snapshots: '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7) '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7) '@dotenvx/dotenvx': 1.71.0 - '@modelcontextprotocol/sdk': 1.26.0(@cfworker/json-schema@4.1.1)(zod@3.25.76) + '@modelcontextprotocol/sdk': 1.30.1(@cfworker/json-schema@4.1.1)(zod@3.25.76) '@types/validate-npm-package-name': 4.0.2 browserslist: 4.28.8 commander: 14.0.3 @@ -31522,7 +31401,7 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdown@0.22.2(@arethetypeswrong/core@0.18.3)(publint@0.3.18)(tsx@4.20.6)(typescript@6.0.3)(unrun@0.3.1(synckit@0.11.11))(vue-tsc@3.2.4(typescript@6.0.3)): + tsdown@0.22.2(@arethetypeswrong/core@0.18.3)(publint@0.3.18)(tsx@4.23.14)(typescript@6.0.3)(unrun@0.3.1(synckit@0.11.11))(vue-tsc@3.2.4(typescript@6.0.3)): dependencies: ansis: 4.3.1 cac: 7.0.0 @@ -31542,7 +31421,7 @@ snapshots: optionalDependencies: '@arethetypeswrong/core': 0.18.3 publint: 0.3.18 - tsx: 4.20.6 + tsx: 4.23.14 typescript: 6.0.3 unrun: 0.3.1(synckit@0.11.11) transitivePeerDependencies: @@ -31553,7 +31432,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.1(@microsoft/api-extractor@7.58.7(@types/node@22.20.1))(jiti@2.7.0)(postcss@8.5.26)(tsx@4.20.6)(typescript@6.0.3)(yaml@2.9.0): + tsup@8.5.1(@microsoft/api-extractor@7.58.7(@types/node@22.20.1))(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.14)(typescript@6.0.3)(yaml@2.9.0): dependencies: bundle-require: 5.1.0(esbuild@0.27.7) cac: 6.7.14 @@ -31564,7 +31443,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.26)(tsx@4.20.6)(yaml@2.9.0) + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.26)(tsx@4.23.14)(yaml@2.9.0) resolve-from: 5.0.0 rollup: 4.61.0 source-map: 0.7.6 @@ -31582,13 +31461,11 @@ snapshots: - tsx - yaml - tsx@4.20.6: + tsx@4.23.14: dependencies: - esbuild: 0.25.12 - get-tsconfig: 4.13.0 + esbuild: 0.28.1 optionalDependencies: fsevents: 2.3.3 - optional: true tunnel-agent@0.6.0: dependencies: @@ -31746,11 +31623,11 @@ snapshots: magic-string: 0.30.21 unplugin: 2.3.11 - unctx@3.0.1(magic-string@1.2.3)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))): + unctx@3.0.1(magic-string@1.2.3)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))): optionalDependencies: magic-string: 1.2.3 rolldown: 1.1.0 - unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) undici-types@7.19.2: optional: true @@ -31769,12 +31646,12 @@ snapshots: dependencies: pathe: 2.0.3 - unhead@3.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)): + unhead@3.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)): dependencies: hookable: 6.1.1 - unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) optionalDependencies: - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -31820,7 +31697,7 @@ snapshots: ohash: 2.0.11 undici: 8.10.0 - unimport@6.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)): + unimport@6.4.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)): dependencies: acorn: 8.18.0 escape-string-regexp: 5.0.0 @@ -31834,7 +31711,7 @@ snapshots: scule: 1.3.0 strip-literal: 4.0.0 tinyglobby: 0.2.17 - unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) unplugin-utils: 0.3.2 optionalDependencies: rolldown: 1.1.0 @@ -31894,14 +31771,14 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.7 - unplugin-vue@7.0.8(@types/node@25.6.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.1)(tsx@4.20.6)(vue@3.5.33(typescript@6.0.3))(yaml@2.9.0): + unplugin-vue@7.0.8(@types/node@25.6.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.1)(tsx@4.23.14)(vue@3.5.33(typescript@6.0.3))(yaml@2.9.0): dependencies: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 '@vue/reactivity': 3.5.42 obug: 2.1.4 unplugin: 2.3.11 - vite: 7.3.5(@types/node@25.6.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 7.3.5(@types/node@25.6.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) vue: 3.5.33(typescript@6.0.3) transitivePeerDependencies: - '@types/node' @@ -31923,7 +31800,7 @@ snapshots: picomatch: 4.0.7 webpack-virtual-modules: 0.6.2 - unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)): + unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)): dependencies: '@jridgewell/remapping': 2.3.5 picomatch: 4.0.7 @@ -31933,7 +31810,7 @@ snapshots: esbuild: 0.28.1 rolldown: 1.1.0 rollup: 4.61.0 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) webpack: 5.102.1(esbuild@0.28.1) unrouting@0.2.3: @@ -32097,23 +31974,23 @@ snapshots: - utf-8-validate - zod - vite-dev-rpc@2.0.0(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)): + vite-dev-rpc@2.0.0(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)): dependencies: birpc: 4.0.0 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) - vite-hot-client: 2.2.0(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) + vite-hot-client: 2.2.0(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) - vite-hot-client@2.2.0(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)): + vite-hot-client@2.2.0(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)): dependencies: - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) - vite-node@6.0.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0): + vite-node@6.0.0(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0): dependencies: cac: 7.0.0 es-module-lexer: 2.3.2 obug: 2.1.4 pathe: 2.0.3 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -32128,7 +32005,7 @@ snapshots: - tsx - yaml - vite-plugin-checker@0.14.5(eslint@9.31.0(jiti@2.7.0))(meow@13.2.0)(optionator@0.9.4)(typescript@6.0.3)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue-tsc@3.2.4(typescript@6.0.3)): + vite-plugin-checker@0.14.5(eslint@9.31.0(jiti@2.7.0))(meow@13.2.0)(optionator@0.9.4)(typescript@6.0.3)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue-tsc@3.2.4(typescript@6.0.3)): dependencies: '@babel/code-frame': 7.29.7 chokidar: 5.0.0 @@ -32137,7 +32014,7 @@ snapshots: picomatch: 4.0.7 proper-lockfile: 4.1.2 tiny-invariant: 1.3.3 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) optionalDependencies: eslint: 9.31.0(jiti@2.7.0) meow: 13.2.0 @@ -32145,7 +32022,7 @@ snapshots: typescript: 6.0.3 vue-tsc: 3.2.4(typescript@6.0.3) - vite-plugin-inspect@11.4.1(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)): + vite-plugin-inspect@11.4.1(@nuxt/kit@4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)): dependencies: ansis: 4.3.1 error-stack-parser-es: 1.0.5 @@ -32155,22 +32032,22 @@ snapshots: perfect-debounce: 2.1.0 sirv: 3.0.2 unplugin-utils: 0.3.2 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) - vite-dev-rpc: 2.0.0(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) + vite-dev-rpc: 2.0.0(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) optionalDependencies: - '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) + '@nuxt/kit': 4.5.2(magic-string@1.2.3)(magicast@0.5.4)(rolldown@1.1.0)(unplugin@3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1))) - vite-plugin-vue-tracer@1.4.0(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)): + vite-plugin-vue-tracer@1.4.0(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3)): dependencies: estree-walker: 3.0.3 exsolve: 1.1.1 magic-string: 0.30.21 pathe: 2.0.3 source-map-js: 1.2.1 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) vue: 3.5.42(typescript@6.0.3) - vite@7.3.5(@types/node@25.6.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0): + vite@7.3.5(@types/node@25.6.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.7) @@ -32184,10 +32061,10 @@ snapshots: jiti: 2.7.0 lightningcss: 1.33.0 terser: 5.46.1 - tsx: 4.20.6 + tsx: 4.23.14 yaml: 2.9.0 - vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0): + vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -32200,10 +32077,10 @@ snapshots: fsevents: 2.3.3 jiti: 2.7.0 terser: 5.46.1 - tsx: 4.20.6 + tsx: 4.23.14 yaml: 2.9.0 - vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0): + vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -32216,10 +32093,10 @@ snapshots: fsevents: 2.3.3 jiti: 2.7.0 terser: 5.46.1 - tsx: 4.20.6 + tsx: 4.23.14 yaml: 2.9.0 - vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0): + vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -32232,12 +32109,12 @@ snapshots: fsevents: 2.3.3 jiti: 2.7.0 terser: 5.46.1 - tsx: 4.20.6 + tsx: 4.23.14 yaml: 2.9.0 - vitefu@1.1.3(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)): + vitefu@1.1.3(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)): optionalDependencies: - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) vitest-axe@0.1.0(vitest@5.0.0): dependencies: @@ -32247,16 +32124,16 @@ snapshots: dom-accessibility-api: 0.5.16 lodash-es: 4.18.1 redent: 3.0.0 - vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + vitest: 5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) vitest-chrome@0.1.0: dependencies: '@types/chrome': 0.0.114 - vitest@5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)): + vitest@5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)): dependencies: '@types/chai': 5.2.3 - '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) chai: 6.2.2 es-module-lexer: 2.3.2 expect-type: 1.4.0 @@ -32267,13 +32144,13 @@ snapshots: tinybench: 6.1.4 tinyexec: 1.3.0 tinyglobby: 0.2.17 - vite: 8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@edge-runtime/vm': 5.0.0 '@opentelemetry/api': 1.9.0 '@types/node': 22.20.1 - '@vitest/browser-playwright': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/browser-playwright': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0) '@vitest/coverage-v8': 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) '@vitest/ui': 5.0.0(vitest@5.0.0) happy-dom: 20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10) @@ -32281,10 +32158,10 @@ snapshots: transitivePeerDependencies: - msw - vitest@5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)): + vitest@5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@22.20.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)): dependencies: '@types/chai': 5.2.3 - '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) chai: 6.2.2 es-module-lexer: 2.3.2 expect-type: 1.4.0 @@ -32295,13 +32172,13 @@ snapshots: tinybench: 6.1.4 tinyexec: 1.3.0 tinyglobby: 0.2.17 - vite: 8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@edge-runtime/vm': 5.0.0 '@opentelemetry/api': 1.9.0 '@types/node': 22.20.1 - '@vitest/browser-playwright': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/browser-playwright': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@22.20.1)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@22.20.1)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0) '@vitest/coverage-v8': 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) '@vitest/ui': 5.0.0(vitest@5.0.0) happy-dom: 20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10) @@ -32309,10 +32186,10 @@ snapshots: transitivePeerDependencies: - msw - vitest@5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)): + vitest@5.0.0(@edge-runtime/vm@5.0.0)(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(happy-dom@20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10))(jsdom@27.0.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)): dependencies: '@types/chai': 5.2.3 - '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0)) + '@vitest/mocker': 5.0.0(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0)) chai: 6.2.2 es-module-lexer: 2.3.2 expect-type: 1.4.0 @@ -32323,13 +32200,13 @@ snapshots: tinybench: 6.1.4 tinyexec: 1.3.0 tinyglobby: 0.2.17 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@edge-runtime/vm': 5.0.0 '@opentelemetry/api': 1.9.0 '@types/node': 25.6.0 - '@vitest/browser-playwright': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/browser-playwright': 5.0.0(bufferutil@4.1.0)(msw@2.15.0(@types/node@25.6.0)(typescript@6.0.3))(playwright@1.62.1)(utf-8-validate@5.0.10)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vitest@5.0.0) '@vitest/coverage-v8': 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) '@vitest/ui': 5.0.0(vitest@5.0.0) happy-dom: 20.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10) @@ -32351,7 +32228,7 @@ snapshots: vue-devtools-stub@0.1.0: {} - vue-router@5.3.0(@rspack/core@2.0.6)(@vue/compiler-sfc@3.5.42)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1)): + vue-router@5.3.0(@rspack/core@2.0.6)(@vue/compiler-sfc@3.5.42)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(vue@3.5.42(typescript@6.0.3))(webpack@5.102.1(esbuild@0.28.1)): dependencies: '@vue-macros/common': 3.1.4(vue@3.5.42(typescript@6.0.3)) '@vue/devtools-api': 8.2.1 @@ -32367,12 +32244,12 @@ snapshots: picomatch: 4.0.7 scule: 1.3.0 tinyglobby: 0.2.17 - unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) + unplugin: 3.3.0(@rspack/core@2.0.6)(esbuild@0.28.1)(rolldown@1.1.0)(rollup@4.61.0)(vite@8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0))(webpack@5.102.1(esbuild@0.28.1)) unplugin-utils: 0.3.2 vue: 3.5.42(typescript@6.0.3) optionalDependencies: '@vue/compiler-sfc': 3.5.42 - vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.20.6)(yaml@2.9.0) + vite: 8.2.2(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.23.14)(yaml@2.9.0) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -32831,8 +32708,14 @@ snapshots: dependencies: zod: 3.25.76 + zod-to-json-schema@3.25.2(zod@4.6.1): + dependencies: + zod: 4.6.1 + zod@3.25.76: {} + zod@4.6.1: {} + zod@4.6.5: {} zustand@5.0.3(@types/react@18.3.28)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)): diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c666252d1cd..61497dac211 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -69,6 +69,9 @@ overrides: minimumReleaseAge: 2880 minimumReleaseAgeExclude: - '@clerk/*' + - '@e2e-dev/mobile@0.8.1' + - 'agent-device@0.21.18' + - 'e2e@0.15.1' - '@tanstack/react-router@1.170.41' - '@tanstack/router-core@1.171.34' - '@tanstack/router-generator@1.167.40'