diff --git a/.github/workflows/build-hoppscotch-agent.yml b/.github/workflows/build-hoppscotch-agent.yml
index f041f121834..0b935afbcd1 100644
--- a/.github/workflows/build-hoppscotch-agent.yml
+++ b/.github/workflows/build-hoppscotch-agent.yml
@@ -1,249 +1,670 @@
+name: Build Agent Self Host - AIO
on:
workflow_dispatch:
inputs:
version:
description: Tag of the version to build
required: true
-
+ branch:
+ description: Branch to checkout
+ required: true
+ default: "main"
+ release_notes:
+ description: Release notes for the update
+ required: false
+ default: "PLACEHOLDER RELEASE NOTES"
+ build_macos_x64:
+ description: Build for macOS x64
+ type: boolean
+ required: false
+ default: true
+ build_macos_arm64:
+ description: Build for macOS ARM64
+ type: boolean
+ required: false
+ default: true
+ build_linux_deb:
+ description: Build Linux DEB package
+ type: boolean
+ required: false
+ default: true
+ build_linux_appimage:
+ description: Build Linux AppImage
+ type: boolean
+ required: false
+ default: true
+ build_windows_installer:
+ description: Build Windows MSI installer
+ type: boolean
+ required: false
+ default: true
+ build_windows_portable:
+ description: Build Windows portable executable
+ type: boolean
+ required: false
+ default: true
env:
CARGO_TERM_COLOR: always
-
jobs:
- build:
- strategy:
- fail-fast: false
- matrix:
- platform: [macos-latest, ubuntu-22.04, windows-latest]
-
- runs-on: ${{ matrix.platform }}
+ build-macos-x86_64:
+ name: Build MacOS x86_64 (.dmg)
+ runs-on: macos-latest
+ if: ${{ inputs.build_macos_x64 }}
defaults:
run:
shell: bash
-
+ timeout-minutes: 60
steps:
- - name: Checkout hoppscotch/hoppscotch
- uses: actions/checkout@v3
- with:
- repository: hoppscotch/hoppscotch
- ref: main
- token: ${{ secrets.CHECKOUT_GITHUB_TOKEN }}
-
- - name: Setup Node.js
- uses: actions/setup-node@v3
- with:
- node-version: 20
-
- - name: Setup pnpm
- uses: pnpm/action-setup@v2
- with:
- version: 9
-
- - name: Install Rust
- uses: actions-rs/toolchain@v1
- with:
- toolchain: stable
- override: true
-
- - name: Install Rust targets (Mac)
- if: matrix.platform == 'macos-latest'
- run: |
- rustup target add aarch64-apple-darwin
- rustup target add x86_64-apple-darwin
-
- - name: Install additional tools (Linux)
- if: matrix.platform == 'ubuntu-22.04'
- run: |
- # Install Tauri CLI (binary)
- curl -LO "https://github.com/tauri-apps/tauri/releases/download/tauri-cli-v2.0.1/cargo-tauri-x86_64-unknown-linux-gnu.tgz"
- tar -xzf cargo-tauri-x86_64-unknown-linux-gnu.tgz
- chmod +x cargo-tauri
- sudo mv cargo-tauri /usr/local/bin/tauri
-
- # Install Trunk (binary)
- curl -LO "https://github.com/thedodd/trunk/releases/download/v0.17.5/trunk-x86_64-unknown-linux-gnu.tar.gz"
- tar -xzf trunk-x86_64-unknown-linux-gnu.tar.gz
- chmod +x trunk
- sudo mv trunk /usr/local/bin/
-
- - name: Install additional tools (Mac)
- if: matrix.platform == 'macos-latest'
- run: |
- # Install Tauri CLI (binary)
- mkdir __dist/
- cd __dist/
- curl -LO "https://github.com/tauri-apps/tauri/releases/download/tauri-cli-v2.0.1/cargo-tauri-aarch64-apple-darwin.zip"
- unzip cargo-tauri-aarch64-apple-darwin.zip
- chmod +x cargo-tauri
- sudo mv cargo-tauri /usr/local/bin/tauri
-
- - name: Install system dependencies (Ubuntu only)
- if: matrix.platform == 'ubuntu-22.04'
- run: |
- sudo apt-get update
- sudo apt-get install -y libwebkit2gtk-4.1-dev \
- build-essential \
- curl \
- wget \
- file \
- libxdo-dev \
- libssl-dev \
- libayatana-appindicator3-dev \
- librsvg2-dev
-
- - name: Setting up Windows Environment and injecting before bundle command (Windows only)
- if: matrix.platform == 'windows-latest'
- shell: bash
- env:
- WINDOWS_SIGN_COMMAND: trusted-signing-cli -e ${{ secrets.AZURE_ENDPOINT }} -a ${{ secrets.AZURE_CODE_SIGNING_NAME }} -c ${{ secrets.AZURE_CERT_PROFILE_NAME }} %1
- run: |
- cd packages/hoppscotch-agent
- # Inject signing command into main conf.
- cat './src-tauri/tauri.conf.json' | jq '.bundle .windows += { "signCommand": env.WINDOWS_SIGN_COMMAND}' > './src-tauri/temp.json' && mv './src-tauri/temp.json' './src-tauri/tauri.conf.json'
- # Inject signing command into portable conf.
- cat './src-tauri/tauri.portable.conf.json' | jq '.bundle .windows += { "signCommand": env.WINDOWS_SIGN_COMMAND}' > './src-tauri/temp_portable.json' && mv './src-tauri/temp_portable.json' './src-tauri/tauri.portable.conf.json'
- cargo install trusted-signing-cli@0.3.0
-
- - name: Set platform-specific variables
- run: |
- if [ "${{ matrix.platform }}" = "ubuntu-22.04" ]; then
- echo "target_arch=$(rustc -Vv | grep host | awk '{print $2}')" >> $GITHUB_ENV
- echo "target_ext=" >> $GITHUB_ENV
- echo "target_os_name=linux" >> $GITHUB_ENV
- elif [ "${{ matrix.platform }}" = "windows-latest" ]; then
- echo "target_arch=x86_64-pc-windows-msvc" >> $GITHUB_ENV
- echo "target_ext=.exe" >> $GITHUB_ENV
- echo "target_os_name=win" >> $GITHUB_ENV
- elif [ "${{ matrix.platform }}" = "macos-latest" ]; then
- echo "target_os_name=mac" >> $GITHUB_ENV
- fi
-
- - name: Setup macOS code signing
- if: matrix.platform == 'macos-latest'
- env:
- APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
- APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
- APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
- KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
- run: |
- echo $APPLE_CERTIFICATE | base64 --decode > certificate.p12
- security create-keychain -p $KEYCHAIN_PASSWORD build.keychain
- security default-keychain -s build.keychain
- security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain
- security import certificate.p12 -k build.keychain -P $APPLE_CERTIFICATE_PASSWORD -T /usr/bin/codesign
- security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain
-
- - name: Cache Rust dependencies
- uses: actions/cache@v3
- with:
- path: |
- ~/.cargo/registry
- ~/.cargo/git
- target
- key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
-
- - name: Install dependencies
- shell: bash
- run: |
- cd packages/hoppscotch-agent
- pnpm install --filter hoppscotch-agent
-
- - name: Build Tauri app (Linux)
- if: matrix.platform == 'ubuntu-22.04'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.AGENT_TAURI_SIGNING_PRIVATE_KEY }}
- TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.AGENT_TAURI_SIGNING_PASSWORD }}
- run: |
- cd packages/hoppscotch-agent
- pnpm tauri build --verbose -b deb -b appimage -b updater
-
- - name: Build Tauri app (Mac)
- if: matrix.platform == 'macos-latest'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.AGENT_TAURI_SIGNING_PRIVATE_KEY }}
- TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.AGENT_TAURI_SIGNING_PASSWORD }}
- APPLE_ID: ${{ secrets.APPLE_ID }}
- APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
- APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
- APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
- run: |
- cd packages/hoppscotch-agent
- pnpm tauri build --verbose --target x86_64-apple-darwin
- pnpm tauri build --verbose --target aarch64-apple-darwin
-
- - name: Build Tauri app (Windows)
- if: matrix.platform == 'windows-latest'
- shell: powershell
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.AGENT_TAURI_SIGNING_PRIVATE_KEY }}
- TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.AGENT_TAURI_SIGNING_PASSWORD }}
- AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
- AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
- AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
- run: |
- cd packages/hoppscotch-agent
- # Build the portable version first and move it.
- # This way the next build will regenerate `hoppscotch-agent.exe`.
- pnpm tauri build --verbose --config src-tauri/tauri.portable.conf.json -- --no-default-features --features portable
- Rename-Item -Path "src-tauri/target/release/hoppscotch-agent.exe" -NewName "hoppscotch-agent-portable.exe"
-
- # Build the installer version.
- pnpm tauri build --verbose -b msi -b updater
-
- - name: Zip portable executable (Windows)
- if: matrix.platform == 'windows-latest'
- shell: powershell
- run: |
- Compress-Archive -Path "packages/hoppscotch-agent/src-tauri/target/release/hoppscotch-agent-portable.exe" -DestinationPath "packages/hoppscotch-agent/src-tauri/target/release/Hoppscotch_Agent_win_x64_portable.zip"
-
- - name: Prepare artifacts
- shell: bash
- run: |
- mkdir artifacts
- mkdir artifacts/sigs
- if [ "${{ matrix.platform }}" = "ubuntu-22.04" ]; then
- mv packages/hoppscotch-agent/src-tauri/target/release/bundle/appimage/*.AppImage artifacts/Hoppscotch_Agent_linux_x64.AppImage
- mv packages/hoppscotch-agent/src-tauri/target/release/bundle/appimage/*.AppImage.sig artifacts/sigs/Hoppscotch_Agent_linux_x64.AppImage.sig
- mv packages/hoppscotch-agent/src-tauri/target/release/bundle/deb/*.deb artifacts/Hoppscotch_Agent_linux_x64.deb
- elif [ "${{ matrix.platform }}" = "macos-latest" ]; then
+ - name: Checkout hoppscotch/hoppscotch
+ uses: actions/checkout@v3
+ with:
+ repository: hoppscotch/hoppscotch
+ ref: ${{ inputs.branch }}
+ token: ${{ secrets.HOPPSCOTCH_GITHUB_CHECKOUT_TOKEN }}
+ - name: Setup Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: 20
+ - name: Setup pnpm
+ uses: pnpm/action-setup@v4
+ with:
+ version: 10.15.0
+ - name: Install Rust
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ override: true
+ - name: Install Rust target
+ timeout-minutes: 5
+ run: rustup target add x86_64-apple-darwin
+ - name: Install additional tools
+ timeout-minutes: 5
+ run: |
+ mkdir __dist/
+ cd __dist/
+ curl -LO "https://github.com/tauri-apps/tauri/releases/download/tauri-cli-v2.0.1/cargo-tauri-x86_64-apple-darwin.zip"
+ unzip cargo-tauri-x86_64-apple-darwin.zip
+ chmod +x cargo-tauri
+ sudo mv cargo-tauri /usr/local/bin/tauri
+ - name: Import Code-Signing Certificates
+ uses: apple-actions/import-codesign-certs@v3
+ with:
+ p12-file-base64: ${{ secrets.HOPPSCOTCH_APPLE_CERTIFICATE }}
+ p12-password: ${{ secrets.HOPPSCOTCH_APPLE_CERTIFICATE_PASSWORD }}
+ keychain-password: ${{ secrets.KEYCHAIN_PASSWORD }}
+ - name: Cache Rust dependencies
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.cargo/registry
+ ~/.cargo/git
+ target
+ key: ${{ runner.os }}-cargo-x86-${{ hashFiles('**/Cargo.lock') }}
+ - name: Install dependencies
+ timeout-minutes: 15
+ run: |
+ cd packages/hoppscotch-agent
+ pnpm install --filter hoppscotch-agent
+ - name: Build Tauri app
+ timeout-minutes: 30
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.AGENT_TAURI_SIGNING_PRIVATE_KEY }}
+ TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.AGENT_TAURI_SIGNING_PASSWORD }}
+ APPLE_ID: ${{ secrets.HOPPSCOTCH_APPLE_ID }}
+ APPLE_PASSWORD: ${{ secrets.HOPPSCOTCH_APPLE_PASSWORD }}
+ APPLE_TEAM_ID: ${{ secrets.HOPPSCOTCH_APPLE_TEAM_ID }}
+ APPLE_SIGNING_IDENTITY: ${{ secrets.HOPPSCOTCH_APPLE_SIGNING_IDENTITY }}
+ run: |
+ cd packages/hoppscotch-agent
+ echo "Starting x86_64 build..."
+ pnpm tauri build --verbose --target x86_64-apple-darwin
+ echo "Build completed"
+ - name: Prepare artifacts
+ run: |
+ mkdir -p artifacts/{sigs,updaters,shas}
mv packages/hoppscotch-agent/src-tauri/target/x86_64-apple-darwin/release/bundle/dmg/*_x64.dmg artifacts/Hoppscotch_Agent_mac_x64.dmg
- mv packages/hoppscotch-agent/src-tauri/target/x86_64-apple-darwin/release/bundle/macos/*.app.tar.gz artifacts/Hoppscotch_Agent_mac_update_x64.tar.gz
+ mv packages/hoppscotch-agent/src-tauri/target/x86_64-apple-darwin/release/bundle/macos/*.app.tar.gz artifacts/updaters/Hoppscotch_Agent_mac_update_x64.tar.gz
mv packages/hoppscotch-agent/src-tauri/target/x86_64-apple-darwin/release/bundle/macos/*.app.tar.gz.sig artifacts/sigs/Hoppscotch_Agent_mac_update_x64.tar.gz.sig
+ - name: Generate checksums
+ timeout-minutes: 2
+ run: |
+ cd artifacts
+ for file in *; do
+ if [ -f "$file" ]; then
+ shasum -a 256 "$file" > "shas/${file}.sha256"
+ fi
+ done
+ cd updaters
+ for file in *; do
+ if [ -f "$file" ]; then
+ shasum -a 256 "$file" > "../shas/${file}.sha256"
+ fi
+ done
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: Hoppscotch_Agent-macos-x86_64
+ path: artifacts/*
+ build-macos-aarch64:
+ name: Build MacOS ARM64 (.dmg)
+ runs-on: macos-latest
+ if: ${{ inputs.build_macos_arm64 }}
+ defaults:
+ run:
+ shell: bash
+ timeout-minutes: 60
+ steps:
+ - name: Checkout hoppscotch/hoppscotch
+ uses: actions/checkout@v3
+ with:
+ repository: hoppscotch/hoppscotch
+ ref: ${{ inputs.branch }}
+ token: ${{ secrets.HOPPSCOTCH_GITHUB_CHECKOUT_TOKEN }}
+ - name: Setup Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: 20
+ - name: Setup pnpm
+ uses: pnpm/action-setup@v4
+ with:
+ version: 10.15.0
+ - name: Install Rust
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ override: true
+ - name: Install Rust target
+ timeout-minutes: 5
+ run: rustup target add aarch64-apple-darwin
+ - name: Install additional tools
+ timeout-minutes: 5
+ run: |
+ mkdir __dist/
+ cd __dist/
+ curl -LO "https://github.com/tauri-apps/tauri/releases/download/tauri-cli-v2.0.1/cargo-tauri-aarch64-apple-darwin.zip"
+ unzip cargo-tauri-aarch64-apple-darwin.zip
+ chmod +x cargo-tauri
+ sudo mv cargo-tauri /usr/local/bin/tauri
+ - name: Import Code-Signing Certificates
+ uses: apple-actions/import-codesign-certs@v3
+ with:
+ p12-file-base64: ${{ secrets.HOPPSCOTCH_APPLE_CERTIFICATE }}
+ p12-password: ${{ secrets.HOPPSCOTCH_APPLE_CERTIFICATE_PASSWORD }}
+ keychain-password: ${{ secrets.KEYCHAIN_PASSWORD }}
+ - name: Cache Rust dependencies
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.cargo/registry
+ ~/.cargo/git
+ target
+ key: ${{ runner.os }}-cargo-arm-${{ hashFiles('**/Cargo.lock') }}
+ - name: Install dependencies
+ timeout-minutes: 15
+ run: |
+ cd packages/hoppscotch-agent
+ pnpm install --filter hoppscotch-agent
+ - name: Build Tauri app
+ timeout-minutes: 30
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.AGENT_TAURI_SIGNING_PRIVATE_KEY }}
+ TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.AGENT_TAURI_SIGNING_PASSWORD }}
+ APPLE_ID: ${{ secrets.HOPPSCOTCH_APPLE_ID }}
+ APPLE_PASSWORD: ${{ secrets.HOPPSCOTCH_APPLE_PASSWORD }}
+ APPLE_TEAM_ID: ${{ secrets.HOPPSCOTCH_APPLE_TEAM_ID }}
+ APPLE_SIGNING_IDENTITY: ${{ secrets.HOPPSCOTCH_APPLE_SIGNING_IDENTITY }}
+ run: |
+ cd packages/hoppscotch-agent
+ echo "Starting ARM64 build..."
+ pnpm tauri build --verbose --target aarch64-apple-darwin
+ echo "Build completed"
+ - name: Prepare artifacts
+ run: |
+ mkdir -p artifacts/{sigs,updaters,shas}
mv packages/hoppscotch-agent/src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/*_aarch64.dmg artifacts/Hoppscotch_Agent_mac_aarch64.dmg
- mv packages/hoppscotch-agent/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/*.app.tar.gz artifacts/Hoppscotch_Agent_mac_update_aarch64.tar.gz
+ mv packages/hoppscotch-agent/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/*.app.tar.gz artifacts/updaters/Hoppscotch_Agent_mac_update_aarch64.tar.gz
mv packages/hoppscotch-agent/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/*.app.tar.gz.sig artifacts/sigs/Hoppscotch_Agent_mac_update_aarch64.tar.gz.sig
- elif [ "${{ matrix.platform }}" = "windows-latest" ]; then
+ - name: Generate checksums
+ timeout-minutes: 2
+ run: |
+ cd artifacts
+ for file in *; do
+ if [ -f "$file" ]; then
+ shasum -a 256 "$file" > "shas/${file}.sha256"
+ fi
+ done
+ cd updaters
+ for file in *; do
+ if [ -f "$file" ]; then
+ shasum -a 256 "$file" > "../shas/${file}.sha256"
+ fi
+ done
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: Hoppscotch_Agent-macos-arm64
+ path: artifacts/*
+ build-linux-deb:
+ name: Build Linux x86_64 (.deb)
+ runs-on: ubuntu-22.04
+ if: ${{ inputs.build_linux_deb }}
+ defaults:
+ run:
+ shell: bash
+ timeout-minutes: 60
+ steps:
+ - name: Checkout hoppscotch/hoppscotch
+ uses: actions/checkout@v3
+ with:
+ repository: hoppscotch/hoppscotch
+ ref: ${{ inputs.branch }}
+ token: ${{ secrets.HOPPSCOTCH_GITHUB_CHECKOUT_TOKEN }}
+ - name: Setup Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: 20
+ - name: Setup pnpm
+ uses: pnpm/action-setup@v4
+ with:
+ version: 10.15.0
+ - name: Install Rust
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ override: true
+ - name: Install system dependencies
+ timeout-minutes: 5
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y libwebkit2gtk-4.1-dev \
+ build-essential \
+ curl \
+ wget \
+ file \
+ libxdo-dev \
+ libssl-dev \
+ libayatana-appindicator3-dev \
+ librsvg2-dev
+ - name: Install additional tools
+ timeout-minutes: 5
+ run: |
+ curl -LO "https://github.com/tauri-apps/tauri/releases/download/tauri-cli-v2.0.1/cargo-tauri-x86_64-unknown-linux-gnu.tgz"
+ tar -xzf cargo-tauri-x86_64-unknown-linux-gnu.tgz
+ chmod +x cargo-tauri
+ sudo mv cargo-tauri /usr/local/bin/tauri
+
+ curl -LO "https://github.com/thedodd/trunk/releases/download/v0.17.5/trunk-x86_64-unknown-linux-gnu.tar.gz"
+ tar -xzf trunk-x86_64-unknown-linux-gnu.tar.gz
+ chmod +x trunk
+ sudo mv trunk /usr/local/bin/
+ - name: Cache Rust dependencies
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.cargo/registry
+ ~/.cargo/git
+ target
+ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
+ - name: Install dependencies
+ timeout-minutes: 15
+ run: |
+ cd packages/hoppscotch-agent
+ pnpm install --filter hoppscotch-agent
+ - name: Build Tauri app
+ timeout-minutes: 30
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
+ TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
+ run: |
+ cd packages/hoppscotch-agent
+ pnpm tauri build --verbose -b deb -b updater
+ - name: Prepare artifacts
+ run: |
+ mkdir -p artifacts/{sigs,shas}
+ mv packages/hoppscotch-agent/src-tauri/target/release/bundle/deb/*.deb artifacts/Hoppscotch_Agent_linux_x64.deb
+ - name: Generate checksums
+ run: |
+ cd artifacts
+ for file in *; do
+ if [ -f "$file" ]; then
+ sha256sum "$file" > "shas/${file}.sha256"
+ fi
+ done
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: Hoppscotch_Agent-linux-deb
+ path: artifacts/*
+ build-linux-appimage:
+ name: Build Linux x86_64 (.AppImage)
+ runs-on: ubuntu-22.04
+ if: ${{ inputs.build_linux_appimage }}
+ defaults:
+ run:
+ shell: bash
+ timeout-minutes: 60
+ steps:
+ - name: Checkout hoppscotch/hoppscotch
+ uses: actions/checkout@v3
+ with:
+ repository: hoppscotch/hoppscotch
+ ref: ${{ inputs.branch }}
+ token: ${{ secrets.HOPPSCOTCH_GITHUB_CHECKOUT_TOKEN }}
+ - name: Setup Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: 20
+ - name: Setup pnpm
+ uses: pnpm/action-setup@v4
+ with:
+ version: 10.15.0
+ - name: Install Rust
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ override: true
+ - name: Install system dependencies
+ timeout-minutes: 5
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y libwebkit2gtk-4.1-dev \
+ build-essential \
+ curl \
+ wget \
+ file \
+ libxdo-dev \
+ libssl-dev \
+ libayatana-appindicator3-dev \
+ librsvg2-dev
+ - name: Install additional tools
+ timeout-minutes: 5
+ run: |
+ curl -LO "https://github.com/tauri-apps/tauri/releases/download/tauri-cli-v2.0.1/cargo-tauri-x86_64-unknown-linux-gnu.tgz"
+ tar -xzf cargo-tauri-x86_64-unknown-linux-gnu.tgz
+ chmod +x cargo-tauri
+ sudo mv cargo-tauri /usr/local/bin/tauri
+
+ curl -LO "https://github.com/thedodd/trunk/releases/download/v0.17.5/trunk-x86_64-unknown-linux-gnu.tar.gz"
+ tar -xzf trunk-x86_64-unknown-linux-gnu.tar.gz
+ chmod +x trunk
+ sudo mv trunk /usr/local/bin/
+ - name: Cache Rust dependencies
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.cargo/registry
+ ~/.cargo/git
+ target
+ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
+ - name: Install dependencies
+ timeout-minutes: 15
+ run: |
+ cd packages/hoppscotch-agent
+ pnpm install --filter hoppscotch-agent
+ - name: Build Tauri app
+ timeout-minutes: 30
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
+ TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
+ run: |
+ cd packages/hoppscotch-agent
+ pnpm tauri build --verbose -b appimage -b updater
+ - name: Prepare artifacts
+ run: |
+ mkdir -p artifacts/{sigs,shas}
+ mv packages/hoppscotch-agent/src-tauri/target/release/bundle/appimage/*.AppImage artifacts/Hoppscotch_Agent_linux_x64.AppImage
+ mv packages/hoppscotch-agent/src-tauri/target/release/bundle/appimage/*.AppImage.sig artifacts/sigs/Hoppscotch_Agent_linux_x64.AppImage.sig
+ - name: Generate checksums
+ run: |
+ cd artifacts
+ for file in *; do
+ if [ -f "$file" ]; then
+ sha256sum "$file" > "shas/${file}.sha256"
+ fi
+ done
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: Hoppscotch_Agent-linux-appimage
+ path: artifacts/*
+ build-windows-installer:
+ name: Build Windows x86_64 (.msi)
+ runs-on: windows-latest
+ if: ${{ inputs.build_windows_installer }}
+ defaults:
+ run:
+ shell: bash
+ timeout-minutes: 60
+ steps:
+ - name: Checkout hoppscotch/hoppscotch
+ uses: actions/checkout@v3
+ with:
+ repository: hoppscotch/hoppscotch
+ ref: ${{ inputs.branch }}
+ token: ${{ secrets.HOPPSCOTCH_GITHUB_CHECKOUT_TOKEN }}
+ - name: Setup Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: 20
+ - name: Setup pnpm
+ uses: pnpm/action-setup@v4
+ with:
+ version: 10.15.0
+ - name: Install Rust
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ override: true
+ - name: Download trusted-signing-cli
+ shell: pwsh
+ run: |
+ $ProgressPreference = 'SilentlyContinue'
+ Invoke-WebRequest -Uri "https://github.com/Levminer/trusted-signing-cli/releases/download/0.8.0/trusted-signing-cli.exe" -OutFile "trusted-signing-cli.exe"
+ Move-Item -Path "trusted-signing-cli.exe" -Destination "$env:GITHUB_WORKSPACE\trusted-signing-cli.exe"
+ echo "$env:GITHUB_WORKSPACE" | Out-File -FilePath $env:GITHUB_PATH -Append -Encoding utf8
+ - name: Setting up Windows Environment
+ timeout-minutes: 20
+ shell: bash
+ env:
+ WINDOWS_SIGN_COMMAND: trusted-signing-cli -e ${{ secrets.AZURE_ENDPOINT }} -a ${{ secrets.AZURE_CODE_SIGNING_NAME }} -c ${{ secrets.AZURE_CERT_PROFILE_NAME }} %1
+ run: |
+ cd packages/hoppscotch-agent
+ cat './src-tauri/tauri.conf.json' | jq '.bundle .windows += { "signCommand": env.WINDOWS_SIGN_COMMAND}' > './src-tauri/temp.json' && mv './src-tauri/temp.json' './src-tauri/tauri.conf.json'
+ - name: Cache Rust dependencies
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.cargo/registry
+ ~/.cargo/git
+ target
+ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
+ - name: Install dependencies
+ timeout-minutes: 15
+ shell: bash
+ run: |
+ cd packages/hoppscotch-agent
+ pnpm install --filter hoppscotch-agent
+ - name: Build Tauri app
+ timeout-minutes: 30
+ shell: powershell
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.AGENT_TAURI_SIGNING_PRIVATE_KEY }}
+ TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.AGENT_TAURI_SIGNING_PASSWORD }}
+ AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
+ AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
+ AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
+ run: |
+ cd packages/hoppscotch-agent
+ pnpm tauri build --verbose -b msi -b updater
+ - name: Prepare artifacts
+ shell: bash
+ run: |
+ mkdir -p artifacts/{sigs,shas}
mv packages/hoppscotch-agent/src-tauri/target/release/bundle/msi/*_x64_en-US.msi artifacts/Hoppscotch_Agent_win_x64.msi
mv packages/hoppscotch-agent/src-tauri/target/release/bundle/msi/*_x64_en-US.msi.sig artifacts/sigs/Hoppscotch_Agent_win_x64.msi.sig
+ - name: Generate checksums
+ shell: powershell
+ run: |
+ cd artifacts
+ Get-ChildItem -File | ForEach-Object {
+ $hash = Get-FileHash -Algorithm SHA256 $_.Name
+ $hash.Hash + " " + $_.Name | Out-File -Encoding UTF8 "shas/$($_.Name).sha256"
+ }
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: Hoppscotch_Agent-windows-installer
+ path: artifacts/*
+ build-windows-portable:
+ name: Build Windows x86_64 Portable
+ runs-on: windows-latest
+ if: ${{ inputs.build_windows_portable }}
+ defaults:
+ run:
+ shell: bash
+ timeout-minutes: 60
+ steps:
+ - name: Checkout hoppscotch/hoppscotch
+ uses: actions/checkout@v3
+ with:
+ repository: hoppscotch/hoppscotch
+ ref: ${{ inputs.branch }}
+ token: ${{ secrets.HOPPSCOTCH_GITHUB_CHECKOUT_TOKEN }}
+ - name: Setup Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: 20
+ - name: Setup pnpm
+ uses: pnpm/action-setup@v4
+ with:
+ version: 10.15.0
+ - name: Install Rust
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ override: true
+ - name: Download trusted-signing-cli
+ shell: pwsh
+ run: |
+ $ProgressPreference = 'SilentlyContinue'
+ Invoke-WebRequest -Uri "https://github.com/Levminer/trusted-signing-cli/releases/download/0.8.0/trusted-signing-cli.exe" -OutFile "trusted-signing-cli.exe"
+ Move-Item -Path "trusted-signing-cli.exe" -Destination "$env:GITHUB_WORKSPACE\trusted-signing-cli.exe"
+ echo "$env:GITHUB_WORKSPACE" | Out-File -FilePath $env:GITHUB_PATH -Append -Encoding utf8
+ - name: Setting up Windows Environment
+ timeout-minutes: 20
+ shell: bash
+ env:
+ WINDOWS_SIGN_COMMAND: trusted-signing-cli -e ${{ secrets.AZURE_ENDPOINT }} -a ${{ secrets.AZURE_CODE_SIGNING_NAME }} -c ${{ secrets.AZURE_CERT_PROFILE_NAME }} %1
+ run: |
+ cd packages/hoppscotch-agent
+ cat './src-tauri/tauri.portable.conf.json' | jq '.bundle .windows += { "signCommand": env.WINDOWS_SIGN_COMMAND}' > './src-tauri/temp_portable.json' && mv './src-tauri/temp_portable.json' './src-tauri/tauri.portable.conf.json'
+ - name: Cache Rust dependencies
+ uses: actions/cache@v4
+ with:
+ path: |
+ ~/.cargo/registry
+ ~/.cargo/git
+ target
+ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
+ - name: Install dependencies
+ timeout-minutes: 15
+ shell: bash
+ run: |
+ cd packages/hoppscotch-agent
+ pnpm install --filter hoppscotch-agent
+ - name: Build Tauri app
+ timeout-minutes: 30
+ shell: powershell
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.AGENT_TAURI_SIGNING_PRIVATE_KEY }}
+ TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.AGENT_TAURI_SIGNING_PASSWORD }}
+ AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
+ AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
+ AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
+ run: |
+ cd packages/hoppscotch-agent
+ pnpm tauri build --verbose --config src-tauri/tauri.portable.conf.json -- --no-default-features --features portable
+ - name: Sign portable executable
+ shell: powershell
+ env:
+ AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
+ AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
+ AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
+ run: |
+ cd packages/hoppscotch-agent
+ trusted-signing-cli -e ${{ secrets.AZURE_ENDPOINT }} -a ${{ secrets.AZURE_CODE_SIGNING_NAME }} -c ${{ secrets.AZURE_CERT_PROFILE_NAME }} "src-tauri/target/release/hoppscotch-agent.exe"
+ - name: Zip portable executable
+ shell: powershell
+ run: |
+ Compress-Archive -Path "packages/hoppscotch-agent/src-tauri/target/release/hoppscotch-agent.exe" -DestinationPath "packages/hoppscotch-agent/src-tauri/target/release/Hoppscotch_Agent_win_x64_portable.zip"
+ - name: Prepare artifacts
+ shell: bash
+ run: |
+ mkdir -p artifacts/{sigs,shas}
mv packages/hoppscotch-agent/src-tauri/target/release/Hoppscotch_Agent_win_x64_portable.zip artifacts/Hoppscotch_Agent_win_x64_portable.zip
- fi
-
- - name: Generate checksums (Linux)
- if: matrix.platform == 'ubuntu-22.04'
- run: |
- cd artifacts
- mkdir shas
- for file in *; do
- if [ -f "$file" ]; then
- sha256sum "$file" > "shas/${file}.sha256"
- fi
- done
-
- - name: Generate checksums (Mac)
- if: matrix.platform == 'macos-latest'
- run: |
- cd artifacts
- mkdir shas
- for file in *; do
- if [ -f "$file" ]; then
- shasum -a 256 "$file" > "shas/${file}.sha256"
- fi
- done
+ - name: Generate checksums
+ shell: powershell
+ run: |
+ cd artifacts
+ Get-ChildItem -File | ForEach-Object {
+ $hash = Get-FileHash -Algorithm SHA256 $_.Name
+ $hash.Hash + " " + $_.Name | Out-File -Encoding UTF8 "shas/$($_.Name).sha256"
+ }
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: Hoppscotch_Agent-windows-portable
+ path: artifacts/*
+ create-update-manifest:
+ name: Create Update Manifest
+ needs: [build-macos-x86_64, build-macos-aarch64, build-linux-deb, build-linux-appimage, build-windows-installer, build-windows-portable]
+ runs-on: ubuntu-latest
+ if: ${{ inputs.build_macos_x64 && inputs.build_macos_arm64 && inputs.build_linux_appimage && inputs.build_windows_installer }}
+ steps:
+ - name: Download all artifacts
+ uses: actions/download-artifact@v4
+ with:
+ path: artifacts
+ - name: List downloaded artifacts
+ run: find artifacts -type f | sort
+ - name: Create update manifest
+ run: |
+ VERSION="${{ inputs.version }}"
+ CURRENT_DATE=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ")
- - name: Upload artifacts
- uses: actions/upload-artifact@v4
- with:
- name: Hoppscotch_Agent-${{ matrix.platform }}
- path: artifacts/*
+ cat > artifacts/hoppscotch-agent-update.json << EOF
+ {
+ "version": "${VERSION}",
+ "notes": "${{ inputs.release_notes }}",
+ "pub_date": "${CURRENT_DATE}",
+ "platforms": {
+ "darwin-x86_64": {
+ "signature": "$(cat artifacts/Hoppscotch_Agent-macos-x86_64/sigs/Hoppscotch_Agent_mac_update_x64.tar.gz.sig)",
+ "url": "https://github.com/hoppscotch/agent-releases/releases/download/${VERSION}/Hoppscotch_Agent_mac_update_x64.tar.gz"
+ },
+ "darwin-aarch64": {
+ "signature": "$(cat artifacts/Hoppscotch_Agent-macos-arm64/sigs/Hoppscotch_Agent_mac_update_aarch64.tar.gz.sig)",
+ "url": "https://github.com/hoppscotch/agent-releases/releases/download/${VERSION}/Hoppscotch_Agent_mac_update_aarch64.tar.gz"
+ },
+ "linux-x86_64": {
+ "signature": "$(cat artifacts/Hoppscotch_Agent-linux-appimage/sigs/Hoppscotch_Agent_linux_x64.AppImage.sig)",
+ "url": "https://github.com/hoppscotch/agent-releases/releases/download/${VERSION}/Hoppscotch_Agent_linux_x64.AppImage"
+ },
+ "windows-x86_64": {
+ "signature": "$(cat artifacts/Hoppscotch_Agent-windows-installer/sigs/Hoppscotch_Agent_win_x64.msi.sig)",
+ "url": "https://github.com/hoppscotch/agent-releases/releases/download/${VERSION}/Hoppscotch_Agent_win_x64.msi"
+ }
+ }
+ }
+ EOF
+ - name: Upload manifest
+ uses: actions/upload-artifact@v4
+ with:
+ name: update-manifest
+ path: artifacts/hoppscotch-agent-update.json
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 5d281bca1c2..e58af774e4a 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -13,7 +13,10 @@ jobs:
strategy:
matrix:
- node-version: ["lts/*"]
+ # Pinned to Node.js 22 to maintain compatibility with isolated-vm v5.x
+ # Node.js 24 requires isolated-vm v6+ due to V8 API changes
+ # TODO: Upgrade to isolated-vm v6 and support Node.js 24 in future dependency update cycle
+ node-version: ["22"]
steps:
- name: Checkout
diff --git a/README.md b/README.md
index 42a99c19cbb..ffe946ee471 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@
-[](CODE_OF_CONDUCT.md) [](https://hoppscotch.io) [](https://github.com/hoppscotch/hoppscotch/actions) [](https://twitter.com/share?text=%F0%9F%91%BD%20Hoppscotch%20%E2%80%A2%20Open%20source%20API%20development%20ecosystem%20-%20Helps%20you%20create%20requests%20faster,%20saving%20precious%20time%20on%20development.&url=https://hoppscotch.io&hashtags=hoppscotch&via=hoppscotch_io)
+[](CODE_OF_CONDUCT.md) [](https://hoppscotch.io) [](https://github.com/hoppscotch/hoppscotch/actions) [](https://x.com/share?text=%F0%9F%91%BD%20Hoppscotch%20%E2%80%A2%20Open%20source%20API%20development%20ecosystem%20-%20Helps%20you%20create%20requests%20faster,%20saving%20precious%20time%20on%20development.&url=https://hoppscotch.io&hashtags=hoppscotch&via=hoppscotch_io)
diff --git a/aio-multiport-setup.Caddyfile b/aio-multiport-setup.Caddyfile
index 6140f464e0f..6a00ebba07a 100644
--- a/aio-multiport-setup.Caddyfile
+++ b/aio-multiport-setup.Caddyfile
@@ -16,5 +16,16 @@
}
:3170 {
- reverse_proxy localhost:8080
+ @mock {
+ header_regexp host Host ^[^.]+\.mock\..*$
+ }
+
+ handle @mock {
+ rewrite * /mock{uri}
+ reverse_proxy localhost:8080
+ }
+
+ handle {
+ reverse_proxy localhost:8080
+ }
}
diff --git a/aio-subpath-access.Caddyfile b/aio-subpath-access.Caddyfile
index 10b8bf5511a..4bf8e3b7ac1 100644
--- a/aio-subpath-access.Caddyfile
+++ b/aio-subpath-access.Caddyfile
@@ -18,7 +18,18 @@
# Handle requests under `/backend*` path
handle_path /backend* {
- reverse_proxy localhost:8080
+ @mock {
+ header_regexp host Host ^[^.]+\.mock\..*$
+ }
+
+ handle @mock {
+ rewrite * /mock{uri}
+ reverse_proxy localhost:8080
+ }
+
+ handle {
+ reverse_proxy localhost:8080
+ }
}
# Handle requests under `/desktop-app-server*` path
diff --git a/healthcheck.sh b/healthcheck.sh
index 9b3939f1799..8777c74d872 100644
--- a/healthcheck.sh
+++ b/healthcheck.sh
@@ -8,6 +8,14 @@ curlCheck() {
fi
}
+# Wait for initial startup period to avoid unnecessary error logs
+# Check if the container has been running for at least 15 seconds
+UPTIME=$(awk '{print int($1)}' /proc/uptime)
+if [ "$UPTIME" -lt 15 ]; then
+ echo "Container still starting up (uptime: ${UPTIME}s), skipping health check..."
+ exit 0
+fi
+
if [ "$ENABLE_SUBPATH_BASED_ACCESS" = "true" ]; then
curlCheck "http://localhost:${HOPP_AIO_ALTERNATE_PORT:-80}/backend/ping" || exit 1
else
diff --git a/netlify.toml b/netlify.toml
index 80f0ee912fa..4a3899f4743 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -45,7 +45,7 @@
[[redirects]]
from = "/twitter"
- to = "https://twitter.com/hoppscotch_io"
+ to = "https://x.com/hoppscotch_io"
status = 301
force = true
diff --git a/package.json b/package.json
index 3e6a5ad5a53..07f82832013 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"author": "Hoppscotch (support@hoppscotch.io)",
"private": true,
"license": "MIT",
- "packageManager": "pnpm@10.15.0",
+ "packageManager": "pnpm@10.18.3",
"scripts": {
"preinstall": "npx only-allow pnpm",
"prepare": "husky",
@@ -24,14 +24,14 @@
"./packages/*"
],
"devDependencies": {
- "@commitlint/cli": "19.8.1",
- "@commitlint/config-conventional": "19.8.1",
+ "@commitlint/cli": "20.1.0",
+ "@commitlint/config-conventional": "20.0.0",
"@hoppscotch/ui": "0.2.5",
- "@types/node": "24.5.2",
- "cross-env": "10.0.0",
+ "@types/node": "24.9.1",
+ "cross-env": "10.1.0",
"http-server": "14.1.1",
"husky": "9.1.7",
- "lint-staged": "16.2.1"
+ "lint-staged": "16.2.5"
},
"pnpm": {
"overrides": {
@@ -39,6 +39,7 @@
"apiconnect-wsdl": "2.0.36",
"cross-spawn": "7.0.6",
"execa@0.10.0": "2.0.0",
+ "nodemailer@<7.0.7": "7.0.7",
"sha.js@2.4.11": "2.4.12",
"subscriptions-transport-ws>ws": "7.5.10",
"vue": "3.5.22",
diff --git a/packages/codemirror-lang-graphql/package.json b/packages/codemirror-lang-graphql/package.json
index 9c393d355fd..536fe442a86 100644
--- a/packages/codemirror-lang-graphql/package.json
+++ b/packages/codemirror-lang-graphql/package.json
@@ -24,8 +24,8 @@
"devDependencies": {
"@lezer/generator": "1.8.0",
"@rollup/plugin-typescript": "12.1.4",
- "mocha": "11.7.2",
- "rollup": "4.52.2",
- "typescript": "5.9.2"
+ "mocha": "11.7.4",
+ "rollup": "4.52.5",
+ "typescript": "5.9.3"
}
}
diff --git a/packages/hoppscotch-agent/package.json b/packages/hoppscotch-agent/package.json
index 5623c2f767c..e5d6ce6d7f0 100644
--- a/packages/hoppscotch-agent/package.json
+++ b/packages/hoppscotch-agent/package.json
@@ -1,7 +1,7 @@
{
"name": "hoppscotch-agent",
"private": true,
- "version": "0.1.14",
+ "version": "0.1.15",
"type": "module",
"scripts": {
"dev": "vite",
@@ -23,12 +23,12 @@
"@iconify-json/lucide": "1.2.68",
"@tauri-apps/cli": "^2.0.3",
"@types/lodash-es": "4.17.12",
- "@types/node": "24.3.0",
+ "@types/node": "24.9.1",
"@vitejs/plugin-vue": "5.1.4",
"autoprefixer": "10.4.21",
"postcss": "8.5.6",
"tailwindcss": "3.4.16",
- "typescript": "5.9.2",
+ "typescript": "5.9.3",
"unplugin-icons": "22.2.0",
"unplugin-vue-components": "29.0.0",
"vite": "6.3.6",
diff --git a/packages/hoppscotch-agent/src-tauri/Cargo.lock b/packages/hoppscotch-agent/src-tauri/Cargo.lock
index 1b6481bae00..32b752d2fee 100644
--- a/packages/hoppscotch-agent/src-tauri/Cargo.lock
+++ b/packages/hoppscotch-agent/src-tauri/Cargo.lock
@@ -2,20 +2,11 @@
# It is not intended for manual editing.
version = 4
-[[package]]
-name = "addr2line"
-version = "0.24.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
-dependencies = [
- "gimli",
-]
-
[[package]]
name = "adler2"
-version = "2.0.0"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
name = "aead"
@@ -54,9 +45,9 @@ dependencies = [
[[package]]
name = "aho-corasick"
-version = "1.1.3"
+version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
dependencies = [
"memchr",
]
@@ -76,12 +67,6 @@ dependencies = [
"alloc-no-stdlib",
]
-[[package]]
-name = "android-tzdata"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
-
[[package]]
name = "android_system_properties"
version = "0.1.5"
@@ -93,9 +78,9 @@ dependencies = [
[[package]]
name = "anstream"
-version = "0.6.18"
+version = "0.6.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
+checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
dependencies = [
"anstyle",
"anstyle-parse",
@@ -108,50 +93,50 @@ dependencies = [
[[package]]
name = "anstyle"
-version = "1.0.10"
+version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
[[package]]
name = "anstyle-parse"
-version = "0.2.6"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
+checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
-version = "1.1.2"
+version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
+checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
]
[[package]]
name = "anstyle-wincon"
-version = "3.0.7"
+version = "3.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e"
+checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a"
dependencies = [
"anstyle",
- "once_cell",
- "windows-sys 0.59.0",
+ "once_cell_polyfill",
+ "windows-sys 0.60.2",
]
[[package]]
name = "anyhow"
-version = "1.0.97"
+version = "1.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
+checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
[[package]]
name = "arbitrary"
-version = "1.4.1"
+version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223"
+checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
dependencies = [
"derive_arbitrary",
]
@@ -171,12 +156,15 @@ dependencies = [
"enumflags2",
"futures-channel",
"futures-util",
- "rand 0.9.0",
+ "rand 0.9.2",
"raw-window-handle 0.6.2",
"serde",
"serde_repr",
"tokio",
"url",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols",
"zbus",
]
@@ -194,9 +182,9 @@ dependencies = [
[[package]]
name = "async-channel"
-version = "2.3.1"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
+checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"
dependencies = [
"concurrent-queue",
"event-listener-strategy",
@@ -206,65 +194,54 @@ dependencies = [
[[package]]
name = "async-compression"
-version = "0.4.21"
+version = "0.4.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0cf008e5e1a9e9e22a7d3c9a4992e21a350290069e36d8fb72304ed17e8f2d2"
+checksum = "5a89bce6054c720275ac2432fbba080a66a2106a44a1b804553930ca6909f4e0"
dependencies = [
- "flate2",
+ "compression-codecs",
+ "compression-core",
"futures-core",
- "memchr",
"pin-project-lite",
"tokio",
]
[[package]]
name = "async-executor"
-version = "1.13.1"
+version = "1.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec"
+checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8"
dependencies = [
"async-task",
"concurrent-queue",
"fastrand",
"futures-lite",
+ "pin-project-lite",
"slab",
]
-[[package]]
-name = "async-fs"
-version = "2.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a"
-dependencies = [
- "async-lock",
- "blocking",
- "futures-lite",
-]
-
[[package]]
name = "async-io"
-version = "2.4.0"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059"
+checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc"
dependencies = [
- "async-lock",
+ "autocfg",
"cfg-if",
"concurrent-queue",
"futures-io",
"futures-lite",
"parking",
"polling",
- "rustix 0.38.44",
+ "rustix 1.1.2",
"slab",
- "tracing",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
name = "async-lock"
-version = "3.4.0"
+version = "3.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
+checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc"
dependencies = [
"event-listener",
"event-listener-strategy",
@@ -273,9 +250,9 @@ dependencies = [
[[package]]
name = "async-process"
-version = "2.3.0"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb"
+checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75"
dependencies = [
"async-channel",
"async-io",
@@ -286,8 +263,7 @@ dependencies = [
"cfg-if",
"event-listener",
"futures-lite",
- "rustix 0.38.44",
- "tracing",
+ "rustix 1.1.2",
]
[[package]]
@@ -298,14 +274,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "async-signal"
-version = "0.2.10"
+version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3"
+checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c"
dependencies = [
"async-io",
"async-lock",
@@ -313,10 +289,10 @@ dependencies = [
"cfg-if",
"futures-core",
"futures-io",
- "rustix 0.38.44",
+ "rustix 1.1.2",
"signal-hook-registry",
"slab",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -327,13 +303,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
[[package]]
name = "async-trait"
-version = "0.1.88"
+version = "0.1.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
+checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -378,9 +354,9 @@ dependencies = [
[[package]]
name = "autocfg"
-version = "1.4.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "axum"
@@ -461,21 +437,6 @@ dependencies = [
"tower-service",
]
-[[package]]
-name = "backtrace"
-version = "0.3.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
-dependencies = [
- "addr2line",
- "cfg-if",
- "libc",
- "miniz_oxide",
- "object",
- "rustc-demangle",
- "windows-targets 0.52.6",
-]
-
[[package]]
name = "base16"
version = "0.2.1"
@@ -502,11 +463,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.9.0"
+version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
dependencies = [
- "serde",
+ "serde_core",
]
[[package]]
@@ -535,18 +496,18 @@ dependencies = [
[[package]]
name = "block2"
-version = "0.6.0"
+version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d59b4c170e16f0405a2e95aff44432a0d41aa97675f3d52623effe95792a037"
+checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
dependencies = [
- "objc2 0.6.0",
+ "objc2 0.6.3",
]
[[package]]
name = "blocking"
-version = "1.6.1"
+version = "1.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea"
+checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21"
dependencies = [
"async-channel",
"async-task",
@@ -578,15 +539,15 @@ dependencies = [
[[package]]
name = "bumpalo"
-version = "3.17.0"
+version = "3.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
[[package]]
name = "bytemuck"
-version = "1.22.0"
+version = "1.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540"
+checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
[[package]]
name = "byteorder"
@@ -615,7 +576,7 @@ version = "0.18.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"cairo-sys-rs",
"glib",
"libc",
@@ -636,11 +597,11 @@ dependencies = [
[[package]]
name = "camino"
-version = "1.1.9"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
+checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609"
dependencies = [
- "serde",
+ "serde_core",
]
[[package]]
@@ -663,7 +624,7 @@ dependencies = [
"semver",
"serde",
"serde_json",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
]
[[package]]
@@ -673,15 +634,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77"
dependencies = [
"serde",
- "toml 0.9.7",
+ "toml 0.9.8",
]
[[package]]
name = "cc"
-version = "1.2.16"
+version = "1.2.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c"
+checksum = "739eb0f94557554b3ca9a86d2d37bebd49c5e6d0c1d2bda35ba5bdac830befc2"
dependencies = [
+ "find-msvc-tools",
"shlex",
]
@@ -714,9 +676,9 @@ dependencies = [
[[package]]
name = "cfg-if"
-version = "1.0.0"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "cfg_aliases"
@@ -726,17 +688,16 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]]
name = "chrono"
-version = "0.4.40"
+version = "0.4.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c"
+checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
dependencies = [
- "android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
"serde",
"wasm-bindgen",
- "windows-link",
+ "windows-link 0.2.1",
]
[[package]]
@@ -781,9 +742,9 @@ dependencies = [
[[package]]
name = "colorchoice"
-version = "1.0.3"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
+checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
[[package]]
name = "combine"
@@ -795,6 +756,23 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "compression-codecs"
+version = "0.4.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef8a506ec4b81c460798f572caead636d57d3d7e940f998160f52bd254bf2d23"
+dependencies = [
+ "compression-core",
+ "flate2",
+ "memchr",
+]
+
+[[package]]
+name = "compression-core"
+version = "0.4.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e47641d3deaf41fb1538ac1f54735925e275eaf3bf4d55c81b137fba797e5cbb"
+
[[package]]
name = "concurrent-queue"
version = "2.5.0"
@@ -851,9 +829,9 @@ dependencies = [
[[package]]
name = "core-foundation"
-version = "0.10.0"
+version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63"
+checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
dependencies = [
"core-foundation-sys",
"libc",
@@ -884,8 +862,8 @@ version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
dependencies = [
- "bitflags 2.9.0",
- "core-foundation 0.10.0",
+ "bitflags 2.10.0",
+ "core-foundation 0.10.1",
"core-graphics-types 0.2.0",
"foreign-types 0.5.0",
"libc",
@@ -908,8 +886,8 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
dependencies = [
- "bitflags 2.9.0",
- "core-foundation 0.10.0",
+ "bitflags 2.10.0",
+ "core-foundation 0.10.1",
"libc",
]
@@ -924,18 +902,18 @@ dependencies = [
[[package]]
name = "crc32fast"
-version = "1.4.2"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
dependencies = [
"cfg-if",
]
[[package]]
name = "crossbeam-channel"
-version = "0.5.14"
+version = "0.5.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471"
+checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
dependencies = [
"crossbeam-utils",
]
@@ -981,7 +959,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
dependencies = [
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -991,7 +969,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
dependencies = [
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -1012,7 +990,7 @@ dependencies = [
"libc",
"openssl-probe",
"openssl-sys",
- "socket2",
+ "socket2 0.5.10",
]
[[package]]
@@ -1051,14 +1029,14 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "darling"
-version = "0.20.10"
+version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
+checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
dependencies = [
"darling_core",
"darling_macro",
@@ -1066,27 +1044,27 @@ dependencies = [
[[package]]
name = "darling_core"
-version = "0.20.10"
+version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
+checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
dependencies = [
"fnv",
"ident_case",
"proc-macro2",
"quote",
"strsim",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "darling_macro"
-version = "0.20.10"
+version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
+checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
dependencies = [
"darling_core",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -1106,42 +1084,42 @@ dependencies = [
[[package]]
name = "data-url"
-version = "0.3.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a"
+checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
[[package]]
name = "deranged"
-version = "0.4.0"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e"
+checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
dependencies = [
"powerfmt",
- "serde",
+ "serde_core",
]
[[package]]
name = "derive_arbitrary"
-version = "1.4.1"
+version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800"
+checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "derive_more"
-version = "0.99.19"
+version = "0.99.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f"
+checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f"
dependencies = [
"convert_case",
"proc-macro2",
"quote",
"rustc_version",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -1201,8 +1179,8 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
dependencies = [
"libc",
"option-ext",
- "redox_users 0.5.0",
- "windows-sys 0.59.0",
+ "redox_users 0.5.2",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -1224,14 +1202,14 @@ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
[[package]]
name = "dispatch2"
-version = "0.2.0"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a0d569e003ff27784e0e14e4a594048698e0c0f0b66cabcb51511be55a7caa0"
+checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec"
dependencies = [
- "bitflags 2.9.0",
- "block2 0.6.0",
+ "bitflags 2.10.0",
+ "block2 0.6.2",
"libc",
- "objc2 0.6.0",
+ "objc2 0.6.3",
]
[[package]]
@@ -1242,7 +1220,16 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
+]
+
+[[package]]
+name = "dlib"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412"
+dependencies = [
+ "libloading 0.8.9",
]
[[package]]
@@ -1259,29 +1246,35 @@ dependencies = [
[[package]]
name = "dlopen2_derive"
-version = "0.4.0"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54"
+checksum = "788160fb30de9cdd857af31c6a2675904b16ece8fc2737b2c7127ba368c9d0f4"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "document-features"
-version = "0.2.11"
+version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d"
+checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
dependencies = [
"litrs",
]
+[[package]]
+name = "downcast-rs"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
+
[[package]]
name = "dpi"
-version = "0.1.1"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53"
+checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
dependencies = [
"serde",
]
@@ -1309,9 +1302,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
[[package]]
name = "dyn-clone"
-version = "1.0.19"
+version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005"
+checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
[[package]]
name = "either"
@@ -1321,16 +1314,16 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
[[package]]
name = "embed-resource"
-version = "3.0.2"
+version = "3.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fbc6e0d8e0c03a655b53ca813f0463d2c956bc4db8138dbc89f120b066551e3"
+checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e"
dependencies = [
"cc",
"memchr",
"rustc_version",
- "toml 0.8.20",
+ "toml 0.9.8",
"vswhom",
- "winreg 0.52.0",
+ "winreg 0.55.0",
]
[[package]]
@@ -1356,9 +1349,9 @@ checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
[[package]]
name = "enumflags2"
-version = "0.7.11"
+version = "0.7.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147"
+checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef"
dependencies = [
"enumflags2_derive",
"serde",
@@ -1366,20 +1359,20 @@ dependencies = [
[[package]]
name = "enumflags2_derive"
-version = "0.7.11"
+version = "0.7.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79"
+checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "env_filter"
-version = "0.1.3"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0"
+checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2"
dependencies = [
"log",
"regex",
@@ -1387,9 +1380,9 @@ dependencies = [
[[package]]
name = "env_logger"
-version = "0.11.7"
+version = "0.11.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3716d7a920fb4fac5d84e9d4bce8ceb321e9414b4409da61b07b75c1e3d0697"
+checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f"
dependencies = [
"anstream",
"anstyle",
@@ -1406,29 +1399,30 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "erased-serde"
-version = "0.4.6"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7"
+checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b"
dependencies = [
"serde",
+ "serde_core",
"typeid",
]
[[package]]
name = "errno"
-version = "0.3.10"
+version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
name = "event-listener"
-version = "5.4.0"
+version = "5.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae"
+checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
dependencies = [
"concurrent-queue",
"parking",
@@ -1437,9 +1431,9 @@ dependencies = [
[[package]]
name = "event-listener-strategy"
-version = "0.5.3"
+version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2"
+checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
dependencies = [
"event-listener",
"pin-project-lite",
@@ -1488,21 +1482,27 @@ dependencies = [
[[package]]
name = "filetime"
-version = "0.2.25"
+version = "0.2.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
+checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed"
dependencies = [
"cfg-if",
"libc",
"libredox",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
]
+[[package]]
+name = "find-msvc-tools"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127"
+
[[package]]
name = "flate2"
-version = "1.1.0"
+version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc"
+checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
dependencies = [
"crc32fast",
"miniz_oxide",
@@ -1541,7 +1541,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -1558,9 +1558,9 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
[[package]]
name = "form_urlencoded"
-version = "1.2.1"
+version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
dependencies = [
"percent-encoding",
]
@@ -1609,9 +1609,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
[[package]]
name = "futures-lite"
-version = "2.6.0"
+version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532"
+checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"
dependencies = [
"fastrand",
"futures-core",
@@ -1628,7 +1628,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -1770,9 +1770,9 @@ dependencies = [
[[package]]
name = "generic-array"
-version = "0.14.7"
+version = "0.14.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"
dependencies = [
"typenum",
"version_check",
@@ -1791,28 +1791,28 @@ dependencies = [
[[package]]
name = "getrandom"
-version = "0.2.15"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
dependencies = [
"cfg-if",
"js-sys",
"libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi 0.11.1+wasi-snapshot-preview1",
"wasm-bindgen",
]
[[package]]
name = "getrandom"
-version = "0.3.2"
+version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
dependencies = [
"cfg-if",
"js-sys",
"libc",
"r-efi",
- "wasi 0.14.2+wasi-0.2.4",
+ "wasip2",
"wasm-bindgen",
]
@@ -1826,12 +1826,6 @@ dependencies = [
"polyval",
]
-[[package]]
-name = "gimli"
-version = "0.31.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
-
[[package]]
name = "gio"
version = "0.18.4"
@@ -1870,7 +1864,7 @@ version = "0.18.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"futures-channel",
"futures-core",
"futures-executor",
@@ -1894,11 +1888,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc"
dependencies = [
"heck 0.4.1",
- "proc-macro-crate 2.0.0",
+ "proc-macro-crate 2.0.2",
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -1913,9 +1907,9 @@ dependencies = [
[[package]]
name = "glob"
-version = "0.3.2"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
+checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
[[package]]
name = "gobject-sys"
@@ -1977,14 +1971,14 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "h2"
-version = "0.4.8"
+version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2"
+checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
dependencies = [
"atomic-waker",
"bytes",
@@ -1992,7 +1986,7 @@ dependencies = [
"futures-core",
"futures-sink",
"http",
- "indexmap 2.11.4",
+ "indexmap 2.12.0",
"slab",
"tokio",
"tokio-util",
@@ -2013,17 +2007,17 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
[[package]]
name = "hashbrown"
-version = "0.15.2"
+version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
+checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
[[package]]
name = "headers"
-version = "0.4.0"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "322106e6bd0cba2d5ead589ddb8150a13d7c4217cf80d7c4f682ca994ccc6aa9"
+checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb"
dependencies = [
- "base64 0.21.7",
+ "base64 0.22.1",
"bytes",
"headers-core",
"http",
@@ -2055,9 +2049,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "hermit-abi"
-version = "0.4.0"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
[[package]]
name = "hex"
@@ -2067,16 +2061,16 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]]
name = "home"
-version = "0.5.11"
+version = "0.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf"
+checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
name = "hoppscotch-agent"
-version = "0.1.14"
+version = "0.1.15"
dependencies = [
"aes-gcm",
"axum",
@@ -2185,13 +2179,14 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "hyper"
-version = "1.6.0"
+version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80"
+checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"
dependencies = [
+ "atomic-waker",
"bytes",
"futures-channel",
- "futures-util",
+ "futures-core",
"h2",
"http",
"http-body",
@@ -2199,6 +2194,7 @@ dependencies = [
"httpdate",
"itoa",
"pin-project-lite",
+ "pin-utils",
"smallvec",
"tokio",
"want",
@@ -2206,11 +2202,10 @@ dependencies = [
[[package]]
name = "hyper-rustls"
-version = "0.27.5"
+version = "0.27.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2"
+checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
dependencies = [
- "futures-util",
"http",
"hyper",
"hyper-util",
@@ -2224,35 +2219,43 @@ dependencies = [
[[package]]
name = "hyper-util"
-version = "0.1.10"
+version = "0.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4"
+checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8"
dependencies = [
+ "base64 0.22.1",
"bytes",
"futures-channel",
+ "futures-core",
"futures-util",
"http",
"http-body",
"hyper",
+ "ipnet",
+ "libc",
+ "percent-encoding",
"pin-project-lite",
- "socket2",
+ "socket2 0.6.1",
+ "system-configuration",
"tokio",
"tower-service",
"tracing",
+ "windows-registry",
]
[[package]]
name = "iana-time-zone"
-version = "0.1.61"
+version = "0.1.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
+checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
+ "log",
"wasm-bindgen",
- "windows-core 0.52.0",
+ "windows-core 0.62.2",
]
[[package]]
@@ -2271,26 +2274,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98"
dependencies = [
"byteorder",
- "png",
+ "png 0.17.16",
]
[[package]]
name = "icu_collections"
-version = "1.5.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
+checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
dependencies = [
"displaydoc",
+ "potential_utf",
"yoke",
"zerofrom",
"zerovec",
]
[[package]]
-name = "icu_locid"
-version = "1.5.0"
+name = "icu_locale_core"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
+checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
dependencies = [
"displaydoc",
"litemap",
@@ -2299,99 +2303,61 @@ dependencies = [
"zerovec",
]
-[[package]]
-name = "icu_locid_transform"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
-dependencies = [
- "displaydoc",
- "icu_locid",
- "icu_locid_transform_data",
- "icu_provider",
- "tinystr",
- "zerovec",
-]
-
-[[package]]
-name = "icu_locid_transform_data"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"
-
[[package]]
name = "icu_normalizer"
-version = "1.5.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
+checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
dependencies = [
- "displaydoc",
"icu_collections",
"icu_normalizer_data",
"icu_properties",
"icu_provider",
"smallvec",
- "utf16_iter",
- "utf8_iter",
- "write16",
"zerovec",
]
[[package]]
name = "icu_normalizer_data"
-version = "1.5.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"
+checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
[[package]]
name = "icu_properties"
-version = "1.5.1"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
+checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99"
dependencies = [
- "displaydoc",
"icu_collections",
- "icu_locid_transform",
+ "icu_locale_core",
"icu_properties_data",
"icu_provider",
- "tinystr",
+ "zerotrie",
"zerovec",
]
[[package]]
name = "icu_properties_data"
-version = "1.5.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"
+checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899"
[[package]]
name = "icu_provider"
-version = "1.5.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
+checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
dependencies = [
"displaydoc",
- "icu_locid",
- "icu_provider_macros",
- "stable_deref_trait",
- "tinystr",
+ "icu_locale_core",
"writeable",
"yoke",
"zerofrom",
+ "zerotrie",
"zerovec",
]
-[[package]]
-name = "icu_provider_macros"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.100",
-]
-
[[package]]
name = "ident_case"
version = "1.0.1"
@@ -2400,9 +2366,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]]
name = "idna"
-version = "1.0.3"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
dependencies = [
"idna_adapter",
"smallvec",
@@ -2411,9 +2377,9 @@ dependencies = [
[[package]]
name = "idna_adapter"
-version = "1.2.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
dependencies = [
"icu_normalizer",
"icu_properties",
@@ -2421,14 +2387,15 @@ dependencies = [
[[package]]
name = "image"
-version = "0.25.5"
+version = "0.25.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b"
+checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7"
dependencies = [
"bytemuck",
"byteorder-lite",
+ "moxcms",
"num-traits",
- "png",
+ "png 0.18.0",
]
[[package]]
@@ -2444,12 +2411,12 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "2.11.4"
+version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5"
+checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f"
dependencies = [
"equivalent",
- "hashbrown 0.15.2",
+ "hashbrown 0.16.0",
"serde",
"serde_core",
]
@@ -2487,6 +2454,16 @@ version = "2.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
+[[package]]
+name = "iri-string"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2"
+dependencies = [
+ "memchr",
+ "serde",
+]
+
[[package]]
name = "is-docker"
version = "0.2.0"
@@ -2508,9 +2485,9 @@ dependencies = [
[[package]]
name = "is_terminal_polyfill"
-version = "1.70.1"
+version = "1.70.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
+checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
[[package]]
name = "itertools"
@@ -2552,9 +2529,9 @@ dependencies = [
[[package]]
name = "jiff"
-version = "0.2.4"
+version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d699bc6dfc879fb1bf9bdff0d4c56f0884fc6f0d0eb0fba397a6d00cd9a6b85e"
+checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49"
dependencies = [
"jiff-static",
"log",
@@ -2565,13 +2542,13 @@ dependencies = [
[[package]]
name = "jiff-static"
-version = "0.2.4"
+version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d16e75759ee0aa64c57a56acbf43916987b20c77373cb7e808979e02b93c9f9"
+checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -2598,9 +2575,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
[[package]]
name = "js-sys"
-version = "0.3.77"
+version = "0.3.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65"
dependencies = [
"once_cell",
"wasm-bindgen",
@@ -2634,7 +2611,7 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"serde",
"unicode-segmentation",
]
@@ -2647,7 +2624,7 @@ checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2"
dependencies = [
"cssparser",
"html5ever",
- "indexmap 2.11.4",
+ "indexmap 2.12.0",
"selectors",
]
@@ -2677,15 +2654,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf"
dependencies = [
"gtk-sys",
- "libloading",
+ "libloading 0.7.4",
"once_cell",
]
[[package]]
name = "libc"
-version = "0.2.171"
+version = "0.2.177"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
+checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
[[package]]
name = "libloading"
@@ -2697,13 +2674,23 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "libloading"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
+dependencies = [
+ "cfg-if",
+ "windows-link 0.2.1",
+]
+
[[package]]
name = "libredox"
-version = "0.1.3"
+version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"libc",
"redox_syscall",
]
@@ -2728,37 +2715,42 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
[[package]]
name = "linux-raw-sys"
-version = "0.9.3"
+version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413"
+checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
[[package]]
name = "litemap"
-version = "0.7.5"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856"
+checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
[[package]]
name = "litrs"
-version = "0.4.1"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5"
+checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
[[package]]
name = "lock_api"
-version = "0.4.12"
+version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
dependencies = [
- "autocfg",
"scopeguard",
]
[[package]]
name = "log"
-version = "0.4.26"
+version = "0.4.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
+
+[[package]]
+name = "lru-slab"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
+checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
[[package]]
name = "mac"
@@ -2797,16 +2789,16 @@ checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "matchers"
-version = "0.1.0"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"
dependencies = [
- "regex-automata 0.1.10",
+ "regex-automata",
]
[[package]]
@@ -2823,9 +2815,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
[[package]]
name = "memchr"
-version = "2.7.4"
+version = "2.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
[[package]]
name = "memoffset"
@@ -2850,15 +2842,15 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "minisign-verify"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6367d84fb54d4242af283086402907277715b8fe46976963af5ebf173f8efba3"
+checksum = "e856fdd13623a2f5f2f54676a4ee49502a96a80ef4a62bcedd23d52427c44d43"
[[package]]
name = "miniz_oxide"
-version = "0.8.5"
+version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5"
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
dependencies = [
"adler2",
"simd-adler32",
@@ -2866,33 +2858,43 @@ dependencies = [
[[package]]
name = "mio"
-version = "1.0.3"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
+checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
dependencies = [
"libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
- "windows-sys 0.52.0",
+ "wasi 0.11.1+wasi-snapshot-preview1",
+ "windows-sys 0.61.2",
]
[[package]]
-name = "muda"
-version = "0.17.1"
+name = "moxcms"
+version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01c1738382f66ed56b3b9c8119e794a2e23148ac8ea214eda86622d4cb9d415a"
+checksum = "0fbdd3d7436f8b5e892b8b7ea114271ff0fa00bc5acae845d53b07d498616ef6"
dependencies = [
- "crossbeam-channel",
- "dpi",
+ "num-traits",
+ "pxfm",
+]
+
+[[package]]
+name = "muda"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01c1738382f66ed56b3b9c8119e794a2e23148ac8ea214eda86622d4cb9d415a"
+dependencies = [
+ "crossbeam-channel",
+ "dpi",
"gtk",
"keyboard-types",
- "objc2 0.6.0",
+ "objc2 0.6.3",
"objc2-app-kit",
"objc2-core-foundation",
- "objc2-foundation 0.3.0",
+ "objc2-foundation 0.3.2",
"once_cell",
- "png",
+ "png 0.17.16",
"serde",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"windows-sys 0.60.2",
]
@@ -2942,7 +2944,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"jni-sys",
"log",
"ndk-sys",
@@ -2974,11 +2976,11 @@ checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
[[package]]
name = "nix"
-version = "0.29.0"
+version = "0.30.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
+checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"cfg-if",
"cfg_aliases",
"libc",
@@ -3003,12 +3005,11 @@ dependencies = [
[[package]]
name = "nu-ansi-term"
-version = "0.46.0"
+version = "0.50.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
dependencies = [
- "overload",
- "winapi",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -3028,23 +3029,24 @@ dependencies = [
[[package]]
name = "num_enum"
-version = "0.7.3"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179"
+checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c"
dependencies = [
"num_enum_derive",
+ "rustversion",
]
[[package]]
name = "num_enum_derive"
-version = "0.7.3"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
+checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7"
dependencies = [
- "proc-macro-crate 3.3.0",
+ "proc-macro-crate 3.4.0",
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -3085,9 +3087,9 @@ dependencies = [
[[package]]
name = "objc2"
-version = "0.6.0"
+version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3531f65190d9cff863b77a99857e74c314dd16bf56c538c4b57c7cbc3f3a6e59"
+checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05"
dependencies = [
"objc2-encode",
"objc2-exception-helper",
@@ -3095,75 +3097,104 @@ dependencies = [
[[package]]
name = "objc2-app-kit"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5906f93257178e2f7ae069efb89fbd6ee94f0592740b5f8a1512ca498814d0fb"
+checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c"
dependencies = [
- "bitflags 2.9.0",
- "block2 0.6.0",
+ "bitflags 2.10.0",
+ "block2 0.6.2",
"libc",
- "objc2 0.6.0",
+ "objc2 0.6.3",
"objc2-cloud-kit",
"objc2-core-data",
"objc2-core-foundation",
"objc2-core-graphics",
"objc2-core-image",
- "objc2-foundation 0.3.0",
- "objc2-quartz-core 0.3.0",
+ "objc2-core-text",
+ "objc2-core-video",
+ "objc2-foundation 0.3.2",
+ "objc2-quartz-core 0.3.2",
]
[[package]]
name = "objc2-cloud-kit"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c1948a9be5f469deadbd6bcb86ad7ff9e47b4f632380139722f7d9840c0d42c"
+checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c"
dependencies = [
- "bitflags 2.9.0",
- "objc2 0.6.0",
- "objc2-foundation 0.3.0",
+ "bitflags 2.10.0",
+ "objc2 0.6.3",
+ "objc2-foundation 0.3.2",
]
[[package]]
name = "objc2-core-data"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f860f8e841f6d32f754836f51e6bc7777cd7e7053cf18528233f6811d3eceb4"
+checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa"
dependencies = [
- "bitflags 2.9.0",
- "objc2 0.6.0",
- "objc2-foundation 0.3.0",
+ "bitflags 2.10.0",
+ "objc2 0.6.3",
+ "objc2-foundation 0.3.2",
]
[[package]]
name = "objc2-core-foundation"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "daeaf60f25471d26948a1c2f840e3f7d86f4109e3af4e8e4b5cd70c39690d925"
+checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
dependencies = [
- "bitflags 2.9.0",
- "objc2 0.6.0",
+ "bitflags 2.10.0",
+ "dispatch2",
+ "objc2 0.6.3",
]
[[package]]
name = "objc2-core-graphics"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dca602628b65356b6513290a21a6405b4d4027b8b250f0b98dddbb28b7de02"
+checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807"
dependencies = [
- "bitflags 2.9.0",
- "objc2 0.6.0",
+ "bitflags 2.10.0",
+ "dispatch2",
+ "objc2 0.6.3",
"objc2-core-foundation",
"objc2-io-surface",
]
[[package]]
name = "objc2-core-image"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ffa6bea72bf42c78b0b34e89c0bafac877d5f80bf91e159a5d96ea7f693ca56"
+checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006"
dependencies = [
- "objc2 0.6.0",
- "objc2-foundation 0.3.0",
+ "objc2 0.6.3",
+ "objc2-foundation 0.3.2",
+]
+
+[[package]]
+name = "objc2-core-text"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d"
+dependencies = [
+ "bitflags 2.10.0",
+ "objc2 0.6.3",
+ "objc2-core-foundation",
+ "objc2-core-graphics",
+]
+
+[[package]]
+name = "objc2-core-video"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6"
+dependencies = [
+ "bitflags 2.10.0",
+ "objc2 0.6.3",
+ "objc2-core-foundation",
+ "objc2-core-graphics",
+ "objc2-io-surface",
]
[[package]]
@@ -3187,7 +3218,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"block2 0.5.1",
"libc",
"objc2 0.5.2",
@@ -3195,25 +3226,35 @@ dependencies = [
[[package]]
name = "objc2-foundation"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a21c6c9014b82c39515db5b396f91645182611c97d24637cf56ac01e5f8d998"
+checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
dependencies = [
- "bitflags 2.9.0",
- "block2 0.6.0",
+ "bitflags 2.10.0",
+ "block2 0.6.2",
"libc",
- "objc2 0.6.0",
+ "objc2 0.6.3",
"objc2-core-foundation",
]
[[package]]
name = "objc2-io-surface"
-version = "0.3.0"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d"
+dependencies = [
+ "bitflags 2.10.0",
+ "objc2 0.6.3",
+ "objc2-core-foundation",
+]
+
+[[package]]
+name = "objc2-javascript-core"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "161a8b87e32610086e1a7a9e9ec39f84459db7b3a0881c1f16ca5a2605581c19"
+checksum = "2a1e6550c4caed348956ce3370c9ffeca70bb1dbed4fa96112e7c6170e074586"
dependencies = [
- "bitflags 2.9.0",
- "objc2 0.6.0",
+ "objc2 0.6.3",
"objc2-core-foundation",
]
@@ -3223,7 +3264,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
@@ -3231,14 +3272,14 @@ dependencies = [
[[package]]
name = "objc2-osa-kit"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1ac59da3ceebc4a82179b35dc550431ad9458f9cc326e053f49ba371ce76c5a"
+checksum = "f112d1746737b0da274ef79a23aac283376f335f4095a083a267a082f21db0c0"
dependencies = [
- "bitflags 2.9.0",
- "objc2 0.6.0",
+ "bitflags 2.10.0",
+ "objc2 0.6.3",
"objc2-app-kit",
- "objc2-foundation 0.3.0",
+ "objc2-foundation 0.3.2",
]
[[package]]
@@ -3247,7 +3288,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
@@ -3256,50 +3297,51 @@ dependencies = [
[[package]]
name = "objc2-quartz-core"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb3794501bb1bee12f08dcad8c61f2a5875791ad1c6f47faa71a0f033f20071"
+checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"
dependencies = [
- "bitflags 2.9.0",
- "objc2 0.6.0",
- "objc2-foundation 0.3.0",
+ "bitflags 2.10.0",
+ "objc2 0.6.3",
+ "objc2-foundation 0.3.2",
]
[[package]]
name = "objc2-security"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3126341c65c5d5728423ae95d788e1b660756486ad0592307ab87ba02d9a7268"
+checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a"
dependencies = [
- "bitflags 2.9.0",
- "objc2 0.6.0",
+ "bitflags 2.10.0",
+ "objc2 0.6.3",
"objc2-core-foundation",
]
[[package]]
name = "objc2-ui-kit"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "777a571be14a42a3990d4ebedaeb8b54cd17377ec21b92e8200ac03797b3bee1"
+checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22"
dependencies = [
- "bitflags 2.9.0",
- "objc2 0.6.0",
+ "bitflags 2.10.0",
+ "objc2 0.6.3",
"objc2-core-foundation",
- "objc2-foundation 0.3.0",
+ "objc2-foundation 0.3.2",
]
[[package]]
name = "objc2-web-kit"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b717127e4014b0f9f3e8bba3d3f2acec81f1bde01f656823036e823ed2c94dce"
+checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f"
dependencies = [
- "bitflags 2.9.0",
- "block2 0.6.0",
- "objc2 0.6.0",
+ "bitflags 2.10.0",
+ "block2 0.6.2",
+ "objc2 0.6.3",
"objc2-app-kit",
"objc2-core-foundation",
- "objc2-foundation 0.3.0",
+ "objc2-foundation 0.3.2",
+ "objc2-javascript-core",
"objc2-security",
]
@@ -3313,19 +3355,16 @@ dependencies = [
]
[[package]]
-name = "object"
-version = "0.36.7"
+name = "once_cell"
+version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
-dependencies = [
- "memchr",
-]
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
-name = "once_cell"
-version = "1.21.1"
+name = "once_cell_polyfill"
+version = "1.70.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc"
+checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
[[package]]
name = "opaque-debug"
@@ -3347,11 +3386,11 @@ dependencies = [
[[package]]
name = "openssl"
-version = "0.10.71"
+version = "0.10.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd"
+checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"cfg-if",
"foreign-types 0.3.2",
"libc",
@@ -3368,7 +3407,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -3379,18 +3418,18 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
[[package]]
name = "openssl-src"
-version = "300.4.2+3.4.1"
+version = "300.5.4+3.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "168ce4e058f975fe43e89d9ccf78ca668601887ae736090aacc23ae353c298e2"
+checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72"
dependencies = [
"cc",
]
[[package]]
name = "openssl-sys"
-version = "0.9.106"
+version = "0.9.110"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd"
+checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2"
dependencies = [
"cc",
"libc",
@@ -3417,12 +3456,12 @@ dependencies = [
[[package]]
name = "os_pipe"
-version = "1.2.1"
+version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982"
+checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967"
dependencies = [
"libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -3431,20 +3470,14 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "732c71caeaa72c065bb69d7ea08717bd3f4863a4f451402fc9513e29dbd5261b"
dependencies = [
- "objc2 0.6.0",
- "objc2-foundation 0.3.0",
+ "objc2 0.6.3",
+ "objc2-foundation 0.3.2",
"objc2-osa-kit",
"serde",
"serde_json",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
]
-[[package]]
-name = "overload"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
-
[[package]]
name = "pango"
version = "0.18.3"
@@ -3478,9 +3511,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
[[package]]
name = "parking_lot"
-version = "0.12.3"
+version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
dependencies = [
"lock_api",
"parking_lot_core",
@@ -3488,15 +3521,15 @@ dependencies = [
[[package]]
name = "parking_lot_core"
-version = "0.9.10"
+version = "0.9.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
dependencies = [
"cfg-if",
"libc",
"redox_syscall",
"smallvec",
- "windows-targets 0.52.6",
+ "windows-link 0.2.1",
]
[[package]]
@@ -3507,9 +3540,9 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
[[package]]
name = "percent-encoding"
-version = "2.3.1"
+version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
[[package]]
name = "phf"
@@ -3615,7 +3648,7 @@ dependencies = [
"phf_shared 0.11.3",
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -3676,13 +3709,13 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
[[package]]
name = "plist"
-version = "1.7.0"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016"
+checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07"
dependencies = [
"base64 0.22.1",
- "indexmap 2.11.4",
- "quick-xml",
+ "indexmap 2.12.0",
+ "quick-xml 0.38.3",
"serde",
"time",
]
@@ -3700,19 +3733,31 @@ dependencies = [
"miniz_oxide",
]
+[[package]]
+name = "png"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0"
+dependencies = [
+ "bitflags 2.10.0",
+ "crc32fast",
+ "fdeflate",
+ "flate2",
+ "miniz_oxide",
+]
+
[[package]]
name = "polling"
-version = "3.7.4"
+version = "3.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f"
+checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
dependencies = [
"cfg-if",
"concurrent-queue",
"hermit-abi",
"pin-project-lite",
- "rustix 0.38.44",
- "tracing",
- "windows-sys 0.59.0",
+ "rustix 1.1.2",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -3729,9 +3774,9 @@ dependencies = [
[[package]]
name = "portable-atomic"
-version = "1.11.0"
+version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"
+checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
[[package]]
name = "portable-atomic-util"
@@ -3742,6 +3787,15 @@ dependencies = [
"portable-atomic",
]
+[[package]]
+name = "potential_utf"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
+dependencies = [
+ "zerovec",
+]
+
[[package]]
name = "powerfmt"
version = "0.2.0"
@@ -3775,20 +3829,21 @@ dependencies = [
[[package]]
name = "proc-macro-crate"
-version = "2.0.0"
+version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8"
+checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24"
dependencies = [
- "toml_edit 0.20.7",
+ "toml_datetime 0.6.3",
+ "toml_edit 0.20.2",
]
[[package]]
name = "proc-macro-crate"
-version = "3.3.0"
+version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35"
+checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
dependencies = [
- "toml_edit 0.22.24",
+ "toml_edit 0.23.7",
]
[[package]]
@@ -3823,9 +3878,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
[[package]]
name = "proc-macro2"
-version = "1.0.94"
+version = "1.0.103"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
+checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
dependencies = [
"unicode-ident",
]
@@ -3846,20 +3901,38 @@ dependencies = [
"psl-types",
]
+[[package]]
+name = "pxfm"
+version = "0.1.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3cbdf373972bf78df4d3b518d07003938e2c7d1fb5891e55f9cb6df57009d84"
+dependencies = [
+ "num-traits",
+]
+
[[package]]
name = "quick-xml"
-version = "0.32.0"
+version = "0.37.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2"
+checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.38.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89"
dependencies = [
"memchr",
]
[[package]]
name = "quinn"
-version = "0.11.7"
+version = "0.11.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3bd15a6f2967aef83887dcb9fec0014580467e33720d073560cf015a5683012"
+checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
dependencies = [
"bytes",
"cfg_aliases",
@@ -3868,8 +3941,8 @@ dependencies = [
"quinn-udp",
"rustc-hash",
"rustls",
- "socket2",
- "thiserror 2.0.12",
+ "socket2 0.6.1",
+ "thiserror 2.0.17",
"tokio",
"tracing",
"web-time",
@@ -3877,19 +3950,20 @@ dependencies = [
[[package]]
name = "quinn-proto"
-version = "0.11.10"
+version = "0.11.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b820744eb4dc9b57a3398183639c511b5a26d2ed702cedd3febaa1393caa22cc"
+checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
dependencies = [
"bytes",
- "getrandom 0.3.2",
- "rand 0.9.0",
+ "getrandom 0.3.4",
+ "lru-slab",
+ "rand 0.9.2",
"ring",
"rustc-hash",
"rustls",
"rustls-pki-types",
"slab",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tinyvec",
"tracing",
"web-time",
@@ -3897,32 +3971,32 @@ dependencies = [
[[package]]
name = "quinn-udp"
-version = "0.5.10"
+version = "0.5.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944"
+checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
dependencies = [
"cfg_aliases",
"libc",
"once_cell",
- "socket2",
+ "socket2 0.6.1",
"tracing",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
]
[[package]]
name = "quote"
-version = "1.0.40"
+version = "1.0.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1"
dependencies = [
"proc-macro2",
]
[[package]]
name = "r-efi"
-version = "5.2.0"
+version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
name = "rand"
@@ -3951,13 +4025,12 @@ dependencies = [
[[package]]
name = "rand"
-version = "0.9.0"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
dependencies = [
"rand_chacha 0.9.0",
"rand_core 0.9.3",
- "zerocopy",
]
[[package]]
@@ -4005,7 +4078,7 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
]
[[package]]
@@ -4014,7 +4087,7 @@ version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
dependencies = [
- "getrandom 0.3.2",
+ "getrandom 0.3.4",
]
[[package]]
@@ -4049,11 +4122,11 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
[[package]]
name = "redox_syscall"
-version = "0.5.10"
+version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1"
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
]
[[package]]
@@ -4062,70 +4135,75 @@ version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
dependencies = [
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
"libredox",
"thiserror 1.0.69",
]
[[package]]
name = "redox_users"
-version = "0.5.0"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"
+checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
dependencies = [
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
"libredox",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
]
[[package]]
-name = "regex"
-version = "1.11.1"
+name = "ref-cast"
+version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
dependencies = [
- "aho-corasick",
- "memchr",
- "regex-automata 0.4.9",
- "regex-syntax 0.8.5",
+ "ref-cast-impl",
]
[[package]]
-name = "regex-automata"
-version = "0.1.10"
+name = "ref-cast-impl"
+version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
dependencies = [
- "regex-syntax 0.6.29",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.108",
]
[[package]]
-name = "regex-automata"
-version = "0.4.9"
+name = "regex"
+version = "1.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
dependencies = [
"aho-corasick",
"memchr",
- "regex-syntax 0.8.5",
+ "regex-automata",
+ "regex-syntax",
]
[[package]]
-name = "regex-syntax"
-version = "0.6.29"
+name = "regex-automata"
+version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
[[package]]
name = "regex-syntax"
-version = "0.8.5"
+version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
[[package]]
name = "relay"
version = "0.1.1"
-source = "git+https://github.com/CuriousCorrelation/relay.git#7270b956321972269eea7cecdccbb2ae839bd0ff"
+source = "git+https://github.com/CuriousCorrelation/relay.git#ed2329e4ebb71bb984c4705aa950cb9c3f9ff931"
dependencies = [
"bytes",
"curl",
@@ -4153,9 +4231,9 @@ dependencies = [
[[package]]
name = "reqwest"
-version = "0.12.15"
+version = "0.12.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb"
+checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f"
dependencies = [
"async-compression",
"base64 0.22.1",
@@ -4172,26 +4250,23 @@ dependencies = [
"hyper",
"hyper-rustls",
"hyper-util",
- "ipnet",
"js-sys",
"log",
"mime",
- "once_cell",
"percent-encoding",
"pin-project-lite",
"quinn",
"rustls",
- "rustls-pemfile",
"rustls-pki-types",
"serde",
"serde_json",
"serde_urlencoded",
"sync_wrapper",
- "system-configuration",
"tokio",
"tokio-rustls",
"tokio-util",
"tower",
+ "tower-http",
"tower-service",
"url",
"wasm-bindgen",
@@ -4199,27 +4274,26 @@ dependencies = [
"wasm-streams",
"web-sys",
"webpki-roots",
- "windows-registry",
]
[[package]]
name = "rfd"
-version = "0.15.3"
+version = "0.15.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80c844748fdc82aae252ee4594a89b6e7ebef1063de7951545564cbc4e57075d"
+checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed"
dependencies = [
"ashpd",
- "block2 0.6.0",
+ "block2 0.6.2",
"dispatch2",
"glib-sys",
"gobject-sys",
"gtk-sys",
"js-sys",
"log",
- "objc2 0.6.0",
+ "objc2 0.6.3",
"objc2-app-kit",
"objc2-core-foundation",
- "objc2-foundation 0.3.0",
+ "objc2-foundation 0.3.2",
"raw-window-handle 0.6.2",
"wasm-bindgen",
"wasm-bindgen-futures",
@@ -4235,18 +4309,12 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
dependencies = [
"cc",
"cfg-if",
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
"libc",
"untrusted",
"windows-sys 0.52.0",
]
-[[package]]
-name = "rustc-demangle"
-version = "0.1.24"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
-
[[package]]
name = "rustc-hash"
version = "2.1.1"
@@ -4268,7 +4336,7 @@ version = "0.38.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"errno",
"libc",
"linux-raw-sys 0.4.15",
@@ -4277,22 +4345,22 @@ dependencies = [
[[package]]
name = "rustix"
-version = "1.0.3"
+version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96"
+checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"errno",
"libc",
- "linux-raw-sys 0.9.3",
- "windows-sys 0.59.0",
+ "linux-raw-sys 0.11.0",
+ "windows-sys 0.61.2",
]
[[package]]
name = "rustls"
-version = "0.23.25"
+version = "0.23.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "822ee9188ac4ec04a2f0531e55d035fb2de73f18b41a63c70c2712503b6fb13c"
+checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7"
dependencies = [
"once_cell",
"ring",
@@ -4302,29 +4370,21 @@ dependencies = [
"zeroize",
]
-[[package]]
-name = "rustls-pemfile"
-version = "2.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
-dependencies = [
- "rustls-pki-types",
-]
-
[[package]]
name = "rustls-pki-types"
-version = "1.11.0"
+version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c"
+checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a"
dependencies = [
"web-time",
+ "zeroize",
]
[[package]]
name = "rustls-webpki"
-version = "0.103.0"
+version = "0.103.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0aa4eeac2588ffff23e9d7a7e9b3f971c5fb5b7ebc9452745e0c232c64f83b2f"
+checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
dependencies = [
"ring",
"rustls-pki-types",
@@ -4333,9 +4393,9 @@ dependencies = [
[[package]]
name = "rustversion"
-version = "1.0.20"
+version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
[[package]]
name = "ryu"
@@ -4367,6 +4427,30 @@ dependencies = [
"uuid",
]
+[[package]]
+name = "schemars"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f"
+dependencies = [
+ "dyn-clone",
+ "ref-cast",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "schemars"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0"
+dependencies = [
+ "dyn-clone",
+ "ref-cast",
+ "serde",
+ "serde_json",
+]
+
[[package]]
name = "schemars_derive"
version = "0.8.22"
@@ -4376,9 +4460,15 @@ dependencies = [
"proc-macro2",
"quote",
"serde_derive_internals",
- "syn 2.0.100",
+ "syn 2.0.108",
]
+[[package]]
+name = "scoped-tls"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
+
[[package]]
name = "scopeguard"
version = "1.2.0"
@@ -4405,18 +4495,19 @@ dependencies = [
[[package]]
name = "semver"
-version = "1.0.26"
+version = "1.0.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
+checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
dependencies = [
"serde",
+ "serde_core",
]
[[package]]
name = "serde"
-version = "1.0.226"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd"
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
dependencies = [
"serde_core",
"serde_derive",
@@ -4424,33 +4515,34 @@ dependencies = [
[[package]]
name = "serde-untagged"
-version = "0.1.7"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e"
+checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058"
dependencies = [
"erased-serde",
"serde",
+ "serde_core",
"typeid",
]
[[package]]
name = "serde_core"
-version = "1.0.226"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4"
+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.226"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33"
+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -4461,29 +4553,31 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "serde_json"
-version = "1.0.140"
+version = "1.0.145"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
dependencies = [
"itoa",
"memchr",
"ryu",
"serde",
+ "serde_core",
]
[[package]]
name = "serde_path_to_error"
-version = "0.1.17"
+version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a"
+checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"
dependencies = [
"itoa",
"serde",
+ "serde_core",
]
[[package]]
@@ -4494,23 +4588,23 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "serde_spanned"
-version = "0.6.8"
+version = "0.6.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
+checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
dependencies = [
"serde",
]
[[package]]
name = "serde_spanned"
-version = "1.0.2"
+version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5417783452c2be558477e104686f7de5dae53dba813c28435e0e70f82d9b04ee"
+checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392"
dependencies = [
"serde_core",
]
@@ -4529,17 +4623,18 @@ dependencies = [
[[package]]
name = "serde_with"
-version = "3.12.0"
+version = "3.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa"
+checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04"
dependencies = [
"base64 0.22.1",
"chrono",
"hex",
"indexmap 1.9.3",
- "indexmap 2.11.4",
- "serde",
- "serde_derive",
+ "indexmap 2.12.0",
+ "schemars 0.9.0",
+ "schemars 1.0.4",
+ "serde_core",
"serde_json",
"serde_with_macros",
"time",
@@ -4547,14 +4642,14 @@ dependencies = [
[[package]]
name = "serde_with_macros"
-version = "3.12.0"
+version = "3.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e"
+checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955"
dependencies = [
"darling",
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -4576,7 +4671,7 @@ checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -4602,9 +4697,9 @@ dependencies = [
[[package]]
name = "sha2"
-version = "0.10.8"
+version = "0.10.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
dependencies = [
"cfg-if",
"cpufeatures",
@@ -4622,12 +4717,13 @@ dependencies = [
[[package]]
name = "shared_child"
-version = "1.0.1"
+version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c"
+checksum = "1e362d9935bc50f019969e2f9ecd66786612daae13e8f277be7bfb66e8bed3f7"
dependencies = [
"libc",
- "windows-sys 0.59.0",
+ "sigchld",
+ "windows-sys 0.60.2",
]
[[package]]
@@ -4636,11 +4732,32 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+[[package]]
+name = "sigchld"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47106eded3c154e70176fc83df9737335c94ce22f821c32d17ed1db1f83badb1"
+dependencies = [
+ "libc",
+ "os_pipe",
+ "signal-hook",
+]
+
+[[package]]
+name = "signal-hook"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2"
+dependencies = [
+ "libc",
+ "signal-hook-registry",
+]
+
[[package]]
name = "signal-hook-registry"
-version = "1.4.2"
+version = "1.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
+checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b"
dependencies = [
"libc",
]
@@ -4665,29 +4782,36 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
[[package]]
name = "slab"
-version = "0.4.9"
+version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
-dependencies = [
- "autocfg",
-]
+checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
[[package]]
name = "smallvec"
-version = "1.14.0"
+version = "1.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
[[package]]
name = "socket2"
-version = "0.5.8"
+version = "0.5.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8"
+checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
dependencies = [
"libc",
"windows-sys 0.52.0",
]
+[[package]]
+name = "socket2"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
+dependencies = [
+ "libc",
+ "windows-sys 0.60.2",
+]
+
[[package]]
name = "softbuffer"
version = "0.4.6"
@@ -4744,9 +4868,9 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
[[package]]
name = "stable_deref_trait"
-version = "1.2.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
[[package]]
name = "static_assertions"
@@ -4756,9 +4880,9 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]]
name = "string_cache"
-version = "0.8.8"
+version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "938d512196766101d333398efde81bc1f37b00cb42c2f8350e5df639f040bbbe"
+checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f"
dependencies = [
"new_debug_unreachable",
"parking_lot",
@@ -4804,7 +4928,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustversion",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -4837,9 +4961,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.100"
+version = "2.0.108"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
+checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917"
dependencies = [
"proc-macro2",
"quote",
@@ -4857,13 +4981,13 @@ dependencies = [
[[package]]
name = "synstructure"
-version = "0.13.1"
+version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -4872,7 +4996,7 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"core-foundation 0.9.4",
"system-configuration-sys",
]
@@ -4896,19 +5020,19 @@ dependencies = [
"cfg-expr",
"heck 0.5.0",
"pkg-config",
- "toml 0.8.20",
+ "toml 0.8.2",
"version-compare",
]
[[package]]
name = "tao"
-version = "0.34.3"
+version = "0.34.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "959469667dbcea91e5485fc48ba7dd6023face91bb0f1a14681a70f99847c3f7"
+checksum = "f3a753bdc39c07b192151523a3f77cd0394aa75413802c883a0f6f6a0e5ee2e7"
dependencies = [
- "bitflags 2.9.0",
- "block2 0.6.0",
- "core-foundation 0.10.0",
+ "bitflags 2.10.0",
+ "block2 0.6.2",
+ "core-foundation 0.10.1",
"core-graphics 0.24.0",
"crossbeam-channel",
"dispatch",
@@ -4924,9 +5048,9 @@ dependencies = [
"ndk",
"ndk-context",
"ndk-sys",
- "objc2 0.6.0",
+ "objc2 0.6.3",
"objc2-app-kit",
- "objc2-foundation 0.3.0",
+ "objc2-foundation 0.3.2",
"once_cell",
"parking_lot",
"raw-window-handle 0.6.2",
@@ -4948,7 +5072,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -4970,9 +5094,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
[[package]]
name = "tauri"
-version = "2.8.5"
+version = "2.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4d1d3b3dc4c101ac989fd7db77e045cc6d91a25349cd410455cb5c57d510c1c"
+checksum = "8bceb52453e507c505b330afe3398510e87f428ea42b6e76ecb6bd63b15965b5"
dependencies = [
"anyhow",
"bytes",
@@ -4980,7 +5104,7 @@ dependencies = [
"dirs 6.0.0",
"dunce",
"embed_plist",
- "getrandom 0.3.2",
+ "getrandom 0.3.4",
"glob",
"gtk",
"heck 0.5.0",
@@ -4991,9 +5115,9 @@ dependencies = [
"log",
"mime",
"muda",
- "objc2 0.6.0",
+ "objc2 0.6.3",
"objc2-app-kit",
- "objc2-foundation 0.3.0",
+ "objc2-foundation 0.3.2",
"objc2-ui-kit",
"objc2-web-kit",
"percent-encoding",
@@ -5010,11 +5134,10 @@ dependencies = [
"tauri-runtime",
"tauri-runtime-wry",
"tauri-utils",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tokio",
"tray-icon",
"url",
- "urlpattern",
"webkit2gtk",
"webview2-com",
"window-vibrancy",
@@ -5023,9 +5146,9 @@ dependencies = [
[[package]]
name = "tauri-build"
-version = "2.4.1"
+version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c432ccc9ff661803dab74c6cd78de11026a578a9307610bbc39d3c55be7943f"
+checksum = "a924b6c50fe83193f0f8b14072afa7c25b7a72752a2a73d9549b463f5fe91a38"
dependencies = [
"anyhow",
"cargo_toml",
@@ -5033,37 +5156,37 @@ dependencies = [
"glob",
"heck 0.5.0",
"json-patch",
- "schemars",
+ "schemars 0.8.22",
"semver",
"serde",
"serde_json",
"tauri-utils",
"tauri-winres",
- "toml 0.9.7",
+ "toml 0.9.8",
"walkdir",
]
[[package]]
name = "tauri-codegen"
-version = "2.4.0"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ab3a62cf2e6253936a8b267c2e95839674e7439f104fa96ad0025e149d54d8a"
+checksum = "6c1fe64c74cc40f90848281a90058a6db931eb400b60205840e09801ee30f190"
dependencies = [
"base64 0.22.1",
"brotli",
"ico",
"json-patch",
"plist",
- "png",
+ "png 0.17.16",
"proc-macro2",
"quote",
"semver",
"serde",
"serde_json",
"sha2",
- "syn 2.0.100",
+ "syn 2.0.108",
"tauri-utils",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"time",
"url",
"uuid",
@@ -5072,54 +5195,54 @@ dependencies = [
[[package]]
name = "tauri-macros"
-version = "2.4.0"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4368ea8094e7045217edb690f493b55b30caf9f3e61f79b4c24b6db91f07995e"
+checksum = "260c5d2eb036b76206b9fca20b7be3614cfd21046c5396f7959e0e64a4b07f2f"
dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
"tauri-codegen",
"tauri-utils",
]
[[package]]
name = "tauri-plugin"
-version = "2.4.0"
+version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9946a3cede302eac0c6eb6c6070ac47b1768e326092d32efbb91f21ed58d978f"
+checksum = "076c78a474a7247c90cad0b6e87e593c4c620ed4efdb79cbe0214f0021f6c39d"
dependencies = [
"anyhow",
"glob",
"plist",
- "schemars",
+ "schemars 0.8.22",
"serde",
"serde_json",
"tauri-utils",
- "toml 0.9.7",
+ "toml 0.9.8",
"walkdir",
]
[[package]]
name = "tauri-plugin-autostart"
-version = "2.2.0"
+version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9c13f843e5e5df3eed270fc42b02923cc1a6b5c7e56b0f3ac1d858ab2c8b5fb"
+checksum = "459383cebc193cdd03d1ba4acc40f2c408a7abce419d64bdcd2d745bc2886f70"
dependencies = [
"auto-launch",
"serde",
"serde_json",
"tauri",
"tauri-plugin",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
]
[[package]]
name = "tauri-plugin-dialog"
-version = "2.2.0"
+version = "2.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b59fd750551b1066744ab956a1cd6b1ea3e1b3763b0b9153ac27a044d596426"
+checksum = "313f8138692ddc4a2127c4c9607d616a46f5c042e77b3722450866da0aad2f19"
dependencies = [
"log",
"raw-window-handle 0.6.2",
@@ -5129,50 +5252,51 @@ dependencies = [
"tauri",
"tauri-plugin",
"tauri-plugin-fs",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"url",
]
[[package]]
name = "tauri-plugin-fs"
-version = "2.2.0"
+version = "2.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1a1edf18000f02903a7c2e5997fb89aca455ecbc0acc15c6535afbb883be223"
+checksum = "47df422695255ecbe7bac7012440eddaeefd026656171eac9559f5243d3230d9"
dependencies = [
"anyhow",
"dunce",
"glob",
"percent-encoding",
- "schemars",
+ "schemars 0.8.22",
"serde",
"serde_json",
"serde_repr",
"tauri",
"tauri-plugin",
"tauri-utils",
- "thiserror 2.0.12",
- "toml 0.8.20",
+ "thiserror 2.0.17",
+ "toml 0.9.8",
"url",
- "uuid",
]
[[package]]
name = "tauri-plugin-http"
-version = "2.4.2"
+version = "2.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "696ef548befeee6c6c17b80ef73e7c41205b6c2204e87ef78ccc231212389a5c"
+checksum = "c00685aceab12643cf024f712ab0448ba8fcadf86f2391d49d2e5aa732aacc70"
dependencies = [
+ "bytes",
+ "cookie_store",
"data-url",
"http",
"regex",
"reqwest",
- "schemars",
+ "schemars 0.8.22",
"serde",
"serde_json",
"tauri",
"tauri-plugin",
"tauri-plugin-fs",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tokio",
"url",
"urlpattern",
@@ -5180,61 +5304,61 @@ dependencies = [
[[package]]
name = "tauri-plugin-shell"
-version = "2.3.1"
+version = "2.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54777d0c0d8add34eea3ced84378619ef5b97996bd967d3038c668feefd21071"
+checksum = "c374b6db45f2a8a304f0273a15080d98c70cde86178855fc24653ba657a1144c"
dependencies = [
"encoding_rs",
"log",
"open",
"os_pipe",
"regex",
- "schemars",
+ "schemars 0.8.22",
"serde",
"serde_json",
"shared_child",
"tauri",
"tauri-plugin",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tokio",
]
[[package]]
name = "tauri-plugin-single-instance"
-version = "2.2.2"
+version = "2.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25bbc73eed15bba8ad290a52614f2711280df4bf575b36ce78f64367074b90b7"
+checksum = "dd707f8c86b4e3004e2c141fa24351f1909ba40ce1b8437e30d5ed5277dd3710"
dependencies = [
"serde",
"serde_json",
"tauri",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tracing",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
"zbus",
]
[[package]]
name = "tauri-plugin-store"
-version = "2.2.0"
+version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c0c08fae6995909f5e9a0da6038273b750221319f2c0f3b526d6de1cde21505"
+checksum = "59a77036340a97eb5bbe1b3209c31e5f27f75e6f92a52fd9dd4b211ef08bf310"
dependencies = [
"dunce",
"serde",
"serde_json",
"tauri",
"tauri-plugin",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tokio",
"tracing",
]
[[package]]
name = "tauri-plugin-updater"
-version = "2.6.1"
+version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a31bfcfb4a8318008d2108ccfba439d8263cf48867baabf372cb0e9f24771896"
+checksum = "27cbc31740f4d507712550694749572ec0e43bdd66992db7599b89fbfd6b167b"
dependencies = [
"base64 0.22.1",
"dirs 6.0.0",
@@ -5254,33 +5378,33 @@ dependencies = [
"tauri",
"tauri-plugin",
"tempfile",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"time",
"tokio",
"url",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
"zip",
]
[[package]]
name = "tauri-runtime"
-version = "2.8.0"
+version = "2.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4cfc9ad45b487d3fded5a4731a567872a4812e9552e3964161b08edabf93846"
+checksum = "9368f09358496f2229313fccb37682ad116b7f46fa76981efe116994a0628926"
dependencies = [
"cookie",
"dpi",
"gtk",
"http",
"jni",
- "objc2 0.6.0",
+ "objc2 0.6.3",
"objc2-ui-kit",
"objc2-web-kit",
"raw-window-handle 0.6.2",
"serde",
"serde_json",
"tauri-utils",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"url",
"webkit2gtk",
"webview2-com",
@@ -5289,17 +5413,17 @@ dependencies = [
[[package]]
name = "tauri-runtime-wry"
-version = "2.8.1"
+version = "2.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1fe9d48bd122ff002064e88cfcd7027090d789c4302714e68fcccba0f4b7807"
+checksum = "929f5df216f5c02a9e894554401bcdab6eec3e39ec6a4a7731c7067fc8688a93"
dependencies = [
"gtk",
"http",
"jni",
"log",
- "objc2 0.6.0",
+ "objc2 0.6.3",
"objc2-app-kit",
- "objc2-foundation 0.3.0",
+ "objc2-foundation 0.3.2",
"once_cell",
"percent-encoding",
"raw-window-handle 0.6.2",
@@ -5316,9 +5440,9 @@ dependencies = [
[[package]]
name = "tauri-utils"
-version = "2.7.0"
+version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41a3852fdf9a4f8fbeaa63dc3e9a85284dd6ef7200751f0bd66ceee30c93f212"
+checksum = "f6b8bbe426abdbf52d050e52ed693130dbd68375b9ad82a3fb17efb4c8d85673"
dependencies = [
"anyhow",
"brotli",
@@ -5337,15 +5461,15 @@ dependencies = [
"proc-macro2",
"quote",
"regex",
- "schemars",
+ "schemars 0.8.22",
"semver",
"serde",
"serde-untagged",
"serde_json",
"serde_with",
"swift-rs",
- "thiserror 2.0.12",
- "toml 0.9.7",
+ "thiserror 2.0.17",
+ "toml 0.9.8",
"url",
"urlpattern",
"uuid",
@@ -5354,25 +5478,25 @@ dependencies = [
[[package]]
name = "tauri-winres"
-version = "0.3.0"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56eaa45f707bedf34d19312c26d350bc0f3c59a47e58e8adbeecdc850d2c13a0"
+checksum = "fd21509dd1fa9bd355dc29894a6ff10635880732396aa38c0066c1e6c1ab8074"
dependencies = [
"embed-resource",
- "toml 0.8.20",
+ "toml 0.9.8",
]
[[package]]
name = "tempfile"
-version = "3.19.0"
+version = "3.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "488960f40a3fd53d72c2a29a58722561dee8afdd175bd88e3db4677d7b2ba600"
+checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
dependencies = [
"fastrand",
- "getrandom 0.3.2",
+ "getrandom 0.3.4",
"once_cell",
- "rustix 1.0.3",
- "windows-sys 0.59.0",
+ "rustix 1.1.2",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -5397,11 +5521,11 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "2.0.12"
+version = "2.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
+checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
dependencies = [
- "thiserror-impl 2.0.12",
+ "thiserror-impl 2.0.17",
]
[[package]]
@@ -5412,35 +5536,34 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "thiserror-impl"
-version = "2.0.12"
+version = "2.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
+checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "thread_local"
-version = "1.1.8"
+version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
dependencies = [
"cfg-if",
- "once_cell",
]
[[package]]
name = "time"
-version = "0.3.40"
+version = "0.3.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d9c75b47bdff86fa3334a3db91356b8d7d86a9b839dab7d0bdc5c3d3a077618"
+checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
dependencies = [
"deranged",
"itoa",
@@ -5453,15 +5576,15 @@ dependencies = [
[[package]]
name = "time-core"
-version = "0.1.4"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c"
+checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
[[package]]
name = "time-macros"
-version = "0.2.21"
+version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29aa485584182073ed57fd5004aa09c371f021325014694e432313345865fd04"
+checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
dependencies = [
"num-conv",
"time-core",
@@ -5469,9 +5592,9 @@ dependencies = [
[[package]]
name = "tinystr"
-version = "0.7.6"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
+checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
dependencies = [
"displaydoc",
"zerovec",
@@ -5479,9 +5602,9 @@ dependencies = [
[[package]]
name = "tinyvec"
-version = "1.9.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71"
+checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
dependencies = [
"tinyvec_macros",
]
@@ -5494,39 +5617,38 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
-version = "1.44.1"
+version = "1.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a"
+checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
dependencies = [
- "backtrace",
"bytes",
"libc",
"mio",
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
- "socket2",
+ "socket2 0.6.1",
"tokio-macros",
"tracing",
- "windows-sys 0.52.0",
+ "windows-sys 0.61.2",
]
[[package]]
name = "tokio-macros"
-version = "2.5.0"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
+checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "tokio-rustls"
-version = "0.26.2"
+version = "0.26.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
+checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
dependencies = [
"rustls",
"tokio",
@@ -5534,9 +5656,9 @@ dependencies = [
[[package]]
name = "tokio-util"
-version = "0.7.14"
+version = "0.7.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034"
+checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5"
dependencies = [
"bytes",
"futures-core",
@@ -5547,26 +5669,26 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.8.20"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148"
+checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d"
dependencies = [
"serde",
- "serde_spanned 0.6.8",
- "toml_datetime 0.6.8",
- "toml_edit 0.22.24",
+ "serde_spanned 0.6.9",
+ "toml_datetime 0.6.3",
+ "toml_edit 0.20.2",
]
[[package]]
name = "toml"
-version = "0.9.7"
+version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0"
+checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8"
dependencies = [
- "indexmap 2.11.4",
+ "indexmap 2.12.0",
"serde_core",
- "serde_spanned 1.0.2",
- "toml_datetime 0.7.2",
+ "serde_spanned 1.0.3",
+ "toml_datetime 0.7.3",
"toml_parser",
"toml_writer",
"winnow 0.7.13",
@@ -5574,18 +5696,18 @@ dependencies = [
[[package]]
name = "toml_datetime"
-version = "0.6.8"
+version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
+checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
dependencies = [
"serde",
]
[[package]]
name = "toml_datetime"
-version = "0.7.2"
+version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1"
+checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533"
dependencies = [
"serde_core",
]
@@ -5596,49 +5718,50 @@ version = "0.19.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [
- "indexmap 2.11.4",
- "toml_datetime 0.6.8",
+ "indexmap 2.12.0",
+ "toml_datetime 0.6.3",
"winnow 0.5.40",
]
[[package]]
name = "toml_edit"
-version = "0.20.7"
+version = "0.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
+checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
dependencies = [
- "indexmap 2.11.4",
- "toml_datetime 0.6.8",
+ "indexmap 2.12.0",
+ "serde",
+ "serde_spanned 0.6.9",
+ "toml_datetime 0.6.3",
"winnow 0.5.40",
]
[[package]]
name = "toml_edit"
-version = "0.22.24"
+version = "0.23.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474"
+checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d"
dependencies = [
- "indexmap 2.11.4",
- "serde",
- "serde_spanned 0.6.8",
- "toml_datetime 0.6.8",
+ "indexmap 2.12.0",
+ "toml_datetime 0.7.3",
+ "toml_parser",
"winnow 0.7.13",
]
[[package]]
name = "toml_parser"
-version = "1.0.3"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627"
+checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e"
dependencies = [
"winnow 0.7.13",
]
[[package]]
name = "toml_writer"
-version = "1.0.3"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d163a63c116ce562a22cda521fcc4d79152e7aba014456fb5eb442f6d6a10109"
+checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
[[package]]
name = "tower"
@@ -5658,14 +5781,18 @@ dependencies = [
[[package]]
name = "tower-http"
-version = "0.6.2"
+version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697"
+checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"bytes",
+ "futures-util",
"http",
+ "http-body",
+ "iri-string",
"pin-project-lite",
+ "tower",
"tower-layer",
"tower-service",
]
@@ -5708,20 +5835,20 @@ dependencies = [
[[package]]
name = "tracing-attributes"
-version = "0.1.28"
+version = "0.1.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
+checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "tracing-core"
-version = "0.1.33"
+version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
+checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
dependencies = [
"once_cell",
"valuable",
@@ -5750,14 +5877,14 @@ dependencies = [
[[package]]
name = "tracing-subscriber"
-version = "0.3.19"
+version = "0.3.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
+checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5"
dependencies = [
"matchers",
"nu-ansi-term",
"once_cell",
- "regex",
+ "regex-automata",
"serde",
"serde_json",
"sharded-slab",
@@ -5772,24 +5899,24 @@ dependencies = [
[[package]]
name = "tray-icon"
-version = "0.21.1"
+version = "0.21.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0d92153331e7d02ec09137538996a7786fe679c629c279e82a6be762b7e6fe2"
+checksum = "e3d5572781bee8e3f994d7467084e1b1fd7a93ce66bd480f8156ba89dee55a2b"
dependencies = [
"crossbeam-channel",
"dirs 6.0.0",
"libappindicator",
"muda",
- "objc2 0.6.0",
+ "objc2 0.6.3",
"objc2-app-kit",
"objc2-core-foundation",
"objc2-core-graphics",
- "objc2-foundation 0.3.0",
+ "objc2-foundation 0.3.2",
"once_cell",
- "png",
+ "png 0.17.16",
"serde",
- "thiserror 2.0.12",
- "windows-sys 0.59.0",
+ "thiserror 2.0.17",
+ "windows-sys 0.60.2",
]
[[package]]
@@ -5806,9 +5933,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
[[package]]
name = "typenum"
-version = "1.18.0"
+version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
+checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
[[package]]
name = "uds_windows"
@@ -5864,9 +5991,9 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.18"
+version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
[[package]]
name = "unicode-segmentation"
@@ -5892,9 +6019,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
[[package]]
name = "url"
-version = "2.5.4"
+version = "2.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
+checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
dependencies = [
"form_urlencoded",
"idna",
@@ -5935,12 +6062,6 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
-[[package]]
-name = "utf16_iter"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
-
[[package]]
name = "utf8_iter"
version = "1.0.4"
@@ -5955,13 +6076,15 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "uuid"
-version = "1.16.0"
+version = "1.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9"
+checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2"
dependencies = [
- "getrandom 0.3.2",
- "rand 0.9.0",
+ "getrandom 0.3.4",
+ "js-sys",
+ "rand 0.9.2",
"serde",
+ "wasm-bindgen",
]
[[package]]
@@ -6045,50 +6168,37 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
[[package]]
name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
+version = "0.11.1+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
[[package]]
-name = "wasi"
-version = "0.14.2+wasi-0.2.4"
+name = "wasip2"
+version = "1.0.1+wasi-0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
dependencies = [
- "wit-bindgen-rt",
+ "wit-bindgen",
]
[[package]]
name = "wasm-bindgen"
-version = "0.2.100"
+version = "0.2.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60"
dependencies = [
"cfg-if",
"once_cell",
"rustversion",
"wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.100"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
-dependencies = [
- "bumpalo",
- "log",
- "proc-macro2",
- "quote",
- "syn 2.0.100",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.50"
+version = "0.4.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
+checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0"
dependencies = [
"cfg-if",
"js-sys",
@@ -6099,9 +6209,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.100"
+version = "0.2.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -6109,22 +6219,22 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.100"
+version = "0.2.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc"
dependencies = [
+ "bumpalo",
"proc-macro2",
"quote",
- "syn 2.0.100",
- "wasm-bindgen-backend",
+ "syn 2.0.108",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.100"
+version = "0.2.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76"
dependencies = [
"unicode-ident",
]
@@ -6142,11 +6252,71 @@ dependencies = [
"web-sys",
]
+[[package]]
+name = "wayland-backend"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35"
+dependencies = [
+ "cc",
+ "downcast-rs",
+ "rustix 1.1.2",
+ "scoped-tls",
+ "smallvec",
+ "wayland-sys",
+]
+
+[[package]]
+name = "wayland-client"
+version = "0.31.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d"
+dependencies = [
+ "bitflags 2.10.0",
+ "rustix 1.1.2",
+ "wayland-backend",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-protocols"
+version = "0.32.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901"
+dependencies = [
+ "bitflags 2.10.0",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-scanner"
+version = "0.31.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3"
+dependencies = [
+ "proc-macro2",
+ "quick-xml 0.37.5",
+ "quote",
+]
+
+[[package]]
+name = "wayland-sys"
+version = "0.31.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142"
+dependencies = [
+ "dlib",
+ "log",
+ "pkg-config",
+]
+
[[package]]
name = "web-sys"
-version = "0.3.77"
+version = "0.3.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -6208,9 +6378,9 @@ dependencies = [
[[package]]
name = "webpki-roots"
-version = "0.26.8"
+version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9"
+checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8"
dependencies = [
"rustls-pki-types",
]
@@ -6237,7 +6407,7 @@ checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -6246,16 +6416,16 @@ version = "0.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c"
dependencies = [
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"windows",
"windows-core 0.61.2",
]
[[package]]
name = "wfd"
-version = "0.1.7"
+version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e713040b67aae5bf1a0ae3e1ebba8cc29ab2b90da9aa1bff6e09031a8a41d7a8"
+checksum = "0c17bbfb155305bcb79144f568c3b796275ba4db5d5856597bc85acefe29b819"
dependencies = [
"libc",
"winapi",
@@ -6291,11 +6461,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.9"
+version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -6310,10 +6480,10 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c"
dependencies = [
- "objc2 0.6.0",
+ "objc2 0.6.3",
"objc2-app-kit",
"objc2-core-foundation",
- "objc2-foundation 0.3.0",
+ "objc2-foundation 0.3.2",
"raw-window-handle 0.6.2",
"windows-sys 0.59.0",
"windows-version",
@@ -6328,7 +6498,7 @@ dependencies = [
"windows-collections",
"windows-core 0.61.2",
"windows-future",
- "windows-link",
+ "windows-link 0.1.3",
"windows-numerics",
]
@@ -6343,24 +6513,28 @@ dependencies = [
[[package]]
name = "windows-core"
-version = "0.52.0"
+version = "0.61.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
dependencies = [
- "windows-targets 0.52.6",
+ "windows-implement",
+ "windows-interface",
+ "windows-link 0.1.3",
+ "windows-result 0.3.4",
+ "windows-strings 0.4.2",
]
[[package]]
name = "windows-core"
-version = "0.61.2"
+version = "0.62.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
+checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
dependencies = [
"windows-implement",
"windows-interface",
- "windows-link",
- "windows-result",
- "windows-strings 0.4.2",
+ "windows-link 0.2.1",
+ "windows-result 0.4.1",
+ "windows-strings 0.5.1",
]
[[package]]
@@ -6370,30 +6544,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
dependencies = [
"windows-core 0.61.2",
- "windows-link",
+ "windows-link 0.1.3",
"windows-threading",
]
[[package]]
name = "windows-implement"
-version = "0.60.0"
+version = "0.60.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
+checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "windows-interface"
-version = "0.59.1"
+version = "0.59.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
+checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -6402,6 +6576,12 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
+[[package]]
+name = "windows-link"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
+
[[package]]
name = "windows-numerics"
version = "0.2.0"
@@ -6409,18 +6589,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
dependencies = [
"windows-core 0.61.2",
- "windows-link",
+ "windows-link 0.1.3",
]
[[package]]
name = "windows-registry"
-version = "0.4.0"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3"
+checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
dependencies = [
- "windows-result",
- "windows-strings 0.3.1",
- "windows-targets 0.53.3",
+ "windows-link 0.1.3",
+ "windows-result 0.3.4",
+ "windows-strings 0.4.2",
]
[[package]]
@@ -6429,16 +6609,16 @@ version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
dependencies = [
- "windows-link",
+ "windows-link 0.1.3",
]
[[package]]
-name = "windows-strings"
-version = "0.3.1"
+name = "windows-result"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319"
+checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
dependencies = [
- "windows-link",
+ "windows-link 0.2.1",
]
[[package]]
@@ -6447,7 +6627,16 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
dependencies = [
- "windows-link",
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
+dependencies = [
+ "windows-link 0.2.1",
]
[[package]]
@@ -6492,7 +6681,16 @@ version = "0.60.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
dependencies = [
- "windows-targets 0.53.3",
+ "windows-targets 0.53.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+dependencies = [
+ "windows-link 0.2.1",
]
[[package]]
@@ -6543,19 +6741,19 @@ dependencies = [
[[package]]
name = "windows-targets"
-version = "0.53.3"
+version = "0.53.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91"
+checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
dependencies = [
- "windows-link",
- "windows_aarch64_gnullvm 0.53.0",
- "windows_aarch64_msvc 0.53.0",
- "windows_i686_gnu 0.53.0",
- "windows_i686_gnullvm 0.53.0",
- "windows_i686_msvc 0.53.0",
- "windows_x86_64_gnu 0.53.0",
- "windows_x86_64_gnullvm 0.53.0",
- "windows_x86_64_msvc 0.53.0",
+ "windows-link 0.2.1",
+ "windows_aarch64_gnullvm 0.53.1",
+ "windows_aarch64_msvc 0.53.1",
+ "windows_i686_gnu 0.53.1",
+ "windows_i686_gnullvm 0.53.1",
+ "windows_i686_msvc 0.53.1",
+ "windows_x86_64_gnu 0.53.1",
+ "windows_x86_64_gnullvm 0.53.1",
+ "windows_x86_64_msvc 0.53.1",
]
[[package]]
@@ -6564,16 +6762,16 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
dependencies = [
- "windows-link",
+ "windows-link 0.1.3",
]
[[package]]
name = "windows-version"
-version = "0.1.4"
+version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e04a5c6627e310a23ad2358483286c7df260c964eb2d003d8efd6d0f4e79265c"
+checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631"
dependencies = [
- "windows-link",
+ "windows-link 0.2.1",
]
[[package]]
@@ -6596,9 +6794,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_gnullvm"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
+checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
[[package]]
name = "windows_aarch64_msvc"
@@ -6620,9 +6818,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_aarch64_msvc"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
+checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
[[package]]
name = "windows_i686_gnu"
@@ -6644,9 +6842,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnu"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
+checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
[[package]]
name = "windows_i686_gnullvm"
@@ -6656,9 +6854,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_gnullvm"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
+checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
[[package]]
name = "windows_i686_msvc"
@@ -6680,9 +6878,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_i686_msvc"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
+checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
[[package]]
name = "windows_x86_64_gnu"
@@ -6704,9 +6902,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
+checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
[[package]]
name = "windows_x86_64_gnullvm"
@@ -6728,9 +6926,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_gnullvm"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
+checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
[[package]]
name = "windows_x86_64_msvc"
@@ -6752,9 +6950,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.53.0"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
+checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
[[package]]
name = "winnow"
@@ -6794,34 +6992,35 @@ dependencies = [
]
[[package]]
-name = "wit-bindgen-rt"
-version = "0.39.0"
+name = "winreg"
+version = "0.55.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
+checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97"
dependencies = [
- "bitflags 2.9.0",
+ "cfg-if",
+ "windows-sys 0.59.0",
]
[[package]]
-name = "write16"
-version = "1.0.0"
+name = "wit-bindgen"
+version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
+checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
[[package]]
name = "writeable"
-version = "0.5.5"
+version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
+checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
[[package]]
name = "wry"
-version = "0.53.3"
+version = "0.53.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31f0e9642a0d061f6236c54ccae64c2722a7879ad4ec7dff59bd376d446d8e90"
+checksum = "728b7d4c8ec8d81cab295e0b5b8a4c263c0d41a785fb8f8c4df284e5411140a2"
dependencies = [
"base64 0.22.1",
- "block2 0.6.0",
+ "block2 0.6.2",
"cookie",
"crossbeam-channel",
"dirs 6.0.0",
@@ -6836,10 +7035,10 @@ dependencies = [
"kuchikiki",
"libc",
"ndk",
- "objc2 0.6.0",
+ "objc2 0.6.3",
"objc2-app-kit",
"objc2-core-foundation",
- "objc2-foundation 0.3.0",
+ "objc2-foundation 0.3.2",
"objc2-ui-kit",
"objc2-web-kit",
"once_cell",
@@ -6848,7 +7047,7 @@ dependencies = [
"sha2",
"soup3",
"tao-macros",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"url",
"webkit2gtk",
"webkit2gtk-sys",
@@ -6894,31 +7093,20 @@ dependencies = [
[[package]]
name = "xattr"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e"
-dependencies = [
- "libc",
- "rustix 1.0.3",
-]
-
-[[package]]
-name = "xdg-home"
-version = "1.3.0"
+version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6"
+checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156"
dependencies = [
"libc",
- "windows-sys 0.59.0",
+ "rustix 1.1.2",
]
[[package]]
name = "yoke"
-version = "0.7.5"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40"
+checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
dependencies = [
- "serde",
"stable_deref_trait",
"yoke-derive",
"zerofrom",
@@ -6926,25 +7114,24 @@ dependencies = [
[[package]]
name = "yoke-derive"
-version = "0.7.5"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
+checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
"synstructure",
]
[[package]]
name = "zbus"
-version = "5.5.0"
+version = "5.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59c333f648ea1b647bc95dc1d34807c8e25ed7a6feff3394034dc4776054b236"
+checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91"
dependencies = [
"async-broadcast",
"async-executor",
- "async-fs",
"async-io",
"async-lock",
"async-process",
@@ -6961,13 +7148,12 @@ dependencies = [
"ordered-stream",
"serde",
"serde_repr",
- "static_assertions",
"tokio",
"tracing",
"uds_windows",
- "windows-sys 0.59.0",
+ "uuid",
+ "windows-sys 0.61.2",
"winnow 0.7.13",
- "xdg-home",
"zbus_macros",
"zbus_names",
"zvariant",
@@ -6975,14 +7161,14 @@ dependencies = [
[[package]]
name = "zbus_macros"
-version = "5.5.0"
+version = "5.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f325ad10eb0d0a3eb060203494c3b7ec3162a01a59db75d2deee100339709fc0"
+checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314"
dependencies = [
- "proc-macro-crate 3.3.0",
+ "proc-macro-crate 3.4.0",
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
"zbus_names",
"zvariant",
"zvariant_utils",
@@ -7002,22 +7188,22 @@ dependencies = [
[[package]]
name = "zerocopy"
-version = "0.8.23"
+version = "0.8.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6"
+checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.8.23"
+version = "0.8.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154"
+checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
@@ -7037,15 +7223,15 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
"synstructure",
]
[[package]]
name = "zeroize"
-version = "1.8.1"
+version = "1.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
dependencies = [
"zeroize_derive",
]
@@ -7058,14 +7244,25 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
+]
+
+[[package]]
+name = "zerotrie"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
]
[[package]]
name = "zerovec"
-version = "0.10.4"
+version = "0.11.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
+checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
dependencies = [
"yoke",
"zerofrom",
@@ -7074,40 +7271,36 @@ dependencies = [
[[package]]
name = "zerovec-derive"
-version = "0.10.3"
+version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
+checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
]
[[package]]
name = "zip"
-version = "2.4.2"
+version = "4.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50"
+checksum = "caa8cd6af31c3b31c6631b8f483848b91589021b28fffe50adada48d4f4d2ed1"
dependencies = [
"arbitrary",
"crc32fast",
- "crossbeam-utils",
- "displaydoc",
- "indexmap 2.11.4",
+ "indexmap 2.12.0",
"memchr",
- "thiserror 2.0.12",
]
[[package]]
name = "zvariant"
-version = "5.4.0"
+version = "5.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2df9ee044893fcffbdc25de30546edef3e32341466811ca18421e3cd6c5a3ac"
+checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c"
dependencies = [
"endi",
"enumflags2",
"serde",
- "static_assertions",
"url",
"winnow 0.7.13",
"zvariant_derive",
@@ -7116,27 +7309,26 @@ dependencies = [
[[package]]
name = "zvariant_derive"
-version = "5.4.0"
+version = "5.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74170caa85b8b84cc4935f2d56a57c7a15ea6185ccdd7eadb57e6edd90f94b2f"
+checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006"
dependencies = [
- "proc-macro-crate 3.3.0",
+ "proc-macro-crate 3.4.0",
"proc-macro2",
"quote",
- "syn 2.0.100",
+ "syn 2.0.108",
"zvariant_utils",
]
[[package]]
name = "zvariant_utils"
-version = "3.2.0"
+version = "3.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34"
+checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599"
dependencies = [
"proc-macro2",
"quote",
"serde",
- "static_assertions",
- "syn 2.0.100",
+ "syn 2.0.108",
"winnow 0.7.13",
]
diff --git a/packages/hoppscotch-agent/src-tauri/Cargo.toml b/packages/hoppscotch-agent/src-tauri/Cargo.toml
index 9e35d09075e..9518ddbf6a4 100644
--- a/packages/hoppscotch-agent/src-tauri/Cargo.toml
+++ b/packages/hoppscotch-agent/src-tauri/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "hoppscotch-agent"
-version = "0.1.14"
+version = "0.1.15"
description = "A cross-platform HTTP request agent for Hoppscotch for advanced request handling including custom headers, certificates, proxies, and local system integration."
authors = ["AndrewBastin", "CuriousCorrelation"]
edition = "2021"
diff --git a/packages/hoppscotch-agent/src-tauri/tauri.conf.json b/packages/hoppscotch-agent/src-tauri/tauri.conf.json
index 7dea33109bc..1cf24c6f2c8 100644
--- a/packages/hoppscotch-agent/src-tauri/tauri.conf.json
+++ b/packages/hoppscotch-agent/src-tauri/tauri.conf.json
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2.0.0-rc",
"productName": "Hoppscotch Agent",
- "version": "0.1.14",
+ "version": "0.1.15",
"identifier": "io.hoppscotch.agent",
"build": {
"beforeDevCommand": "pnpm dev",
diff --git a/packages/hoppscotch-agent/src-tauri/tauri.portable.conf.json b/packages/hoppscotch-agent/src-tauri/tauri.portable.conf.json
index 804f1465595..72f604a8018 100644
--- a/packages/hoppscotch-agent/src-tauri/tauri.portable.conf.json
+++ b/packages/hoppscotch-agent/src-tauri/tauri.portable.conf.json
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2.0.0-rc",
"productName": "Hoppscotch Agent Portable",
- "version": "0.1.14",
+ "version": "0.1.15",
"identifier": "io.hoppscotch.agent",
"build": {
"beforeDevCommand": "pnpm dev",
diff --git a/packages/hoppscotch-backend/backend.Caddyfile b/packages/hoppscotch-backend/backend.Caddyfile
index 523516b8b5a..4c6599c4359 100644
--- a/packages/hoppscotch-backend/backend.Caddyfile
+++ b/packages/hoppscotch-backend/backend.Caddyfile
@@ -4,5 +4,16 @@
}
:80 :3170 {
- reverse_proxy localhost:8080
+ @mock {
+ header_regexp host Host ^[^.]+\.mock\..*$
+ }
+
+ handle @mock {
+ rewrite * /mock{uri}
+ reverse_proxy localhost:8080
+ }
+
+ handle {
+ reverse_proxy localhost:8080
+ }
}
diff --git a/packages/hoppscotch-backend/package.json b/packages/hoppscotch-backend/package.json
index ba40830fa78..0dcb3d57f4b 100644
--- a/packages/hoppscotch-backend/package.json
+++ b/packages/hoppscotch-backend/package.json
@@ -1,6 +1,6 @@
{
"name": "hoppscotch-backend",
- "version": "2025.9.2",
+ "version": "2025.10.0",
"description": "",
"author": "",
"private": true,
@@ -31,20 +31,21 @@
},
"dependencies": {
"@apollo/server": "4.12.1",
+ "@as-integrations/express5": "1.1.2",
"@nestjs-modules/mailer": "2.0.2",
- "@nestjs/apollo": "13.1.0",
+ "@nestjs/apollo": "13.2.1",
"@nestjs/common": "11.1.6",
"@nestjs/config": "4.0.2",
"@nestjs/core": "11.1.6",
- "@nestjs/graphql": "13.1.0",
- "@nestjs/jwt": "11.0.0",
+ "@nestjs/graphql": "13.2.0",
+ "@nestjs/jwt": "11.0.1",
"@nestjs/passport": "11.0.0",
"@nestjs/platform-express": "11.1.6",
"@nestjs/schedule": "6.0.1",
- "@nestjs/swagger": "11.2.0",
+ "@nestjs/swagger": "11.2.1",
"@nestjs/terminus": "11.0.0",
"@nestjs/throttler": "6.4.0",
- "@prisma/client": "6.16.2",
+ "@prisma/client": "6.17.1",
"argon2": "0.44.0",
"bcrypt": "6.0.0",
"class-transformer": "0.5.1",
@@ -61,54 +62,54 @@
"handlebars": "4.7.8",
"io-ts": "2.2.22",
"morgan": "1.10.1",
- "nodemailer": "7.0.6",
+ "nodemailer": "7.0.9",
"passport": "0.7.0",
"passport-github2": "0.1.12",
"passport-google-oauth20": "2.0.0",
"passport-jwt": "4.0.1",
"passport-local": "1.0.0",
"passport-microsoft": "2.1.0",
- "posthog-node": "5.8.8",
- "prisma": "6.16.2",
+ "posthog-node": "5.10.0",
+ "prisma": "6.17.1",
"reflect-metadata": "0.2.2",
"rimraf": "6.0.1",
"rxjs": "7.8.2"
},
"devDependencies": {
"@eslint/eslintrc": "3.3.1",
- "@eslint/js": "9.36.0",
+ "@eslint/js": "9.37.0",
"@nestjs/cli": "11.0.10",
- "@nestjs/schematics": "11.0.7",
+ "@nestjs/schematics": "11.0.9",
"@nestjs/testing": "11.1.6",
"@relmify/jest-fp-ts": "2.1.1",
"@types/bcrypt": "6.0.0",
"@types/cookie-parser": "1.4.9",
"@types/express": "5.0.3",
"@types/jest": "30.0.0",
- "@types/node": "24.5.2",
- "@types/nodemailer": "7.0.1",
+ "@types/node": "24.9.1",
+ "@types/nodemailer": "7.0.2",
"@types/passport-github2": "1.2.9",
"@types/passport-google-oauth20": "2.0.16",
"@types/passport-jwt": "4.0.1",
"@types/passport-microsoft": "2.1.0",
"@types/supertest": "6.0.3",
- "@typescript-eslint/eslint-plugin": "8.44.1",
- "@typescript-eslint/parser": "8.44.1",
- "cross-env": "10.0.0",
- "eslint": "9.36.0",
+ "@typescript-eslint/eslint-plugin": "8.46.1",
+ "@typescript-eslint/parser": "8.46.1",
+ "cross-env": "10.1.0",
+ "eslint": "9.37.0",
"eslint-config-prettier": "10.1.8",
"eslint-plugin-prettier": "5.5.4",
"globals": "16.4.0",
- "jest": "30.1.3",
+ "jest": "30.2.0",
"jest-mock-extended": "4.0.0",
"prettier": "3.6.2",
"source-map-support": "0.5.21",
"supertest": "7.1.4",
- "ts-jest": "29.4.4",
+ "ts-jest": "29.4.5",
"ts-loader": "9.5.4",
"ts-node": "10.9.2",
"tsconfig-paths": "4.2.0",
- "typescript": "5.9.2"
+ "typescript": "5.9.3"
},
"jest": {
"moduleFileExtensions": [
diff --git a/packages/hoppscotch-backend/prisma/migrations/20251016080714_mock_server/migration.sql b/packages/hoppscotch-backend/prisma/migrations/20251016080714_mock_server/migration.sql
new file mode 100644
index 00000000000..b0caa4c5f58
--- /dev/null
+++ b/packages/hoppscotch-backend/prisma/migrations/20251016080714_mock_server/migration.sql
@@ -0,0 +1,142 @@
+-- CreateEnum
+CREATE TYPE "WorkspaceType" AS ENUM ('USER', 'TEAM');
+
+-- CreateEnum
+CREATE TYPE "MockServerAction" AS ENUM ('CREATED', 'DELETED', 'ACTIVATED', 'DEACTIVATED');
+
+-- CreateTable
+CREATE TABLE "MockServer" (
+ "id" TEXT NOT NULL,
+ "name" TEXT NOT NULL,
+ "subdomain" TEXT NOT NULL,
+ "creatorUid" TEXT,
+ "collectionID" TEXT NOT NULL,
+ "workspaceType" "WorkspaceType" NOT NULL,
+ "workspaceID" TEXT NOT NULL,
+ "delayInMs" INTEGER NOT NULL DEFAULT 0,
+ "isPublic" BOOLEAN NOT NULL DEFAULT true,
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
+ "hitCount" INTEGER NOT NULL DEFAULT 0,
+ "lastHitAt" TIMESTAMPTZ(3),
+ "createdOn" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "updatedOn" TIMESTAMPTZ(3) NOT NULL,
+ "deletedAt" TIMESTAMPTZ(3),
+
+ CONSTRAINT "MockServer_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "MockServerLog" (
+ "id" TEXT NOT NULL,
+ "mockServerID" TEXT NOT NULL,
+ "requestMethod" TEXT NOT NULL,
+ "requestPath" TEXT NOT NULL,
+ "requestHeaders" JSONB NOT NULL,
+ "requestBody" JSONB,
+ "requestQuery" JSONB,
+ "responseStatus" INTEGER NOT NULL,
+ "responseHeaders" JSONB NOT NULL,
+ "responseBody" JSONB,
+ "responseTime" INTEGER NOT NULL,
+ "ipAddress" TEXT,
+ "userAgent" TEXT,
+ "executedAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+ CONSTRAINT "MockServerLog_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "MockServerActivity" (
+ "id" TEXT NOT NULL,
+ "mockServerID" TEXT NOT NULL,
+ "action" "MockServerAction" NOT NULL,
+ "performedBy" TEXT,
+ "performedAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+ CONSTRAINT "MockServerActivity_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateIndex
+CREATE UNIQUE INDEX "MockServer_subdomain_key" ON "MockServer"("subdomain");
+
+-- CreateIndex
+CREATE INDEX "MockServerLog_mockServerID_idx" ON "MockServerLog"("mockServerID");
+
+-- CreateIndex
+CREATE INDEX "MockServerLog_mockServerID_executedAt_idx" ON "MockServerLog"("mockServerID", "executedAt");
+
+-- CreateIndex
+CREATE INDEX "MockServerActivity_mockServerID_idx" ON "MockServerActivity"("mockServerID");
+
+-- AddForeignKey
+ALTER TABLE "MockServer" ADD CONSTRAINT "MockServer_creatorUid_fkey" FOREIGN KEY ("creatorUid") REFERENCES "User"("uid") ON DELETE SET NULL ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "MockServerLog" ADD CONSTRAINT "MockServerLog_mockServerID_fkey" FOREIGN KEY ("mockServerID") REFERENCES "MockServer"("id") ON DELETE CASCADE ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "MockServerActivity" ADD CONSTRAINT "MockServerActivity_mockServerID_fkey" FOREIGN KEY ("mockServerID") REFERENCES "MockServer"("id") ON DELETE CASCADE ON UPDATE CASCADE;
+
+
+
+-- Add mockExamples column to UserRequest
+ALTER TABLE "UserRequest"
+ADD COLUMN "mockExamples" JSONB;
+
+-- Add mockExamples column to TeamRequest
+ALTER TABLE "TeamRequest"
+ADD COLUMN "mockExamples" JSONB;
+
+-- Create function to sync mock examples
+CREATE OR REPLACE FUNCTION sync_mock_examples()
+RETURNS TRIGGER AS $$
+BEGIN
+ NEW."mockExamples" := jsonb_build_object(
+ 'examples',
+ COALESCE(
+ (
+ SELECT jsonb_agg(
+ jsonb_build_object(
+ 'key', key,
+ 'name', value->>'name',
+ 'endpoint', value->'originalRequest'->>'endpoint',
+ 'method', value->'originalRequest'->>'method',
+ 'headers', COALESCE(value->'originalRequest'->'headers', '[]'::jsonb),
+ 'statusCode', (value->>'code')::int,
+ 'statusText', value->>'status',
+ 'responseBody', value->>'body',
+ 'responseHeaders', COALESCE(value->'headers', '[]'::jsonb)
+ )
+ )
+ FROM jsonb_each(NEW.request->'responses') AS responses(key, value)
+ WHERE jsonb_typeof(NEW.request->'responses') = 'object'
+ ),
+ '[]'::jsonb
+ )
+ );
+
+ RETURN NEW;
+END;
+$$ LANGUAGE plpgsql;
+
+-- Create trigger for UserRequest
+CREATE TRIGGER trigger_sync_mock_examples_user_request
+BEFORE INSERT OR UPDATE OF request ON "UserRequest"
+FOR EACH ROW
+EXECUTE FUNCTION sync_mock_examples();
+
+-- Create trigger for TeamRequest
+CREATE TRIGGER trigger_sync_mock_examples_team_request
+BEFORE INSERT OR UPDATE OF request ON "TeamRequest"
+FOR EACH ROW
+EXECUTE FUNCTION sync_mock_examples();
+
+-- Backfill existing data for UserRequest
+UPDATE "UserRequest" SET request = request WHERE request IS NOT NULL;
+
+-- Backfill existing data for TeamRequest
+UPDATE "TeamRequest" SET request = request WHERE request IS NOT NULL;
+
+-- Add GIN indexes
+CREATE INDEX "idx_mock_examples_user_requests_gin" ON "UserRequest" USING GIN ("mockExamples");
+CREATE INDEX "idx_mock_examples_team_requests_gin" ON "TeamRequest" USING GIN ("mockExamples");
\ No newline at end of file
diff --git a/packages/hoppscotch-backend/prisma/schema.prisma b/packages/hoppscotch-backend/prisma/schema.prisma
index dfc8df01dd8..fb31d5aa393 100644
--- a/packages/hoppscotch-backend/prisma/schema.prisma
+++ b/packages/hoppscotch-backend/prisma/schema.prisma
@@ -1,25 +1,25 @@
-datasource db {
- provider = "postgresql"
- url = env("DATABASE_URL")
-}
-
generator client {
provider = "prisma-client-js"
binaryTargets = ["native", "debian-openssl-1.1.x", "debian-openssl-3.0.x"]
}
+datasource db {
+ provider = "postgresql"
+ url = env("DATABASE_URL")
+}
+
model Team {
id String @id @default(cuid())
name String
- members TeamMember[]
- TeamInvitation TeamInvitation[]
TeamCollection TeamCollection[]
- TeamRequest TeamRequest[]
TeamEnvironment TeamEnvironment[]
+ TeamInvitation TeamInvitation[]
+ members TeamMember[]
+ TeamRequest TeamRequest[]
}
model TeamMember {
- id String @id @default(uuid()) // Membership ID
+ id String @id @default(uuid())
role TeamAccessRole
userUid String
teamID String
@@ -31,10 +31,10 @@ model TeamMember {
model TeamInvitation {
id String @id @default(cuid())
teamID String
- team Team @relation(fields: [teamID], references: [id], onDelete: Cascade)
creatorUid String
inviteeEmail String
inviteeRole TeamAccessRole
+ team Team @relation(fields: [teamID], references: [id], onDelete: Cascade)
@@unique([teamID, inviteeEmail])
@@index([teamID])
@@ -43,16 +43,16 @@ model TeamInvitation {
model TeamCollection {
id String @id @default(cuid())
parentID String?
- data Json?
- parent TeamCollection? @relation("TeamCollectionChildParent", fields: [parentID], references: [id])
- children TeamCollection[] @relation("TeamCollectionChildParent")
- requests TeamRequest[]
teamID String
- team Team @relation(fields: [teamID], references: [id], onDelete: Cascade)
title String
orderIndex Int
createdOn DateTime @default(now()) @db.Timestamptz(3)
updatedOn DateTime @updatedAt @db.Timestamptz(3)
+ data Json?
+ parent TeamCollection? @relation("TeamCollectionChildParent", fields: [parentID], references: [id])
+ children TeamCollection[] @relation("TeamCollectionChildParent")
+ team Team @relation(fields: [teamID], references: [id], onDelete: Cascade)
+ requests TeamRequest[]
@@unique([teamID, parentID, orderIndex])
}
@@ -60,14 +60,15 @@ model TeamCollection {
model TeamRequest {
id String @id @default(cuid())
collectionID String
- collection TeamCollection @relation(fields: [collectionID], references: [id], onDelete: Cascade)
teamID String
- team Team @relation(fields: [teamID], references: [id], onDelete: Cascade)
title String
request Json
+ mockExamples Json?
orderIndex Int
createdOn DateTime @default(now()) @db.Timestamptz(3)
updatedOn DateTime @updatedAt @db.Timestamptz(3)
+ collection TeamCollection @relation(fields: [collectionID], references: [id], onDelete: Cascade)
+ team Team @relation(fields: [teamID], references: [id], onDelete: Cascade)
@@unique([teamID, collectionID, orderIndex])
}
@@ -75,21 +76,21 @@ model TeamRequest {
model Shortcode {
id String @id @unique
request Json
- embedProperties Json?
creatorUid String?
- User User? @relation(fields: [creatorUid], references: [uid])
createdOn DateTime @default(now()) @db.Timestamptz(3)
+ embedProperties Json?
updatedOn DateTime @default(now()) @updatedAt @db.Timestamptz(3)
+ User User? @relation(fields: [creatorUid], references: [uid])
- @@unique(fields: [id, creatorUid], name: "creator_uid_shortcode_unique")
+ @@unique([id, creatorUid], name: "creator_uid_shortcode_unique")
}
model TeamEnvironment {
id String @id @default(cuid())
teamID String
- team Team @relation(fields: [teamID], references: [id], onDelete: Cascade)
name String
variables Json
+ team Team @relation(fields: [teamID], references: [id], onDelete: Cascade)
}
model User {
@@ -99,100 +100,97 @@ model User {
photoURL String?
isAdmin Boolean @default(false)
refreshToken String?
- providerAccounts Account[]
- VerificationToken VerificationToken[]
- settings UserSettings?
- UserHistory UserHistory[]
- UserEnvironments UserEnvironment[]
- userCollections UserCollection[]
- userRequests UserRequest[]
currentRESTSession Json?
currentGQLSession Json?
+ createdOn DateTime @default(now()) @db.Timestamptz(3)
lastLoggedOn DateTime? @db.Timestamptz(3)
lastActiveOn DateTime? @db.Timestamptz(3)
- createdOn DateTime @default(now()) @db.Timestamptz(3)
+ providerAccounts Account[]
invitedUsers InvitedUsers[]
- shortcodes Shortcode[]
+ mockServers MockServer[]
personalAccessTokens PersonalAccessToken[]
+ shortcodes Shortcode[]
+ userCollections UserCollection[]
+ UserEnvironments UserEnvironment[]
+ UserHistory UserHistory[]
+ userRequests UserRequest[]
+ settings UserSettings?
+ VerificationToken VerificationToken[]
}
model Account {
id String @id @default(cuid())
userId String
- user User @relation(fields: [userId], references: [uid], onDelete: Cascade)
provider String
providerAccountId String
providerRefreshToken String?
providerAccessToken String?
providerScope String?
loggedIn DateTime @default(now()) @db.Timestamptz(3)
+ user User @relation(fields: [userId], references: [uid], onDelete: Cascade)
- @@unique(fields: [provider, providerAccountId], name: "verifyProviderAccount")
+ @@unique([provider, providerAccountId], name: "verifyProviderAccount")
}
model VerificationToken {
deviceIdentifier String
token String @unique @default(cuid())
userUid String
- user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
expiresOn DateTime @db.Timestamptz(3)
+ user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
- @@unique(fields: [deviceIdentifier, token], name: "passwordless_deviceIdentifier_tokens")
+ @@unique([deviceIdentifier, token], name: "passwordless_deviceIdentifier_tokens")
}
model UserSettings {
id String @id @default(cuid())
userUid String @unique
- user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
properties Json
updatedOn DateTime @updatedAt @db.Timestamptz(3)
+ user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
}
model UserHistory {
id String @id @default(cuid())
userUid String
- user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
reqType ReqType
request Json
responseMetadata Json
isStarred Boolean
executedOn DateTime @default(now()) @db.Timestamptz(3)
-}
-
-enum ReqType {
- REST
- GQL
+ user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
}
model UserEnvironment {
id String @id @default(cuid())
userUid String
- user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
name String?
variables Json
isGlobal Boolean
+ user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
}
model InvitedUsers {
adminUid String
- user User @relation(fields: [adminUid], references: [uid], onDelete: Cascade)
adminEmail String
inviteeEmail String @unique
invitedOn DateTime @default(now()) @db.Timestamptz(3)
+ user User @relation(fields: [adminUid], references: [uid], onDelete: Cascade)
}
model UserRequest {
id String @id @default(cuid())
- userCollection UserCollection @relation(fields: [collectionID], references: [id])
collectionID String
userUid String
- user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
title String
request Json
+ mockExamples Json?
type ReqType
orderIndex Int
createdOn DateTime @default(now()) @db.Timestamptz(3)
updatedOn DateTime @updatedAt @db.Timestamptz(3)
+ userCollection UserCollection @relation(fields: [collectionID], references: [id])
+ user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
@@unique([userUid, collectionID, orderIndex])
}
@@ -200,46 +198,40 @@ model UserRequest {
model UserCollection {
id String @id @default(cuid())
parentID String?
- parent UserCollection? @relation("ParentUserCollection", fields: [parentID], references: [id], onDelete: Cascade)
- children UserCollection[] @relation("ParentUserCollection")
- requests UserRequest[]
userUid String
- user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
title String
- data Json?
orderIndex Int
type ReqType
createdOn DateTime @default(now()) @db.Timestamptz(3)
updatedOn DateTime @updatedAt @db.Timestamptz(3)
+ data Json?
+ parent UserCollection? @relation("ParentUserCollection", fields: [parentID], references: [id], onDelete: Cascade)
+ children UserCollection[] @relation("ParentUserCollection")
+ user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
+ requests UserRequest[]
@@unique([userUid, parentID, orderIndex])
}
-enum TeamAccessRole {
- OWNER
- VIEWER
- EDITOR
-}
-
model InfraConfig {
id String @id @default(cuid())
name String @unique
value String?
- lastSyncedEnvFileValue String? // deprecated, use `value` instead
- isEncrypted Boolean @default(false) // Use case: Let's say, Admin wants to store a Secret Key, but doesn't want to store it in plain text in `value` column
createdOn DateTime @default(now()) @db.Timestamptz(3)
updatedOn DateTime @updatedAt @db.Timestamptz(3)
+ isEncrypted Boolean @default(false)
+ lastSyncedEnvFileValue String?
}
model PersonalAccessToken {
id String @id @default(cuid())
userUid String
- user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
label String
token String @unique @default(uuid())
expiresOn DateTime? @db.Timestamptz(3)
createdOn DateTime @default(now()) @db.Timestamptz(3)
updatedOn DateTime @updatedAt @db.Timestamptz(3)
+ user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
}
model InfraToken {
@@ -251,3 +243,79 @@ model InfraToken {
createdOn DateTime @default(now()) @db.Timestamptz(3)
updatedOn DateTime @default(now()) @db.Timestamptz(3)
}
+
+model MockServer {
+ id String @id @default(cuid())
+ name String
+ subdomain String @unique
+ creatorUid String?
+ collectionID String
+ workspaceType WorkspaceType
+ workspaceID String
+ delayInMs Int @default(0)
+ isPublic Boolean @default(true)
+ isActive Boolean @default(true)
+ hitCount Int @default(0)
+ lastHitAt DateTime? @db.Timestamptz(3)
+ createdOn DateTime @default(now()) @db.Timestamptz(3)
+ updatedOn DateTime @updatedAt @db.Timestamptz(3)
+ deletedAt DateTime? @db.Timestamptz(3)
+ user User? @relation(fields: [creatorUid], references: [uid], onDelete: SetNull)
+ requestLogs MockServerLog[]
+ activityHistory MockServerActivity[]
+}
+
+model MockServerLog {
+ id String @id @default(cuid())
+ mockServerID String
+ requestMethod String
+ requestPath String
+ requestHeaders Json
+ requestBody Json?
+ requestQuery Json?
+ responseStatus Int
+ responseHeaders Json
+ responseBody Json?
+ responseTime Int
+ ipAddress String?
+ userAgent String?
+ executedAt DateTime @default(now()) @db.Timestamptz(3)
+ mockServer MockServer @relation(fields: [mockServerID], references: [id], onDelete: Cascade)
+
+ @@index([mockServerID])
+ @@index([mockServerID, executedAt])
+}
+
+model MockServerActivity {
+ id String @id @default(cuid())
+ mockServerID String
+ action MockServerAction
+ performedBy String?
+ performedAt DateTime @default(now()) @db.Timestamptz(3)
+ mockServer MockServer @relation(fields: [mockServerID], references: [id], onDelete: Cascade)
+
+ @@index([mockServerID])
+}
+
+enum WorkspaceType {
+ USER
+ TEAM
+}
+
+enum ReqType {
+ REST
+ GQL
+}
+
+enum TeamAccessRole {
+ OWNER
+ VIEWER
+ EDITOR
+}
+
+enum MockServerAction {
+ CREATED
+ DELETED
+ ACTIVATED
+ DEACTIVATED
+}
diff --git a/packages/hoppscotch-backend/src/app.module.ts b/packages/hoppscotch-backend/src/app.module.ts
index 18859d8f8b5..aeaea85b9cd 100644
--- a/packages/hoppscotch-backend/src/app.module.ts
+++ b/packages/hoppscotch-backend/src/app.module.ts
@@ -36,6 +36,7 @@ import { InfraTokenModule } from './infra-token/infra-token.module';
import { PrismaModule } from './prisma/prisma.module';
import { PubSubModule } from './pubsub/pubsub.module';
import { SortModule } from './orchestration/sort/sort.module';
+import { MockServerModule } from './mock-server/mock-server.module';
@Module({
imports: [
@@ -124,6 +125,7 @@ import { SortModule } from './orchestration/sort/sort.module';
AccessTokenModule,
InfraTokenModule,
SortModule,
+ MockServerModule,
],
providers: [
GQLComplexityPlugin,
diff --git a/packages/hoppscotch-backend/src/auth/auth.controller.ts b/packages/hoppscotch-backend/src/auth/auth.controller.ts
index c713dad5d1b..be0a0a314fc 100644
--- a/packages/hoppscotch-backend/src/auth/auth.controller.ts
+++ b/packages/hoppscotch-backend/src/auth/auth.controller.ts
@@ -22,7 +22,7 @@ import { RTCookie } from 'src/decorators/rt-cookie.decorator';
import { AuthProvider, authCookieHandler, authProviderCheck } from './helper';
import { GoogleSSOGuard } from './guards/google-sso.guard';
import { GithubSSOGuard } from './guards/github-sso.guard';
-import { MicrosoftSSOGuard } from './guards/microsoft-sso-.guard';
+import { MicrosoftSSOGuard } from './guards/microsoft-sso.guard';
import { ThrottlerBehindProxyGuard } from 'src/guards/throttler-behind-proxy.guard';
import { SkipThrottle } from '@nestjs/throttler';
import { AUTH_PROVIDER_NOT_SPECIFIED } from 'src/errors';
diff --git a/packages/hoppscotch-backend/src/auth/guards/microsoft-sso-.guard.ts b/packages/hoppscotch-backend/src/auth/guards/microsoft-sso.guard.ts
similarity index 100%
rename from packages/hoppscotch-backend/src/auth/guards/microsoft-sso-.guard.ts
rename to packages/hoppscotch-backend/src/auth/guards/microsoft-sso.guard.ts
diff --git a/packages/hoppscotch-backend/src/errors.ts b/packages/hoppscotch-backend/src/errors.ts
index 435cc42a5fa..d5efd94750a 100644
--- a/packages/hoppscotch-backend/src/errors.ts
+++ b/packages/hoppscotch-backend/src/errors.ts
@@ -22,19 +22,19 @@ export const ADMIN_CAN_NOT_BE_DELETED =
* Token Authorization failed (Check 'Authorization' Header)
* (GqlAuthGuard)
*/
-export const AUTH_FAIL = 'auth/fail';
+export const AUTH_FAIL = 'auth/fail' as const;
/**
* Invalid JSON
* (Utils)
*/
-export const JSON_INVALID = 'json_invalid';
+export const JSON_INVALID = 'json_invalid' as const;
/**
* Auth Provider not specified
* (Auth)
*/
-export const AUTH_PROVIDER_NOT_SPECIFIED = 'auth/provider_not_specified';
+export const AUTH_PROVIDER_NOT_SPECIFIED = 'auth/provider_not_specified' as const;
/**
* Email not provided by OAuth provider
@@ -168,7 +168,7 @@ export const TEAM_NOT_REQUIRED_ROLE = 'team/not_required_role' as const;
* Team name validation failure
* (TeamService)
*/
-export const TEAM_NAME_INVALID = 'team/name_invalid';
+export const TEAM_NAME_INVALID = 'team/name_invalid' as const;
/**
* Couldn't find the sync data from the user
@@ -432,7 +432,6 @@ export const USER_ENVIRONMENT_GLOBAL_ENV_DOES_NOT_EXISTS =
*/
export const USER_ENVIRONMENT_GLOBAL_ENV_EXISTS =
'user_environment/global_env_already_exists' as const;
-/*
/**
* User environment doesn't exist for the user
@@ -440,7 +439,6 @@ export const USER_ENVIRONMENT_GLOBAL_ENV_EXISTS =
*/
export const USER_ENVIRONMENT_ENV_DOES_NOT_EXISTS =
'user_environment/user_env_does_not_exists' as const;
-/*
/**
* Cannot delete the global user environment
@@ -448,7 +446,6 @@ export const USER_ENVIRONMENT_ENV_DOES_NOT_EXISTS =
*/
export const USER_ENVIRONMENT_GLOBAL_ENV_DELETION_FAILED =
'user_environment/user_env_global_env_deletion_failed' as const;
-/*
/**
* User environment is not a global environment
@@ -456,7 +453,6 @@ export const USER_ENVIRONMENT_GLOBAL_ENV_DELETION_FAILED =
*/
export const USER_ENVIRONMENT_IS_NOT_GLOBAL =
'user_environment/user_env_is_not_global' as const;
-/*
/**
* User environment update failed
@@ -464,7 +460,6 @@ export const USER_ENVIRONMENT_IS_NOT_GLOBAL =
*/
export const USER_ENVIRONMENT_UPDATE_FAILED =
'user_environment/user_env_update_failed' as const;
-/*
/**
* User environment invalid environment name
@@ -472,7 +467,6 @@ export const USER_ENVIRONMENT_UPDATE_FAILED =
*/
export const USER_ENVIRONMENT_INVALID_ENVIRONMENT_NAME =
'user_environment/user_env_invalid_env_name' as const;
-/*
/**
* User history not found
@@ -884,3 +878,52 @@ export const INFRA_TOKEN_EXPIRED = 'infra_token/expired';
* (InfraTokenService)
*/
export const INFRA_TOKEN_CREATOR_NOT_FOUND = 'infra_token/creator_not_found';
+
+/**
+ * Mock server not found
+ * (MockServerService)
+ */
+export const MOCK_SERVER_NOT_FOUND = 'mock_server/not_found';
+
+/**
+ * Mock server invalid collection
+ * (MockServerService)
+ */
+export const MOCK_SERVER_INVALID_COLLECTION = 'mock_server/invalid_collection';
+
+/**
+ * Mock server already exists for this collection
+ * (MockServerService)
+ */
+export const MOCK_SERVER_ALREADY_EXISTS = 'mock_server/already_exists';
+
+/**
+ * Mock server creation failed
+ * (MockServerService)
+ */
+export const MOCK_SERVER_CREATION_FAILED = 'mock_server/creation_failed';
+
+/**
+ * Mock server update failed
+ * (MockServerService)
+ */
+export const MOCK_SERVER_UPDATE_FAILED = 'mock_server/update_failed';
+
+/**
+ * Mock server deletion failed
+ * (MockServerService)
+ */
+export const MOCK_SERVER_DELETION_FAILED = 'mock_server/deletion_failed';
+
+/**
+ * Mock server log not found
+ * (MockServerService)
+ */
+export const MOCK_SERVER_LOG_NOT_FOUND = 'mock_server/log_not_found';
+
+/**
+ * Mock server log deletion failed
+ * (MockServerService)
+ */
+export const MOCK_SERVER_LOG_DELETION_FAILED =
+ 'mock_server/log_deletion_failed';
diff --git a/packages/hoppscotch-backend/src/gql-schema.ts b/packages/hoppscotch-backend/src/gql-schema.ts
index fc43384b3ae..34e613e2c61 100644
--- a/packages/hoppscotch-backend/src/gql-schema.ts
+++ b/packages/hoppscotch-backend/src/gql-schema.ts
@@ -32,6 +32,7 @@ import { InfraConfigResolver } from './infra-config/infra-config.resolver';
import { InfraTokenResolver } from './infra-token/infra-token.resolver';
import { SortTeamCollectionResolver } from './orchestration/sort/sort-team-collection.resolver';
import { SortUserCollectionResolver } from './orchestration/sort/sort-user-collection.resolver';
+import { MockServerResolver } from './mock-server/mock-server.resolver';
/**
* All the resolvers present in the application.
@@ -66,6 +67,7 @@ const RESOLVERS = [
InfraTokenResolver,
SortUserCollectionResolver,
SortTeamCollectionResolver,
+ MockServerResolver,
];
/**
diff --git a/packages/hoppscotch-backend/src/infra-config/helper.ts b/packages/hoppscotch-backend/src/infra-config/helper.ts
index c07b696f6ab..76b2b1da2ca 100644
--- a/packages/hoppscotch-backend/src/infra-config/helper.ts
+++ b/packages/hoppscotch-backend/src/infra-config/helper.ts
@@ -127,6 +127,11 @@ export async function getDefaultInfraConfigs(): Promise {
value: encrypt(randomBytes(32).toString('hex')),
isEncrypted: true,
},
+ {
+ name: InfraConfigEnum.SESSION_COOKIE_NAME,
+ value: null,
+ isEncrypted: false,
+ },
{
name: InfraConfigEnum.TOKEN_SALT_COMPLEXITY,
value: '10',
@@ -302,6 +307,11 @@ export async function getDefaultInfraConfigs(): Promise {
value: 'true',
isEncrypted: false,
},
+ {
+ name: InfraConfigEnum.MOCK_SERVER_WILDCARD_DOMAIN,
+ value: null,
+ isEncrypted: false,
+ },
];
return infraConfigDefaultObjs;
@@ -370,14 +380,16 @@ export async function isInfraConfigTablePopulated(): Promise {
}
/**
- * Stop the app after 5 seconds
- * (Docker will re-start the app)
+ * Stop the app after 5 seconds with graceful shutdown
+ * (Sends SIGTERM to trigger NestJS graceful shutdown, then Docker container stops)
*/
export function stopApp() {
console.log('Stopping app in 5 seconds...');
setTimeout(() => {
- console.log('Stopping app now...');
+ console.log('Stopping app now with graceful shutdown...');
+ // Send SIGTERM to the current process to trigger graceful shutdown
+ // This will call app.close() which triggers onModuleDestroy lifecycle hooks
process.kill(process.pid, 'SIGTERM');
}, 5000);
}
diff --git a/packages/hoppscotch-backend/src/infra-config/infra-config.service.ts b/packages/hoppscotch-backend/src/infra-config/infra-config.service.ts
index 5a78bb33fe4..28086d27c2f 100644
--- a/packages/hoppscotch-backend/src/infra-config/infra-config.service.ts
+++ b/packages/hoppscotch-backend/src/infra-config/infra-config.service.ts
@@ -615,21 +615,26 @@ export class InfraConfigService implements OnModuleInit {
InfraConfigEnum.ALLOW_ANALYTICS_COLLECTION,
];
try {
- const infraConfigDefaultObjs = await getDefaultInfraConfigs();
- const updatedInfraConfigDefaultObjs = infraConfigDefaultObjs.filter(
+ const defaultConfigs = await getDefaultInfraConfigs();
+
+ const configsToReset = defaultConfigs.filter(
(p) => RESET_EXCLUSION_LIST.includes(p.name) === false,
);
+ // Update ONBOARDING_COMPLETED value to false
+ const onboardingCompletedIndex = configsToReset.findIndex(
+ (p) => p.name === InfraConfigEnum.ONBOARDING_COMPLETED,
+ );
+ if (onboardingCompletedIndex !== -1) {
+ configsToReset[onboardingCompletedIndex].value = 'false';
+ }
+
await this.prisma.infraConfig.deleteMany({
- where: {
- name: {
- in: updatedInfraConfigDefaultObjs.map((p) => p.name),
- },
- },
+ where: { name: { in: configsToReset.map((p) => p.name) } },
});
await this.prisma.infraConfig.createMany({
- data: updatedInfraConfigDefaultObjs,
+ data: configsToReset,
});
stopApp();
@@ -673,6 +678,17 @@ export class InfraConfigService implements OnModuleInit {
if (!validateSMTPEmail(value)) return fail();
break;
+ case InfraConfigEnum.MOCK_SERVER_WILDCARD_DOMAIN:
+ if (!value) break; // Allow empty value
+
+ if (!value.startsWith('*.mock.')) return fail();
+ // Validate domain format after *.mock.
+ const domainPart = value.substring(7); // Remove '*.mock.'
+ const domainRegex =
+ /^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
+ if (!domainPart || !domainRegex.test(domainPart)) return fail();
+ break;
+
case InfraConfigEnum.MAILER_SMTP_HOST:
case InfraConfigEnum.MAILER_SMTP_PORT:
case InfraConfigEnum.MAILER_SMTP_USER:
@@ -718,6 +734,11 @@ export class InfraConfigService implements OnModuleInit {
return fail();
break;
+ case InfraConfigEnum.SESSION_COOKIE_NAME:
+ // Allow empty to fall back to default; otherwise enforce allowed characters
+ if (value && !/^[A-Za-z0-9_-]+$/.test(value)) return fail();
+ break;
+
default:
break;
}
diff --git a/packages/hoppscotch-backend/src/main.ts b/packages/hoppscotch-backend/src/main.ts
index 6b2b056cc2e..7c39255707d 100644
--- a/packages/hoppscotch-backend/src/main.ts
+++ b/packages/hoppscotch-backend/src/main.ts
@@ -12,7 +12,7 @@ import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
import { InfraTokenModule } from './infra-token/infra-token.module';
import { NestExpressApplication } from '@nestjs/platform-express';
-function setupSwagger(app, isProduction: boolean) {
+function setupSwagger(app: NestExpressApplication, isProduction: boolean): void {
const swaggerDocPath = '/api-docs';
const config = new DocumentBuilder()
@@ -49,8 +49,13 @@ async function bootstrap() {
app.use(
session({
+ // Allow overriding the default cookie name 'connect.sid' (which contains a dot).
+ // Some proxies/load balancers (like older Kong versions) cannot hash cookie names with dots,
+ // so we allow setting an alternative name via the INFRA.SESSION_COOKIE_NAME configuration.
+ name:
+ configService.get('INFRA.SESSION_COOKIE_NAME') || 'connect.sid',
secret:
- configService.get('INFRA.SESSION_SECRET') ||
+ configService.get('INFRA.SESSION_SECRET') ||
crypto.randomBytes(16).toString('hex'),
}),
);
@@ -99,8 +104,10 @@ async function bootstrap() {
// Graceful shutdown
process.on('SIGTERM', async () => {
- console.info('SIGTERM signal received');
+ console.info('SIGTERM signal received, initiating graceful shutdown...');
await app.close();
+ console.info('Application closed successfully');
+ process.exit(0);
});
}
diff --git a/packages/hoppscotch-backend/src/mock-server/mock-request.guard.ts b/packages/hoppscotch-backend/src/mock-server/mock-request.guard.ts
new file mode 100644
index 00000000000..1f55160ddf9
--- /dev/null
+++ b/packages/hoppscotch-backend/src/mock-server/mock-request.guard.ts
@@ -0,0 +1,274 @@
+import {
+ CanActivate,
+ ExecutionContext,
+ Injectable,
+ BadRequestException,
+ NotFoundException,
+ UnauthorizedException,
+} from '@nestjs/common';
+import { Request } from 'express';
+import { MockServerService } from './mock-server.service';
+import * as E from 'fp-ts/Either';
+import { AccessTokenService } from 'src/access-token/access-token.service';
+import { TeamService } from 'src/team/team.service';
+import { WorkspaceType } from '@prisma/client';
+
+/**
+ * Guard to extract and validate mock server ID from either:
+ * 1. Subdomain pattern: mock-server-id.mock.hopp.io/product
+ * 2. Route pattern: backend.hopp.io/mock/mock-server-id/product
+ */
+@Injectable()
+export class MockRequestGuard implements CanActivate {
+ constructor(
+ private readonly mockServerService: MockServerService,
+ private readonly accessTokenService: AccessTokenService,
+ private readonly teamService: TeamService,
+ ) {}
+
+ async canActivate(context: ExecutionContext): Promise {
+ const request = context.switchToHttp().getRequest();
+
+ // Extract mock server ID from either subdomain or route
+ const mockServerSubdomain = this.extractMockServerSubdomain(request);
+
+ if (!mockServerSubdomain) {
+ throw new BadRequestException(
+ 'Invalid mock server request. Mock server ID not found in subdomain or path.',
+ );
+ }
+
+ // Validate mock server exists (including inactive ones)
+ const mockServerResult =
+ await this.mockServerService.getMockServerBySubdomain(
+ mockServerSubdomain,
+ true, // includeInactive = true
+ );
+
+ if (E.isLeft(mockServerResult)) {
+ console.warn(
+ `Mock server lookup failed for subdomain: ${String(mockServerSubdomain).replace(/\r|\n/g, "")}, error: ${mockServerResult.left}`,
+ );
+ throw new NotFoundException(
+ `Mock server '${mockServerSubdomain}' not found`,
+ );
+ }
+
+ const mockServer = mockServerResult.right;
+
+ // Check if mock server is active and throw proper error if not
+ if (!mockServer.isActive) {
+ throw new BadRequestException(
+ `Mock server '${mockServerSubdomain}' is currently inactive`,
+ );
+ }
+
+ if (!mockServer.isPublic) {
+ const apiKey = request.get('x-api-key');
+
+ if (!apiKey) {
+ throw new BadRequestException(
+ 'API key is required. Please provide x-api-key header.',
+ );
+ }
+
+ // Validate the Personal Access Token (PAT)
+ await this.validatePAT(apiKey, mockServer);
+ }
+
+ // Attach mock server info to request for downstream use
+ (request as any).mockServer = mockServer;
+ (request as any).mockServerId = mockServer.id;
+
+ return true;
+ }
+
+ /**
+ * Extract mock server ID from request using either subdomain or route-based pattern
+ *
+ * Supports two patterns:
+ * 1. Subdomain: mock-server-id.mock.hopp.io/product → mock-server-id (from host)
+ * After Caddy rewrite: path becomes /mock/product
+ * 2. Route: backend.hopp.io/mock/mock-server-id/product → mock-server-id (from path)
+ *
+ * @param request Express request object
+ * @returns Mock server ID or null if not found
+ */
+ private extractMockServerSubdomain(request: Request): string | null {
+ const host = request.get('host') || '';
+ const path = request.path || '/';
+
+ // Try subdomain pattern first (Option 1)
+ // For subdomain-based requests, Caddy rewrites path to /mock/...
+ // but the mock server ID comes from the subdomain, not the path
+ const subdomainId = this.extractFromSubdomain(host);
+ if (subdomainId) {
+ return subdomainId;
+ }
+
+ // Try route-based pattern (Option 2)
+ // Only use route extraction if there's no subdomain match
+ // Route pattern: /mock/mock-server-id/...
+ const routeId = this.extractFromRoute(path);
+ if (routeId) {
+ return routeId;
+ }
+
+ return null;
+ }
+
+ /**
+ * Extract mock server ID from subdomain pattern
+ * Supports: mock-server-id.mock.hopp.io or mock-server-id.mock.localhost
+ *
+ * @param host Host header value
+ * @returns Mock server ID or null
+ */
+ private extractFromSubdomain(host: string): string | null {
+ // Remove port if present
+ const hostname = host.split(':')[0];
+
+ // Split by dots
+ const parts = hostname.split('.');
+
+ // Check if this is a mock subdomain pattern
+ // For: mock-server-id.mock.hopp.io → ['mock-server-id', 'mock', 'hopp', 'io']
+ // For: mock-server-id.mock.localhost → ['mock-server-id', 'mock', 'localhost']
+
+ if (parts.length >= 3) {
+ // Check if second part is 'mock'
+ if (parts[1] === 'mock') {
+ const mockServerId = parts[0];
+
+ // Validate it's not empty and follows a reasonable pattern
+ if (mockServerId && mockServerId.length > 0) {
+ return mockServerId;
+ }
+ }
+ }
+
+ // Also support: mock-server-id.localhost (for simpler local dev)
+ if (parts.length === 2 && parts[1] === 'localhost') {
+ const mockServerId = parts[0];
+ if (mockServerId && mockServerId.length > 0) {
+ return mockServerId;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Extract mock server ID from route pattern
+ * Supports: /mock/mock-server-id/product → mock-server-id
+ * Note: Caddy prepends /mock to subdomain requests, so subdomain pattern
+ * mock-server-id.mock.hopp.io/product becomes /mock/product
+ *
+ * @param path Request path
+ * @returns Mock server ID or null
+ */
+ private extractFromRoute(path: string): string | null {
+ // Pattern: /mock/mock-server-id/...
+ // We need to match: /mock/{id} or /mock/{id}/...
+
+ const mockPathRegex = /^\/mock\/([^\/]+)/;
+ const match = path.match(mockPathRegex);
+
+ if (match && match[1]) {
+ const mockServerId = match[1];
+
+ // Validate it's not empty and not the word 'mock' itself
+ if (mockServerId && mockServerId !== 'mock' && mockServerId.length > 0) {
+ return mockServerId;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Validate Personal Access Token (PAT) for private mock server access
+ *
+ * Rules:
+ * - If mock server is in USER workspace: PAT must belong to that user
+ * - If mock server is in TEAM workspace: PAT creator must be a member of that team
+ *
+ * @param apiKey The x-api-key header value (PAT)
+ * @param mockServer The mock server being accessed
+ * @throws UnauthorizedException if PAT is invalid or user lacks access
+ */
+ private async validatePAT(apiKey: string, mockServer: any): Promise {
+ // Get the PAT and associated user
+ const patResult = await this.accessTokenService.getUserPAT(apiKey);
+
+ if (E.isLeft(patResult)) {
+ throw new UnauthorizedException(
+ 'Invalid or expired API key. Please provide a valid Personal Access Token.',
+ );
+ }
+
+ const pat = patResult.right;
+ const userUid = pat.user.uid;
+
+ // Check if PAT has expired
+ if (pat.expiresOn !== null && new Date() > pat.expiresOn) {
+ throw new UnauthorizedException(
+ 'API key has expired. Please generate a new Personal Access Token.',
+ );
+ }
+
+ // Validate based on workspace type
+ if (mockServer.workspaceType === WorkspaceType.USER) {
+ // For USER workspace: PAT must belong to the workspace owner
+ if (userUid !== mockServer.workspaceID) {
+ throw new UnauthorizedException(
+ 'Access denied. This Personal Access Token does not have permission to access this mock server.',
+ );
+ }
+ } else if (mockServer.workspaceType === WorkspaceType.TEAM) {
+ // For TEAM workspace: PAT creator must be a member of the team
+ const teamMember = await this.teamService.getTeamMember(
+ mockServer.workspaceID,
+ userUid,
+ );
+
+ if (!teamMember) {
+ throw new UnauthorizedException(
+ 'Access denied. You must be a member of the team to access this mock server.',
+ );
+ }
+ } else {
+ throw new BadRequestException('Invalid workspace type for mock server.');
+ }
+
+ // Update last used timestamp for the PAT
+ await this.accessTokenService.updateLastUsedForPAT(apiKey);
+ }
+
+ /**
+ * Get the actual path without the /mock/mock-server-id prefix
+ * This is useful for route-based pattern to get the actual endpoint path
+ *
+ * @param fullPath Full request path
+ * @param mockServerId Mock server ID
+ * @returns Clean path for the mock endpoint
+ */
+ static getCleanPath(fullPath: string, mockServerId: string): string {
+ // If route-based: /mock/mock-server-id/product → /product
+ const routePrefix = `/mock/${mockServerId}`;
+ if (fullPath.startsWith(routePrefix)) {
+ const cleanPath = fullPath.substring(routePrefix.length);
+ return cleanPath || '/';
+ }
+
+ // If subdomain-based: Caddy rewrites to /mock/product → /product
+ // Strip the /mock prefix added by Caddy
+ if (fullPath.startsWith('/mock/')) {
+ const cleanPath = fullPath.substring(5); // Remove '/mock'
+ return cleanPath || '/';
+ }
+
+ // Fallback: return as-is
+ return fullPath;
+ }
+}
diff --git a/packages/hoppscotch-backend/src/mock-server/mock-server-analytics.service.ts b/packages/hoppscotch-backend/src/mock-server/mock-server-analytics.service.ts
new file mode 100644
index 00000000000..92ac076ffe2
--- /dev/null
+++ b/packages/hoppscotch-backend/src/mock-server/mock-server-analytics.service.ts
@@ -0,0 +1,43 @@
+import { Injectable } from '@nestjs/common';
+import { PrismaService } from 'src/prisma/prisma.service';
+import { MockServer as dbMockServer, MockServerAction } from '@prisma/client';
+
+@Injectable()
+export class MockServerAnalyticsService {
+ constructor(private readonly prisma: PrismaService) {}
+
+ /**
+ * Record mock server activity
+ * @param mockServer The mock server database object
+ * @param action The action being performed (CREATED, ACTIVATED, DEACTIVATED, DELETED, UPDATED)
+ * @param performedBy Optional userUid who performed the action
+ */
+ async recordActivity(
+ mockServer: dbMockServer,
+ action: MockServerAction,
+ performedBy?: string,
+ ): Promise {
+ try {
+ // Skip if trying to activate an already active server
+ if (action === MockServerAction.ACTIVATED && mockServer.isActive) {
+ return;
+ }
+
+ // Skip if trying to deactivate an already inactive server
+ if (action === MockServerAction.DEACTIVATED && !mockServer.isActive) {
+ return;
+ }
+
+ await this.prisma.mockServerActivity.create({
+ data: {
+ mockServerID: mockServer.id,
+ action: action,
+ performedBy: performedBy || null,
+ },
+ });
+ } catch (error) {
+ // Log error but don't throw - analytics shouldn't break main flow
+ console.error('Failed to record mock server activity:', error);
+ }
+ }
+}
diff --git a/packages/hoppscotch-backend/src/mock-server/mock-server-logging.interceptor.ts b/packages/hoppscotch-backend/src/mock-server/mock-server-logging.interceptor.ts
new file mode 100644
index 00000000000..275781a4ef0
--- /dev/null
+++ b/packages/hoppscotch-backend/src/mock-server/mock-server-logging.interceptor.ts
@@ -0,0 +1,169 @@
+import {
+ Injectable,
+ NestInterceptor,
+ ExecutionContext,
+ CallHandler,
+} from '@nestjs/common';
+import { Observable } from 'rxjs';
+import { tap } from 'rxjs/operators';
+import { Request, Response } from 'express';
+import { MockServer } from '@prisma/client';
+import { MockServerService } from './mock-server.service';
+
+@Injectable()
+export class MockServerLoggingInterceptor implements NestInterceptor {
+ constructor(private readonly mockServerService: MockServerService) {}
+
+ intercept(context: ExecutionContext, next: CallHandler): Observable {
+ const httpContext = context.switchToHttp();
+ const request = httpContext.getRequest();
+ const response = httpContext.getResponse();
+
+ // Capture request start time
+ const startTime = Date.now();
+
+ // Extract mock server info (attached by MockRequestGuard)
+ const mockServer = (request as any).mockServer as MockServer;
+ const mockServerId = (request as any).mockServerId as string;
+
+ // If no mock server info, skip logging
+ if (!mockServer || !mockServerId) {
+ return next.handle();
+ }
+
+ // Capture request details
+ const requestMethod = request.method;
+ const requestPath = request.path;
+ const requestHeaders = this.extractHeaders(request);
+ const requestBody = request.body || {};
+ const requestQuery = this.extractQueryParams(request);
+
+ if (!requestBody || typeof requestBody !== 'object') {
+ console.warn('Request body is not properly parsed');
+ }
+
+ // Extract client info
+ const ipAddress =
+ (request.headers['x-forwarded-for'] as string)?.split(',')[0]?.trim() ||
+ request.socket.remoteAddress ||
+ undefined;
+ const userAgent = request.headers['user-agent'] as string | undefined;
+
+ // Capture response - use finalize to ensure logging happens regardless of success/error
+ return next.handle().pipe(
+ tap({
+ next: () => {
+ // Success case - log after response is sent
+ const responseTime = Date.now() - startTime;
+ const responseStatus = response.statusCode || 200;
+ const responseHeaders = this.extractResponseHeaders(response);
+
+ // Log the request asynchronously (fire and forget)
+ this.mockServerService
+ .logRequest({
+ mockServerID: mockServerId,
+ requestMethod,
+ requestPath,
+ requestHeaders,
+ requestBody,
+ requestQuery,
+ responseStatus,
+ responseHeaders,
+ responseTime,
+ ipAddress,
+ userAgent,
+ })
+ .catch((err) => console.error('Failed to log mock request:', err));
+
+ // Increment hit count asynchronously (fire and forget)
+ this.mockServerService
+ .incrementHitCount(mockServerId)
+ .catch((err) =>
+ console.error('Failed to increment hit count:', err),
+ );
+ },
+ error: (error) => {
+ // Error case - log the error but let it propagate to user
+ const responseTime = Date.now() - startTime;
+ const responseStatus = error.status || 500;
+
+ // Log error response asynchronously
+ this.mockServerService
+ .logRequest({
+ mockServerID: mockServerId,
+ requestMethod,
+ requestPath,
+ requestHeaders,
+ requestBody,
+ requestQuery,
+ responseStatus,
+ responseHeaders: {},
+ responseTime,
+ ipAddress,
+ userAgent,
+ })
+ .catch((err) =>
+ console.error('Failed to log mock request error:', err),
+ );
+
+ // Still increment hit count even for errors
+ this.mockServerService
+ .incrementHitCount(mockServerId)
+ .catch((err) =>
+ console.error('Failed to increment hit count:', err),
+ );
+
+ // Error will automatically propagate to user
+ // No need to re-throw, tap operator handles this
+ },
+ }),
+ );
+ }
+
+ /**
+ * Extract request headers as a plain object
+ */
+ private extractHeaders(request: Request): Record {
+ const headers: Record = {};
+ Object.keys(request.headers).forEach((key) => {
+ const value = request.headers[key];
+ if (typeof value === 'string') {
+ headers[key.toLowerCase()] = value;
+ } else if (Array.isArray(value)) {
+ headers[key.toLowerCase()] = value[0];
+ }
+ });
+ return headers;
+ }
+
+ /**
+ * Extract query parameters as a plain object
+ */
+ private extractQueryParams(
+ request: Request,
+ ): Record | undefined {
+ const queryParams = request.query as Record;
+ return Object.keys(queryParams).length > 0 ? queryParams : undefined;
+ }
+
+ /**
+ * Extract response headers as a plain object
+ */
+ private extractResponseHeaders(response: Response): Record {
+ const headers: Record = {};
+ const headerNames = response.getHeaderNames();
+
+ headerNames.forEach((name) => {
+ const value = response.getHeader(name);
+ if (typeof value === 'string') {
+ headers[name.toLowerCase()] = value;
+ } else if (typeof value === 'number') {
+ headers[name.toLowerCase()] = value.toString();
+ } else if (Array.isArray(value)) {
+ headers[name.toLowerCase()] = value.join(', ');
+ }
+ });
+
+ return headers;
+ }
+}
diff --git a/packages/hoppscotch-backend/src/mock-server/mock-server.controller.ts b/packages/hoppscotch-backend/src/mock-server/mock-server.controller.ts
new file mode 100644
index 00000000000..b24327960e2
--- /dev/null
+++ b/packages/hoppscotch-backend/src/mock-server/mock-server.controller.ts
@@ -0,0 +1,139 @@
+import {
+ Controller,
+ All,
+ Req,
+ Res,
+ HttpStatus,
+ UseGuards,
+ UseInterceptors,
+} from '@nestjs/common';
+import { Request, Response } from 'express';
+import { MockServerService } from './mock-server.service';
+import { MockServerLoggingInterceptor } from './mock-server-logging.interceptor';
+import * as E from 'fp-ts/Either';
+import { MockRequestGuard } from './mock-request.guard';
+import { MockServer } from '@prisma/client';
+import { ThrottlerBehindProxyGuard } from 'src/guards/throttler-behind-proxy.guard';
+
+/**
+ * Mock server controller with dual routing support:
+ * 1. Subdomain pattern: mock-server-id.mock.hopp.io/product
+ * 2. Route pattern: backend.hopp.io/mock/mock-server-id/product
+ *
+ * The MockRequestGuard handles extraction of mock server ID from both patterns
+ * The MockServerLoggingInterceptor handles logging of all requests
+ */
+@UseGuards(ThrottlerBehindProxyGuard)
+@Controller({ path: 'mock' })
+export class MockServerController {
+ constructor(private readonly mockServerService: MockServerService) {}
+
+ @All('*path')
+ @UseGuards(MockRequestGuard)
+ @UseInterceptors(MockServerLoggingInterceptor)
+ async handleMockRequest(@Req() req: Request, @Res() res: Response) {
+ // Mock server ID and info are attached by the guard
+ const mockServerId = (req as any).mockServerId as string;
+ const mockServer = (req as any).mockServer as MockServer;
+
+ if (!mockServerId) {
+ return res.status(HttpStatus.NOT_FOUND).json({
+ error: 'Not found',
+ message: 'Mock server ID not found',
+ });
+ }
+
+ const method = req.method;
+ // Get clean path (removes /mock/mock-server-id prefix for route-based pattern)
+ const path = MockRequestGuard.getCleanPath(
+ req.path || '/',
+ mockServer.subdomain,
+ );
+
+ // Extract query parameters
+ const queryParams = req.query as Record;
+
+ // Extract request headers (convert to lowercase for case-insensitive matching)
+ const requestHeaders: Record = {};
+ Object.keys(req.headers).forEach((key) => {
+ const value = req.headers[key];
+ if (typeof value === 'string') {
+ requestHeaders[key.toLowerCase()] = value;
+ } else if (Array.isArray(value)) {
+ requestHeaders[key.toLowerCase()] = value[0];
+ }
+ });
+
+ try {
+ const result = await this.mockServerService.handleMockRequest(
+ mockServer,
+ path,
+ method,
+ queryParams,
+ requestHeaders,
+ );
+
+ if (E.isLeft(result)) {
+ return res.status(HttpStatus.NOT_FOUND).json({
+ error: 'Endpoint not found',
+ message: result.left,
+ });
+ }
+
+ const mockResponse = result.right;
+
+ // Set response headers if any
+ if (mockResponse.headers) {
+ try {
+ const headers = JSON.parse(mockResponse.headers);
+ Object.keys(headers).forEach((key) => {
+ console.log('Setting header:', key, headers[key]);
+ res.setHeader(key, headers[key]);
+ });
+ } catch (error) {
+ console.error('Error parsing response headers:', error);
+ }
+ }
+
+ // Add delay if specified
+ if (mockServer.delayInMs && mockServer.delayInMs > 0) {
+ await new Promise((resolve) =>
+ setTimeout(resolve, mockServer.delayInMs),
+ );
+ }
+
+ // Only set Content-Type if not already set
+ if (!res.getHeader('Content-Type')) {
+ let defaultContentType = 'text/plain';
+
+ // Check if body is a string and try to parse it to determine content type
+ if (typeof mockResponse.body === 'string') {
+ try {
+ JSON.parse(mockResponse.body);
+ // If parsing succeeds, it's JSON
+ defaultContentType = 'application/json';
+ } catch {
+ // If parsing fails, it's plain text
+ defaultContentType = 'text/plain';
+ }
+ } else if (typeof mockResponse.body === 'object') {
+ // If it's already an object, it's JSON
+ defaultContentType = 'application/json';
+ }
+
+ res.setHeader('Content-Type', defaultContentType);
+ }
+ // Security headers
+ res.setHeader('X-Content-Type-Options', 'nosniff');
+
+ // Send response
+ return res.status(mockResponse.statusCode).send(mockResponse.body);
+ } catch (error) {
+ console.error('Error handling mock request:', error);
+ return res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({
+ error: 'Internal server error',
+ message: 'Failed to process mock request',
+ });
+ }
+ }
+}
diff --git a/packages/hoppscotch-backend/src/mock-server/mock-server.model.ts b/packages/hoppscotch-backend/src/mock-server/mock-server.model.ts
new file mode 100644
index 00000000000..8cf79e6513e
--- /dev/null
+++ b/packages/hoppscotch-backend/src/mock-server/mock-server.model.ts
@@ -0,0 +1,307 @@
+import {
+ Field,
+ ID,
+ ObjectType,
+ ArgsType,
+ InputType,
+ registerEnumType,
+} from '@nestjs/graphql';
+import {
+ IsNumber,
+ IsOptional,
+ IsString,
+ Matches,
+ Max,
+ MaxLength,
+ MinLength,
+} from 'class-validator';
+import { WorkspaceType } from 'src/types/WorkspaceTypes';
+
+// Regex pattern for mock server name validation
+// Allows letters, numbers, spaces, dots, brackets, underscores, and hyphens
+const MOCK_SERVER_NAME_PATTERN = /^[a-zA-Z0-9 .()[\]{}<>_-]+$/;
+const MOCK_SERVER_NAME_ERROR_MESSAGE =
+ 'Name can only contain letters, numbers, spaces, dots, brackets, underscores, and hyphens';
+
+@ObjectType()
+export class MockServer {
+ @Field(() => ID, {
+ description: 'ID of the mock server',
+ })
+ id: string;
+
+ @Field({
+ description: 'Name of the mock server',
+ })
+ name: string;
+
+ @Field({
+ description: 'Subdomain for the mock server (e.g., mock-1234)',
+ })
+ subdomain: string;
+
+ @Field({
+ nullable: true,
+ description:
+ 'Server URL for the mock server using subdomain pattern (e.g., https://1234.mock.backend-hoppscotch.io)',
+ })
+ serverUrlDomainBased: string;
+
+ @Field({
+ description:
+ 'Server URL for the mock server using path pattern (e.g., https://backend.hoppscotch.io/mock/1234)',
+ })
+ serverUrlPathBased: string;
+
+ @Field(() => WorkspaceType, {
+ description: 'Type of workspace: USER or TEAM',
+ })
+ workspaceType: WorkspaceType;
+
+ @Field({
+ nullable: true,
+ description:
+ 'ID of the workspace (user or team) to associate with the mock server',
+ })
+ workspaceID?: string;
+
+ @Field({
+ description: 'Delay in milliseconds before responding',
+ })
+ delayInMs: number;
+
+ @Field({
+ description: 'Whether the mock server is active',
+ })
+ isActive: boolean;
+
+ @Field({
+ description: 'Whether the mock server is publicly accessible',
+ })
+ isPublic: boolean;
+
+ @Field({
+ description: 'Date and time when the mock server was created',
+ })
+ createdOn: Date;
+
+ @Field({
+ description: 'Date and time when the mock server was last updated',
+ })
+ updatedOn: Date;
+}
+
+@ObjectType()
+export class MockServerCollection {
+ @Field(() => ID, {
+ description: 'ID of the collection',
+ })
+ id: string;
+
+ @Field({
+ description: 'Title of the collection',
+ })
+ title: string;
+}
+
+@InputType()
+export class CreateMockServerInput {
+ @Field({
+ description: 'Name of the mock server',
+ })
+ @IsString()
+ @MinLength(1)
+ @MaxLength(255)
+ @Matches(MOCK_SERVER_NAME_PATTERN, {
+ message: MOCK_SERVER_NAME_ERROR_MESSAGE,
+ })
+ name: string;
+
+ @Field({
+ description:
+ 'ID of the (team or user) collection to associate with the mock server',
+ })
+ collectionID: string;
+
+ @Field(() => WorkspaceType, {
+ description: 'Type of workspace: USER or TEAM',
+ })
+ workspaceType: WorkspaceType;
+
+ @Field({
+ nullable: true,
+ description:
+ 'ID of the workspace (user or team) to associate with the mock server',
+ })
+ workspaceID?: string;
+
+ @Field({
+ nullable: true,
+ defaultValue: 0,
+ description: 'Delay in milliseconds before responding',
+ })
+ @IsOptional()
+ @IsNumber()
+ @Max(60000)
+ delayInMs?: number;
+
+ @Field({
+ nullable: true,
+ defaultValue: true,
+ description: 'Whether the mock server is publicly accessible',
+ })
+ isPublic?: boolean;
+}
+
+@InputType()
+export class UpdateMockServerInput {
+ @Field({
+ nullable: true,
+ description: 'Name of the mock server',
+ })
+ @IsString()
+ @IsOptional()
+ @MinLength(1)
+ @MaxLength(255)
+ @Matches(MOCK_SERVER_NAME_PATTERN, {
+ message: MOCK_SERVER_NAME_ERROR_MESSAGE,
+ })
+ name?: string;
+
+ @Field({
+ nullable: true,
+ description: 'Delay in milliseconds before responding',
+ })
+ @IsOptional()
+ @IsNumber()
+ @Max(60000)
+ delayInMs?: number;
+
+ @Field({
+ nullable: true,
+ description: 'Whether the mock server is active',
+ })
+ isActive?: boolean;
+
+ @Field({
+ nullable: true,
+ description: 'Whether the mock server is publicly accessible',
+ })
+ isPublic?: boolean;
+}
+
+@ObjectType()
+export class MockServerResponse {
+ @Field({
+ description: 'HTTP status code to return',
+ })
+ statusCode: number;
+
+ @Field({
+ nullable: true,
+ description: 'Response body to return',
+ })
+ body?: string;
+
+ @Field({
+ nullable: true,
+ description: 'Response headers as JSON string',
+ })
+ headers?: string;
+
+ @Field({
+ defaultValue: 0,
+ description: 'Delay in milliseconds before response',
+ })
+ delay: number;
+}
+
+@ArgsType()
+export class MockServerMutationArgs {
+ @Field(() => ID, {
+ description: 'ID of the mock server',
+ })
+ id: string;
+}
+
+@ObjectType()
+export class MockServerLog {
+ @Field(() => ID, {
+ description: 'ID of the log entry',
+ })
+ id: string;
+
+ @Field(() => ID, {
+ description: 'ID of the mock server',
+ })
+ mockServerID: string;
+
+ @Field({
+ description: 'HTTP method of the request',
+ })
+ requestMethod: string;
+
+ @Field({
+ description: 'Path of the request',
+ })
+ requestPath: string;
+
+ @Field({
+ description: 'Request headers as JSON string',
+ })
+ requestHeaders: string;
+
+ @Field({
+ nullable: true,
+ description: 'Request body as JSON string',
+ })
+ requestBody?: string;
+
+ @Field({
+ nullable: true,
+ description: 'Request query parameters as JSON string',
+ })
+ requestQuery?: string;
+
+ @Field({
+ description: 'HTTP status code of the response',
+ })
+ responseStatus: number;
+
+ @Field({
+ description: 'Response headers as JSON string',
+ })
+ responseHeaders: string;
+
+ @Field({
+ nullable: true,
+ description: 'Response body as JSON string',
+ })
+ responseBody?: string;
+
+ @Field({
+ description: 'Response time in milliseconds',
+ })
+ responseTime: number;
+
+ @Field({
+ nullable: true,
+ description: 'IP address of the requester',
+ })
+ ipAddress?: string;
+
+ @Field({
+ nullable: true,
+ description: 'User agent of the requester',
+ })
+ userAgent?: string;
+
+ @Field({
+ description: 'Date and time when the request was executed',
+ })
+ executedAt: Date;
+}
+
+registerEnumType(WorkspaceType, {
+ name: 'WorkspaceType',
+});
diff --git a/packages/hoppscotch-backend/src/mock-server/mock-server.module.ts b/packages/hoppscotch-backend/src/mock-server/mock-server.module.ts
new file mode 100644
index 00000000000..c288d2c9287
--- /dev/null
+++ b/packages/hoppscotch-backend/src/mock-server/mock-server.module.ts
@@ -0,0 +1,22 @@
+import { Module } from '@nestjs/common';
+import { PrismaModule } from 'src/prisma/prisma.module';
+import { MockServerService } from './mock-server.service';
+import { MockServerAnalyticsService } from './mock-server-analytics.service';
+import { MockServerLoggingInterceptor } from './mock-server-logging.interceptor';
+import { MockServerResolver } from './mock-server.resolver';
+import { TeamModule } from 'src/team/team.module';
+import { TeamRequestModule } from 'src/team-request/team-request.module';
+import { MockServerController } from './mock-server.controller';
+import { AccessTokenModule } from 'src/access-token/access-token.module';
+
+@Module({
+ imports: [PrismaModule, TeamModule, TeamRequestModule, AccessTokenModule],
+ controllers: [MockServerController],
+ providers: [
+ MockServerService,
+ MockServerAnalyticsService,
+ MockServerLoggingInterceptor,
+ MockServerResolver,
+ ],
+})
+export class MockServerModule {}
diff --git a/packages/hoppscotch-backend/src/mock-server/mock-server.resolver.ts b/packages/hoppscotch-backend/src/mock-server/mock-server.resolver.ts
new file mode 100644
index 00000000000..1ea8c83dbbe
--- /dev/null
+++ b/packages/hoppscotch-backend/src/mock-server/mock-server.resolver.ts
@@ -0,0 +1,223 @@
+import {
+ Resolver,
+ Query,
+ Mutation,
+ Args,
+ ID,
+ ResolveField,
+ Parent,
+} from '@nestjs/graphql';
+import { UseGuards } from '@nestjs/common';
+import { GqlAuthGuard } from 'src/guards/gql-auth.guard';
+import { GqlUser } from 'src/decorators/gql-user.decorator';
+import { User } from 'src/user/user.model';
+import { MockServerService } from './mock-server.service';
+import {
+ MockServer,
+ CreateMockServerInput,
+ UpdateMockServerInput,
+ MockServerMutationArgs,
+ MockServerCollection,
+ MockServerLog,
+} from './mock-server.model';
+import * as E from 'fp-ts/Either';
+import { OffsetPaginationArgs } from 'src/types/input-types.args';
+import { GqlTeamMemberGuard } from 'src/team/guards/gql-team-member.guard';
+import { RequiresTeamRole } from 'src/team/decorators/requires-team-role.decorator';
+import { TeamAccessRole } from 'src/team/team.model';
+import { throwErr } from 'src/utils';
+import { MockServerAnalyticsService } from './mock-server-analytics.service';
+
+@Resolver(() => MockServer)
+export class MockServerResolver {
+ constructor(
+ private readonly mockServerService: MockServerService,
+ private readonly mockServerAnalyticsService: MockServerAnalyticsService,
+ ) {}
+
+ // Resolve Fields
+
+ @ResolveField(() => User, {
+ nullable: true,
+ description: 'Returns the creator of the mock server',
+ })
+ async creator(@Parent() mockServer: MockServer): Promise {
+ const creator = await this.mockServerService.getMockServerCreator(
+ mockServer.id,
+ );
+
+ if (E.isLeft(creator)) throwErr(creator.left);
+ return {
+ ...creator.right,
+ currentGQLSession: JSON.stringify(creator.right.currentGQLSession),
+ currentRESTSession: JSON.stringify(creator.right.currentRESTSession),
+ };
+ }
+
+ @ResolveField(() => MockServerCollection, {
+ nullable: true,
+ description: 'Returns the collection of the mock server',
+ })
+ async collection(
+ @Parent() mockServer: MockServer,
+ ): Promise {
+ const collection = await this.mockServerService.getMockServerCollection(
+ mockServer.id,
+ );
+
+ if (E.isLeft(collection)) throwErr(collection.left);
+ return collection.right;
+ }
+
+ // Queries
+
+ @Query(() => [MockServer], {
+ description: 'Get all mock servers for the authenticated user',
+ })
+ @UseGuards(GqlAuthGuard)
+ async myMockServers(
+ @GqlUser() user: User,
+ @Args() args: OffsetPaginationArgs,
+ ): Promise {
+ return this.mockServerService.getUserMockServers(user.uid, args);
+ }
+
+ @Query(() => [MockServer], {
+ description: 'Get all mock servers for a specific team',
+ })
+ @UseGuards(GqlAuthGuard, GqlTeamMemberGuard)
+ @RequiresTeamRole(
+ TeamAccessRole.VIEWER,
+ TeamAccessRole.EDITOR,
+ TeamAccessRole.OWNER,
+ )
+ async teamMockServers(
+ @Args({
+ name: 'teamID',
+ type: () => ID,
+ description: 'Id of the team to add to',
+ })
+ teamID: string,
+ @Args() args: OffsetPaginationArgs,
+ ): Promise {
+ return this.mockServerService.getTeamMockServers(teamID, args);
+ }
+
+ @Query(() => MockServer, {
+ description: 'Get a specific mock server by ID',
+ })
+ @UseGuards(GqlAuthGuard)
+ async mockServer(
+ @GqlUser() user: User,
+ @Args({
+ name: 'id',
+ type: () => ID,
+ description: 'Id of the mock server to retrieve',
+ })
+ id: string,
+ ): Promise {
+ const result = await this.mockServerService.getMockServer(id, user.uid);
+
+ if (E.isLeft(result)) throwErr(result.left);
+ return result.right;
+ }
+
+ @Query(() => [MockServerLog], {
+ description:
+ 'Get logs for a specific mock server with pagination, sorted by execution time (most recent first)',
+ })
+ @UseGuards(GqlAuthGuard)
+ async mockServerLogs(
+ @GqlUser() user: User,
+ @Args({
+ name: 'mockServerID',
+ type: () => ID,
+ description: 'ID of the mock server',
+ })
+ mockServerID: string,
+ @Args() args: OffsetPaginationArgs,
+ ): Promise {
+ const result = await this.mockServerService.getMockServerLogs(
+ mockServerID,
+ user.uid,
+ args,
+ );
+
+ if (E.isLeft(result)) throwErr(result.left);
+ return result.right;
+ }
+
+ // Mutations
+
+ @Mutation(() => MockServer, {
+ description: 'Create a new mock server',
+ })
+ @UseGuards(GqlAuthGuard)
+ async createMockServer(
+ @Args('input') input: CreateMockServerInput,
+ @GqlUser() user: User,
+ ): Promise {
+ const result = await this.mockServerService.createMockServer(user, input);
+
+ if (E.isLeft(result)) throwErr(result.left);
+ return result.right;
+ }
+
+ @Mutation(() => MockServer, {
+ description: 'Update a mock server',
+ })
+ @UseGuards(GqlAuthGuard)
+ async updateMockServer(
+ @GqlUser() user: User,
+ @Args() args: MockServerMutationArgs,
+ @Args('input') input: UpdateMockServerInput,
+ ): Promise {
+ const result = await this.mockServerService.updateMockServer(
+ args.id,
+ user.uid,
+ input,
+ );
+
+ if (E.isLeft(result)) throwErr(result.left);
+ return result.right;
+ }
+
+ @Mutation(() => Boolean, {
+ description: 'Delete a mock server',
+ })
+ @UseGuards(GqlAuthGuard)
+ async deleteMockServer(
+ @GqlUser() user: User,
+ @Args() args: MockServerMutationArgs,
+ ): Promise {
+ const result = await this.mockServerService.deleteMockServer(
+ args.id,
+ user.uid,
+ );
+
+ if (E.isLeft(result)) throwErr(result.left);
+ return result.right;
+ }
+
+ @Mutation(() => Boolean, {
+ description: 'Delete a mock server log by log ID',
+ })
+ @UseGuards(GqlAuthGuard)
+ async deleteMockServerLog(
+ @GqlUser() user: User,
+ @Args({
+ name: 'logID',
+ type: () => ID,
+ description: 'Id of the log to delete',
+ })
+ logID: string,
+ ): Promise {
+ const result = await this.mockServerService.deleteMockServerLog(
+ logID,
+ user.uid,
+ );
+
+ if (E.isLeft(result)) throwErr(result.left);
+ return result.right;
+ }
+}
diff --git a/packages/hoppscotch-backend/src/mock-server/mock-server.service.spec.ts b/packages/hoppscotch-backend/src/mock-server/mock-server.service.spec.ts
new file mode 100644
index 00000000000..83801fac313
--- /dev/null
+++ b/packages/hoppscotch-backend/src/mock-server/mock-server.service.spec.ts
@@ -0,0 +1,1166 @@
+import { MockServerService } from './mock-server.service';
+import { PrismaService } from '../prisma/prisma.service';
+import { ConfigService } from '@nestjs/config';
+import { MockServerAnalyticsService } from './mock-server-analytics.service';
+import { mockDeep, mockReset } from 'jest-mock-extended';
+import * as E from 'fp-ts/Either';
+import {
+ MOCK_SERVER_NOT_FOUND,
+ MOCK_SERVER_INVALID_COLLECTION,
+ TEAM_INVALID_ID,
+ MOCK_SERVER_LOG_NOT_FOUND,
+} from '../errors';
+import {
+ MockServer as dbMockServer,
+ TeamAccessRole,
+ MockServerAction,
+ UserCollection,
+ TeamCollection,
+ UserRequest,
+} from '@prisma/client';
+import { WorkspaceType } from '../types/WorkspaceTypes';
+import { User } from '../user/user.model';
+import {
+ CreateMockServerInput,
+ UpdateMockServerInput,
+} from './mock-server.model';
+
+const mockPrisma = mockDeep();
+const mockAnalyticsService = mockDeep();
+const mockConfigService = mockDeep();
+
+const mockServerService = new MockServerService(
+ mockAnalyticsService,
+ mockPrisma,
+ mockConfigService,
+);
+
+beforeEach(() => {
+ mockReset(mockPrisma);
+ mockReset(mockAnalyticsService);
+ mockReset(mockConfigService);
+
+ // Default config values
+ mockConfigService.get.mockImplementation((key: string) => {
+ if (key === 'VITE_BACKEND_API_URL') return 'http://localhost:3170/v1';
+ if (key === 'INFRA.MOCK_SERVER_WILDCARD_DOMAIN') return '*.mock.hopp.io';
+ if (key === 'INFRA.ALLOW_SECURE_COOKIES') return 'false';
+ return undefined;
+ });
+});
+
+const currentTime = new Date();
+
+const user: User = {
+ uid: 'user123',
+ displayName: 'Test User',
+ email: 'test@example.com',
+ photoURL: null,
+ isAdmin: false,
+ currentGQLSession: '{}',
+ currentRESTSession: '{}',
+ createdOn: currentTime,
+ lastLoggedOn: currentTime,
+ lastActiveOn: currentTime,
+};
+
+const dbMockServer: dbMockServer = {
+ id: 'mock123',
+ name: 'Test Mock Server',
+ subdomain: 'test-subdomain',
+ creatorUid: user.uid,
+ collectionID: 'coll123',
+ workspaceType: WorkspaceType.USER,
+ workspaceID: user.uid,
+ delayInMs: 0,
+ isPublic: true,
+ isActive: true,
+ hitCount: 0,
+ lastHitAt: null,
+ createdOn: currentTime,
+ updatedOn: currentTime,
+ deletedAt: null,
+};
+
+const userCollection: UserCollection = {
+ id: 'coll123',
+ title: 'Test Collection',
+ userUid: user.uid,
+ parentID: null,
+ orderIndex: 1,
+ type: 'REST',
+ data: {},
+ createdOn: currentTime,
+ updatedOn: currentTime,
+};
+
+const teamCollection: TeamCollection = {
+ id: 'team-coll123',
+ title: 'Team Collection',
+ teamID: 'team123',
+ parentID: null,
+ orderIndex: 1,
+ data: {},
+ createdOn: currentTime,
+ updatedOn: currentTime,
+};
+
+describe('MockServerService', () => {
+ describe('getUserMockServers', () => {
+ test('should return user mock servers with pagination', async () => {
+ mockPrisma.mockServer.findMany.mockResolvedValue([dbMockServer]);
+
+ const result = await mockServerService.getUserMockServers(user.uid, {
+ take: 10,
+ skip: 0,
+ });
+
+ expect(result).toHaveLength(1);
+ expect(result[0].id).toBe(dbMockServer.id);
+ expect(result[0].name).toBe(dbMockServer.name);
+ expect(mockPrisma.mockServer.findMany).toHaveBeenCalledWith({
+ where: {
+ workspaceType: WorkspaceType.USER,
+ creatorUid: user.uid,
+ deletedAt: null,
+ },
+ orderBy: { createdOn: 'desc' },
+ take: 10,
+ skip: 0,
+ });
+ });
+
+ test('should return empty array when no mock servers exist', async () => {
+ mockPrisma.mockServer.findMany.mockResolvedValue([]);
+
+ const result = await mockServerService.getUserMockServers(user.uid, {
+ take: 10,
+ skip: 0,
+ });
+
+ expect(result).toHaveLength(0);
+ });
+ });
+
+ describe('getTeamMockServers', () => {
+ test('should return team mock servers with pagination', async () => {
+ const teamMockServer = {
+ ...dbMockServer,
+ workspaceType: WorkspaceType.TEAM,
+ workspaceID: 'team123',
+ };
+ mockPrisma.mockServer.findMany.mockResolvedValue([teamMockServer]);
+
+ const result = await mockServerService.getTeamMockServers('team123', {
+ take: 10,
+ skip: 0,
+ });
+
+ expect(result).toHaveLength(1);
+ expect(result[0].workspaceType).toBe(WorkspaceType.TEAM);
+ expect(mockPrisma.mockServer.findMany).toHaveBeenCalledWith({
+ where: {
+ workspaceType: WorkspaceType.TEAM,
+ workspaceID: 'team123',
+ deletedAt: null,
+ },
+ orderBy: { createdOn: 'desc' },
+ take: 10,
+ skip: 0,
+ });
+ });
+ });
+
+ describe('getMockServer', () => {
+ test('should return mock server when user has access', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(dbMockServer);
+
+ const result = await mockServerService.getMockServer(
+ dbMockServer.id,
+ user.uid,
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).id).toBe(dbMockServer.id);
+ expect((result.right as any).name).toBe(dbMockServer.name);
+ }
+ });
+
+ test('should return error when mock server not found', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(null);
+
+ const result = await mockServerService.getMockServer(
+ 'invalid-id',
+ user.uid,
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(MOCK_SERVER_NOT_FOUND);
+ }
+ });
+
+ test('should return error when user does not have access', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(dbMockServer);
+
+ const result = await mockServerService.getMockServer(
+ dbMockServer.id,
+ 'different-user',
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(MOCK_SERVER_NOT_FOUND);
+ }
+ });
+
+ test('should allow team member access to team mock server', async () => {
+ const teamMockServer = {
+ ...dbMockServer,
+ workspaceType: WorkspaceType.TEAM,
+ workspaceID: 'team123',
+ };
+ mockPrisma.mockServer.findFirst.mockResolvedValue(teamMockServer);
+ mockPrisma.team.findFirst.mockResolvedValue({
+ id: 'team123',
+ name: 'Test Team',
+ } as any);
+
+ const result = await mockServerService.getMockServer(
+ teamMockServer.id,
+ user.uid,
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ });
+ });
+
+ describe('getMockServerBySubdomain', () => {
+ test('should return active mock server by subdomain', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(dbMockServer);
+
+ const result = await mockServerService.getMockServerBySubdomain(
+ dbMockServer.subdomain,
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).id).toBe(dbMockServer.id);
+ }
+ expect(mockPrisma.mockServer.findFirst).toHaveBeenCalledWith({
+ where: {
+ subdomain: { equals: dbMockServer.subdomain, mode: 'insensitive' },
+ isActive: true,
+ deletedAt: null,
+ },
+ });
+ });
+
+ test('should return error when mock server not found', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(null);
+
+ const result =
+ await mockServerService.getMockServerBySubdomain('non-existent');
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(MOCK_SERVER_NOT_FOUND);
+ }
+ });
+ });
+
+ describe('getMockServerCreator', () => {
+ test('should return mock server creator', async () => {
+ mockPrisma.mockServer.findUnique.mockResolvedValue({
+ ...dbMockServer,
+ user: user as any,
+ } as any);
+
+ const result = await mockServerService.getMockServerCreator(
+ dbMockServer.id,
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).uid).toBe(user.uid);
+ }
+ });
+
+ test('should return error when mock server not found', async () => {
+ mockPrisma.mockServer.findUnique.mockResolvedValue(null);
+
+ const result = await mockServerService.getMockServerCreator('invalid-id');
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(MOCK_SERVER_NOT_FOUND);
+ }
+ });
+ });
+
+ describe('getMockServerCollection', () => {
+ test('should return user collection for user workspace', async () => {
+ mockPrisma.mockServer.findUnique.mockResolvedValue(dbMockServer);
+ mockPrisma.userCollection.findUnique.mockResolvedValue(userCollection);
+
+ const result = await mockServerService.getMockServerCollection(
+ dbMockServer.id,
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).id).toBe(userCollection.id);
+ expect((result.right as any).title).toBe(userCollection.title);
+ }
+ });
+
+ test('should return team collection for team workspace', async () => {
+ const teamMockServer = {
+ ...dbMockServer,
+ workspaceType: WorkspaceType.TEAM,
+ collectionID: teamCollection.id,
+ };
+ mockPrisma.mockServer.findUnique.mockResolvedValue(teamMockServer);
+ mockPrisma.teamCollection.findUnique.mockResolvedValue(teamCollection);
+
+ const result = await mockServerService.getMockServerCollection(
+ teamMockServer.id,
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).id).toBe(teamCollection.id);
+ expect((result.right as any).title).toBe(teamCollection.title);
+ }
+ });
+
+ test('should return null when collection not found', async () => {
+ mockPrisma.mockServer.findUnique.mockResolvedValue(dbMockServer);
+ mockPrisma.userCollection.findUnique.mockResolvedValue(null);
+
+ const result = await mockServerService.getMockServerCollection(
+ dbMockServer.id,
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect(result.right).toBe(null);
+ }
+ });
+ });
+
+ describe('createMockServer', () => {
+ const createInput: CreateMockServerInput = {
+ name: 'New Mock Server',
+ collectionID: userCollection.id,
+ workspaceType: WorkspaceType.USER,
+ workspaceID: undefined,
+ delayInMs: 0,
+ };
+
+ test('should create user mock server successfully', async () => {
+ mockPrisma.userCollection.findUnique.mockResolvedValue(userCollection);
+ mockPrisma.mockServer.findUnique.mockResolvedValue(null);
+ mockPrisma.mockServer.create.mockResolvedValue(dbMockServer);
+
+ const result = await mockServerService.createMockServer(
+ user,
+ createInput,
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).name).toBe(dbMockServer.name);
+ }
+ expect(mockAnalyticsService.recordActivity).toHaveBeenCalledWith(
+ dbMockServer,
+ MockServerAction.CREATED,
+ user.uid,
+ );
+ });
+
+ test('should create team mock server successfully', async () => {
+ const teamInput: CreateMockServerInput = {
+ name: 'Team Mock Server',
+ collectionID: teamCollection.id,
+ workspaceType: WorkspaceType.TEAM,
+ workspaceID: 'team123',
+ delayInMs: 0,
+ };
+ const teamMockServer = {
+ ...dbMockServer,
+ workspaceType: WorkspaceType.TEAM,
+ workspaceID: 'team123',
+ };
+
+ mockPrisma.team.findFirst.mockResolvedValue({ id: 'team123' } as any);
+ mockPrisma.teamCollection.findUnique.mockResolvedValue(teamCollection);
+ mockPrisma.mockServer.findUnique.mockResolvedValue(null);
+ mockPrisma.mockServer.create.mockResolvedValue(teamMockServer);
+
+ const result = await mockServerService.createMockServer(user, teamInput);
+
+ expect(E.isRight(result)).toBe(true);
+ });
+
+ test('should return error when collection not found', async () => {
+ mockPrisma.userCollection.findUnique.mockResolvedValue(null);
+
+ const result = await mockServerService.createMockServer(
+ user,
+ createInput,
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(MOCK_SERVER_INVALID_COLLECTION);
+ }
+ });
+
+ test('should return error when team is invalid', async () => {
+ const teamInput: CreateMockServerInput = {
+ name: 'Team Mock Server',
+ collectionID: teamCollection.id,
+ workspaceType: WorkspaceType.TEAM,
+ workspaceID: 'invalid-team',
+ delayInMs: 0,
+ };
+
+ mockPrisma.team.findFirst.mockResolvedValue(null);
+
+ const result = await mockServerService.createMockServer(user, teamInput);
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(TEAM_INVALID_ID);
+ }
+ });
+
+ test('should retry subdomain generation on conflict', async () => {
+ const PrismaError = { UNIQUE_CONSTRAINT_VIOLATION: 'P2002' };
+ mockPrisma.userCollection.findUnique.mockResolvedValue(userCollection);
+ mockPrisma.mockServer.create
+ .mockRejectedValueOnce({
+ code: PrismaError.UNIQUE_CONSTRAINT_VIOLATION,
+ }) // First attempt conflicts
+ .mockResolvedValueOnce(dbMockServer); // Second attempt succeeds
+
+ const result = await mockServerService.createMockServer(
+ user,
+ createInput,
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ expect(mockPrisma.mockServer.create).toHaveBeenCalledTimes(2);
+ });
+
+ test('should return creation failed error on non-constraint errors', async () => {
+ mockPrisma.userCollection.findUnique.mockResolvedValue(userCollection);
+ mockPrisma.mockServer.create.mockRejectedValue(
+ new Error('Database error'),
+ );
+
+ const result = await mockServerService.createMockServer(
+ user,
+ createInput,
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe('mock_server/creation_failed');
+ }
+ });
+ });
+
+ describe('updateMockServer', () => {
+ const updateInput: UpdateMockServerInput = {
+ name: 'Updated Name',
+ isActive: false,
+ delayInMs: 100,
+ };
+
+ test('should update mock server successfully', async () => {
+ const updatedMockServer = { ...dbMockServer, ...updateInput };
+ mockPrisma.mockServer.findFirst.mockResolvedValue(dbMockServer);
+ mockPrisma.mockServer.update.mockResolvedValue(updatedMockServer);
+
+ const result = await mockServerService.updateMockServer(
+ dbMockServer.id,
+ user.uid,
+ updateInput,
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).name).toBe(updateInput.name);
+ }
+ expect(mockPrisma.mockServer.update).toHaveBeenCalledWith({
+ where: { id: dbMockServer.id },
+ data: updateInput,
+ });
+ });
+
+ test('should record deactivation analytics', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(dbMockServer);
+ mockPrisma.mockServer.update.mockResolvedValue({
+ ...dbMockServer,
+ isActive: false,
+ });
+
+ await mockServerService.updateMockServer(dbMockServer.id, user.uid, {
+ isActive: false,
+ });
+
+ expect(mockAnalyticsService.recordActivity).toHaveBeenCalledWith(
+ dbMockServer,
+ MockServerAction.DEACTIVATED,
+ user.uid,
+ );
+ });
+
+ test('should record activation analytics', async () => {
+ const inactiveMockServer = { ...dbMockServer, isActive: false };
+ mockPrisma.mockServer.findFirst.mockResolvedValue(inactiveMockServer);
+ mockPrisma.mockServer.update.mockResolvedValue({
+ ...inactiveMockServer,
+ isActive: true,
+ });
+
+ await mockServerService.updateMockServer(dbMockServer.id, user.uid, {
+ isActive: true,
+ });
+
+ expect(mockAnalyticsService.recordActivity).toHaveBeenCalledWith(
+ inactiveMockServer,
+ MockServerAction.ACTIVATED,
+ user.uid,
+ );
+ });
+
+ test('should return error when mock server not found', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(null);
+
+ const result = await mockServerService.updateMockServer(
+ 'invalid-id',
+ user.uid,
+ updateInput,
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(MOCK_SERVER_NOT_FOUND);
+ }
+ });
+
+ test('should return error when user lacks permission', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(dbMockServer);
+
+ const result = await mockServerService.updateMockServer(
+ dbMockServer.id,
+ 'different-user',
+ updateInput,
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(MOCK_SERVER_NOT_FOUND);
+ }
+ });
+ });
+
+ describe('deleteMockServer', () => {
+ test('should soft delete mock server successfully', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(dbMockServer);
+ mockPrisma.mockServer.update.mockResolvedValue({
+ ...dbMockServer,
+ isActive: false,
+ deletedAt: currentTime,
+ });
+
+ const result = await mockServerService.deleteMockServer(
+ dbMockServer.id,
+ user.uid,
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect(result.right).toBe(true);
+ }
+ expect(mockPrisma.mockServer.update).toHaveBeenCalledWith({
+ where: { id: dbMockServer.id },
+ data: { isActive: false, deletedAt: expect.any(Date) },
+ });
+ expect(mockAnalyticsService.recordActivity).toHaveBeenCalledWith(
+ dbMockServer,
+ MockServerAction.DELETED,
+ user.uid,
+ );
+ });
+
+ test('should return error when mock server not found', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(null);
+
+ const result = await mockServerService.deleteMockServer(
+ 'invalid-id',
+ user.uid,
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(MOCK_SERVER_NOT_FOUND);
+ }
+ });
+
+ test('should return error when user lacks permission', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(dbMockServer);
+
+ const result = await mockServerService.deleteMockServer(
+ dbMockServer.id,
+ 'different-user',
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(MOCK_SERVER_NOT_FOUND);
+ }
+ });
+ });
+
+ describe('logRequest', () => {
+ const logParams = {
+ mockServerID: dbMockServer.id,
+ requestMethod: 'GET',
+ requestPath: '/api/users',
+ requestHeaders: { 'content-type': 'application/json' },
+ requestBody: { test: 'data' },
+ requestQuery: { page: '1' },
+ responseStatus: 200,
+ responseHeaders: { 'content-type': 'application/json' },
+ responseTime: 150,
+ ipAddress: '127.0.0.1',
+ userAgent: 'Mozilla/5.0',
+ };
+
+ test('should log request successfully', async () => {
+ mockPrisma.mockServerLog.create.mockResolvedValue({
+ id: 'log123',
+ ...logParams,
+ responseBody: null,
+ executedAt: currentTime,
+ } as any);
+
+ await mockServerService.logRequest(logParams);
+
+ expect(mockPrisma.mockServerLog.create).toHaveBeenCalledWith({
+ data: {
+ mockServerID: logParams.mockServerID,
+ requestMethod: logParams.requestMethod,
+ requestPath: logParams.requestPath,
+ requestHeaders: logParams.requestHeaders,
+ requestBody: logParams.requestBody,
+ requestQuery: logParams.requestQuery,
+ responseStatus: logParams.responseStatus,
+ responseHeaders: logParams.responseHeaders,
+ responseBody: null,
+ responseTime: logParams.responseTime,
+ ipAddress: logParams.ipAddress,
+ userAgent: logParams.userAgent,
+ },
+ });
+ });
+
+ test('should handle logging errors gracefully', async () => {
+ mockPrisma.mockServerLog.create.mockRejectedValue(new Error('DB Error'));
+
+ // Should not throw
+ await expect(
+ mockServerService.logRequest(logParams),
+ ).resolves.not.toThrow();
+ });
+ });
+
+ describe('getMockServerLogs', () => {
+ const mockLog = {
+ id: 'log123',
+ mockServerID: dbMockServer.id,
+ requestMethod: 'GET',
+ requestPath: '/api/users',
+ requestHeaders: { 'content-type': 'application/json' },
+ requestBody: null,
+ requestQuery: { page: '1' },
+ responseStatus: 200,
+ responseHeaders: { 'content-type': 'application/json' },
+ responseBody: null,
+ responseTime: 150,
+ ipAddress: '127.0.0.1',
+ userAgent: 'Mozilla/5.0',
+ executedAt: currentTime,
+ };
+
+ test('should return logs with pagination', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(dbMockServer);
+ mockPrisma.mockServerLog.findMany.mockResolvedValue([mockLog] as any);
+
+ const result = await mockServerService.getMockServerLogs(
+ dbMockServer.id,
+ user.uid,
+ { take: 10, skip: 0 },
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect(result.right as any).toHaveLength(1);
+ expect((result.right as any)[0].requestMethod).toBe('GET');
+ expect((result.right as any)[0].requestHeaders).toBe(
+ JSON.stringify(mockLog.requestHeaders),
+ );
+ }
+ expect(mockPrisma.mockServerLog.findMany).toHaveBeenCalledWith({
+ where: { mockServerID: dbMockServer.id },
+ orderBy: { executedAt: 'desc' },
+ take: 10,
+ skip: 0,
+ });
+ });
+
+ test('should return error when mock server not found', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(null);
+
+ const result = await mockServerService.getMockServerLogs(
+ 'invalid-id',
+ user.uid,
+ { take: 10, skip: 0 },
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(MOCK_SERVER_NOT_FOUND);
+ }
+ });
+
+ test('should return error when user lacks access', async () => {
+ mockPrisma.mockServer.findFirst.mockResolvedValue(dbMockServer);
+
+ const result = await mockServerService.getMockServerLogs(
+ dbMockServer.id,
+ 'different-user',
+ { take: 10, skip: 0 },
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ });
+ });
+
+ describe('deleteMockServerLog', () => {
+ const mockLog = {
+ id: 'log123',
+ mockServerID: dbMockServer.id,
+ mockServer: dbMockServer,
+ };
+
+ test('should delete log successfully', async () => {
+ mockPrisma.mockServerLog.findUnique.mockResolvedValue(mockLog as any);
+ mockPrisma.mockServerLog.delete.mockResolvedValue(mockLog as any);
+
+ const result = await mockServerService.deleteMockServerLog(
+ 'log123',
+ user.uid,
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect(result.right).toBe(true);
+ }
+ expect(mockPrisma.mockServerLog.delete).toHaveBeenCalledWith({
+ where: { id: 'log123' },
+ });
+ });
+
+ test('should return error when log not found', async () => {
+ mockPrisma.mockServerLog.findUnique.mockResolvedValue(null);
+
+ const result = await mockServerService.deleteMockServerLog(
+ 'invalid-id',
+ user.uid,
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(MOCK_SERVER_LOG_NOT_FOUND);
+ }
+ });
+
+ test('should return error when user lacks permission', async () => {
+ mockPrisma.mockServerLog.findUnique.mockResolvedValue(mockLog as any);
+
+ const result = await mockServerService.deleteMockServerLog(
+ 'log123',
+ 'different-user',
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toBe(MOCK_SERVER_LOG_NOT_FOUND);
+ }
+ });
+ });
+
+ describe('incrementHitCount', () => {
+ test('should increment hit count and update last hit timestamp', async () => {
+ mockPrisma.mockServer.update.mockResolvedValue({
+ ...dbMockServer,
+ hitCount: 1,
+ lastHitAt: currentTime,
+ });
+
+ await mockServerService.incrementHitCount(dbMockServer.id);
+
+ expect(mockPrisma.mockServer.update).toHaveBeenCalledWith({
+ where: { id: dbMockServer.id },
+ data: {
+ hitCount: { increment: 1 },
+ lastHitAt: expect.any(Date),
+ },
+ });
+ });
+
+ test('should handle errors gracefully', async () => {
+ mockPrisma.mockServer.update.mockRejectedValue(new Error('DB Error'));
+
+ // Should not throw
+ await expect(
+ mockServerService.incrementHitCount(dbMockServer.id),
+ ).resolves.not.toThrow();
+ });
+ });
+
+ describe('handleMockRequest', () => {
+ const mockExample = {
+ key: 'example1',
+ name: 'Success Response',
+ method: 'GET',
+ endpoint: 'http://api.example.com/users?page=1',
+ statusCode: 200,
+ statusText: 'OK',
+ responseBody: '{"success": true}',
+ responseHeaders: [{ key: 'content-type', value: 'application/json' }],
+ headers: [],
+ };
+
+ const userRequest: UserRequest = {
+ id: 'req123',
+ collectionID: userCollection.id,
+ teamID: null,
+ title: 'Get Users',
+ request: {},
+ mockExamples: {
+ examples: [mockExample],
+ },
+ orderIndex: 1,
+ createdOn: currentTime,
+ updatedOn: currentTime,
+ } as any;
+
+ test('should return example by ID header', async () => {
+ mockPrisma.userCollection.findUnique.mockResolvedValue(userCollection);
+ mockPrisma.userCollection.findMany.mockResolvedValue([]); // No child collections
+ mockPrisma.userRequest.findMany.mockResolvedValue([userRequest] as any);
+
+ const result = await mockServerService.handleMockRequest(
+ dbMockServer,
+ '/users',
+ 'GET',
+ {},
+ { 'x-mock-response-id': 'example1' },
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).statusCode).toBe(200);
+ expect((result.right as any).body).toBe('{"success": true}');
+ }
+ });
+
+ test('should return example by name header', async () => {
+ mockPrisma.userCollection.findUnique.mockResolvedValue(userCollection);
+ mockPrisma.userCollection.findMany.mockResolvedValue([]); // No child collections
+ mockPrisma.userRequest.findMany.mockResolvedValue([userRequest] as any);
+
+ const result = await mockServerService.handleMockRequest(
+ dbMockServer,
+ '/users',
+ 'GET',
+ {},
+ { 'x-mock-response-name': 'Success Response' },
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).statusCode).toBe(200);
+ }
+ });
+
+ test('should filter by status code header', async () => {
+ const example404 = {
+ ...mockExample,
+ key: 'example2',
+ endpoint: 'http://api.example.com/users', // Same endpoint
+ statusCode: 404,
+ statusText: 'Not Found',
+ responseBody: '{"error": "not found"}',
+ };
+ const requestWith404 = {
+ ...userRequest,
+ mockExamples: {
+ examples: [mockExample, example404],
+ },
+ };
+
+ mockPrisma.userCollection.findUnique.mockResolvedValue(userCollection);
+ mockPrisma.userCollection.findMany.mockResolvedValue([]); // No child collections
+ mockPrisma.userRequest.findMany.mockResolvedValue([
+ requestWith404,
+ ] as any);
+
+ const result = await mockServerService.handleMockRequest(
+ dbMockServer,
+ '/users',
+ 'GET',
+ {},
+ { 'x-mock-response-code': '404' },
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).statusCode).toBe(404);
+ expect((result.right as any).body).toBe('{"error": "not found"}');
+ }
+ });
+
+ test('should match exact path', async () => {
+ mockPrisma.userCollection.findUnique.mockResolvedValue(userCollection);
+ mockPrisma.userRequest.findMany.mockResolvedValue([userRequest] as any);
+ mockPrisma.userCollection.findMany.mockResolvedValue([]);
+
+ const result = await mockServerService.handleMockRequest(
+ dbMockServer,
+ '/users',
+ 'GET',
+ { page: '1' },
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).statusCode).toBe(200);
+ }
+ });
+
+ test('should match path with variables', async () => {
+ const variableExample = {
+ ...mockExample,
+ endpoint: 'http://api.example.com/users/<>',
+ };
+ const variableRequest = {
+ ...userRequest,
+ mockExamples: {
+ examples: [variableExample],
+ },
+ };
+
+ mockPrisma.userCollection.findUnique.mockResolvedValue(userCollection);
+ mockPrisma.userRequest.findMany.mockResolvedValue([
+ variableRequest,
+ ] as any);
+ mockPrisma.userCollection.findMany.mockResolvedValue([]);
+
+ const result = await mockServerService.handleMockRequest(
+ dbMockServer,
+ '/users/123',
+ 'GET',
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ });
+
+ test('should return error when no examples found', async () => {
+ mockPrisma.userCollection.findUnique.mockResolvedValue(userCollection);
+ mockPrisma.userRequest.findMany.mockResolvedValue([]);
+ mockPrisma.userCollection.findMany.mockResolvedValue([]);
+
+ const result = await mockServerService.handleMockRequest(
+ dbMockServer,
+ '/users',
+ 'GET',
+ );
+
+ expect(E.isLeft(result)).toBe(true);
+ if (E.isLeft(result)) {
+ expect(result.left).toContain('No examples found');
+ }
+ });
+
+ test('should prefer 200 status when scores are equal', async () => {
+ const example200 = { ...mockExample, statusCode: 200 };
+ const example404 = { ...mockExample, key: 'example2', statusCode: 404 };
+ const multipleExamples = {
+ ...userRequest,
+ mockExamples: {
+ examples: [example404, example200], // 404 first, but 200 should be preferred
+ },
+ };
+
+ mockPrisma.userCollection.findUnique.mockResolvedValue(userCollection);
+ mockPrisma.userRequest.findMany.mockResolvedValue([
+ multipleExamples,
+ ] as any);
+ mockPrisma.userCollection.findMany.mockResolvedValue([]);
+
+ const result = await mockServerService.handleMockRequest(
+ dbMockServer,
+ '/users',
+ 'GET',
+ { page: '1' },
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).statusCode).toBe(200);
+ }
+ });
+
+ test('should include delay in response', async () => {
+ const delayedMockServer = { ...dbMockServer, delayInMs: 500 };
+ const simpleRequest = {
+ ...userRequest,
+ mockExamples: {
+ examples: [
+ {
+ ...mockExample,
+ endpoint: 'http://api.example.com/users', // Remove query params
+ },
+ ],
+ },
+ };
+
+ mockPrisma.userCollection.findUnique.mockResolvedValue(userCollection);
+ mockPrisma.userCollection.findMany.mockResolvedValue([]); // No child collections
+ mockPrisma.userRequest.findMany.mockResolvedValue([simpleRequest] as any);
+
+ const result = await mockServerService.handleMockRequest(
+ delayedMockServer,
+ '/users',
+ 'GET',
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ if (E.isRight(result)) {
+ expect((result.right as any).delay).toBe(500);
+ }
+ });
+
+ test('should work with team collections', async () => {
+ const teamMockServer = {
+ ...dbMockServer,
+ workspaceType: WorkspaceType.TEAM,
+ collectionID: teamCollection.id,
+ };
+ const teamRequest = {
+ ...userRequest,
+ collectionID: teamCollection.id,
+ mockExamples: {
+ examples: [
+ {
+ ...mockExample,
+ endpoint: 'http://api.example.com/users', // Remove query params
+ },
+ ],
+ },
+ };
+
+ mockPrisma.teamCollection.findUnique.mockResolvedValue(teamCollection);
+ mockPrisma.teamCollection.findMany.mockResolvedValue([]); // No child collections
+ mockPrisma.teamRequest.findMany.mockResolvedValue([teamRequest] as any);
+
+ const result = await mockServerService.handleMockRequest(
+ teamMockServer,
+ '/users',
+ 'GET',
+ );
+
+ expect(E.isRight(result)).toBe(true);
+ });
+ });
+
+ describe('checkMockServerAccess', () => {
+ test('should allow user access to their own mock server', async () => {
+ const hasAccess = await mockServerService.checkMockServerAccess(
+ dbMockServer,
+ user.uid,
+ );
+
+ expect(hasAccess).toBe(true);
+ });
+
+ test('should deny user access to other users mock server', async () => {
+ const hasAccess = await mockServerService.checkMockServerAccess(
+ dbMockServer,
+ 'different-user',
+ );
+
+ expect(hasAccess).toBe(false);
+ });
+
+ test('should allow team member access to team mock server', async () => {
+ const teamMockServer = {
+ ...dbMockServer,
+ workspaceType: WorkspaceType.TEAM,
+ workspaceID: 'team123',
+ };
+
+ mockPrisma.team.findFirst.mockResolvedValue({ id: 'team123' } as any);
+
+ const hasAccess = await mockServerService.checkMockServerAccess(
+ teamMockServer,
+ user.uid,
+ );
+
+ expect(hasAccess).toBe(true);
+ });
+
+ test('should deny non-member access to team mock server', async () => {
+ const teamMockServer = {
+ ...dbMockServer,
+ workspaceType: WorkspaceType.TEAM,
+ workspaceID: 'team123',
+ };
+
+ mockPrisma.team.findFirst.mockResolvedValue(null);
+
+ const hasAccess = await mockServerService.checkMockServerAccess(
+ teamMockServer,
+ user.uid,
+ );
+
+ expect(hasAccess).toBe(false);
+ });
+
+ test('should respect role restrictions', async () => {
+ const teamMockServer = {
+ ...dbMockServer,
+ workspaceType: WorkspaceType.TEAM,
+ workspaceID: 'team123',
+ };
+
+ mockPrisma.team.findFirst.mockResolvedValue(null);
+
+ const hasAccess = await mockServerService.checkMockServerAccess(
+ teamMockServer,
+ user.uid,
+ [TeamAccessRole.OWNER], // Only owners
+ );
+
+ expect(hasAccess).toBe(false);
+ });
+ });
+});
diff --git a/packages/hoppscotch-backend/src/mock-server/mock-server.service.ts b/packages/hoppscotch-backend/src/mock-server/mock-server.service.ts
new file mode 100644
index 00000000000..133a77cb736
--- /dev/null
+++ b/packages/hoppscotch-backend/src/mock-server/mock-server.service.ts
@@ -0,0 +1,1063 @@
+import { Injectable } from '@nestjs/common';
+import { PrismaService } from 'src/prisma/prisma.service';
+import {
+ CreateMockServerInput,
+ UpdateMockServerInput,
+ MockServerResponse,
+ MockServer,
+ MockServerCollection,
+ MockServerLog,
+} from './mock-server.model';
+import { User } from 'src/user/user.model';
+import * as E from 'fp-ts/Either';
+import {
+ MOCK_SERVER_NOT_FOUND,
+ MOCK_SERVER_INVALID_COLLECTION,
+ TEAM_INVALID_ID,
+ MOCK_SERVER_CREATION_FAILED,
+ MOCK_SERVER_UPDATE_FAILED,
+ MOCK_SERVER_DELETION_FAILED,
+ MOCK_SERVER_LOG_NOT_FOUND,
+ MOCK_SERVER_LOG_DELETION_FAILED,
+} from 'src/errors';
+import { randomBytes } from 'crypto';
+import { WorkspaceType } from 'src/types/WorkspaceTypes';
+import {
+ MockServerAction,
+ TeamAccessRole,
+ MockServer as dbMockServer,
+} from '@prisma/client';
+import { OffsetPaginationArgs } from 'src/types/input-types.args';
+import { ConfigService } from '@nestjs/config';
+import { MockServerAnalyticsService } from './mock-server-analytics.service';
+import { PrismaError } from 'src/prisma/prisma-error-codes';
+
+@Injectable()
+export class MockServerService {
+ constructor(
+ private readonly mockServerAnalyticsService: MockServerAnalyticsService,
+ private readonly prisma: PrismaService,
+ private readonly configService: ConfigService,
+ ) {}
+
+ /**
+ * Cast database model to GraphQL model
+ */
+ private cast(dbMockServer: dbMockServer): MockServer {
+ // Generate path based mock server URL
+ const backendUrl = this.configService.get('VITE_BACKEND_API_URL');
+ const base = backendUrl.substring(0, backendUrl.lastIndexOf('/')); // "http(s)://localhost:3170"
+ const serverUrlPathBased = base + '/mock/' + dbMockServer.subdomain;
+
+ // Generate domain based mock server URL
+ // MOCK_SERVER_WILDCARD_DOMAIN = '*.mock.hopp.io'
+ const wildcardDomain = this.configService.get(
+ 'INFRA.MOCK_SERVER_WILDCARD_DOMAIN',
+ );
+ const isSecure =
+ this.configService.get('INFRA.ALLOW_SECURE_COOKIES') === 'true';
+ const protocol = isSecure ? 'https://' : 'http://';
+ const serverUrlDomainBased = wildcardDomain
+ ? protocol + dbMockServer.subdomain + wildcardDomain.substring(1)
+ : null;
+
+ return {
+ id: dbMockServer.id,
+ name: dbMockServer.name,
+ subdomain: dbMockServer.subdomain,
+ serverUrlPathBased,
+ serverUrlDomainBased,
+ workspaceType: dbMockServer.workspaceType,
+ workspaceID: dbMockServer.workspaceID,
+ delayInMs: dbMockServer.delayInMs,
+ isActive: dbMockServer.isActive,
+ isPublic: dbMockServer.isPublic,
+ createdOn: dbMockServer.createdOn,
+ updatedOn: dbMockServer.updatedOn,
+ } as MockServer;
+ }
+
+ /**
+ * Get mock servers for a user
+ */
+ async getUserMockServers(userUid: string, args: OffsetPaginationArgs) {
+ const mockServers = await this.prisma.mockServer.findMany({
+ where: {
+ workspaceType: WorkspaceType.USER,
+ creatorUid: userUid,
+ deletedAt: null,
+ },
+ orderBy: { createdOn: 'desc' },
+ take: args?.take,
+ skip: args?.skip,
+ });
+
+ return mockServers.map((ms) => this.cast(ms));
+ }
+
+ /**
+ * Get mock servers for a team
+ */
+ async getTeamMockServers(teamID: string, args: OffsetPaginationArgs) {
+ const mockServers = await this.prisma.mockServer.findMany({
+ where: {
+ workspaceType: WorkspaceType.TEAM,
+ workspaceID: teamID,
+ deletedAt: null,
+ },
+ orderBy: { createdOn: 'desc' },
+ take: args?.take,
+ skip: args?.skip,
+ });
+
+ return mockServers.map((ms) => this.cast(ms));
+ }
+
+ /**
+ * Check if user has access to a team with specific roles
+ */
+ private async checkTeamAccess(
+ teamId: string,
+ userUid: string,
+ requiredRoles: TeamAccessRole[],
+ ): Promise {
+ const team = await this.prisma.team.findFirst({
+ where: {
+ id: teamId,
+ members: {
+ some: {
+ userUid,
+ role: { in: requiredRoles },
+ },
+ },
+ },
+ });
+ return !!team;
+ }
+
+ /**
+ * Check if user has access to a mock server with specific roles
+ */
+ async checkMockServerAccess(
+ mockServer: dbMockServer,
+ userUid: string,
+ requiredRoles: TeamAccessRole[] = [
+ TeamAccessRole.OWNER,
+ TeamAccessRole.EDITOR,
+ TeamAccessRole.VIEWER,
+ ],
+ ): Promise {
+ if (mockServer.workspaceType === WorkspaceType.USER) {
+ return mockServer.creatorUid === userUid;
+ } else if (mockServer.workspaceType === WorkspaceType.TEAM) {
+ return this.checkTeamAccess(
+ mockServer.workspaceID,
+ userUid,
+ requiredRoles,
+ );
+ }
+ return false;
+ }
+
+ /**
+ * Get a specific mock server by ID
+ */
+ async getMockServer(id: string, userUid: string) {
+ const mockServer = await this.prisma.mockServer.findFirst({
+ where: { id, deletedAt: null },
+ });
+ if (!mockServer) return E.left(MOCK_SERVER_NOT_FOUND);
+
+ // Check access permissions
+ const hasAccess = await this.checkMockServerAccess(mockServer, userUid);
+ if (!hasAccess) return E.left(MOCK_SERVER_NOT_FOUND);
+
+ return E.right(this.cast(mockServer));
+ }
+
+ /**
+ * Get a mock server by subdomain (for incoming mock requests)
+ * Returns database model with collectionID for internal use
+ * @param subdomain - The subdomain of the mock server
+ * @param includeInactive - If true, returns mock server regardless of active status (default: false)
+ */
+ async getMockServerBySubdomain(subdomain: string, includeInactive = false) {
+ const mockServer = await this.prisma.mockServer.findFirst({
+ where: {
+ subdomain: { equals: subdomain, mode: 'insensitive' },
+ ...(includeInactive ? {} : { isActive: true }),
+ deletedAt: null,
+ },
+ });
+ if (!mockServer) return E.left(MOCK_SERVER_NOT_FOUND);
+
+ // Return database model directly (includes collectionID)
+ return E.right(mockServer);
+ }
+
+ /**
+ * (Field resolver)
+ * Get the creator of a mock server
+ */
+ async getMockServerCreator(mockServerId: string) {
+ const mockServer = await this.prisma.mockServer.findUnique({
+ where: { id: mockServerId, deletedAt: null },
+ include: { user: true },
+ });
+ if (!mockServer) return E.left(MOCK_SERVER_NOT_FOUND);
+ return E.right(mockServer.user);
+ }
+
+ /**
+ * (Field resolver)
+ * Get the collection of a mock server
+ */
+ async getMockServerCollection(mockServerId: string) {
+ const mockServer = await this.prisma.mockServer.findUnique({
+ where: { id: mockServerId, deletedAt: null },
+ });
+ if (!mockServer) return E.left(MOCK_SERVER_NOT_FOUND);
+
+ if (mockServer.workspaceType === WorkspaceType.USER) {
+ const collection = await this.prisma.userCollection.findUnique({
+ where: { id: mockServer.collectionID },
+ });
+ if (!collection) return E.right(null);
+ return E.right({
+ id: collection.id,
+ title: collection.title,
+ } as MockServerCollection);
+ } else if (mockServer.workspaceType === WorkspaceType.TEAM) {
+ const collection = await this.prisma.teamCollection.findUnique({
+ where: { id: mockServer.collectionID },
+ });
+ if (!collection) return E.right(null);
+ return E.right({
+ id: collection.id,
+ title: collection.title,
+ } as MockServerCollection);
+ }
+
+ return E.left(MOCK_SERVER_INVALID_COLLECTION);
+ }
+
+ /**
+ * Generate a unique subdomain for the mock server
+ */
+ private generateMockServerSubdomain(): string {
+ const id = randomBytes(10).toString('base64url').substring(0, 13);
+ return `${id}`;
+ }
+
+ /**
+ * Validate workspace access permission and existence
+ */
+ private async validateWorkspace(user: User, input: CreateMockServerInput) {
+ if (input.workspaceType === WorkspaceType.TEAM) {
+ if (!input.workspaceID) return E.left(TEAM_INVALID_ID);
+
+ const hasAccess = await this.checkTeamAccess(
+ input.workspaceID,
+ user.uid,
+ [TeamAccessRole.OWNER, TeamAccessRole.EDITOR],
+ );
+
+ if (!hasAccess) return E.left(TEAM_INVALID_ID);
+ }
+
+ return E.right(true);
+ }
+
+ /**
+ * Validate collection exists and user has access
+ */
+ private async validateCollection(user: User, input: CreateMockServerInput) {
+ if (input.workspaceType === WorkspaceType.TEAM) {
+ const collection = await this.prisma.teamCollection.findUnique({
+ where: { id: input.collectionID, teamID: input.workspaceID },
+ });
+ return collection
+ ? E.right(collection)
+ : E.left(MOCK_SERVER_INVALID_COLLECTION);
+ } else if (input.workspaceType === WorkspaceType.USER) {
+ const collection = await this.prisma.userCollection.findUnique({
+ where: { id: input.collectionID, userUid: user.uid },
+ });
+ return collection
+ ? E.right(collection)
+ : E.left(MOCK_SERVER_INVALID_COLLECTION);
+ }
+
+ return E.left(MOCK_SERVER_INVALID_COLLECTION);
+ }
+
+ /**
+ * Create a new mock server
+ */
+ async createMockServer(
+ user: User,
+ input: CreateMockServerInput,
+ ): Promise> {
+ try {
+ // Validate workspace type and ID
+ const workspaceValidation = await this.validateWorkspace(user, input);
+ if (E.isLeft(workspaceValidation)) {
+ return E.left(workspaceValidation.left);
+ }
+
+ // Validate collection exists and user has access
+ const collectionValidation = await this.validateCollection(user, input);
+ if (E.isLeft(collectionValidation)) {
+ return E.left(collectionValidation.left);
+ }
+
+ // Create mock server
+ const subdomain: string = this.generateMockServerSubdomain();
+ const mockServer = await this.prisma.mockServer.create({
+ data: {
+ name: input.name,
+ subdomain,
+ creatorUid: user.uid,
+ collectionID: input.collectionID,
+ workspaceType: input.workspaceType,
+ workspaceID:
+ input.workspaceType === WorkspaceType.TEAM
+ ? input.workspaceID
+ : user.uid,
+ delayInMs: input.delayInMs,
+ },
+ });
+ this.mockServerAnalyticsService.recordActivity(
+ mockServer,
+ MockServerAction.CREATED,
+ user.uid,
+ );
+
+ return E.right(this.cast(mockServer));
+ } catch (error) {
+ if (error.code === PrismaError.UNIQUE_CONSTRAINT_VIOLATION) {
+ return this.createMockServer(user, input); // Retry on subdomain conflict
+ }
+ console.error('Error creating mock server:', error);
+ return E.left(MOCK_SERVER_CREATION_FAILED);
+ }
+ }
+
+ /**
+ * Update a mock server
+ */
+ async updateMockServer(
+ id: string,
+ userUid: string,
+ input: UpdateMockServerInput,
+ ) {
+ try {
+ const mockServer = await this.prisma.mockServer.findFirst({
+ where: { id, deletedAt: null },
+ });
+ if (!mockServer) return E.left(MOCK_SERVER_NOT_FOUND);
+
+ // Check access permissions (only OWNER and EDITOR can update)
+ const hasAccess = await this.checkMockServerAccess(mockServer, userUid, [
+ TeamAccessRole.OWNER,
+ TeamAccessRole.EDITOR,
+ ]);
+ if (!hasAccess) return E.left(MOCK_SERVER_NOT_FOUND);
+
+ // Update the mock server
+ const updated = await this.prisma.mockServer.update({
+ where: { id },
+ data: input,
+ });
+ if (input.isActive !== undefined) {
+ this.mockServerAnalyticsService.recordActivity(
+ mockServer, // use pre-update state to determine action
+ input.isActive
+ ? MockServerAction.ACTIVATED
+ : MockServerAction.DEACTIVATED,
+ userUid,
+ );
+ }
+
+ return E.right(this.cast(updated));
+ } catch (error) {
+ console.error('Error updating mock server:', error);
+ return E.left(MOCK_SERVER_UPDATE_FAILED);
+ }
+ }
+
+ /**
+ * Delete a mock server
+ */
+ async deleteMockServer(id: string, userUid: string) {
+ try {
+ const mockServer = await this.prisma.mockServer.findFirst({
+ where: { id, deletedAt: null },
+ });
+ if (!mockServer) return E.left(MOCK_SERVER_NOT_FOUND);
+
+ // Check access permissions (only OWNER and EDITOR can delete)
+ const hasAccess = await this.checkMockServerAccess(mockServer, userUid, [
+ TeamAccessRole.OWNER,
+ TeamAccessRole.EDITOR,
+ ]);
+ if (!hasAccess) return E.left(MOCK_SERVER_NOT_FOUND);
+
+ // Soft delete the mock server
+ await this.prisma.mockServer.update({
+ where: { id },
+ data: { isActive: false, deletedAt: new Date() },
+ });
+ this.mockServerAnalyticsService.recordActivity(
+ mockServer, // use pre-update state to determine action
+ MockServerAction.DELETED,
+ userUid,
+ );
+
+ return E.right(true);
+ } catch (error) {
+ console.error('Error deleting mock server:', error);
+ return E.left(MOCK_SERVER_DELETION_FAILED);
+ }
+ }
+
+ /**
+ * Log a mock server request and response
+ */
+ async logRequest(params: {
+ mockServerID: string;
+ requestMethod: string;
+ requestPath: string;
+ requestHeaders: Record;
+ requestBody?: any;
+ requestQuery?: Record;
+ responseStatus: number;
+ responseHeaders: Record;
+ responseTime: number;
+ ipAddress?: string;
+ userAgent?: string;
+ }): Promise {
+ try {
+ await this.prisma.mockServerLog.create({
+ data: {
+ mockServerID: params.mockServerID,
+ requestMethod: params.requestMethod,
+ requestPath: params.requestPath,
+ requestHeaders: params.requestHeaders,
+ requestBody: params.requestBody || null,
+ requestQuery: params.requestQuery || null,
+ responseStatus: params.responseStatus,
+ responseHeaders: params.responseHeaders,
+ responseBody: null, // We'll capture response body separately if needed
+ responseTime: params.responseTime,
+ ipAddress: params.ipAddress || null,
+ userAgent: params.userAgent || null,
+ },
+ });
+ } catch (error) {
+ console.error('Error logging request:', error);
+ // Don't throw error - analytics shouldn't break the main flow
+ }
+ }
+
+ /**
+ * Get logs for a mock server with pagination
+ * Logs are sorted by execution time in descending order (most recent first)
+ */
+ async getMockServerLogs(
+ mockServerId: string,
+ userUid: string,
+ args: OffsetPaginationArgs,
+ ) {
+ try {
+ // First, get the mock server and verify it exists
+ const mockServer = await this.prisma.mockServer.findFirst({
+ where: { id: mockServerId, deletedAt: null },
+ });
+
+ if (!mockServer) return E.left(MOCK_SERVER_NOT_FOUND);
+
+ // Check access permissions - user must have access to the mock server
+ const hasAccess = await this.checkMockServerAccess(mockServer, userUid, [
+ TeamAccessRole.OWNER,
+ TeamAccessRole.EDITOR,
+ TeamAccessRole.VIEWER,
+ ]);
+ if (!hasAccess) return E.left(MOCK_SERVER_NOT_FOUND);
+
+ // Fetch logs with pagination, sorted by executedAt descending
+ const logs = await this.prisma.mockServerLog.findMany({
+ where: { mockServerID: mockServerId },
+ orderBy: { executedAt: 'desc' },
+ take: args?.take,
+ skip: args?.skip,
+ });
+
+ // Convert JSON fields to strings for GraphQL
+ const formattedLogs = logs.map(
+ (log) =>
+ ({
+ id: log.id,
+ mockServerID: log.mockServerID,
+ requestMethod: log.requestMethod,
+ requestPath: log.requestPath,
+ requestHeaders: JSON.stringify(log.requestHeaders),
+ requestBody: log.requestBody
+ ? JSON.stringify(log.requestBody)
+ : null,
+ requestQuery: log.requestQuery
+ ? JSON.stringify(log.requestQuery)
+ : null,
+ responseStatus: log.responseStatus,
+ responseHeaders: JSON.stringify(log.responseHeaders),
+ responseBody: log.responseBody
+ ? JSON.stringify(log.responseBody)
+ : null,
+ responseTime: log.responseTime,
+ ipAddress: log.ipAddress,
+ userAgent: log.userAgent,
+ executedAt: log.executedAt,
+ }) as MockServerLog,
+ );
+
+ return E.right(formattedLogs);
+ } catch (error) {
+ console.error('Error fetching mock server logs:', error);
+ return E.left(MOCK_SERVER_NOT_FOUND);
+ }
+ }
+
+ /**
+ * Delete a mock server log by logId
+ */
+ async deleteMockServerLog(logId: string, userUid: string) {
+ try {
+ // First, find the log and verify it exists
+ const log = await this.prisma.mockServerLog.findUnique({
+ where: { id: logId },
+ include: { mockServer: true },
+ });
+
+ if (!log) return E.left(MOCK_SERVER_LOG_NOT_FOUND);
+
+ // Check access permissions - user must have access to the mock server
+ const hasAccess = await this.checkMockServerAccess(
+ log.mockServer,
+ userUid,
+ [TeamAccessRole.OWNER, TeamAccessRole.EDITOR],
+ );
+ if (!hasAccess) return E.left(MOCK_SERVER_LOG_NOT_FOUND);
+
+ // Delete the log
+ await this.prisma.mockServerLog.delete({
+ where: { id: logId },
+ });
+
+ return E.right(true);
+ } catch (error) {
+ console.error('Error deleting mock server log:', error);
+ return E.left(MOCK_SERVER_LOG_DELETION_FAILED);
+ }
+ }
+
+ /**
+ * Increment hit count and update last hit timestamp for a mock server
+ */
+ async incrementHitCount(mockServerID: string): Promise {
+ try {
+ await this.prisma.mockServer.update({
+ where: { id: mockServerID },
+ data: {
+ hitCount: { increment: 1 },
+ lastHitAt: new Date(),
+ },
+ });
+ } catch (error) {
+ console.error('Error incrementing hit count:', error);
+ // Don't throw error - analytics shouldn't break the main flow
+ }
+ }
+
+ /**
+ * Handle mock request - find matching request in collection and return response
+ * Optimized implementation with database-level filtering:
+ * 1. Fetch collection IDs once (used for all subsequent queries)
+ * 2. Check custom headers first (fastest path)
+ * 3. Fetch only relevant requests from DB (filtered by collection)
+ * 4. Filter and score examples in-memory
+ * 5. Return highest scoring example
+ */
+ async handleMockRequest(
+ mockServer: dbMockServer,
+ path: string,
+ method: string,
+ queryParams?: Record,
+ requestHeaders?: Record,
+ ): Promise> {
+ try {
+ // OPTIMIZATION: Fetch collection IDs once (recursive DB query)
+ // This is used by both custom header lookup and candidate fetching
+ const collectionIds = await this.getCollectionIds(mockServer);
+
+ if (collectionIds.length === 0) {
+ return E.left(
+ `The collection associated with this mock has been deleted.`,
+ );
+ }
+
+ // OPTIMIZATION: Fetch all requests with examples once (single DB query)
+ // This is shared between custom header lookup and candidate matching
+ const requests = await this.fetchRequestsWithExamples(
+ mockServer,
+ collectionIds,
+ );
+
+ // OPTIMIZATION: Check for custom headers first (fastest path)
+ // If user specified exact example, return it immediately without scoring
+ if (requestHeaders) {
+ const mockResponseId = requestHeaders['x-mock-response-id'];
+ const mockResponseName = requestHeaders['x-mock-response-name'];
+
+ if (mockResponseId || mockResponseName) {
+ const exactMatch = this.findExampleByIdOrName(
+ requests,
+ mockResponseId,
+ mockResponseName,
+ method,
+ );
+ if (exactMatch) {
+ return this.formatExampleResponse(exactMatch, mockServer.delayInMs);
+ }
+ }
+ }
+
+ // OPTIMIZATION: Fetch only requests with mockExamples (database-level filter)
+ // This is much faster than loading all requests and filtering in memory
+ const candidateExamples = this.fetchCandidateExamples(
+ requests,
+ method,
+ path,
+ );
+
+ if (candidateExamples.length === 0) {
+ return E.left(`No examples found for ${method.toUpperCase()} ${path}`);
+ }
+
+ // OPTIMIZATION: Filter by status code if header provided
+ let filteredExamples = candidateExamples;
+ if (requestHeaders?.['x-mock-response-code']) {
+ const statusCode = parseInt(requestHeaders['x-mock-response-code'], 10);
+ const codeFiltered = candidateExamples.filter(
+ (ex) => ex.statusCode === statusCode,
+ );
+ if (codeFiltered.length > 0) {
+ filteredExamples = codeFiltered;
+ }
+ }
+
+ // OPTIMIZATION: Score examples based on URL and query parameter matching
+ const scoredExamples = filteredExamples
+ .map((example) => ({
+ example,
+ score: this.calculateMatchScore(example, path, queryParams || {}),
+ }))
+ .filter((scored) => scored.score > 0) // Remove non-matching examples
+ .sort((a, b) => b.score - a.score); // Sort by score descending
+
+ if (scoredExamples.length === 0) {
+ return E.left(
+ `No matching examples found for ${method.toUpperCase()} ${path}`,
+ );
+ }
+
+ // Step 6: Return highest scoring example
+ // If multiple examples have same high score, prefer 200 status code
+ const highestScore = scoredExamples[0].score;
+ const topExamples = scoredExamples.filter(
+ (scored) => scored.score === highestScore,
+ );
+
+ const selectedExample =
+ topExamples.find((scored) => scored.example.statusCode === 200) ||
+ topExamples[0];
+
+ return this.formatExampleResponse(
+ selectedExample.example,
+ mockServer.delayInMs,
+ );
+ } catch (error) {
+ console.error('Error handling mock request:', error);
+ return E.left('Failed to handle mock request');
+ }
+ }
+
+ /**
+ * Fetch all requests with mock examples from the database
+ * Shared helper to avoid code duplication
+ */
+ private async fetchRequestsWithExamples(
+ mockServer: dbMockServer,
+ collectionIds: string[],
+ ) {
+ return mockServer.workspaceType === WorkspaceType.USER
+ ? await this.prisma.userRequest.findMany({
+ where: {
+ collectionID: { in: collectionIds },
+ mockExamples: { not: null },
+ },
+ select: {
+ id: true,
+ mockExamples: true,
+ },
+ })
+ : await this.prisma.teamRequest.findMany({
+ where: {
+ collectionID: { in: collectionIds },
+ mockExamples: { not: null },
+ },
+ select: {
+ id: true,
+ mockExamples: true,
+ },
+ });
+ }
+
+ /**
+ * OPTIMIZED: Find example by ID or name from already-fetched requests
+ * This avoids loading all examples when user specifies exact match
+ */
+ private findExampleByIdOrName(
+ requests: Array<{ id: string; mockExamples: any }>,
+ exampleId?: string,
+ exampleName?: string,
+ method?: string,
+ ) {
+ // Search through examples
+ for (const request of requests) {
+ const mockExamples = request.mockExamples as any;
+ if (mockExamples?.examples && Array.isArray(mockExamples.examples)) {
+ for (const exampleData of mockExamples.examples) {
+ // Check if method matches (if specified)
+ if (
+ method &&
+ exampleData.method?.toUpperCase() !== method.toUpperCase()
+ ) {
+ continue;
+ }
+
+ const parsedExample = this.parseExample(exampleData, request.id);
+ if (!parsedExample) continue;
+
+ // Check for ID match
+ if (exampleId && parsedExample.id === exampleId) {
+ return parsedExample;
+ }
+
+ // Check for name match
+ if (exampleName && parsedExample.name === exampleName) {
+ return parsedExample;
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * OPTIMIZED: Fetch only candidate examples that could match the request
+ * Uses in-memory filtering from already-fetched requests
+ */
+ private fetchCandidateExamples(
+ requests: Array<{ id: string; mockExamples: any }>,
+ method: string,
+ path: string,
+ ) {
+ interface Example {
+ id: string;
+ name: string;
+ method: string;
+ endpoint: string;
+ path: string;
+ queryParams: Record;
+ statusCode: number;
+ statusText: string;
+ responseBody: string;
+ responseHeaders: Array<{ key: string; value: string }>;
+ requestHeaders?: Array<{ key: string; value: string }>;
+ }
+
+ const examples: Example[] = [];
+
+ // Parse and filter examples
+ for (const request of requests) {
+ const mockExamples = request.mockExamples as any;
+ if (mockExamples?.examples && Array.isArray(mockExamples.examples)) {
+ for (const exampleData of mockExamples.examples) {
+ // OPTIMIZATION: Filter by method immediately
+ if (exampleData.method?.toUpperCase() !== method.toUpperCase()) {
+ continue;
+ }
+
+ const parsedExample = this.parseExample(exampleData, request.id);
+ if (!parsedExample) continue;
+
+ // OPTIMIZATION: Quick path match check before adding to candidates
+ // This reduces the number of examples we need to score
+ if (this.couldPathMatch(parsedExample.path, path)) {
+ examples.push(parsedExample);
+ }
+ }
+ }
+ }
+
+ return examples;
+ }
+
+ /**
+ * OPTIMIZED: Quick check if paths could potentially match
+ * Returns true if we should include this example for scoring
+ */
+ private couldPathMatch(examplePath: string, requestPath: string): boolean {
+ // Exact match
+ if (examplePath === requestPath) return true;
+
+ // Check if path structure could match (same number of segments)
+ const exampleParts = examplePath.split('/').filter(Boolean);
+ const requestParts = requestPath.split('/').filter(Boolean);
+
+ if (exampleParts.length !== requestParts.length) {
+ return false; // Different structure, can't match
+ }
+
+ // Quick check: if example has variables (Hoppscotch uses <> syntax), it could match
+ if (examplePath.includes('<<')) {
+ return true; // Has variables, needs full scoring
+ }
+
+ // No variables and not exact match = no match
+ return false;
+ }
+
+ /**
+ * Get collection IDs for the mock server (no caching)
+ */
+ private async getCollectionIds(mockServer: dbMockServer): Promise {
+ return mockServer.workspaceType === WorkspaceType.USER
+ ? await this.getAllUserCollectionIds(mockServer.collectionID)
+ : await this.getAllTeamCollectionIds(mockServer.collectionID);
+ }
+
+ /**
+ * Get all collection IDs including children (recursive)
+ */
+ private async getAllUserCollectionIds(
+ rootCollectionId: string,
+ ): Promise {
+ // First verify the root collection exists
+ const rootCollection = await this.prisma.userCollection.findUnique({
+ where: { id: rootCollectionId },
+ });
+
+ if (!rootCollection) return []; // Collection doesn't exist
+
+ const ids = [rootCollectionId];
+ const children = await this.prisma.userCollection.findMany({
+ where: { parentID: rootCollectionId },
+ select: { id: true },
+ });
+
+ for (const child of children) {
+ const childIds = await this.getAllUserCollectionIds(child.id);
+ ids.push(...childIds);
+ }
+
+ return ids;
+ }
+
+ /**
+ * Get all team collection IDs including children (recursive)
+ */
+ private async getAllTeamCollectionIds(
+ rootCollectionId: string,
+ ): Promise {
+ // First verify the root collection exists
+ const rootCollection = await this.prisma.teamCollection.findUnique({
+ where: { id: rootCollectionId },
+ });
+
+ if (!rootCollection) return []; // Collection doesn't exist
+
+ const ids = [rootCollectionId];
+ const children = await this.prisma.teamCollection.findMany({
+ where: { parentID: rootCollectionId },
+ select: { id: true },
+ });
+
+ for (const child of children) {
+ const childIds = await this.getAllTeamCollectionIds(child.id);
+ ids.push(...childIds);
+ }
+
+ return ids;
+ }
+
+ /**
+ * Parse example from database format to internal format
+ */
+ private parseExample(exampleData: any, requestId: string) {
+ try {
+ // Parse endpoint to extract path and query parameters
+ let path = '/';
+ const queryParams: Record = {};
+
+ if (exampleData.endpoint) {
+ const url = new URL(
+ exampleData.endpoint,
+ 'http://dummy.com', // Base URL for parsing
+ );
+ // Decode the pathname to preserve Hoppscotch variable syntax (<>)
+ path = decodeURIComponent(url.pathname);
+
+ // Extract query parameters
+ url.searchParams.forEach((value, key) => {
+ queryParams[key] = value;
+ });
+ }
+
+ return {
+ id: exampleData.key || `${requestId}-${exampleData.name}`,
+ name: exampleData.name,
+ method: exampleData.method || 'GET',
+ endpoint: exampleData.endpoint,
+ path,
+ queryParams,
+ statusCode: exampleData.statusCode || 200,
+ statusText: exampleData.statusText || 'OK',
+ responseBody: exampleData.responseBody || '',
+ responseHeaders: exampleData.responseHeaders || [],
+ requestHeaders: exampleData.headers || [],
+ };
+ } catch (error) {
+ console.error('Error parsing example:', error);
+ return null;
+ }
+ }
+
+ /**
+ * Calculate match score for an example based on Postman's algorithm
+ * Starting score: 100
+ * URL path match: exact match keeps 100, no match = 0
+ * Query parameters: percentage based on matches
+ */
+ private calculateMatchScore(
+ example: any,
+ requestPath: string,
+ requestQueryParams: Record,
+ ): number {
+ let score = 100;
+
+ // URL Path matching
+ if (example.path !== requestPath) {
+ // Try wildcard matching (basic implementation)
+ const examplePathParts = example.path.split('/').filter(Boolean);
+ const requestPathParts = requestPath.split('/').filter(Boolean);
+
+ if (examplePathParts.length !== requestPathParts.length) {
+ return 0; // Path structure doesn't match
+ }
+
+ // Check each segment
+ let pathMatches = true;
+ for (let i = 0; i < examplePathParts.length; i++) {
+ const examplePart = examplePathParts[i];
+ const requestPart = requestPathParts[i];
+
+ // Check if it's a variable (Hoppscotch uses <> syntax)
+ if (
+ examplePart === requestPart ||
+ examplePart.startsWith('<<') ||
+ examplePart.includes('<<')
+ ) {
+ continue; // Match
+ } else {
+ pathMatches = false;
+ break;
+ }
+ }
+
+ if (!pathMatches) {
+ return 0; // No path match
+ }
+
+ // Path has variables, reduce score slightly
+ score -= 5;
+ }
+
+ // Query parameter matching
+ const exampleParams = example.queryParams || {};
+ const exampleParamKeys = Object.keys(exampleParams);
+ const requestParamKeys = Object.keys(requestQueryParams);
+
+ if (exampleParamKeys.length > 0 || requestParamKeys.length > 0) {
+ let paramMatches = 0;
+ let partialMatches = 0;
+ let missingParams = 0;
+
+ // Check for matches
+ exampleParamKeys.forEach((key) => {
+ if (requestQueryParams[key] !== undefined) {
+ if (requestQueryParams[key] === exampleParams[key]) {
+ paramMatches++;
+ } else {
+ partialMatches++;
+ }
+ } else {
+ missingParams++;
+ }
+ });
+
+ // Check for extra params in request
+ requestParamKeys.forEach((key) => {
+ if (exampleParams[key] === undefined) {
+ missingParams++;
+ }
+ });
+
+ // Calculate parameter matching percentage
+ const totalParams = paramMatches + partialMatches + missingParams;
+ if (totalParams > 0) {
+ const matchPercentage = (paramMatches / totalParams) * 100;
+ // Adjust score based on parameter matching
+ score = score * (matchPercentage / 100);
+ }
+ }
+
+ return score;
+ }
+
+ /**
+ * Format example response for return
+ */
+ private formatExampleResponse(
+ example: any,
+ delayInMs: number,
+ ): E.Either {
+ // Convert response headers array to object
+ const headersObj: Record = {};
+ if (example.responseHeaders && Array.isArray(example.responseHeaders)) {
+ example.responseHeaders.forEach((header: any) => {
+ if (header.key && header.value) {
+ headersObj[header.key] = header.value;
+ }
+ });
+ }
+
+ return E.right({
+ statusCode: example.statusCode || 200,
+ body: example.responseBody || '',
+ headers: JSON.stringify(headersObj),
+ delay: delayInMs || 0,
+ });
+ }
+}
diff --git a/packages/hoppscotch-backend/src/orchestration/sort/sort.service.spec.ts b/packages/hoppscotch-backend/src/orchestration/sort/sort.service.spec.ts
index 5a9db450d65..8a1d1e8aace 100644
--- a/packages/hoppscotch-backend/src/orchestration/sort/sort.service.spec.ts
+++ b/packages/hoppscotch-backend/src/orchestration/sort/sort.service.spec.ts
@@ -1,4 +1,4 @@
-import { mockDeep, mockReset } from 'jest-mock-extended';
+import { mockDeep } from 'jest-mock-extended';
import { PubSubService } from 'src/pubsub/pubsub.service';
import { TeamCollectionService } from 'src/team-collection/team-collection.service';
import { TeamRequestService } from 'src/team-request/team-request.service';
diff --git a/packages/hoppscotch-backend/src/pubsub/pubsub.service.ts b/packages/hoppscotch-backend/src/pubsub/pubsub.service.ts
index b80d27965e5..5cdf57b0bd7 100644
--- a/packages/hoppscotch-backend/src/pubsub/pubsub.service.ts
+++ b/packages/hoppscotch-backend/src/pubsub/pubsub.service.ts
@@ -1,5 +1,4 @@
-import { OnModuleInit } from '@nestjs/common';
-import { Injectable } from '@nestjs/common';
+import { OnModuleInit, Injectable } from '@nestjs/common';
import { PubSub as LocalPubSub } from 'graphql-subscriptions';
import { TopicDef } from './topicsDefs';
diff --git a/packages/hoppscotch-backend/src/team-collection/team-collection.service.ts b/packages/hoppscotch-backend/src/team-collection/team-collection.service.ts
index ac6f9147a0c..44d8064b51a 100644
--- a/packages/hoppscotch-backend/src/team-collection/team-collection.service.ts
+++ b/packages/hoppscotch-backend/src/team-collection/team-collection.service.ts
@@ -27,6 +27,7 @@ import {
escapeSqlLikeString,
isValidLength,
transformCollectionData,
+ stringToJson,
} from 'src/utils';
import * as E from 'fp-ts/Either';
import * as O from 'fp-ts/Option';
@@ -36,7 +37,6 @@ import {
TeamRequest,
} from '@prisma/client';
import { CollectionFolder } from 'src/types/CollectionFolder';
-import { stringToJson } from 'src/utils';
import { CollectionSearchNode } from 'src/types/CollectionSearchNode';
import {
GetCollectionResponse,
diff --git a/packages/hoppscotch-backend/src/team-request/team-request.service.spec.ts b/packages/hoppscotch-backend/src/team-request/team-request.service.spec.ts
index 5388c84cfc7..feda8ed1367 100644
--- a/packages/hoppscotch-backend/src/team-request/team-request.service.spec.ts
+++ b/packages/hoppscotch-backend/src/team-request/team-request.service.spec.ts
@@ -55,6 +55,7 @@ for (let i = 1; i <= 10; i++) {
collectionID: teamCollection.id,
teamID: team.id,
request: {},
+ mockExamples: {},
title: `Test Request ${i}`,
orderIndex: i,
createdOn: new Date(),
diff --git a/packages/hoppscotch-backend/src/types/InfraConfig.ts b/packages/hoppscotch-backend/src/types/InfraConfig.ts
index 6563ae63a03..0a86e088b7c 100644
--- a/packages/hoppscotch-backend/src/types/InfraConfig.ts
+++ b/packages/hoppscotch-backend/src/types/InfraConfig.ts
@@ -4,6 +4,7 @@ export enum InfraConfigEnum {
JWT_SECRET = 'JWT_SECRET',
SESSION_SECRET = 'SESSION_SECRET',
+ SESSION_COOKIE_NAME = 'SESSION_COOKIE_NAME',
TOKEN_SALT_COMPLEXITY = 'TOKEN_SALT_COMPLEXITY',
MAGIC_LINK_TOKEN_VALIDITY = 'MAGIC_LINK_TOKEN_VALIDITY',
REFRESH_TOKEN_VALIDITY = 'REFRESH_TOKEN_VALIDITY',
@@ -48,4 +49,6 @@ export enum InfraConfigEnum {
IS_FIRST_TIME_INFRA_SETUP = 'IS_FIRST_TIME_INFRA_SETUP',
USER_HISTORY_STORE_ENABLED = 'USER_HISTORY_STORE_ENABLED',
+
+ MOCK_SERVER_WILDCARD_DOMAIN = 'MOCK_SERVER_WILDCARD_DOMAIN',
}
diff --git a/packages/hoppscotch-backend/src/types/WorkspaceTypes.ts b/packages/hoppscotch-backend/src/types/WorkspaceTypes.ts
new file mode 100644
index 00000000000..ea85b4192c7
--- /dev/null
+++ b/packages/hoppscotch-backend/src/types/WorkspaceTypes.ts
@@ -0,0 +1,4 @@
+export enum WorkspaceType {
+ USER = 'USER',
+ TEAM = 'TEAM',
+}
diff --git a/packages/hoppscotch-backend/src/user-request/user-request.service.spec.ts b/packages/hoppscotch-backend/src/user-request/user-request.service.spec.ts
index 3aefec33afd..69618a6d3b8 100644
--- a/packages/hoppscotch-backend/src/user-request/user-request.service.spec.ts
+++ b/packages/hoppscotch-backend/src/user-request/user-request.service.spec.ts
@@ -51,6 +51,7 @@ const dbUserRequests: DbUserRequest[] = [
userUid: user.uid,
title: 'Request 1',
request: {},
+ mockExamples: {},
type: DbRequestType.REST,
createdOn: new Date(),
updatedOn: new Date(),
@@ -62,6 +63,7 @@ const dbUserRequests: DbUserRequest[] = [
userUid: user.uid,
title: 'Request 2',
request: {},
+ mockExamples: {},
type: DbRequestType.REST,
createdOn: new Date(),
updatedOn: new Date(),
@@ -73,6 +75,7 @@ const dbUserRequests: DbUserRequest[] = [
userUid: user.uid,
title: 'Request 3',
request: {},
+ mockExamples: {},
type: DbRequestType.REST,
createdOn: new Date(),
updatedOn: new Date(),
@@ -84,6 +87,7 @@ const dbUserRequests: DbUserRequest[] = [
userUid: user.uid,
title: 'Request 4',
request: {},
+ mockExamples: {},
type: DbRequestType.REST,
createdOn: new Date(),
updatedOn: new Date(),
@@ -95,6 +99,7 @@ const dbUserRequests: DbUserRequest[] = [
userUid: user.uid,
title: 'Request 1',
request: {},
+ mockExamples: {},
type: DbRequestType.REST,
createdOn: new Date(),
updatedOn: new Date(),
@@ -106,6 +111,7 @@ const dbUserRequests: DbUserRequest[] = [
userUid: user.uid,
title: 'Request 2',
request: {},
+ mockExamples: {},
type: DbRequestType.REST,
createdOn: new Date(),
updatedOn: new Date(),
@@ -117,6 +123,7 @@ const dbUserRequests: DbUserRequest[] = [
userUid: user.uid,
title: 'Request 3',
request: {},
+ mockExamples: {},
type: DbRequestType.REST,
createdOn: new Date(),
updatedOn: new Date(),
@@ -128,6 +135,7 @@ const dbUserRequests: DbUserRequest[] = [
userUid: user.uid,
title: 'Request 4',
request: {},
+ mockExamples: {},
type: DbRequestType.REST,
createdOn: new Date(),
updatedOn: new Date(),
diff --git a/packages/hoppscotch-backend/src/user/user.service.ts b/packages/hoppscotch-backend/src/user/user.service.ts
index cb271e22f92..d9c3136193f 100644
--- a/packages/hoppscotch-backend/src/user/user.service.ts
+++ b/packages/hoppscotch-backend/src/user/user.service.ts
@@ -12,9 +12,9 @@ import {
USERS_NOT_FOUND,
USER_NOT_FOUND,
USER_SHORT_DISPLAY_NAME,
+ USER_UPDATE_FAILED,
} from 'src/errors';
import { SessionType, User } from './user.model';
-import { USER_UPDATE_FAILED } from 'src/errors';
import { PubSubService } from 'src/pubsub/pubsub.service';
import { encrypt, stringToJson, taskEitherValidateArraySeq } from 'src/utils';
import { UserDataHandler } from './user.data.handler';
diff --git a/packages/hoppscotch-cli/package.json b/packages/hoppscotch-cli/package.json
index 5797f06e91c..c752f4131d3 100644
--- a/packages/hoppscotch-cli/package.json
+++ b/packages/hoppscotch-cli/package.json
@@ -1,6 +1,6 @@
{
"name": "@hoppscotch/cli",
- "version": "0.25.0",
+ "version": "0.26.0",
"description": "A CLI to run Hoppscotch test scripts in CI environments.",
"homepage": "https://hoppscotch.io",
"type": "module",
@@ -64,9 +64,9 @@
"fp-ts": "2.16.11",
"prettier": "3.6.2",
"qs": "6.11.2",
- "semver": "7.7.2",
+ "semver": "7.7.3",
"tsup": "8.5.0",
- "typescript": "5.9.2",
+ "typescript": "5.9.3",
"vitest": "3.2.4"
}
}
diff --git a/packages/hoppscotch-cli/src/__tests__/e2e/fixtures/collections/scripting-revamp-coll.json b/packages/hoppscotch-cli/src/__tests__/e2e/fixtures/collections/scripting-revamp-coll.json
index bce7446fd31..c513f23a361 100644
--- a/packages/hoppscotch-cli/src/__tests__/e2e/fixtures/collections/scripting-revamp-coll.json
+++ b/packages/hoppscotch-cli/src/__tests__/e2e/fixtures/collections/scripting-revamp-coll.json
@@ -70,7 +70,7 @@
"params": [],
"headers": [],
"preRequestScript": "export {};\nhopp.env.set('test_key', 'test_value')\nhopp.env.set('recursive_key', '<>')\nhopp.env.global.set('global_key', 'global_value')\nhopp.env.active.set('active_key', 'active_value')\n\n// `pm` namespace equivalents\npm.variables.set('pm_test_key', 'pm_test_value')\npm.environment.set('pm_active_key', 'pm_active_value')\npm.globals.set('pm_global_key', 'pm_global_value')\n",
- "testScript": "export {};\n\nhopp.test('`hopp.env.get()` retrieves environment variables', () => {\n const value = hopp.env.get('test_key')\n hopp.expect(value).toBe('test_value')\n})\n\npm.test('`pm.variables.get()` retrieves environment variables', () => {\n const value = pm.variables.get('test_key')\n pm.expect(value).toBe('test_value')\n})\n\nhopp.test('`hopp.env.getRaw()` retrieves raw environment variables without resolution', () => {\n const rawValue = hopp.env.getRaw('recursive_key')\n hopp.expect(rawValue).toBe('<>')\n})\n\nhopp.test('`hopp.env.get()` resolves recursive environment variables', () => {\n const resolvedValue = hopp.env.get('recursive_key')\n hopp.expect(resolvedValue).toBe('test_value')\n})\n\npm.test('`pm.variables.replaceIn()` resolves template variables', () => {\n const resolved = pm.variables.replaceIn('Value is {{test_key}}')\n pm.expect(resolved).toBe('Value is test_value')\n})\n\nhopp.test('`hopp.env.global.get()` retrieves global environment variables', () => {\n const globalValue = hopp.env.global.get('global_key')\n\n // `hopp.env.global` would be empty for the CLI\n if (globalValue) {\n hopp.expect(globalValue).toBe('global_value')\n }\n})\n\npm.test('`pm.globals.get()` retrieves global environment variables', () => {\n const globalValue = pm.globals.get('global_key')\n\n // `pm.globals` would be empty for the CLI\n if (globalValue) {\n pm.expect(globalValue).toBe('global_value')\n }\n})\n\nhopp.test('`hopp.env.active.get()` retrieves active environment variables', () => {\n const activeValue = hopp.env.active.get('active_key')\n hopp.expect(activeValue).toBe('active_value')\n})\n\npm.test('`pm.environment.get()` retrieves active environment variables', () => {\n const activeValue = pm.environment.get('active_key')\n pm.expect(activeValue).toBe('active_value')\n})\n\nhopp.test('Environment methods return null for non-existent keys', () => {\n hopp.expect(hopp.env.get('non_existent')).toBe(null)\n hopp.expect(hopp.env.getRaw('non_existent')).toBe(null)\n hopp.expect(hopp.env.global.get('non_existent')).toBe(null)\n hopp.expect(hopp.env.active.get('non_existent')).toBe(null)\n})\n\npm.test('`pm` environment methods handle non-existent keys correctly', () => {\n pm.expect(pm.variables.get('non_existent')).toBe(null)\n pm.expect(pm.environment.get('non_existent')).toBe(null)\n pm.expect(pm.globals.get('non_existent')).toBe(null)\n pm.expect(pm.variables.has('non_existent')).toBe(false)\n pm.expect(pm.environment.has('non_existent')).toBe(false)\n pm.expect(pm.globals.has('non_existent')).toBe(false)\n})\n\npm.test('`pm` variables set in pre-request script are accessible', () => {\n pm.expect(pm.variables.get('pm_test_key')).toBe('pm_test_value')\n pm.expect(pm.environment.get('pm_active_key')).toBe('pm_active_value')\n\n const pmGlobalValue = hopp.env.global.get('pm_global_key')\n\n // `hopp.env.global` would be empty for the CLI\n if (pmGlobalValue) {\n hopp.expect(pmGlobalValue).toBe('pm_global_value')\n }\n})\n",
+ "testScript": "export {};\n\nhopp.test('`hopp.env.get()` retrieves environment variables', () => {\n const value = hopp.env.get('test_key')\n hopp.expect(value).toBe('test_value')\n})\n\npm.test('`pm.variables.get()` retrieves environment variables', () => {\n const value = pm.variables.get('test_key')\n pm.expect(value).toBe('test_value')\n})\n\nhopp.test('`hopp.env.getRaw()` retrieves raw environment variables without resolution', () => {\n const rawValue = hopp.env.getRaw('recursive_key')\n hopp.expect(rawValue).toBe('<>')\n})\n\nhopp.test('`hopp.env.get()` resolves recursive environment variables', () => {\n const resolvedValue = hopp.env.get('recursive_key')\n hopp.expect(resolvedValue).toBe('test_value')\n})\n\npm.test('`pm.variables.replaceIn()` resolves template variables', () => {\n const resolved = pm.variables.replaceIn('Value is {{test_key}}')\n pm.expect(resolved).toBe('Value is test_value')\n})\n\nhopp.test('`hopp.env.global.get()` retrieves global environment variables', () => {\n const globalValue = hopp.env.global.get('global_key')\n\n // `hopp.env.global` would be empty for the CLI\n if (globalValue) {\n hopp.expect(globalValue).toBe('global_value')\n }\n})\n\npm.test('`pm.globals.get()` retrieves global environment variables', () => {\n const globalValue = pm.globals.get('global_key')\n\n // `pm.globals` would be empty for the CLI\n if (globalValue) {\n pm.expect(globalValue).toBe('global_value')\n }\n})\n\nhopp.test('`hopp.env.active.get()` retrieves active environment variables', () => {\n const activeValue = hopp.env.active.get('active_key')\n hopp.expect(activeValue).toBe('active_value')\n})\n\npm.test('`pm.environment.get()` retrieves active environment variables', () => {\n const activeValue = pm.environment.get('active_key')\n pm.expect(activeValue).toBe('active_value')\n})\n\nhopp.test('Environment methods return null for non-existent keys', () => {\n hopp.expect(hopp.env.get('non_existent')).toBe(null)\n hopp.expect(hopp.env.getRaw('non_existent')).toBe(null)\n hopp.expect(hopp.env.global.get('non_existent')).toBe(null)\n hopp.expect(hopp.env.active.get('non_existent')).toBe(null)\n})\n\npm.test('`pm` environment methods handle non-existent keys correctly', () => {\n pm.expect(pm.variables.get('non_existent')).toBe(undefined)\n pm.expect(pm.environment.get('non_existent')).toBe(undefined)\n pm.expect(pm.globals.get('non_existent')).toBe(undefined)\n pm.expect(pm.variables.has('non_existent')).toBe(false)\n pm.expect(pm.environment.has('non_existent')).toBe(false)\n pm.expect(pm.globals.has('non_existent')).toBe(false)\n})\n\npm.test('`pm` variables set in pre-request script are accessible', () => {\n pm.expect(pm.variables.get('pm_test_key')).toBe('pm_test_value')\n pm.expect(pm.environment.get('pm_active_key')).toBe('pm_active_value')\n\n const pmGlobalValue = hopp.env.global.get('pm_global_key')\n\n // `hopp.env.global` would be empty for the CLI\n if (pmGlobalValue) {\n hopp.expect(pmGlobalValue).toBe('pm_global_value')\n }\n})\n",
"auth": {
"authType": "inherit",
"authActive": true
@@ -133,7 +133,7 @@
}
],
"preRequestScript": "export {};\n",
- "testScript": "export {};\n\nhopp.test('`hopp.response.statusCode` returns the response status code', () => {\n hopp.expect(hopp.response.statusCode).toBe(200)\n})\n\npm.test('`pm.response.code` returns the response status code', () => {\n pm.expect(pm.response.code).toBe(200)\n})\n\nhopp.test('`hopp.response.statusText` returns the response status text', () => {\n hopp.expect(hopp.response.statusText).toBeType('string')\n})\n\npm.test('`pm.response.status` returns the response status text', () => {\n pm.expect(pm.response.status).toBeType('string')\n})\n\nhopp.test('`hopp.response.headers` contains response headers', () => {\n const { headers } = hopp.response\n\n hopp.expect(headers).toBeType('object')\n hopp.expect(headers.length > 0).toBe(true)\n})\n\npm.test('`pm.response.headers` contains response headers', () => {\n const headersAll = pm.response.headers.all()\n pm.expect(headersAll).toBeType('object')\n pm.expect(Object.keys(headersAll).length > 0).toBe(true)\n})\n\nhopp.test('`hopp.response.responseTime` is a positive number', () => {\n hopp.expect(hopp.response.responseTime).toBeType('number')\n hopp.expect(hopp.response.responseTime > 0).toBe(true)\n})\n\npm.test('`pm.response.responseTime` is a positive number', () => {\n pm.expect(pm.response.responseTime).toBeType('number')\n pm.expect(pm.response.responseTime > 0).toBe(true)\n})\n\nhopp.test('`hopp.response.text()` returns response as text', () => {\n const responseText = hopp.response.body.asText()\n hopp.expect(responseText).toBeType('string')\n hopp.expect(responseText.length > 0).toBe(true)\n})\n\npm.test('`pm.response.text()` returns response as text', () => {\n const responseText = pm.response.text()\n pm.expect(responseText).toBeType('string')\n pm.expect(responseText.length > 0).toBe(true)\n})\n\nhopp.test('`hopp.response.json()` parses JSON response', () => {\n const responseJSON = hopp.response.body.asJSON()\n hopp.expect(responseJSON).toBeType('object')\n})\n\npm.test('`pm.response.json()` parses JSON response', () => {\n const responseJSON = pm.response.json()\n pm.expect(responseJSON).toBeType('object')\n})\n\n\nhopp.test('`hopp.response.bytes()` returns the raw response', () => {\n const responseBuffer = hopp.response.body.bytes()\n hopp.expect(responseBuffer).toBeType('object')\n hopp.expect(responseBuffer.constructor.name).toBe('Object')\n})\n\npm.test('`pm.response.stream` returns the raw response', () => {\n const responseBuffer = pm.response.stream\n pm.expect(responseBuffer).toBeType('object')\n pm.expect(responseBuffer.constructor.name).toBe('Object')\n})",
+ "testScript": "export {};\n\nhopp.test('`hopp.response.statusCode` returns the response status code', () => {\n hopp.expect(hopp.response.statusCode).toBe(200)\n})\n\npm.test('`pm.response.code` returns the response status code', () => {\n pm.expect(pm.response.code).toBe(200)\n})\n\nhopp.test('`hopp.response.statusText` returns the response status text', () => {\n hopp.expect(hopp.response.statusText).toBeType('string')\n})\n\npm.test('`pm.response.status` returns the response status text', () => {\n pm.expect(pm.response.status).toBeType('string')\n})\n\nhopp.test('`hopp.response.headers` contains response headers', () => {\n const { headers }\u00a0= hopp.response\n\n hopp.expect(headers).toBeType('object')\n hopp.expect(headers.length > 0).toBe(true)\n})\n\npm.test('`pm.response.headers` contains response headers', () => {\n const headersAll = pm.response.headers.all()\n pm.expect(headersAll).toBeType('object')\n pm.expect(Object.keys(headersAll).length > 0).toBe(true)\n})\n\nhopp.test('`hopp.response.responseTime` is a positive number', () => {\n hopp.expect(hopp.response.responseTime).toBeType('number')\n hopp.expect(hopp.response.responseTime > 0).toBe(true)\n})\n\npm.test('`pm.response.responseTime` is a positive number', () => {\n pm.expect(pm.response.responseTime).toBeType('number')\n pm.expect(pm.response.responseTime > 0).toBe(true)\n})\n\nhopp.test('`hopp.response.text()` returns response as text', () => {\n const responseText = hopp.response.body.asText()\n hopp.expect(responseText).toBeType('string')\n hopp.expect(responseText.length > 0).toBe(true)\n})\n\npm.test('`pm.response.text()` returns response as text', () => {\n const responseText = pm.response.text()\n pm.expect(responseText).toBeType('string')\n pm.expect(responseText.length > 0).toBe(true)\n})\n\nhopp.test('`hopp.response.json()` parses JSON response', () => {\n const responseJSON = hopp.response.body.asJSON()\n hopp.expect(responseJSON).toBeType('object')\n})\n\npm.test('`pm.response.json()` parses JSON response', () => {\n const responseJSON = pm.response.json()\n pm.expect(responseJSON).toBeType('object')\n})\n\n\nhopp.test('`hopp.response.bytes()` returns the raw response', () => {\n const responseBuffer = hopp.response.body.bytes()\n hopp.expect(responseBuffer).toBeType('object')\n hopp.expect(responseBuffer.constructor.name).toBe('Object')\n})\n\npm.test('`pm.response.stream` returns the raw response', () => {\n const responseBuffer = pm.response.stream\n pm.expect(responseBuffer).toBeType('object')\n pm.expect(responseBuffer.constructor.name).toBe('Object')\n})",
"auth": {
"authType": "inherit",
"authActive": true
@@ -191,7 +191,7 @@
"params": [],
"headers": [],
"preRequestScript": "export {};\n",
- "testScript": "export {};\n\npm.test('`pm.info.eventName` indicates the script context', () => {\n pm.expect(pm.info.eventName).toBe('post-request')\n})\n\npm.test('`pm.info.requestName` returns the request name', () => {\n pm.expect(pm.info.requestName).toBe('info-context-test')\n})\n\npm.test('`pm.info.requestId` returns an optional request identifier', () => {\n const requestId = pm.info.requestId\n if (requestId) {\n pm.expect(requestId).toBeType('string')\n pm.expect(requestId?.length > 0).toBe(true)\n } else {\n pm.expect(requestId).toBe(undefined)\n }\n})",
+ "testScript": "export {};\n\npm.test('`pm.info.eventName` indicates the script context', () => {\n pm.expect(pm.info.eventName).toBe('test')\n})\n\npm.test('`pm.info.requestName` returns the request name', () => {\n pm.expect(pm.info.requestName).toBe('info-context-test')\n})\n\npm.test('`pm.info.requestId` returns an optional request identifier', () => {\n const requestId = pm.info.requestId\n if (requestId) {\n pm.expect(requestId).toBeType('string')\n pm.expect(requestId?.length > 0).toBe(true)\n } else {\n pm.expect(requestId).toBe(undefined)\n }\n})",
"auth": {
"authType": "inherit",
"authActive": true
@@ -244,6 +244,550 @@
},
"requestVariables": [],
"responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00chai1qt0inext01",
+ "name": "chai-assertions-hopp-extended",
+ "method": "POST",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\n",
+ "testScript": "export {};\n\n// EQUALITY ASSERTIONS\nhopp.test('Chai equality - equal() method', () => {\n hopp.expect(5).to.equal(5)\n hopp.expect('hello').to.equal('hello')\n hopp.expect(true).to.equal(true)\n})\n\nhopp.test('Chai equality - eql() for deep equality', () => {\n hopp.expect({ a: 1 }).to.eql({ a: 1 })\n hopp.expect([1, 2, 3]).to.eql([1, 2, 3])\n})\n\nhopp.test('Chai equality - negation with .not', () => {\n hopp.expect(5).to.not.equal(10)\n hopp.expect('hello').to.not.equal('world')\n})\n\n// TYPE ASSERTIONS\nhopp.test('Chai type - .a() and .an() assertions', () => {\n hopp.expect('test').to.be.a('string')\n hopp.expect(42).to.be.a('number')\n hopp.expect([]).to.be.an('array')\n hopp.expect({}).to.be.an('object')\n})\n\nhopp.test('Chai type - instanceof assertions', () => {\n hopp.expect([1, 2, 3]).to.be.instanceof(Array)\n hopp.expect(new Date()).to.be.instanceof(Date)\n hopp.expect(new Error('test')).to.be.instanceof(Error)\n})\n\n// TRUTHINESS ASSERTIONS\nhopp.test('Chai truthiness - .true, .false, .null, .undefined', () => {\n hopp.expect(true).to.be.true\n hopp.expect(false).to.be.false\n hopp.expect(null).to.be.null\n hopp.expect(undefined).to.be.undefined\n})\n\nhopp.test('Chai truthiness - .ok and .exist', () => {\n hopp.expect(1).to.be.ok\n hopp.expect('string').to.exist\n hopp.expect(0).to.not.be.ok\n})\n\nhopp.test('Chai truthiness - .NaN assertion', () => {\n hopp.expect(NaN).to.be.NaN\n hopp.expect(42).to.not.be.NaN\n})\n\n// NUMERICAL COMPARISONS\nhopp.test('Chai numbers - .above() and .below()', () => {\n hopp.expect(10).to.be.above(5)\n hopp.expect(5).to.be.below(10)\n hopp.expect(5).to.not.be.above(10)\n})\n\nhopp.test('Chai numbers - aliases gt, lt, gte, lte', () => {\n hopp.expect(10).to.be.gt(5)\n hopp.expect(5).to.be.lt(10)\n hopp.expect(5).to.be.gte(5)\n hopp.expect(5).to.be.lte(5)\n})\n\nhopp.test('Chai numbers - .least() and .most()', () => {\n hopp.expect(10).to.be.at.least(10)\n hopp.expect(10).to.be.at.most(10)\n hopp.expect(15).to.be.at.least(10)\n})\n\nhopp.test('Chai numbers - .within() range', () => {\n hopp.expect(7).to.be.within(5, 10)\n hopp.expect(5).to.be.within(5, 10)\n hopp.expect(10).to.be.within(5, 10)\n})\n\nhopp.test('Chai numbers - .closeTo() with delta', () => {\n hopp.expect(10).to.be.closeTo(10.5, 0.6)\n hopp.expect(9.99).to.be.closeTo(10, 0.1)\n})\n\n// PROPERTY ASSERTIONS\nhopp.test('Chai properties - .property() checks', () => {\n const obj = { name: 'test', nested: { value: 42 } }\n hopp.expect(obj).to.have.property('name')\n hopp.expect(obj).to.have.property('name', 'test')\n hopp.expect(obj).to.have.nested.property('nested.value', 42)\n})\n\nhopp.test('Chai properties - .ownProperty() checks', () => {\n const obj = { own: 'value' }\n hopp.expect(obj).to.have.ownProperty('own')\n hopp.expect(obj).to.not.have.ownProperty('toString')\n})\n\n// LENGTH ASSERTIONS\nhopp.test('Chai length - .lengthOf() for arrays and strings', () => {\n hopp.expect([1, 2, 3]).to.have.lengthOf(3)\n hopp.expect('hello').to.have.lengthOf(5)\n hopp.expect([]).to.have.lengthOf(0)\n})\n\n// COLLECTION ASSERTIONS\nhopp.test('Chai collections - .keys() assertions', () => {\n const obj = { a: 1, b: 2, c: 3 }\n hopp.expect(obj).to.have.keys('a', 'b', 'c')\n hopp.expect(obj).to.have.all.keys('a', 'b', 'c')\n hopp.expect(obj).to.have.any.keys('a', 'd')\n})\n\nhopp.test('Chai collections - .members() for arrays', () => {\n hopp.expect([1, 2, 3]).to.have.members([3, 2, 1])\n hopp.expect([1, 2, 3]).to.include.members([1, 2])\n})\n\nhopp.test('Chai collections - .deep.members() for object arrays', () => {\n hopp.expect([{ a: 1 }, { b: 2 }]).to.have.deep.members([{ b: 2 }, { a: 1 }])\n})\n\nhopp.test('Chai collections - .oneOf() checks', () => {\n hopp.expect(2).to.be.oneOf([1, 2, 3])\n hopp.expect('a').to.be.oneOf(['a', 'b', 'c'])\n})\n\n// INCLUSION ASSERTIONS\nhopp.test('Chai inclusion - .include() for arrays and strings', () => {\n hopp.expect([1, 2, 3]).to.include(2)\n hopp.expect('hello world').to.include('world')\n})\n\nhopp.test('Chai inclusion - .deep.include() for objects', () => {\n hopp.expect([{ a: 1 }, { b: 2 }]).to.deep.include({ a: 1 })\n})\n\n// FUNCTION/ERROR ASSERTIONS\nhopp.test('Chai functions - .throw() assertions', () => {\n const throwFn = () => { throw new Error('test error') }\n const noThrow = () => { return 42 }\n \n hopp.expect(throwFn).to.throw()\n hopp.expect(throwFn).to.throw(Error)\n hopp.expect(throwFn).to.throw('test error')\n hopp.expect(noThrow).to.not.throw()\n})\n\nhopp.test('Chai functions - .respondTo() method checks', () => {\n const obj = { method: function() {} }\n hopp.expect(obj).to.respondTo('method')\n hopp.expect([]).to.respondTo('push')\n})\n\nhopp.test('Chai functions - .satisfy() custom matcher', () => {\n hopp.expect(10).to.satisfy((num) => num > 5)\n hopp.expect('hello').to.satisfy((str) => str.length === 5)\n})\n\n// OBJECT STATE ASSERTIONS\nhopp.test('Chai object state - .sealed, .frozen, .extensible', () => {\n const sealed = Object.seal({ a: 1 })\n const frozen = Object.freeze({ b: 2 })\n const extensible = { c: 3 }\n \n hopp.expect(sealed).to.be.sealed\n hopp.expect(frozen).to.be.frozen\n hopp.expect(extensible).to.be.extensible\n})\n\nhopp.test('Chai number state - .finite', () => {\n hopp.expect(42).to.be.finite\n hopp.expect(Infinity).to.not.be.finite\n})\n\n// EXOTIC OBJECTS\nhopp.test('Chai exotic - Set assertions', () => {\n const mySet = new Set([1, 2, 3])\n hopp.expect(mySet).to.be.instanceof(Set)\n hopp.expect(mySet).to.have.lengthOf(3)\n})\n\nhopp.test('Chai exotic - Map assertions', () => {\n const myMap = new Map([['key', 'value']])\n hopp.expect(myMap).to.be.instanceof(Map)\n hopp.expect(myMap).to.have.lengthOf(1)\n})\n\n// SIDE-EFFECT ASSERTIONS\nhopp.test('Chai side-effects - .change() assertions', () => {\n const obj = { count: 0 }\n const changeFn = () => { obj.count = 5 }\n hopp.expect(changeFn).to.change(obj, 'count')\n \n const noChangeFn = () => {} \n hopp.expect(noChangeFn).to.not.change(obj, 'count')\n})\n\nhopp.test('Chai side-effects - .change().by() delta', () => {\n const obj = { count: 10 }\n const addFive = () => { obj.count += 5 }\n hopp.expect(addFive).to.change(obj, 'count').by(5)\n})\n\nhopp.test('Chai side-effects - .increase() assertions', () => {\n const obj = { count: 0 }\n const incFn = () => { obj.count++ }\n hopp.expect(incFn).to.increase(obj, 'count')\n})\n\nhopp.test('Chai side-effects - .decrease() assertions', () => {\n const obj = { count: 10 }\n const decFn = () => { obj.count-- }\n hopp.expect(decFn).to.decrease(obj, 'count')\n})\n\n// LANGUAGE CHAINS AND MODIFIERS\nhopp.test('Chai chains - Complex chaining with multiple modifiers', () => {\n hopp.expect([1, 2, 3]).to.be.an('array').that.includes(2)\n hopp.expect({ a: 1, b: 2 }).to.be.an('object').that.has.property('a')\n})\n\nhopp.test('Chai modifiers - .deep with .equal()', () => {\n hopp.expect({ a: { b: 1 } }).to.deep.equal({ a: { b: 1 } })\n hopp.expect([{ a: 1 }]).to.deep.equal([{ a: 1 }])\n})\n\n// RESPONSE-BASED TESTS\nhopp.test('Chai with response - status code checks', () => {\n hopp.expect(hopp.response.statusCode).to.equal(200)\n hopp.expect(hopp.response.statusCode).to.be.within(200, 299)\n})\n\nhopp.test('Chai with response - body parsing', () => {\n const response = hopp.response.body.asJSON()\n hopp.expect(response).to.be.an('object')\n hopp.expect(response).to.have.property('data')\n \n const body = JSON.parse(response.data)\n hopp.expect(body).to.have.property('testData')\n hopp.expect(body.testData).to.have.property('number', 42)\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": "application/json",
+ "body": "{\n \"testData\": {\n \"number\": 42,\n \"string\": \"hello world\",\n \"array\": [1, 2, 3, 4, 5],\n \"object\": { \"nested\": { \"value\": true } },\n \"bool\": true,\n \"nullValue\": null\n }\n}"
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00chai2qt0inext02",
+ "name": "chai-assertions-pm-parity",
+ "method": "POST",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\n",
+ "testScript": "export {};\n\npm.test('PM Chai - equality assertions', () => {\n pm.expect(5).to.equal(5)\n pm.expect('test').to.not.equal('other')\n pm.expect({ a: 1 }).to.eql({ a: 1 })\n})\n\npm.test('PM Chai - type assertions', () => {\n pm.expect('string').to.be.a('string')\n pm.expect(42).to.be.a('number')\n pm.expect([]).to.be.an('array')\n})\n\npm.test('PM Chai - truthiness assertions', () => {\n pm.expect(true).to.be.true\n pm.expect(false).to.be.false\n pm.expect(null).to.be.null\n})\n\npm.test('PM Chai - numerical comparisons', () => {\n pm.expect(10).to.be.above(5)\n pm.expect(5).to.be.below(10)\n pm.expect(7).to.be.within(5, 10)\n})\n\npm.test('PM Chai - property and length assertions', () => {\n const obj = { name: 'test' }\n pm.expect(obj).to.have.property('name')\n pm.expect([1, 2, 3]).to.have.lengthOf(3)\n pm.expect('hello').to.have.lengthOf(5)\n})\n\npm.test('PM Chai - string and collection assertions', () => {\n pm.expect('hello world').to.include('world')\n pm.expect([1, 2, 3]).to.include(2)\n pm.expect({ a: 1, b: 2 }).to.have.keys('a', 'b')\n})\n\npm.test('PM Chai - function assertions', () => {\n const throwFn = () => { throw new Error('test') }\n pm.expect(throwFn).to.throw()\n pm.expect([]).to.respondTo('push')\n})\n\npm.test('PM Chai - response validation', () => {\n pm.expect(pm.response.code).to.equal(200)\n pm.expect(pm.response.responseTime).to.be.a('number')\n \n const response = pm.response.json()\n pm.expect(response).to.have.property('data')\n \n const body = JSON.parse(response.data)\n pm.expect(body).to.have.property('pmTest')\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": "application/json",
+ "body": "{\n \"pmTest\": {\n \"value\": 42,\n \"text\": \"postman compatible\"\n }\n}"
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00cookies01",
+ "name": "cookie-assertions-test",
+ "method": "GET",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [
+ {
+ "key": "Cookie",
+ "value": "session_id=abc123; user_token=xyz789; preferences=theme%3Ddark",
+ "active": true,
+ "description": "Test cookies"
+ }
+ ],
+ "preRequestScript": "export {};\n",
+ "testScript": "export {};\n\n// NOTE: Full cookie behavior with Set-Cookie headers is tested in js-sandbox unit tests\n// (see packages/hoppscotch-js-sandbox/src/__tests__/pm-namespace/response/cookies.spec.ts)\n// These CLI E2E tests verify API contracts and integration behavior\n\npm.test('pm.response.cookies API contract - all methods exist', () => {\n pm.expect(pm.response.cookies).to.be.an('object')\n pm.expect(typeof pm.response.cookies.get).to.equal('function')\n pm.expect(typeof pm.response.cookies.has).to.equal('function')\n pm.expect(typeof pm.response.cookies.toObject).to.equal('function')\n})\n\npm.test('pm.response.cookies.toObject() returns proper structure', () => {\n const allCookies = pm.response.cookies.toObject()\n pm.expect(allCookies).to.be.an('object')\n pm.expect(typeof allCookies).to.equal('object')\n})\n\npm.test('pm.response.cookies.has() returns boolean for cookie checks', () => {\n const hasCookie = pm.response.cookies.has('test_cookie_name')\n pm.expect(hasCookie).to.be.a('boolean')\n})\n\npm.test('pm.response.cookies.get() returns null for non-existent cookies', () => {\n const cookieValue = pm.response.cookies.get('non_existent_cookie_xyz')\n pm.expect(cookieValue).to.be.null\n})\n\npm.test('pm.response.cookies API integrates with response object', () => {\n pm.expect(pm.response.code).to.equal(200)\n \n // Verify cookies object is accessible from response\n pm.expect(pm.response).to.have.property('cookies')\n pm.expect(pm.response.cookies).to.not.be.null\n pm.expect(pm.response.cookies).to.not.be.undefined\n})\n\npm.test('Request cookies are properly sent via Cookie header', () => {\n const hasCookieHeader = pm.request.headers.has('Cookie')\n \n if (hasCookieHeader) {\n const cookieHeader = pm.request.headers.get('Cookie')\n pm.expect(cookieHeader).to.be.a('string')\n pm.expect(cookieHeader).to.include('session_id')\n pm.expect(cookieHeader).to.include('user_token')\n }\n})\n\npm.test('pm.response.to.have.cookie() assertion method exists', () => {\n // Verify the cookie assertion is defined in the type system\n pm.expect(typeof pm.response.to.have.cookie).to.equal('function')\n})\n\nhopp.test('hopp.cookies API contract matches pm.response.cookies', () => {\n hopp.expect(typeof hopp.cookies).toBe('object')\n hopp.expect(typeof hopp.cookies.get).toBe('function')\n hopp.expect(typeof hopp.cookies.has).toBe('function')\n hopp.expect(typeof hopp.cookies.getAll).toBe('function')\n hopp.expect(typeof hopp.cookies.set).toBe('function')\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": null,
+ "body": null
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00schema01",
+ "name": "json-schema-validation-test",
+ "method": "POST",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\n",
+ "testScript": "export {};\n\npm.test('pm.response.to.have.jsonSchema() validates response structure', () => {\n const schema = {\n type: 'object',\n required: ['data'],\n properties: {\n data: { type: 'string' },\n headers: { type: 'object' }\n }\n }\n \n pm.response.to.have.jsonSchema(schema)\n \n // Explicit assertions to ensure schema validation passed\n const json = pm.response.json()\n pm.expect(json).to.have.property('data')\n pm.expect(json.data).to.be.a('string')\n})\n\npm.test('JSON Schema validation with nested properties', () => {\n const response = pm.response.json()\n const body = JSON.parse(response.data)\n \n const userSchema = {\n type: 'object',\n required: ['name', 'age'],\n properties: {\n name: { type: 'string' },\n age: { type: 'number', minimum: 0, maximum: 150 },\n email: { type: 'string' }\n }\n }\n \n pm.expect(body).to.have.jsonSchema(userSchema)\n \n // Explicit assertions to ensure schema validation passed\n pm.expect(body).to.have.property('name')\n pm.expect(body).to.have.property('age')\n pm.expect(body.name).to.equal('Alice Smith')\n pm.expect(body.age).to.equal(28)\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": "application/json",
+ "body": "{\n \"name\": \"Alice Smith\",\n \"age\": 28,\n \"email\": \"alice@example.com\"\n}"
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00charset01",
+ "name": "charset-validation-test",
+ "method": "GET",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\n",
+ "testScript": "export {};\n\n// NOTE: Full charset behavior with actual charset values is tested in js-sandbox unit tests\n// (see packages/hoppscotch-js-sandbox/src/__tests__/pm-namespace/advanced-assertions.spec.ts)\n// These CLI E2E tests verify API contracts and header parsing behavior\n\npm.test('pm.expect().to.have.charset() assertion API contract exists', () => {\n const testString = 'test'\n pm.expect(typeof pm.expect(testString).to.have.charset).to.equal('function')\n})\n\npm.test('pm.response.to.have.charset() assertion API contract exists', () => {\n pm.expect(typeof pm.response.to.have.charset).to.equal('function')\n})\n\npm.test('Response Content-Type header is accessible and parseable', () => {\n const contentType = pm.response.headers.get('content-type')\n pm.expect(contentType).to.be.a('string')\n pm.expect(contentType.length).to.be.above(0)\n pm.expect(contentType).to.include('application/')\n})\n\npm.test('Content-Type header parsing logic validates structure', () => {\n const contentType = pm.response.headers.get('content-type')\n \n // Test charset detection logic\n const hasCharset = contentType.includes('charset=')\n pm.expect(typeof hasCharset).to.equal('boolean')\n \n // Test charset extraction pattern\n const charsetMatch = contentType.match(/charset=([^;\\s]+)/i)\n if (hasCharset) {\n pm.expect(charsetMatch).to.be.an('array')\n pm.expect(charsetMatch[1]).to.be.a('string')\n } else {\n pm.expect(charsetMatch).to.be.null\n }\n})\n\npm.test('Charset handling works with or without explicit charset', () => {\n const contentType = pm.response.headers.get('content-type')\n const hasExplicitCharset = contentType.toLowerCase().includes('charset=')\n \n // Whether charset is present or not, response decoding should work\n const responseText = pm.response.text()\n pm.expect(responseText).to.be.a('string')\n pm.expect(responseText.length).to.be.above(0)\n})\n\npm.test('Response text decoding works with UTF-8 default', () => {\n const responseText = pm.response.text()\n pm.expect(responseText).to.be.a('string')\n \n // Verify JSON parsing works (implies correct encoding)\n const responseJson = pm.response.json()\n pm.expect(responseJson).to.be.an('object')\n pm.expect(responseJson).to.have.property('data')\n})\n\npm.test('Response headers integrate correctly with charset assertions', () => {\n const allHeaders = pm.response.headers.all()\n pm.expect(allHeaders).to.be.an('object')\n pm.expect(Object.keys(allHeaders).length).to.be.above(0)\n})\n\nhopp.test('hopp namespace handles response encoding with proper defaults', () => {\n const textResponse = hopp.response.body.asText()\n hopp.expect(textResponse).toBeType('string')\n hopp.expect(textResponse.length > 0).toBe(true)\n \n // Verify JSON parsing works with default encoding\n const jsonResponse = hopp.response.body.asJSON()\n hopp.expect(jsonResponse).toBeType('object')\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": null,
+ "body": null
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00jsonpath01",
+ "name": "jsonpath-query-test",
+ "method": "POST",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\n",
+ "testScript": "export {};\n\npm.test('pm.response.to.have.jsonPath() queries nested JSON data', () => {\n const response = pm.response.json()\n const body = JSON.parse(response.data)\n \n pm.expect(body).to.have.jsonPath('$.users[0].name')\n pm.expect(body).to.have.jsonPath('$.users[*].active')\n pm.expect(body).to.have.jsonPath('$.metadata.version')\n})\n\npm.test('JSONPath with value validation', () => {\n const response = pm.response.json()\n const body = JSON.parse(response.data)\n \n pm.expect(body).to.have.jsonPath('$.users[0].name', 'John')\n pm.expect(body).to.have.jsonPath('$.metadata.version', '1.0')\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": "application/json",
+ "body": "{\n \"users\": [\n { \"name\": \"John\", \"active\": true },\n { \"name\": \"Jane\", \"active\": false }\n ],\n \"metadata\": {\n \"version\": \"1.0\",\n \"timestamp\": \"2025-01-15\"\n }\n}"
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00envext01",
+ "name": "environment-extensions-test",
+ "method": "GET",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\npm.environment.set('template_var', 'world')\npm.environment.set('user_id', '12345')\npm.globals.set('api_base', 'https://api.example.com')\npm.globals.set('version', 'v2')\n",
+ "testScript": "export {};\n\npm.test('pm.environment.name returns environment identifier', () => {\n pm.expect(pm.environment.name).to.be.a('string')\n pm.expect(pm.environment.name).to.equal('active')\n})\n\npm.test('pm.environment.replaceIn() resolves template variables', () => {\n const template = 'Hello {{template_var}}, user {{user_id}}!'\n const resolved = pm.environment.replaceIn(template)\n pm.expect(resolved).to.equal('Hello world, user 12345!')\n})\n\npm.test('pm.globals.replaceIn() resolves global template variables', () => {\n const template = '{{api_base}}/{{version}}/users'\n const resolved = pm.globals.replaceIn(template)\n pm.expect(resolved).to.equal('https://api.example.com/v2/users')\n})\n\npm.test('pm.environment.toObject() returns all environment variables', () => {\n const allVars = pm.environment.toObject()\n pm.expect(allVars).to.be.an('object')\n pm.expect(allVars).to.have.property('template_var', 'world')\n pm.expect(allVars).to.have.property('user_id', '12345')\n})\n\npm.test('pm.globals.toObject() returns all global variables', () => {\n const allGlobals = pm.globals.toObject()\n pm.expect(allGlobals).to.be.an('object')\n \n // globals might be empty in CLI context\n if (Object.keys(allGlobals).length > 0) {\n pm.expect(allGlobals).to.have.property('api_base')\n }\n})\n\npm.test('pm.variables.toObject() returns combined variables with precedence', () => {\n const allVariables = pm.variables.toObject()\n pm.expect(allVariables).to.be.an('object')\n pm.expect(allVariables).to.have.property('template_var')\n})\n\npm.test('pm.environment.clear() removes all environment variables', () => {\n pm.environment.clear()\n const clearedVars = pm.environment.toObject()\n pm.expect(Object.keys(clearedVars).length).to.equal(0)\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": null,
+ "body": null
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00respext01",
+ "name": "response-extensions-test",
+ "method": "POST",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\n",
+ "testScript": "export {};\n\npm.test('pm.response.responseSize returns response body size in bytes', () => {\n pm.expect(pm.response.responseSize).to.be.a('number')\n pm.expect(pm.response.responseSize).to.be.above(0)\n})\n\npm.test('pm.response.responseSize matches actual body length', () => {\n const bodyText = pm.response.text()\n // Use the same workaround as pm.response.responseSize for QuickJS\n const encoder = new TextEncoder()\n const encoded = encoder.encode(bodyText)\n // QuickJS represents Uint8Array as object with numeric keys\n const actualSize = encoded && typeof encoded.length === 'number' && encoded.length > 0\n ? encoded.length\n : Object.keys(encoded).filter(k => !isNaN(k)).length\n pm.expect(pm.response.responseSize).to.equal(actualSize)\n})\n\npm.test('Response size is calculated correctly for JSON payload', () => {\n const response = pm.response.json()\n pm.expect(pm.response.responseSize).to.be.a('number')\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": "application/json",
+ "body": "{\n \"message\": \"Testing response size calculation\",\n \"data\": {\n \"items\": [1, 2, 3, 4, 5],\n \"metadata\": {\n \"count\": 5,\n \"type\": \"numeric\"\n }\n }\n}"
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00execext01",
+ "name": "execution-context-test",
+ "method": "GET",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\n",
+ "testScript": "export {};\n\npm.test('pm.execution.location provides execution path', () => {\n pm.expect(pm.execution.location).to.be.an('array')\n pm.expect(pm.execution.location.length).to.be.above(0)\n})\n\npm.test('pm.execution.location.current returns current location', () => {\n pm.expect(pm.execution.location.current).to.be.a('string')\n pm.expect(pm.execution.location.current).to.equal('Hoppscotch')\n})\n\npm.test('pm.execution.location is immutable', () => {\n const location = pm.execution.location\n const throwFn = () => { location.push('test') }\n pm.expect(throwFn).to.throw()\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": null,
+ "body": null
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00bddassert01",
+ "name": "bdd-response-assertions-test",
+ "method": "POST",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "active": true,
+ "description": ""
+ }
+ ],
+ "preRequestScript": "export {};\n",
+ "testScript": "export {};\n\npm.test('pm.response.to.have.status() validates exact status code', () => {\n pm.response.to.have.status(200)\n pm.expect(pm.response.code).to.equal(200)\n})\n\npm.test('pm.response.to.be.ok validates 2xx status codes', () => {\n pm.response.to.be.ok()\n})\n\npm.test('pm.response.to.be.success validates 2xx status codes (alias)', () => {\n pm.response.to.be.success()\n})\n\npm.test('pm.response.to.have.header() validates response headers', () => {\n pm.response.to.have.header('content-type')\n pm.expect(pm.response.headers.has('content-type')).to.be.true\n})\n\npm.test('pm.response.to.have.jsonBody() validates JSON response', () => {\n pm.response.to.have.jsonBody()\n pm.response.to.have.jsonBody('data')\n \n const json = pm.response.json()\n pm.expect(json).to.have.property('data')\n})\n\npm.test('pm.response.to.be.json validates JSON content type', () => {\n pm.response.to.be.json()\n})\n\npm.test('pm.response.to.have.responseTime assertions', () => {\n pm.response.to.have.responseTime.below(5000)\n pm.expect(pm.response.responseTime).to.be.a('number')\n pm.expect(pm.response.responseTime).to.be.above(0)\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": "application/json",
+ "body": "{\n \"test\": \"BDD assertions\",\n \"status\": \"success\"\n}"
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00includecontain01",
+ "name": "include-contain-assertions-test",
+ "method": "POST",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\n",
+ "testScript": "export {};\n\npm.test('pm.expect().to.include() validates string inclusion', () => {\n pm.expect('hello world').to.include('world')\n pm.expect('hello world').to.include('hello')\n pm.expect('test string').to.not.include('missing')\n})\n\npm.test('pm.expect().to.contain() validates array inclusion', () => {\n pm.expect([1, 2, 3]).to.contain(2)\n pm.expect([1, 2, 3]).to.include(1)\n pm.expect(['a', 'b', 'c']).to.contain('b')\n})\n\npm.test('pm.expect().to.includes() alias works', () => {\n pm.expect('testing').to.includes('test')\n pm.expect([10, 20, 30]).to.includes(20)\n})\n\npm.test('pm.expect().to.contains() alias works', () => {\n pm.expect('contains test').to.contains('contains')\n pm.expect([true, false]).to.contains(true)\n})\n\npm.test('include/contain with response data', () => {\n const response = pm.response.json()\n pm.expect(response).to.have.property('data')\n \n const bodyText = pm.response.text()\n pm.expect(bodyText).to.include('includeTest')\n})\n\nhopp.test('hopp.expect() also supports toInclude()', () => {\n hopp.expect('hopp test').toInclude('hopp')\n hopp.expect([1, 2]).toInclude(1)\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": "application/json",
+ "body": "{\n \"includeTest\": \"This text should be found\",\n \"array\": [1, 2, 3]\n}"
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00envunsetclear01",
+ "name": "environment-unset-clear-test",
+ "method": "GET",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\npm.environment.set('to_unset1', 'value1')\npm.environment.set('to_unset2', 'value2')\npm.environment.set('to_clear1', 'clear_value1')\npm.environment.set('to_clear2', 'clear_value2')\npm.environment.set('to_clear3', 'clear_value3')\npm.globals.set('global_to_unset', 'global_value')\npm.globals.set('global_to_clear1', 'global_clear1')\npm.globals.set('global_to_clear2', 'global_clear2')\n",
+ "testScript": "export {};\n\npm.test('pm.environment.unset() removes specific variables', () => {\n pm.expect(pm.environment.has('to_unset1')).to.be.true\n pm.environment.unset('to_unset1')\n pm.expect(pm.environment.has('to_unset1')).to.be.false\n pm.expect(pm.environment.get('to_unset1')).to.be.undefined\n})\n\npm.test('pm.environment.unset() handles non-existent keys gracefully', () => {\n pm.environment.unset('non_existent_key')\n pm.expect(pm.environment.has('non_existent_key')).to.be.false\n})\n\npm.test('pm.globals.unset() removes specific global variables', () => {\n const hasGlobal = pm.globals.has('global_to_unset')\n if (hasGlobal) {\n pm.globals.unset('global_to_unset')\n pm.expect(pm.globals.has('global_to_unset')).to.be.false\n }\n})\n\npm.test('pm.environment.clear() removes ALL environment variables', () => {\n // Verify variables exist before clear\n pm.expect(pm.environment.has('to_clear1')).to.be.true\n pm.expect(pm.environment.has('to_clear2')).to.be.true\n pm.expect(pm.environment.has('to_clear3')).to.be.true\n \n // Clear all environment variables\n pm.environment.clear()\n \n // Verify ALL variables are removed\n const allVars = pm.environment.toObject()\n pm.expect(Object.keys(allVars).length).to.equal(0)\n pm.expect(pm.environment.has('to_clear1')).to.be.false\n pm.expect(pm.environment.has('to_clear2')).to.be.false\n pm.expect(pm.environment.has('to_clear3')).to.be.false\n})\n\npm.test('pm.globals.clear() removes ALL global variables', () => {\n // Verify globals exist before clear (might be empty in CLI)\n const globalsBeforeClear = pm.globals.toObject()\n \n pm.globals.clear()\n \n // Verify all globals are removed\n const globalsAfterClear = pm.globals.toObject()\n pm.expect(Object.keys(globalsAfterClear).length).to.equal(0)\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": null,
+ "body": null
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00pmmutate01",
+ "name": "pm-request-mutation-test",
+ "method": "GET",
+ "endpoint": "https://echo.hoppscotch.io/original",
+ "params": [
+ {
+ "key": "original_param",
+ "value": "original",
+ "active": true,
+ "description": ""
+ }
+ ],
+ "headers": [
+ {
+ "key": "Original-Header",
+ "value": "original",
+ "active": true,
+ "description": ""
+ }
+ ],
+ "preRequestScript": "export {};\n// Test PM namespace mutability - URL string assignment\npm.request.url = 'https://echo.hoppscotch.io/mutated-via-string'\n\n// Test method mutation\npm.request.method = 'POST'\n\n// Test header mutations\npm.request.headers.add({ key: 'Added-Header', value: 'added-value' })\npm.request.headers.upsert({ key: 'Original-Header', value: 'mutated-value' })\n\n// Test body mutation via update()\npm.request.body.update({\n mode: 'raw',\n raw: JSON.stringify({ pmMutated: true, timestamp: Date.now() }),\n options: { raw: { language: 'json' } }\n})\n\n// Test auth mutation\npm.request.auth = {\n authType: 'bearer',\n authActive: true,\n token: 'pm-bearer-token-123'\n}\n",
+ "testScript": "export {};\n\npm.test('pm.request.url string assignment was applied', () => {\n const urlString = pm.request.url.toString()\n pm.expect(urlString).to.include('/mutated-via-string')\n pm.expect(urlString).to.not.include('/original')\n})\n\npm.test('pm.request.method mutation was applied', () => {\n pm.expect(pm.request.method).to.equal('POST')\n pm.expect(pm.request.method).to.not.equal('GET')\n})\n\npm.test('pm.request.headers.add() added new header', () => {\n pm.expect(pm.request.headers.has('Added-Header')).to.be.true\n pm.expect(pm.request.headers.get('Added-Header')).to.equal('added-value')\n})\n\npm.test('pm.request.headers.upsert() updated existing header', () => {\n pm.expect(pm.request.headers.has('Original-Header')).to.be.true\n pm.expect(pm.request.headers.get('Original-Header')).to.equal('mutated-value')\n pm.expect(pm.request.headers.get('Original-Header')).to.not.equal('original')\n})\n\npm.test('pm.request.body.update() changed body content', () => {\n pm.expect(pm.request.body.contentType).to.equal('application/json')\n const bodyString = typeof pm.request.body.body === 'string' \n ? pm.request.body.body \n : JSON.stringify(pm.request.body.body)\n pm.expect(bodyString).to.include('pmMutated')\n const bodyData = JSON.parse(bodyString)\n pm.expect(bodyData.pmMutated).to.be.true\n})\n\npm.test('pm.request.auth mutation was applied', () => {\n pm.expect(pm.request.auth.authType).to.equal('bearer')\n pm.expect(pm.request.auth.token).to.equal('pm-bearer-token-123')\n})\n\npm.test('pm.request.id and pm.request.name are accessible', () => {\n pm.expect(pm.request.id).to.be.a('string')\n pm.expect(pm.request.id.length).to.be.above(0)\n pm.expect(pm.request.name).to.equal('pm-request-mutation-test')\n})\n\nhopp.test('hopp.request reflects pm namespace mutations', () => {\n hopp.expect(hopp.request.url).toInclude('/mutated-via-string')\n hopp.expect(hopp.request.method).toBe('POST')\n const hasAddedHeader = hopp.request.headers.some(h => h.key === 'Added-Header')\n hopp.expect(hasAddedHeader).toBe(true)\n})\n",
+ "auth": {
+ "authType": "none",
+ "authActive": true
+ },
+ "body": {
+ "contentType": null,
+ "body": null
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00urlmutate01",
+ "name": "pm-url-property-mutations-test",
+ "method": "GET",
+ "endpoint": "https://echo.hoppscotch.io/original?old=value",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\n// Test URL object property mutations\npm.request.url.protocol = 'http'\npm.request.url.host = ['echo', 'hoppscotch', 'io']\npm.request.url.path = ['v2', 'test']\npm.request.url.port = '443'\npm.request.url.query.add({ key: 'new', value: 'param' })\npm.request.url.query.remove('old')\n",
+ "testScript": "export {};\n\npm.test('URL protocol mutation works', () => {\n const url = pm.request.url\n pm.expect(url.protocol).to.equal('http')\n pm.expect(url.toString()).to.include('http://')\n})\n\npm.test('URL host mutation works', () => {\n const url = pm.request.url\n pm.expect(url.host).to.be.an('array')\n pm.expect(url.host.join('.')).to.equal('echo.hoppscotch.io')\n pm.expect(url.toString()).to.include('echo.hoppscotch.io')\n})\n\npm.test('URL path mutation works', () => {\n const url = pm.request.url\n pm.expect(url.path).to.be.an('array')\n pm.expect(url.path).to.include('v2')\n pm.expect(url.path).to.include('test')\n pm.expect(url.toString()).to.include('/v2/test')\n})\n\npm.test('URL query.add() adds parameter', () => {\n const allParams = pm.request.url.query.all()\n pm.expect(allParams).to.have.property('new', 'param')\n})\n\npm.test('URL query.remove() removes parameter', () => {\n const allParams = pm.request.url.query.all()\n pm.expect(allParams).to.not.have.property('old')\n})\n\npm.test('Full URL reflects all mutations', () => {\n const fullUrl = pm.request.url.toString()\n pm.expect(fullUrl).to.include('http://')\n pm.expect(fullUrl).to.include('echo.hoppscotch.io')\n pm.expect(fullUrl).to.include('/v2/test')\n pm.expect(fullUrl).to.include('new=param')\n pm.expect(fullUrl).to.not.include('old=value')\n})\n\nhopp.test('hopp.request reflects URL mutations', () => {\n hopp.expect(hopp.request.url).toInclude('echo.hoppscotch.io')\n hopp.expect(hopp.request.url).toInclude('/v2/test')\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": null,
+ "body": null
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00unsupported01",
+ "name": "unsupported-features-test",
+ "method": "GET",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\n",
+ "testScript": "export {};\n\npm.test('pm.require() throws descriptive error', () => {\n const throwFn = () => pm.require('lodash')\n pm.expect(throwFn).to.throw()\n pm.expect(throwFn).to.throw(/not supported in Hoppscotch/)\n})\n\npm.test('pm.execution.runRequest() throws descriptive error', () => {\n const throwFn = () => pm.execution.runRequest()\n pm.expect(throwFn).to.throw()\n pm.expect(throwFn).to.throw(/Collection Runner feature/)\n})\n\npm.test('pm.collectionVariables.replaceIn() throws descriptive error', () => {\n const throwFn = () => pm.collectionVariables.replaceIn('{{test}}')\n pm.expect(throwFn).to.throw()\n pm.expect(throwFn).to.throw(/Workspace feature/)\n})\n\npm.test('pm.iterationData.toJSON() throws descriptive error', () => {\n const throwFn = () => pm.iterationData.toJSON()\n pm.expect(throwFn).to.throw()\n pm.expect(throwFn).to.throw(/Collection Runner feature/)\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": null,
+ "body": null
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "cmfhzf0op00urlpropertylist01",
+ "name": "url-propertylist-helpers-test",
+ "method": "GET",
+ "endpoint": "https://api.example.com:8080/v1/users?filter=active&sort=name&tag=js&tag=ts#section1",
+ "params": [
+ {
+ "key": "filter",
+ "value": "active",
+ "active": true,
+ "description": ""
+ },
+ {
+ "key": "sort",
+ "value": "name",
+ "active": true,
+ "description": ""
+ },
+ {
+ "key": "tag",
+ "value": "js",
+ "active": true,
+ "description": ""
+ },
+ {
+ "key": "tag",
+ "value": "ts",
+ "active": true,
+ "description": ""
+ }
+ ],
+ "headers": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "active": true,
+ "description": ""
+ },
+ {
+ "key": "Authorization",
+ "value": "Bearer test-token",
+ "active": true,
+ "description": ""
+ }
+ ],
+ "preRequestScript": "export {};\n// Test URL helper methods\npm.request.url.update('https://echo.hoppscotch.io/updated?test=value')\npm.request.url.addQueryParams([{ key: 'page', value: '1' }, { key: 'limit', value: '20' }])\npm.request.url.removeQueryParams('test')\n\n// Test hostname and hash properties\npm.request.url.hostname = 'echo.hoppscotch.io'\npm.request.url.hash = 'results'\n\n// Test query PropertyList methods\npm.request.url.query.upsert({ key: 'status', value: 'published' })\npm.request.url.query.add({ key: 'include', value: 'metadata' })\n",
+ "testScript": "export {};\n\npm.test('URL helper methods - getHost() returns hostname as string', () => {\n const host = pm.request.url.getHost()\n pm.expect(host).to.be.a('string')\n pm.expect(host).to.equal('echo.hoppscotch.io')\n})\n\npm.test('URL helper methods - getPath() returns path with leading slash', () => {\n const path = pm.request.url.getPath()\n pm.expect(path).to.be.a('string')\n pm.expect(path).to.include('/')\n pm.expect(path).to.equal('/updated')\n})\n\npm.test('URL helper methods - getPathWithQuery() includes query string', () => {\n const pathWithQuery = pm.request.url.getPathWithQuery()\n pm.expect(pathWithQuery).to.include('?')\n pm.expect(pathWithQuery).to.include('page=1')\n pm.expect(pathWithQuery).to.include('limit=20')\n})\n\npm.test('URL helper methods - getQueryString() returns query without ?', () => {\n const queryString = pm.request.url.getQueryString()\n pm.expect(queryString).to.be.a('string')\n pm.expect(queryString).to.not.include('?')\n pm.expect(queryString).to.include('page=1')\n})\n\npm.test('URL helper methods - getRemote() returns host with port', () => {\n const remote = pm.request.url.getRemote()\n pm.expect(remote).to.be.a('string')\n pm.expect(remote).to.equal('echo.hoppscotch.io')\n})\n\npm.test('URL helper methods - update() changes entire URL', () => {\n const url = pm.request.url.toString()\n pm.expect(url).to.include('echo.hoppscotch.io')\n pm.expect(url).to.include('/updated')\n})\n\npm.test('URL helper methods - addQueryParams() adds multiple params', () => {\n const allParams = pm.request.url.query.all()\n pm.expect(allParams).to.have.property('page', '1')\n pm.expect(allParams).to.have.property('limit', '20')\n})\n\npm.test('URL helper methods - removeQueryParams() removes params', () => {\n const allParams = pm.request.url.query.all()\n pm.expect(allParams).to.not.have.property('test')\n})\n\npm.test('URL properties - hostname getter returns string', () => {\n const hostname = pm.request.url.hostname\n pm.expect(hostname).to.be.a('string')\n pm.expect(hostname).to.equal('echo.hoppscotch.io')\n})\n\npm.test('URL properties - hostname matches host array', () => {\n const hostname = pm.request.url.hostname\n const hostString = pm.request.url.host.join('.')\n pm.expect(hostname).to.equal(hostString)\n})\n\npm.test('URL properties - hash getter returns string', () => {\n const hash = pm.request.url.hash\n pm.expect(hash).to.be.a('string')\n // Hash might not persist through URL mutations in E2E context\n})\n\npm.test('Query PropertyList - get() retrieves parameter value', () => {\n const pageValue = pm.request.url.query.get('page')\n pm.expect(pageValue).to.equal('1')\n})\n\npm.test('Query PropertyList - has() checks parameter existence', () => {\n pm.expect(pm.request.url.query.has('page')).to.be.true\n pm.expect(pm.request.url.query.has('nonexistent')).to.be.false\n})\n\npm.test('Query PropertyList - upsert() adds/updates parameter', () => {\n pm.expect(pm.request.url.query.has('status')).to.be.true\n pm.expect(pm.request.url.query.get('status')).to.equal('published')\n})\n\npm.test('Query PropertyList - count() returns parameter count', () => {\n const count = pm.request.url.query.count()\n pm.expect(count).to.be.a('number')\n pm.expect(count).to.be.above(0)\n})\n\npm.test('Query PropertyList - each() iterates over parameters', () => {\n let iterationCount = 0\n pm.request.url.query.each((param) => {\n pm.expect(param).to.have.property('key')\n pm.expect(param).to.have.property('value')\n iterationCount++\n })\n pm.expect(iterationCount).to.be.above(0)\n})\n\npm.test('Query PropertyList - map() transforms parameters', () => {\n const keys = pm.request.url.query.map((param) => param.key)\n pm.expect(keys).to.be.an('array')\n pm.expect(keys).to.include('page')\n pm.expect(keys).to.include('limit')\n})\n\npm.test('Query PropertyList - filter() filters parameters', () => {\n const filtered = pm.request.url.query.filter((param) => param.key === 'page')\n pm.expect(filtered).to.be.an('array')\n pm.expect(filtered.length).to.be.above(0)\n pm.expect(filtered[0].key).to.equal('page')\n})\n\npm.test('Query PropertyList - idx() accesses by index', () => {\n const firstParam = pm.request.url.query.idx(0)\n pm.expect(firstParam).to.be.an('object')\n pm.expect(firstParam).to.have.property('key')\n pm.expect(firstParam).to.have.property('value')\n})\n\npm.test('Query PropertyList - idx() returns null for out of bounds', () => {\n const param = pm.request.url.query.idx(999)\n pm.expect(param).to.be.null\n})\n\npm.test('Query PropertyList - toObject() returns object', () => {\n const obj = pm.request.url.query.toObject()\n pm.expect(obj).to.be.an('object')\n pm.expect(obj).to.have.property('page')\n})\n\npm.test('Headers PropertyList - each() iterates over headers', () => {\n let count = 0\n pm.request.headers.each((header) => {\n pm.expect(header).to.have.property('key')\n pm.expect(header).to.have.property('value')\n count++\n })\n pm.expect(count).to.be.above(0)\n})\n\npm.test('Headers PropertyList - map() transforms headers', () => {\n const keys = pm.request.headers.map((h) => h.key)\n pm.expect(keys).to.be.an('array')\n pm.expect(keys).to.include('Content-Type')\n})\n\npm.test('Headers PropertyList - filter() filters headers', () => {\n const filtered = pm.request.headers.filter((h) => h.key === 'Content-Type')\n pm.expect(filtered).to.be.an('array')\n pm.expect(filtered.length).to.be.above(0)\n})\n\npm.test('Headers PropertyList - count() returns header count', () => {\n const count = pm.request.headers.count()\n pm.expect(count).to.be.a('number')\n pm.expect(count).to.be.above(0)\n})\n\npm.test('Headers PropertyList - idx() accesses by index', () => {\n const firstHeader = pm.request.headers.idx(0)\n pm.expect(firstHeader).to.be.an('object')\n pm.expect(firstHeader).to.have.property('key')\n})\n\npm.test('Headers PropertyList - toObject() returns object', () => {\n const obj = pm.request.headers.toObject()\n pm.expect(obj).to.be.an('object')\n pm.expect(obj).to.have.property('Content-Type')\n})\n\nhopp.test('hopp namespace URL methods work identically', () => {\n const url = hopp.request.url\n hopp.expect(url).toInclude('echo.hoppscotch.io')\n hopp.expect(url).toInclude('/updated')\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": null,
+ "body": null
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "name": "propertylist-advanced-methods-test",
+ "method": "GET",
+ "endpoint": "https://echo.hoppscotch.io/propertylist",
+ "params": [
+ {
+ "key": "filter",
+ "value": "active",
+ "active": true,
+ "description": ""
+ },
+ {
+ "key": "sort",
+ "value": "name",
+ "active": true,
+ "description": ""
+ },
+ {
+ "key": "page",
+ "value": "1",
+ "active": true,
+ "description": ""
+ }
+ ],
+ "headers": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "active": true,
+ "description": ""
+ },
+ {
+ "key": "Authorization",
+ "value": "Bearer token123",
+ "active": true,
+ "description": ""
+ }
+ ],
+ "preRequestScript": "export {};\n// Test query.insert() - insert limit before page\npm.request.url.query.insert({ key: 'limit', value: '10' }, 'page')\n\n// Test query.append() - add new param at end\npm.request.url.query.append({ key: 'offset', value: '0' })\n\n// Test query.assimilate() - merge params\npm.request.url.query.assimilate({ include: 'metadata', status: 'active' })\n\n// Test headers.insert() - insert before Authorization\npm.request.headers.insert({ key: 'X-API-Key', value: 'secret123' }, 'Authorization')\n\n// Test headers.append() - add at end\npm.request.headers.append({ key: 'X-Request-ID', value: 'req-456' })\n\n// Test headers.assimilate() - merge headers\npm.request.headers.assimilate({ 'X-Custom-Header': 'custom-value' })\n",
+ "testScript": "export {};\n\npm.test('query.find() - finds param by string key', () => {\n const limitParam = pm.request.url.query.find('limit')\n if (limitParam) {\n pm.expect(limitParam).to.be.an('object')\n pm.expect(limitParam.key).to.equal('limit')\n } else {\n pm.expect(pm.request.url.query.has('limit')).to.be.true\n }\n})\n\npm.test('query.find() - finds param by predicate function', () => {\n const limitParam = pm.request.url.query.find((p) => p && p.key === 'limit')\n if (limitParam) {\n pm.expect(limitParam).to.be.an('object')\n pm.expect(limitParam.value).to.equal('10')\n } else {\n pm.expect(pm.request.url.query.get('limit')).to.equal('10')\n }\n})\n\npm.test('query.find() - returns null when not found', () => {\n const result = pm.request.url.query.find('nonexistent')\n pm.expect(result).to.be.null\n})\n\npm.test('query.indexOf() - returns index for existing params', () => {\n // Verify indexOf works - check params that exist in actual URL\n const allParams = pm.request.url.query.all()\n const keys = Object.keys(allParams)\n if (keys.length > 0) {\n const firstKey = keys[0]\n const idx = pm.request.url.query.indexOf(firstKey)\n pm.expect(idx).to.be.a('number')\n pm.expect(idx).to.be.at.least(0)\n }\n})\n\npm.test('query.indexOf() - returns index by object', () => {\n const allParams = pm.request.url.query.all()\n const keys = Object.keys(allParams)\n if (keys.length > 0) {\n const idx = pm.request.url.query.indexOf({ key: keys[0] })\n pm.expect(idx).to.be.a('number')\n pm.expect(idx).to.be.at.least(0)\n }\n})\n\npm.test('query.indexOf() - returns -1 when not found', () => {\n const idx = pm.request.url.query.indexOf('notfound')\n pm.expect(idx).to.equal(-1)\n})\n\npm.test('query.insert/append/assimilate - methods executed successfully', () => {\n // Verify the methods executed without errors in pre-request\n // Post-request sees actual sent URL, so we just verify params exist\n const allParams = pm.request.url.query.all()\n pm.expect(allParams).to.be.an('object')\n pm.expect(pm.request.url.query.has('limit')).to.be.true\n pm.expect(pm.request.url.query.has('offset')).to.be.true\n})\n\npm.test('query.append() - adds param at end', () => {\n const offsetIdx = pm.request.url.query.indexOf('offset')\n pm.expect(offsetIdx).to.be.at.least(0)\n pm.expect(pm.request.url.query.get('offset')).to.equal('0')\n})\n\npm.test('query.assimilate() - adds/updates params', () => {\n pm.expect(pm.request.url.query.has('include')).to.be.true\n pm.expect(pm.request.url.query.get('include')).to.equal('metadata')\n pm.expect(pm.request.url.query.has('status')).to.be.true\n pm.expect(pm.request.url.query.get('status')).to.equal('active')\n})\n\npm.test('headers.find() - finds header by string (case-insensitive)', () => {\n const ct = pm.request.headers.find('content-type')\n pm.expect(ct).to.be.an('object')\n pm.expect(ct.key).to.equal('Content-Type')\n})\n\npm.test('headers.find() - finds header by predicate function', () => {\n const auth = pm.request.headers.find((h) => h.key === 'Authorization')\n pm.expect(auth).to.be.an('object')\n pm.expect(auth.value).to.include('Bearer')\n})\n\npm.test('headers.find() - returns null when not found', () => {\n const result = pm.request.headers.find('nonexistent')\n pm.expect(result).to.be.null\n})\n\npm.test('headers.indexOf() - returns correct index (case-insensitive)', () => {\n const authIdx = pm.request.headers.indexOf('authorization')\n pm.expect(authIdx).to.be.a('number')\n pm.expect(authIdx).to.be.at.least(0)\n})\n\npm.test('headers.indexOf() - returns correct index by object', () => {\n const ctIdx = pm.request.headers.indexOf({ key: 'Content-Type' })\n pm.expect(ctIdx).to.be.a('number')\n pm.expect(ctIdx).to.be.at.least(0)\n})\n\npm.test('headers.indexOf() - returns -1 when not found', () => {\n const idx = pm.request.headers.indexOf('NotFound')\n pm.expect(idx).to.equal(-1)\n})\n\npm.test('headers.insert() - inserts header before specified header', () => {\n const apiKeyIdx = pm.request.headers.indexOf('X-API-Key')\n const authIdx = pm.request.headers.indexOf('Authorization')\n pm.expect(apiKeyIdx).to.be.below(authIdx)\n})\n\npm.test('headers.append() - adds header at end', () => {\n pm.expect(pm.request.headers.has('X-Request-ID')).to.be.true\n pm.expect(pm.request.headers.get('X-Request-ID')).to.equal('req-456')\n})\n\npm.test('headers.assimilate() - adds/updates headers', () => {\n pm.expect(pm.request.headers.has('X-Custom-Header')).to.be.true\n pm.expect(pm.request.headers.get('X-Custom-Header')).to.equal('custom-value')\n})\n\npm.test('query PropertyList - all methods work together', () => {\n const allParams = pm.request.url.query.all()\n pm.expect(allParams).to.be.an('object')\n // At minimum we should have the params added in pre-request\n pm.expect(Object.keys(allParams).length).to.be.at.least(4)\n})\n\npm.test('headers PropertyList - all methods work together', () => {\n const allHeaders = pm.request.headers.all()\n pm.expect(allHeaders).to.be.an('object')\n pm.expect(Object.keys(allHeaders).length).to.be.at.least(5)\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": null,
+ "body": null
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "5",
+ "id": "advanced-response-methods-test",
+ "name": "advanced-response-methods-test",
+ "method": "POST",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "active": true
+ }
+ ],
+ "preRequestScript": "export {};\n",
+ "testScript": "export {};\n\n// Test pm.response.reason()\npm.test('pm.response.reason() returns HTTP reason phrase', () => {\n const reason = pm.response.reason()\n pm.expect(reason).to.be.a('string')\n pm.expect(reason).to.equal('OK')\n})\n\n// Test hopp.response.reason() for parity\npm.test('hopp.response.reason() returns HTTP reason phrase', () => {\n const reason = hopp.response.reason()\n hopp.expect(reason).toBeType('string')\n hopp.expect(reason).toBe('OK')\n})\n\n// Test pm.response.dataURI()\npm.test('pm.response.dataURI() converts response to data URI', () => {\n const dataURI = pm.response.dataURI()\n pm.expect(dataURI).to.be.a('string')\n pm.expect(dataURI).to.include('data:')\n pm.expect(dataURI).to.include('base64')\n})\n\n// Test hopp.response.dataURI() for parity\npm.test('hopp.response.dataURI() converts response to data URI', () => {\n const dataURI = hopp.response.dataURI()\n hopp.expect(dataURI).toBeType('string')\n hopp.expect(dataURI.startsWith('data:')).toBe(true)\n})\n\n// Test .nested property assertions\npm.test('pm.expect().to.have.nested.property() accesses nested properties', () => {\n const obj = { a: { b: { c: 'deep value' } } }\n pm.expect(obj).to.have.nested.property('a.b.c', 'deep value')\n pm.expect(obj).to.have.nested.property('a.b')\n})\n\n// Test hopp namespace nested property for parity\npm.test('hopp.expect().to.have.nested.property() accesses nested properties', () => {\n const obj = { x: { y: { z: 'nested' } } }\n hopp.expect(obj).to.have.nested.property('x.y.z', 'nested')\n hopp.expect(obj).to.have.nested.property('x.y')\n})\n\npm.test('pm.expect().to.have.nested.property() handles arrays', () => {\n const obj = { items: [{ name: 'first' }, { name: 'second' }] }\n pm.expect(obj).to.have.nested.property('items[0].name', 'first')\n pm.expect(obj).to.have.nested.property('items[1].name', 'second')\n})\n\npm.test('pm.expect().to.not.have.nested.property() negation works', () => {\n const obj = { a: { b: 'value' } }\n pm.expect(obj).to.not.have.nested.property('a.c')\n pm.expect(obj).to.not.have.nested.property('x.y.z')\n})\n\n// Test .by() chaining for change assertions\npm.test('pm.expect().to.change().by() validates exact delta', () => {\n const obj = { value: 10 }\n pm.expect(() => { obj.value = 25 }).to.change(obj, 'value').by(15)\n})\n\n// Test hopp namespace .by() chaining for parity\npm.test('hopp.expect().to.change().by() validates exact delta', () => {\n const obj = { val: 100 }\n hopp.expect(() => { obj.val = 150 }).to.change(obj, 'val').by(50)\n})\n\npm.test('pm.expect().to.increase().by() validates exact increase', () => {\n const obj = { count: 5 }\n pm.expect(() => { obj.count += 7 }).to.increase(obj, 'count').by(7)\n})\n\npm.test('pm.expect().to.decrease().by() validates exact decrease', () => {\n const obj = { score: 100 }\n pm.expect(() => { obj.score -= 30 }).to.decrease(obj, 'score').by(30)\n})\n\npm.test('pm.expect().to.change().by() with negative delta', () => {\n const obj = { value: 50 }\n pm.expect(() => { obj.value = 20 }).to.change(obj, 'value').by(-30)\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": "application/json",
+ "body": "{\"test\": \"data\"}"
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "advanced-chai-map-set-test",
+ "name": "advanced-chai-map-set-test",
+ "method": "GET",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};",
+ "testScript": "export {};\n\n// Map & Set Assertions\npm.test('Map assertions - size property', () => {\n const map = new Map([['key1', 'value1'], ['key2', 'value2']])\n pm.expect(map).to.have.property('size', 2)\n pm.expect(map.size).to.equal(2)\n})\n\npm.test('Set assertions - size property', () => {\n const set = new Set([1, 2, 3, 4])\n pm.expect(set).to.have.property('size', 4)\n pm.expect(set.size).to.equal(4)\n})\n\npm.test('Map instanceOf assertion', () => {\n const map = new Map()\n pm.expect(map).to.be.instanceOf(Map)\n pm.expect(map).to.be.an.instanceOf(Map)\n})\n\npm.test('Set instanceOf assertion', () => {\n const set = new Set()\n pm.expect(set).to.be.instanceOf(Set)\n pm.expect(set).to.be.an.instanceOf(Set)\n})\n\n// Advanced Chai - closeTo\npm.test('closeTo - validates numbers within delta', () => {\n pm.expect(3.14159).to.be.closeTo(3.14, 0.01)\n pm.expect(10.5).to.be.closeTo(11, 1)\n})\n\npm.test('closeTo - negation works', () => {\n pm.expect(100).to.not.be.closeTo(50, 10)\n pm.expect(3.14).to.not.be.closeTo(10, 0.1)\n})\n\npm.test('approximately - alias for closeTo', () => {\n pm.expect(2.5).to.approximately(2.4, 0.2)\n pm.expect(99.99).to.approximately(100, 0.1)\n})\n\n// Advanced Chai - finite\npm.test('finite - validates finite numbers', () => {\n pm.expect(123).to.be.finite\n pm.expect(0).to.be.finite\n pm.expect(-456).to.be.finite\n})\n\npm.test('finite - negation for Infinity', () => {\n pm.expect(Infinity).to.not.be.finite\n pm.expect(-Infinity).to.not.be.finite\n pm.expect(NaN).to.not.be.finite\n})\n\n// Advanced Chai - satisfy\npm.test('satisfy - custom predicate function', () => {\n pm.expect(10).to.satisfy((num) => num > 5)\n pm.expect('hello').to.satisfy((str) => str.length === 5)\n})\n\npm.test('satisfy - complex validation', () => {\n const obj = { name: 'test', value: 100 }\n pm.expect(obj).to.satisfy((o) => o.value > 50 && o.name.length > 0)\n})\n\npm.test('satisfy - negation works', () => {\n pm.expect(5).to.not.satisfy((num) => num > 10)\n pm.expect('abc').to.not.satisfy((str) => str.length > 5)\n})\n\n// Advanced Chai - respondTo\npm.test('respondTo - validates method existence', () => {\n class TestClass {\n testMethod() { return 'test' }\n anotherMethod() { return 'another' }\n }\n pm.expect(TestClass).to.respondTo('testMethod')\n pm.expect(TestClass).to.respondTo('anotherMethod')\n})\n\npm.test('respondTo - with itself for static methods', () => {\n class MyClass {\n static staticMethod() { return 'static' }\n instanceMethod() { return 'instance' }\n }\n pm.expect(MyClass).itself.to.respondTo('staticMethod')\n pm.expect(MyClass).to.not.itself.respondTo('instanceMethod')\n pm.expect(MyClass).to.respondTo('instanceMethod')\n})\n\n// Property Ownership - own.property\npm.test('own.property - distinguishes own vs inherited', () => {\n const parent = { inherited: true }\n const obj = Object.create(parent)\n obj.own = true\n pm.expect(obj).to.have.own.property('own')\n pm.expect(obj).to.not.have.own.property('inherited')\n pm.expect(obj).to.have.property('inherited')\n})\n\npm.test('deep.own.property - deep check with ownership', () => {\n const proto = { shared: 'inherited' }\n const obj = Object.create(proto)\n obj.data = { nested: 'value' }\n pm.expect(obj).to.have.deep.own.property('data', { nested: 'value' })\n pm.expect(obj).to.not.have.deep.own.property('shared')\n})\n\npm.test('ownProperty - alias for own.property', () => {\n const obj = { prop: 'value' }\n pm.expect(obj).to.have.ownProperty('prop')\n pm.expect(obj).to.have.ownProperty('prop', 'value')\n})\n\n// Hopp namespace parity tests\npm.test('hopp.expect Map/Set support', () => {\n const map = new Map([['x', 1]])\n const set = new Set([1, 2])\n hopp.expect(map.size).toBe(1)\n hopp.expect(set.size).toBe(2)\n})\n\npm.test('hopp.expect closeTo support', () => {\n hopp.expect(3.14).to.be.closeTo(3.1, 0.1)\n hopp.expect(10).to.be.closeTo(10.5, 1)\n})\n\npm.test('hopp.expect finite support', () => {\n hopp.expect(42).to.be.finite\n hopp.expect(Infinity).to.not.be.finite\n})\n\npm.test('hopp.expect satisfy support', () => {\n hopp.expect(100).to.satisfy((n) => n > 50)\n hopp.expect('test').to.satisfy((s) => s.length === 4)\n})\n\npm.test('hopp.expect respondTo support', () => {\n class TestClass { method() {} }\n hopp.expect(TestClass).to.respondTo('method')\n})\n\npm.test('hopp.expect own.property support', () => {\n const obj = Object.create({ inherited: 1 })\n obj.own = 2\n hopp.expect(obj).to.have.own.property('own')\n hopp.expect(obj).to.not.have.own.property('inherited')\n})\n\npm.test('hopp.expect ordered.members support', () => {\n const arr = ['a', 'b', 'c']\n hopp.expect(arr).to.have.ordered.members(['a', 'b', 'c'])\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": null,
+ "body": null
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "16",
+ "id": "cmfhzf0op00typecoer01",
+ "name": "type-preservation-test",
+ "method": "GET",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\n// For CLI E2E testing: We only set simple string values in pre-request\n// Complex types will be tested within the test script itself\n\npm.environment.set('string_value', 'hello')\n",
+ "testScript": "export {};\n\n// ========================================\n// TYPE PRESERVATION TESTS (CLI Compatible)\n// ========================================\n\n// IMPORTANT NOTE: Type preservation works perfectly WITHIN script execution scope\n// Values persisted across request boundaries (pre-request \u2192 test) may be serialized\n// This is expected CLI behavior for environment persistence/display\n\n// Test values set from pre-request\npm.test('string values work across scripts', () => {\n pm.expect(pm.environment.get('string_value')).to.equal('hello')\n})\n\n// ========================================\n// TYPE PRESERVATION WITHIN SINGLE SCRIPT\n// (This is where type preservation really shines!)\n// ========================================\n\npm.test('numbers are preserved as numbers (same script)', () => {\n pm.environment.set('num', 42)\n const value = pm.environment.get('num')\n pm.expect(value).to.equal(42)\n pm.expect(typeof value).to.equal('number')\n})\n\npm.test('booleans are preserved as booleans (same script)', () => {\n pm.environment.set('bool_true', true)\n pm.environment.set('bool_false', false)\n pm.expect(pm.environment.get('bool_true')).to.equal(true)\n pm.expect(pm.environment.get('bool_false')).to.equal(false)\n pm.expect(typeof pm.environment.get('bool_true')).to.equal('boolean')\n})\n\npm.test('null is preserved as actual null (same script)', () => {\n pm.environment.set('null_val', null)\n const value = pm.environment.get('null_val')\n pm.expect(value).to.equal(null)\n pm.expect(value === null).to.be.true\n pm.expect(typeof value).to.equal('object')\n})\n\npm.test('undefined is preserved as actual undefined (same script)', () => {\n pm.environment.set('undef_val', undefined)\n const value = pm.environment.get('undef_val')\n pm.expect(value).to.equal(undefined)\n pm.expect(typeof value).to.equal('undefined')\n pm.expect(pm.environment.has('undef_val')).to.be.true\n})\n\npm.test('arrays are preserved with direct access', () => {\n pm.environment.set('arr', [1, 2, 3])\n const value = pm.environment.get('arr')\n\n pm.expect(Array.isArray(value)).to.be.true\n pm.expect(value.length).to.equal(3)\n pm.expect(value[0]).to.equal(1)\n pm.expect(value[2]).to.equal(3)\n})\n\npm.test('single-element arrays remain arrays', () => {\n pm.environment.set('single', [42])\n const value = pm.environment.get('single')\n\n pm.expect(Array.isArray(value)).to.be.true\n pm.expect(value.length).to.equal(1)\n pm.expect(value[0]).to.equal(42)\n})\n\npm.test('empty arrays are preserved', () => {\n pm.environment.set('empty_arr', [])\n const value = pm.environment.get('empty_arr')\n\n pm.expect(Array.isArray(value)).to.be.true\n pm.expect(value.length).to.equal(0)\n})\n\npm.test('string arrays preserve all elements', () => {\n pm.environment.set('str_arr', ['a', 'b', 'c'])\n const value = pm.environment.get('str_arr')\n\n pm.expect(Array.isArray(value)).to.be.true\n pm.expect(value).to.deep.equal(['a', 'b', 'c'])\n})\n\npm.test('objects are preserved with accessible properties', () => {\n pm.environment.set('obj', { key: 'value', num: 123 })\n const value = pm.environment.get('obj')\n\n pm.expect(typeof value).to.equal('object')\n pm.expect(value.key).to.equal('value')\n pm.expect(value.num).to.equal(123)\n})\n\npm.test('empty objects are preserved', () => {\n pm.environment.set('empty_obj', {})\n const value = pm.environment.get('empty_obj')\n\n pm.expect(typeof value).to.equal('object')\n pm.expect(Object.keys(value).length).to.equal(0)\n})\n\npm.test('nested objects preserve structure', () => {\n pm.environment.set('nested', { user: { name: 'John', id: 1 }, meta: { active: true } })\n const value = pm.environment.get('nested')\n\n pm.expect(value.user.name).to.equal('John')\n pm.expect(value.user.id).to.equal(1)\n pm.expect(value.meta.active).to.equal(true)\n})\n\npm.test('complex nested structures work', () => {\n const data = {\n users: [\n { id: 1, name: 'Alice', scores: [90, 85, 88] },\n { id: 2, name: 'Bob', scores: [75, 80, 82] }\n ],\n metadata: { count: 2, page: 1, filters: ['active', 'verified'] }\n }\n\n pm.environment.set('complex', data)\n const retrieved = pm.environment.get('complex')\n\n pm.expect(retrieved.users).to.be.an('array')\n pm.expect(retrieved.users.length).to.equal(2)\n pm.expect(retrieved.users[0].name).to.equal('Alice')\n pm.expect(retrieved.users[0].scores[0]).to.equal(90)\n pm.expect(retrieved.metadata.filters).to.deep.equal(['active', 'verified'])\n})\n\n// ========================================\n// NAMESPACE SEPARATION\n// ========================================\n\npm.test('hopp.env.set rejects non-string values', () => {\n let errorCount = 0\n\n try { hopp.env.set('test', undefined) } catch (e) { errorCount++ }\n try { hopp.env.set('test', null) } catch (e) { errorCount++ }\n try { hopp.env.set('test', 42) } catch (e) { errorCount++ }\n try { hopp.env.set('test', true) } catch (e) { errorCount++ }\n try { hopp.env.set('test', [1, 2]) } catch (e) { errorCount++ }\n try { hopp.env.set('test', {}) } catch (e) { errorCount++ }\n\n pm.expect(errorCount).to.equal(6)\n})\n\npm.test('hopp.env.set only accepts strings', () => {\n hopp.env.set('hopp_str', 'valid')\n pm.expect(hopp.env.get('hopp_str')).to.equal('valid')\n})\n\npm.test('pm/hopp cross-namespace reading works', () => {\n pm.environment.set('cross_test', [1, 2, 3])\n\n // hopp can read PM-set values\n const fromHopp = hopp.env.get('cross_test')\n pm.expect(Array.isArray(fromHopp)).to.be.true\n pm.expect(fromHopp.length).to.equal(3)\n})\n\n// ========================================\n// PRACTICAL USE CASES\n// ========================================\n\npm.test('no JSON.parse needed for response data storage', () => {\n // Simulate storing parsed response data\n const responseData = {\n id: 123,\n name: 'Test User',\n permissions: ['read', 'write'],\n settings: { theme: 'dark', notifications: true }\n }\n\n pm.environment.set('user_data', responseData)\n const stored = pm.environment.get('user_data')\n\n // Direct access - no JSON.parse needed!\n pm.expect(stored.id).to.equal(123)\n pm.expect(stored.permissions).to.include('write')\n pm.expect(stored.settings.theme).to.equal('dark')\n})\n\npm.test('array iteration works directly', () => {\n pm.environment.set('items', ['apple', 'banana', 'cherry'])\n const items = pm.environment.get('items')\n\n let concatenated = ''\n items.forEach(item => {\n concatenated += item\n })\n\n pm.expect(concatenated).to.equal('applebananacherry')\n pm.expect(items.map(i => i.toUpperCase())).to.deep.equal(['APPLE', 'BANANA', 'CHERRY'])\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": null,
+ "body": null
+ },
+ "requestVariables": [],
+ "responses": {}
+ },
+ {
+ "v": "15",
+ "id": "type_preservation_ui_compat",
+ "name": "type-preservation-ui-compatibility-test",
+ "method": "POST",
+ "endpoint": "https://echo.hoppscotch.io",
+ "params": [],
+ "headers": [],
+ "preRequestScript": "export {};\n// Type preservation tests run in test script scope",
+ "testScript": "export {};\n\n// ====== Type Preservation & UI Compatibility Tests ======\n// NOTE: Testing in same script scope (CLI limitation: complex types\n// may not persist across pre-request \u2192 test boundary)\n\npm.test('PM namespace preserves array types (not String coercion)', () => {\n pm.environment.set('simpleArray', [1, 2, 3])\n const arr = pm.environment.get('simpleArray')\n\n // CRITICAL: Should be actual array, not string \"1,2,3\"\n pm.expect(Array.isArray(arr)).to.equal(true)\n pm.expect(arr).to.have.lengthOf(3)\n pm.expect(arr[0]).to.equal(1)\n pm.expect(arr[1]).to.equal(2)\n pm.expect(arr[2]).to.equal(3)\n})\n\npm.test('PM namespace preserves object types (not \"[object Object]\")', () => {\n pm.environment.set('simpleObject', { foo: 'bar', num: 42 })\n const obj = pm.environment.get('simpleObject')\n\n // CRITICAL: Should be actual object, not string \"[object Object]\"\n pm.expect(typeof obj).to.equal('object')\n pm.expect(obj).to.not.be.null\n pm.expect(obj.foo).to.equal('bar')\n pm.expect(obj.num).to.equal(42)\n})\n\npm.test('PM namespace preserves null correctly', () => {\n pm.environment.set('nullValue', null)\n const val = pm.environment.get('nullValue')\n\n pm.expect(val).to.be.null\n})\n\npm.test('PM namespace preserves undefined correctly', () => {\n pm.environment.set('undefinedValue', undefined)\n const val = pm.environment.get('undefinedValue')\n\n pm.expect(val).to.be.undefined\n})\n\npm.test('PM namespace preserves primitives correctly', () => {\n pm.environment.set('stringValue', 'hello')\n pm.environment.set('numberValue', 123)\n pm.environment.set('booleanValue', true)\n\n pm.expect(pm.environment.get('stringValue')).to.equal('hello')\n pm.expect(pm.environment.get('numberValue')).to.equal(123)\n pm.expect(pm.environment.get('booleanValue')).to.equal(true)\n})\n\npm.test('PM namespace preserves nested structures', () => {\n pm.environment.set('nestedStructure', {\n users: [\n { id: 1, name: 'Alice' },\n { id: 2, name: 'Bob' }\n ],\n meta: { count: 2, tags: ['active', 'verified'] }\n })\n const nested = pm.environment.get('nestedStructure')\n\n pm.expect(nested).to.be.an('object')\n pm.expect(nested.users).to.be.an('array')\n pm.expect(nested.users).to.have.lengthOf(2)\n pm.expect(nested.users[0].name).to.equal('Alice')\n pm.expect(nested.users[1].name).to.equal('Bob')\n pm.expect(nested.meta.count).to.equal(2)\n pm.expect(nested.meta.tags).to.have.members(['active', 'verified'])\n})\n\npm.test('PM namespace handles mixed arrays (regression test for UI crash)', () => {\n pm.environment.set('mixedArray', [\n 'string',\n 42,\n true,\n null,\n undefined,\n [1, 2],\n { key: 'value' }\n ])\n const mixed = pm.environment.get('mixedArray')\n\n // This is the exact case that caused the UI crash\n pm.expect(Array.isArray(mixed)).to.equal(true)\n pm.expect(mixed).to.have.lengthOf(7)\n pm.expect(mixed[0]).to.equal('string')\n pm.expect(mixed[1]).to.equal(42)\n pm.expect(mixed[2]).to.equal(true)\n pm.expect(mixed[3]).to.be.null\n // mixed[4] is undefined in array, becomes null during JSON serialization\n pm.expect(Array.isArray(mixed[5])).to.equal(true)\n pm.expect(mixed[5]).to.have.lengthOf(2)\n pm.expect(typeof mixed[6]).to.equal('object')\n pm.expect(mixed[6].key).to.equal('value')\n})\n\npm.test('PM globals preserve arrays and objects', () => {\n pm.globals.set('globalArray', [10, 20, 30])\n pm.globals.set('globalObject', { env: 'prod', port: 8080 })\n\n const globalArr = pm.globals.get('globalArray')\n const globalObj = pm.globals.get('globalObject')\n\n pm.expect(Array.isArray(globalArr)).to.equal(true)\n pm.expect(globalArr).to.deep.equal([10, 20, 30])\n\n pm.expect(typeof globalObj).to.equal('object')\n pm.expect(globalObj.env).to.equal('prod')\n pm.expect(globalObj.port).to.equal(8080)\n})\n\npm.test('PM variables preserve arrays and objects', () => {\n pm.variables.set('varArray', [5, 10, 15])\n pm.variables.set('varObject', { status: 'active', count: 100 })\n\n const varArr = pm.variables.get('varArray')\n const varObj = pm.variables.get('varObject')\n\n pm.expect(Array.isArray(varArr)).to.equal(true)\n pm.expect(varArr).to.deep.equal([5, 10, 15])\n\n pm.expect(typeof varObj).to.equal('object')\n pm.expect(varObj.status).to.equal('active')\n pm.expect(varObj.count).to.equal(100)\n})\n\npm.test('Type preservation works with Postman compatibility', () => {\n pm.environment.set('testArr', [1, 2, 3])\n pm.environment.set('testObj', { foo: 'bar', num: 42 })\n\n const arr = pm.environment.get('testArr')\n const obj = pm.environment.get('testObj')\n\n // Should work like Postman: runtime types preserved\n pm.expect(arr.length).to.equal(3)\n pm.expect(obj.foo).to.equal('bar')\n\n // Verify no String() coercion happened\n pm.expect(arr).to.not.equal('1,2,3')\n pm.expect(obj).to.not.equal('[object Object]')\n})\n\npm.test('Type preservation: UI compatibility regression test', () => {\n // This test validates the fix for the reported bug:\n // \"TypeError: a.match is not a function at details.vue:387:10\"\n\n pm.environment.set('mixedTest', [\n 'string', 42, true, null, undefined, [1, 2], { key: 'value' }\n ])\n\n const mixed = pm.environment.get('mixedTest')\n\n // Should NOT throw any errors\n let errorCount = 0\n try {\n // Access all elements\n mixed.forEach(item => {\n // Should work with all types\n const type = typeof item\n const validTypes = ['string', 'number', 'boolean', 'object']\n if (!validTypes.includes(type)) {\n errorCount++\n }\n })\n } catch (e) {\n errorCount++\n }\n\n pm.expect(errorCount).to.equal(0)\n})\n",
+ "auth": {
+ "authType": "inherit",
+ "authActive": true
+ },
+ "body": {
+ "contentType": "application/json",
+ "body": "{\n \"test\": \"type preservation validation\"\n}"
+ },
+ "requestVariables": [],
+ "responses": {}
}
],
"auth": {
@@ -252,4 +796,4 @@
},
"headers": [],
"variables": []
-}
+}
\ No newline at end of file
diff --git a/packages/hoppscotch-cli/src/utils/pre-request.ts b/packages/hoppscotch-cli/src/utils/pre-request.ts
index 40cbeb54123..fee73f469ab 100644
--- a/packages/hoppscotch-cli/src/utils/pre-request.ts
+++ b/packages/hoppscotch-cli/src/utils/pre-request.ts
@@ -8,6 +8,7 @@ import {
parseTemplateStringE,
generateJWTToken,
HoppCollectionVariable,
+ calculateHawkHeader
} from "@hoppscotch/data";
import { runPreRequestScript } from "@hoppscotch/js-sandbox/node";
import * as A from "fp-ts/Array";
@@ -34,8 +35,6 @@ import {
generateDigestAuthHeader,
} from "./auth/digest";
-import { calculateHawkHeader } from "@hoppscotch/data";
-
/**
* Runs pre-request-script runner over given request which extracts set ENVs and
* applies them on current request to generate updated request.
@@ -69,23 +68,36 @@ export const preRequestScriptRunner = (
const { selected, global } = updatedEnvs;
return {
- updatedEnvs: {
+ // Keep the original updatedEnvs with separate global and selected arrays
+ preRequestUpdatedEnvs: updatedEnvs,
+ // Create Environment format for getEffectiveRESTRequest
+ envForEffectiveRequest: {
name: "Env",
variables: [...(selected ?? []), ...(global ?? [])],
},
updatedRequest: updatedRequest ?? {},
};
}),
- TE.chainW(({ updatedEnvs, updatedRequest }) => {
+ TE.chainW(({ preRequestUpdatedEnvs, envForEffectiveRequest, updatedRequest }) => {
const finalRequest = { ...request, ...updatedRequest };
return TE.tryCatch(
- () =>
- getEffectiveRESTRequest(
+ async () => {
+ const result = await getEffectiveRESTRequest(
finalRequest,
- updatedEnvs,
+ envForEffectiveRequest,
collectionVariables
- ),
+ );
+ // Replace the updatedEnvs from getEffectiveRESTRequest with the one from pre-request script
+ // This preserves the global/selected separation
+ if (E.isRight(result)) {
+ return E.right({
+ ...result.right,
+ updatedEnvs: preRequestUpdatedEnvs,
+ });
+ }
+ return result;
+ },
(reason) => error({ code: "PRE_REQUEST_SCRIPT_ERROR", data: reason })
);
}),
diff --git a/packages/hoppscotch-common/locales/en.json b/packages/hoppscotch-common/locales/en.json
index a2e2323b629..bc8be5f83fb 100644
--- a/packages/hoppscotch-common/locales/en.json
+++ b/packages/hoppscotch-common/locales/en.json
@@ -367,7 +367,8 @@
"request_change": "Are you sure you want to discard current request, unsaved changes will be lost.",
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Would you like to restore your workspace from cloud? This will discard your local progress.",
- "delete_access_token": "Are you sure you want to delete the access token {tokenLabel}?"
+ "delete_access_token": "Are you sure you want to delete the access token {tokenLabel}?",
+ "delete_mock_server": "Are you sure you want to delete this mock server?"
},
"context_menu": {
"add_parameters": "Add to parameters",
@@ -439,7 +440,8 @@
"teams": "You don't belong to any workspaces",
"tests": "There are no tests for this request",
"access_tokens": "Access tokens are empty",
- "response": "No response received"
+ "response": "No response received",
+ "mock_servers": "No mock servers found"
},
"environment": {
"heading": "Environment",
@@ -686,6 +688,8 @@
"from_postman": "Import from Postman",
"from_postman_description": "Import from Postman collection",
"from_postman_import_summary": "Collections, Requests and response examples will be imported.",
+ "import_scripts": "Import scripts",
+ "import_scripts_description": "Supports Postman Collection v2.0/v2.1.",
"from_url": "Import from URL",
"gist_url": "Enter Gist URL",
"from_har": "Import from HAR",
@@ -712,6 +716,9 @@
"import_summary_pre_request_scripts_title": "Pre-request scripts",
"import_summary_post_request_scripts_title": "Post request scripts",
"import_summary_not_supported_by_hoppscotch_import": "We do not support importing {featureLabel} from this source right now.",
+ "import_summary_script_found": "script found but not imported",
+ "import_summary_scripts_found": "scripts found but not imported",
+ "import_summary_enable_experimental_sandbox": "To import Postman scripts, enable 'Experimental scripting sandbox' in settings. Note: This feature is experimental.",
"cors_error_modal": {
"title": "CORS Error Detected",
"description": "The import failed due to CORS (Cross-Origin Resource Sharing) restrictions imposed by the server.",
@@ -842,10 +849,59 @@
"profile": "Profile",
"realtime": "Realtime",
"rest": "REST",
+ "mock_servers": "Mock Servers",
"settings": "Settings",
"goto_app": "Goto App",
"authentication": "Authentication"
},
+ "mock_server": {
+ "confirm_delete_log": "Are you sure you want to delete this log?",
+ "create_mock_server": "Configure Mock Server",
+ "mock_server_configuration": "Mock Server Configuration",
+ "mock_server_name": "Mock Server Name",
+ "mock_server_name_placeholder": "Enter mock server name",
+ "base_url": "Base URL",
+ "start_server": "Start Server",
+ "stop_server": "Stop Server",
+ "mock_server_created": "Mock server created successfully",
+ "mock_server_started": "Mock server started successfully",
+ "mock_server_stopped": "Mock server stopped successfully",
+ "active": "Mock server is active",
+ "inactive": "Mock server is inactive",
+ "edit_mock_server": "Edit Mock Server",
+ "path_based_url": "Path based URL",
+ "subdomain_based_url": "Subdomain based URL",
+ "mock_server_updated": "Mock server updated successfully",
+ "no_collection": "No collection",
+ "collection_deleted": "associated collection deleted.",
+ "private_access_hint": "For private mock servers, include the header 'x-api-key' with your Personal Access Token (create one from your profile).",
+ "status": "Status",
+ "server_running": "Server is running",
+ "server_stopped": "Server is stopped",
+ "delay_ms": "Response Delay (ms)",
+ "delay_placeholder": "Enter delay in milliseconds",
+ "delay_description": "Add artificial delay to mock responses",
+ "public_access": "Public Access",
+ "public": "Public",
+ "private": "Private",
+ "public_description": "Anyone with the URL can access this mock server",
+ "private_description": "Only authenticated users can access this mock server",
+ "select_collection": "Select a collection",
+ "select_collection_error": "Please select a collection",
+ "invalid_collection_error": "Failed to create a mock server for the collection.",
+ "url_copied": "URL copied to clipboard",
+ "make_public": "Make Public",
+ "view_logs": "View logs",
+ "logs_title": "Mock Server Logs",
+ "no_logs": "No logs available",
+ "request_headers": "Request Headers",
+ "request_body": "Request Body",
+ "response_status": "Response Status",
+ "response_headers": "Response Headers",
+ "response_body": "Response Body",
+ "log_deleted": "Log deleted successfully",
+ "description": "Mock servers allow you to simulate API responses based on your collection's example responses."
+ },
"preRequest": {
"javascript_code": "JavaScript Code",
"learn": "Read documentation",
@@ -1027,6 +1083,7 @@
"ai_request_naming_style_custom": "Custom",
"ai_request_naming_style_custom_placeholder": "Enter your custom naming style template...",
"experimental_scripting_sandbox": "Experimental scripting sandbox",
+ "enable_experimental_mock_servers": "Enable Mock Servers",
"sync": "Synchronise",
"sync_collections": "Collections",
"sync_description": "These settings are synced to cloud.",
@@ -1045,6 +1102,7 @@
"validate_certificates": "Validate SSL/TLS Certificates",
"verify_host": "Verify Host",
"verify_peer": "Verify Peer",
+ "follow_redirects": "Follow Redirects",
"client_certificates": "Client Certificates",
"certificate_settings": "Certificate Settings",
"certificate": "Certificate",
@@ -1313,6 +1371,7 @@
"download_failed": "Download failed",
"download_started": "Download started",
"enabled": "Enabled",
+ "experimental": "Experimental",
"file_imported": "File imported",
"finished_in": "Finished in {duration} ms",
"hide": "Hide",
@@ -1321,6 +1380,7 @@
"loading": "Loading...",
"message_received": "Message: {message} arrived on topic: {topic}",
"mqtt_subscription_failed": "Something went wrong while subscribing to topic: {topic}",
+ "no_content_found": "No content found",
"none": "None",
"nothing_found": "Nothing found for",
"published_error": "Something went wrong while publishing msg: {topic} to topic: {message}",
@@ -1474,6 +1534,7 @@
"shared_requests": "Shared Requests",
"codegen": "Generate Code",
"code_snippet": "Code snippet",
+ "mock_servers": "Mock Servers",
"share_tab_request": "Share tab request",
"socketio": "Socket.IO",
"sse": "SSE",
@@ -1940,5 +2001,63 @@
"app_console": {
"entries": "Console entries",
"no_entries": "No entries"
+ },
+ "mockServer": {
+ "create_modal": {
+ "title": "Create Mock Server",
+ "name_label": "Mock Server Name",
+ "name_placeholder": "Enter mock server name",
+ "name_required": "Mock server name is required",
+ "collection_source_label": "Collection Source",
+ "existing_collection": "Existing Collection",
+ "new_collection": "New Collection",
+ "select_collection_label": "Select Collection",
+ "select_collection_placeholder": "Choose a collection",
+ "collection_required": "Please select a collection",
+ "collection_name_label": "Collection Name",
+ "collection_name_placeholder": "Enter collection name",
+ "collection_name_required": "Collection name is required",
+ "request_config_label": "Request Configuration",
+ "add_request": "Add Request",
+ "create_button": "Create Mock Server",
+ "success": "Mock server created successfully",
+ "error": "Failed to create mock server",
+ "no_collections": "No collections available"
+ },
+ "edit_modal": {
+ "title": "Edit Mock Server",
+ "name_label": "Mock Server Name",
+ "name_placeholder": "Enter mock server name",
+ "name_required": "Mock server name is required",
+ "active_label": "Active",
+ "url_label": "Mock Server URL",
+ "collection_label": "Collection",
+ "update_button": "Update Mock Server",
+ "success": "Mock server updated successfully",
+ "error": "Failed to update mock server",
+ "url_copied": "URL copied to clipboard"
+ },
+ "dashboard": {
+ "title": "Mock Servers",
+ "subtitle": "Create and manage your API mock servers",
+ "create_button": "Create Mock Server",
+ "create_first": "Create your first mock server",
+ "empty_title": "No mock servers found",
+ "empty_description": "Create mock servers based on your API collections to enable frontend and mobile development without backend dependencies.",
+ "collection": "Collection",
+ "active": "Active",
+ "inactive": "Inactive",
+ "mock_url": "Mock URL",
+ "endpoints": "Endpoints",
+ "created": "Created",
+ "view_collection": "View Collection",
+ "documentation": "Documentation",
+ "doc_description": "Use this URL as your API base URL in your applications:",
+ "url_copied": "Mock server URL copied to clipboard",
+ "delete_title": "Delete Mock Server",
+ "delete_description": "Are you sure you want to delete this mock server?",
+ "delete_success": "Mock server deleted successfully",
+ "delete_error": "Failed to delete mock server"
+ }
}
}
diff --git a/packages/hoppscotch-common/package.json b/packages/hoppscotch-common/package.json
index 789557c8664..e448fd886b8 100644
--- a/packages/hoppscotch-common/package.json
+++ b/packages/hoppscotch-common/package.json
@@ -1,7 +1,7 @@
{
"name": "@hoppscotch/common",
"private": true,
- "version": "2025.9.2",
+ "version": "2025.10.0",
"scripts": {
"dev": "pnpm exec npm-run-all -p -l dev:*",
"test": "vitest --run",
@@ -21,7 +21,7 @@
"do-lintfix": "pnpm run lintfix"
},
"dependencies": {
- "@apidevtools/swagger-parser": "12.0.0",
+ "@apidevtools/swagger-parser": "12.1.0",
"@codemirror/autocomplete": "6.18.6",
"@codemirror/commands": "6.8.1",
"@codemirror/lang-javascript": "6.2.4",
@@ -34,7 +34,7 @@
"@codemirror/search": "6.5.11",
"@codemirror/state": "6.5.2",
"@codemirror/view": "6.38.1",
- "@guolao/vue-monaco-editor": "1.5.5",
+ "@guolao/vue-monaco-editor": "1.6.0",
"@hoppscotch/codemirror-lang-graphql": "workspace:^",
"@hoppscotch/data": "workspace:^",
"@hoppscotch/httpsnippet": "3.0.9",
@@ -51,7 +51,7 @@
"@tauri-apps/plugin-store": "2.2.0",
"@types/hawk": "9.0.6",
"@types/markdown-it": "14.1.2",
- "@unhead/vue": "2.0.17",
+ "@unhead/vue": "2.0.19",
"@urql/core": "6.0.1",
"@urql/devtools": "2.0.3",
"@urql/exchange-auth": "3.0.0",
@@ -77,7 +77,7 @@
"jsonc-parser": "3.3.1",
"jsonpath-plus": "10.3.0",
"lodash-es": "4.17.21",
- "lossless-json": "4.2.0",
+ "lossless-json": "4.3.0",
"markdown-it": "14.1.0",
"minisearch": "7.2.0",
"monaco-editor": "0.52.2",
@@ -98,7 +98,7 @@
"splitpanes": "3.1.5",
"stream-browserify": "3.0.0",
"subscriptions-transport-ws": "0.11.0",
- "superjson": "2.2.2",
+ "superjson": "2.2.3",
"tern": "0.24.3",
"timers": "0.1.1",
"tippy.js": "6.3.7",
@@ -110,7 +110,7 @@
"vue-i18n": "11.1.12",
"vue-json-pretty": "2.5.0",
"vue-pdf-embed": "2.1.3",
- "vue-router": "4.5.1",
+ "vue-router": "4.6.3",
"vue-tippy": "6.7.1",
"vuedraggable-es": "4.1.1",
"wonka": "6.3.5",
@@ -133,7 +133,7 @@
"@iconify-json/lucide": "1.2.68",
"@intlify/unplugin-vue-i18n": "6.0.8",
"@relmify/jest-fp-ts": "2.1.1",
- "@rushstack/eslint-patch": "1.12.0",
+ "@rushstack/eslint-patch": "1.14.0",
"@types/har-format": "1.2.16",
"@types/js-yaml": "4.0.9",
"@types/lodash-es": "4.17.12",
@@ -144,18 +144,18 @@
"@types/splitpanes": "2.2.6",
"@types/uuid": "10.0.0",
"@types/yargs-parser": "21.0.3",
- "@typescript-eslint/eslint-plugin": "8.44.1",
- "@typescript-eslint/parser": "8.44.1",
+ "@typescript-eslint/eslint-plugin": "8.46.2",
+ "@typescript-eslint/parser": "8.46.2",
"@vitejs/plugin-vue": "5.1.4",
"@vue/compiler-sfc": "3.5.22",
"@vue/eslint-config-typescript": "13.0.0",
"@vue/runtime-core": "3.5.22",
"autoprefixer": "10.4.21",
- "cross-env": "10.0.0",
- "dotenv": "17.2.2",
+ "cross-env": "10.1.0",
+ "dotenv": "17.2.3",
"eslint": "8.57.0",
"eslint-plugin-prettier": "5.5.4",
- "eslint-plugin-vue": "10.5.0",
+ "eslint-plugin-vue": "10.5.1",
"glob": "11.0.3",
"jsdom": "26.1.0",
"npm-run-all": "4.1.5",
@@ -166,7 +166,7 @@
"rollup-plugin-polyfill-node": "0.13.0",
"sass": "1.93.2",
"tailwindcss": "3.4.16",
- "typescript": "5.9.2",
+ "typescript": "5.9.3",
"unplugin-fonts": "1.4.0",
"unplugin-icons": "22.2.0",
"unplugin-vue-components": "29.0.0",
@@ -176,7 +176,7 @@
"vite-plugin-html-config": "2.0.2",
"vite-plugin-pages": "0.33.1",
"vite-plugin-pages-sitemap": "1.7.1",
- "vite-plugin-pwa": "1.0.3",
+ "vite-plugin-pwa": "1.1.0",
"vite-plugin-vue-layouts": "0.11.0",
"vitest": "3.2.4",
"vue-tsc": "1.8.8"
diff --git a/packages/hoppscotch-common/src/components.d.ts b/packages/hoppscotch-common/src/components.d.ts
index 7aa8594167a..5e2b21ea693 100644
--- a/packages/hoppscotch-common/src/components.d.ts
+++ b/packages/hoppscotch-common/src/components.d.ts
@@ -143,6 +143,8 @@ declare module 'vue' {
HoppSmartProgressRing: typeof import('@hoppscotch/ui')['HoppSmartProgressRing']
HoppSmartRadio: typeof import('@hoppscotch/ui')['HoppSmartRadio']
HoppSmartRadioGroup: typeof import('@hoppscotch/ui')['HoppSmartRadioGroup']
+ HoppSmartSelect: typeof import('@hoppscotch/ui')['HoppSmartSelect']
+ HoppSmartSelectOption: typeof import('@hoppscotch/ui')['HoppSmartSelectOption']
HoppSmartSelectWrapper: typeof import('@hoppscotch/ui')['HoppSmartSelectWrapper']
HoppSmartSlideOver: typeof import('@hoppscotch/ui')['HoppSmartSlideOver']
HoppSmartSpinner: typeof import('@hoppscotch/ui')['HoppSmartSpinner']
@@ -212,9 +214,11 @@ declare module 'vue' {
IconLucideArrowLeft: typeof import('~icons/lucide/arrow-left')['default']
IconLucideArrowUpRight: typeof import('~icons/lucide/arrow-up-right')['default']
IconLucideBrush: typeof import('~icons/lucide/brush')['default']
+ IconLucideCheck: typeof import('~icons/lucide/check')['default']
IconLucideCheckCircle: typeof import('~icons/lucide/check-circle')['default']
IconLucideChevronRight: typeof import('~icons/lucide/chevron-right')['default']
IconLucideCircleCheck: typeof import('~icons/lucide/circle-check')['default']
+ IconLucideCopy: typeof import('~icons/lucide/copy')['default']
IconLucideGlobe: typeof import('~icons/lucide/globe')['default']
IconLucideHelpCircle: typeof import('~icons/lucide/help-circle')['default']
IconLucideInbox: typeof import('~icons/lucide/inbox')['default']
@@ -256,6 +260,11 @@ declare module 'vue' {
LensesRenderersVideoLensRenderer: typeof import('./components/lenses/renderers/VideoLensRenderer.vue')['default']
LensesRenderersXMLLensRenderer: typeof import('./components/lenses/renderers/XMLLensRenderer.vue')['default']
LensesResponseBodyRenderer: typeof import('./components/lenses/ResponseBodyRenderer.vue')['default']
+ MockServerCreateMockServer: typeof import('./components/mockServer/CreateMockServer.vue')['default']
+ MockServerEditMockServer: typeof import('./components/mockServer/EditMockServer.vue')['default']
+ MockServerLogSection: typeof import('./components/mockServer/LogSection.vue')['default']
+ MockServerMockServerDashboard: typeof import('./components/mockServer/MockServerDashboard.vue')['default']
+ MockServerMockServerLogs: typeof import('./components/mockServer/MockServerLogs.vue')['default']
MonacoScriptEditor: typeof import('./components/MonacoScriptEditor.vue')['default']
ProfileUserDelete: typeof import('./components/profile/UserDelete.vue')['default']
RealtimeCommunication: typeof import('./components/realtime/Communication.vue')['default']
diff --git a/packages/hoppscotch-common/src/components/app/Header.vue b/packages/hoppscotch-common/src/components/app/Header.vue
index 7c7668293fc..11ac0b699ae 100644
--- a/packages/hoppscotch-common/src/components/app/Header.vue
+++ b/packages/hoppscotch-common/src/components/app/Header.vue
@@ -203,7 +203,7 @@
class="!focus-visible:text-blue-600 !hover:text-blue-600 h-8 rounded border border-blue-600/25 bg-blue-500/10 pr-8 !text-blue-500 hover:border-blue-600/20 hover:bg-blue-600/20 focus-visible:border-blue-600/20 focus-visible:bg-blue-600/20"
/>
-
+
-
+
diff --git a/packages/hoppscotch-common/src/components/app/Share.vue b/packages/hoppscotch-common/src/components/app/Share.vue
index a0143783b87..838ae236146 100644
--- a/packages/hoppscotch-common/src/components/app/Share.vue
+++ b/packages/hoppscotch-common/src/components/app/Share.vue
@@ -84,7 +84,7 @@ const platforms = [
{
name: "Twitter",
icon: IconTwitter,
- link: `https://twitter.com/intent/tweet?text=${text} ${description}&url=${url}&via=${twitter}`,
+ link: `https://x.com/intent/tweet?text=${text} ${description}&url=${url}&via=${twitter}`,
},
{
name: "Facebook",
diff --git a/packages/hoppscotch-common/src/components/collections/Collection.vue b/packages/hoppscotch-common/src/components/collections/Collection.vue
index 8a7364d66b7..f3ff9f4fa99 100644
--- a/packages/hoppscotch-common/src/components/collections/Collection.vue
+++ b/packages/hoppscotch-common/src/components/collections/Collection.vue
@@ -56,6 +56,26 @@
{{ collectionName }}
+
+
+
+
+ {
+ handleMockServerAction()
+ hide()
+ }
+ "
+ />
(null)
const duplicateAction = ref(null)
const deleteAction = ref(null)
const exportAction = ref(null)
+const mockServerAction = ref(null)
const options = ref(null)
const propertiesAction = ref(null)
const runCollectionAction = ref(null)
@@ -415,6 +462,29 @@ const isCollectionLoading = computed(() => {
return props.teamLoadingCollections!.includes(props.id)
})
+// Mock Server Status
+const { isMockServerVisible } = useMockServerVisibility()
+const { getMockServerStatus } = useMockServerStatus()
+
+const mockServerStatus = computed(() => {
+ if (!isMockServerVisible.value) {
+ return { exists: false, isActive: false }
+ }
+
+ const collectionId =
+ props.collectionsType === "my-collections"
+ ? ((props.data as HoppCollection).id ??
+ (props.data as HoppCollection)._ref_id)
+ : (props.data as TeamCollection).id
+
+ return getMockServerStatus(collectionId || "")
+})
+
+// Determine if this is a root collection (not a child folder)
+const isRootCollection = computed(() => {
+ return props.folderType === "collection"
+})
+
// Used to determine if the collection is being dragged to a different destination
// This is used to make the highlight effect work
watch(
@@ -580,6 +650,19 @@ const sortCollection = () => {
})
}
+const handleMockServerAction = () => {
+ const currentUser = platform.auth.getCurrentUser()
+
+ if (!currentUser) {
+ // Show login modal if user is not authenticated
+ invokeAction("modals.login.toggle")
+ return
+ }
+
+ // User is authenticated, proceed with mock server creation
+ emit("create-mock-server")
+}
+
const resetDragState = () => {
dragging.value = false
ordering.value = false
diff --git a/packages/hoppscotch-common/src/components/collections/ImportExport.vue b/packages/hoppscotch-common/src/components/collections/ImportExport.vue
index 5fda86743b9..d1ac2acef07 100644
--- a/packages/hoppscotch-common/src/components/collections/ImportExport.vue
+++ b/packages/hoppscotch-common/src/components/collections/ImportExport.vue
@@ -33,7 +33,11 @@ import { defineStep } from "~/composables/step-components"
import AllCollectionImport from "~/components/importExport/ImportExportSteps/AllCollectionImport.vue"
import { useI18n } from "~/composables/i18n"
import { useToast } from "~/composables/toast"
-import { appendRESTCollections, restCollections$ } from "~/newstore/collections"
+import {
+ appendRESTCollections,
+ restCollections$,
+ setRESTCollections,
+} from "~/newstore/collections"
import IconInsomnia from "~icons/hopp/insomnia"
import IconPostman from "~icons/hopp/postman"
@@ -46,6 +50,11 @@ import { useReadonlyStream } from "~/composables/stream"
import IconUser from "~icons/lucide/user"
import { getTeamCollectionJSON } from "~/helpers/backend/helpers"
+import {
+ importUserCollectionsFromJSON,
+ fetchAndConvertUserCollections,
+} from "~/helpers/backend/mutations/UserCollection"
+import { ReqType } from "~/helpers/backend/graphql"
import { platform } from "~/platform"
@@ -59,7 +68,6 @@ import { GistSource } from "~/helpers/import-export/import/import-sources/GistSo
import { TeamWorkspace } from "~/services/workspace.service"
import { invokeAction } from "~/helpers/actions"
-const isPostmanImporterInProgress = ref(false)
const isInsomniaImporterInProgress = ref(false)
const isOpenAPIImporterInProgress = ref(false)
const isRESTImporterInProgress = ref(false)
@@ -102,7 +110,7 @@ const showImportFailedError = () => {
const handleImportToStore = async (collections: HoppCollection[]) => {
const importResult =
props.collectionsType.type === "my-collections"
- ? importToPersonalWorkspace(collections)
+ ? await importToPersonalWorkspace(collections)
: await importToTeamsWorkspace(collections)
if (E.isRight(importResult)) {
@@ -112,11 +120,46 @@ const handleImportToStore = async (collections: HoppCollection[]) => {
}
}
-const importToPersonalWorkspace = (collections: HoppCollection[]) => {
- appendRESTCollections(collections)
- return E.right({
- success: true,
- })
+const importToPersonalWorkspace = async (collections: HoppCollection[]) => {
+ // If user is logged in, try to import to backend first
+ if (currentUser.value) {
+ try {
+ const transformedCollection = collections.map((collection) =>
+ translateToPersonalCollectionFormat(collection)
+ )
+
+ const res = await importUserCollectionsFromJSON(
+ JSON.stringify(transformedCollection),
+ ReqType.Rest
+ )()
+
+ if (E.isRight(res)) {
+ // Backend import succeeded, now fetch and persist collections in store
+ const fetchResult = await fetchAndConvertUserCollections(ReqType.Rest)
+
+ if (E.isRight(fetchResult)) {
+ // Replace local collections with backend collections
+ setRESTCollections(fetchResult.right)
+ } else {
+ // Failed to fetch, append to local store as fallback
+ appendRESTCollections(collections)
+ }
+
+ return E.right({ success: true })
+ }
+ // Backend import failed, fall back to local storage
+ appendRESTCollections(collections)
+ return E.right({ success: true })
+ } catch {
+ // Backend import failed, fall back to local storage
+ appendRESTCollections(collections)
+ return E.right({ success: true })
+ }
+ } else {
+ // User not logged in, use local storage
+ appendRESTCollections(collections)
+ return E.right({ success: true })
+ }
}
function translateToTeamCollectionFormat(x: HoppCollection) {
@@ -141,6 +184,28 @@ function translateToTeamCollectionFormat(x: HoppCollection) {
return obj
}
+function translateToPersonalCollectionFormat(x: HoppCollection) {
+ const folders: HoppCollection[] = (x.folders ?? []).map(
+ translateToPersonalCollectionFormat
+ )
+
+ const data = {
+ auth: x.auth,
+ headers: x.headers,
+ variables: x.variables,
+ }
+
+ const obj = {
+ ...x,
+ folders,
+ data,
+ }
+
+ if (x.id) obj.id = x.id
+
+ return obj
+}
+
const importToTeamsWorkspace = async (collections: HoppCollection[]) => {
if (!hasTeamWriteAccess.value || !selectedTeamID.value) {
return E.left({
@@ -171,6 +236,7 @@ const emit = defineEmits<{
const isHoppMyCollectionExporterInProgress = ref(false)
const isHoppTeamCollectionExporterInProgress = ref(false)
const isHoppGistCollectionExporterInProgress = ref(false)
+const isPostmanImporterInProgress = ref(false)
const isTeamWorkspace = computed(() => {
return props.collectionsType.type === "team-collections"
@@ -179,19 +245,83 @@ const isTeamWorkspace = computed(() => {
const currentImportSummary: Ref<{
showImportSummary: boolean
importedCollections: HoppCollection[] | null
+ scriptsImported?: boolean
+ originalScriptCounts?: { preRequest: number; test: number }
}> = ref({
showImportSummary: false,
importedCollections: null,
+ scriptsImported: false,
+ originalScriptCounts: undefined,
})
-const setCurrentImportSummary = (collections: HoppCollection[]) => {
+const setCurrentImportSummary = (
+ collections: HoppCollection[],
+ scriptsImported?: boolean,
+ originalScriptCounts?: { preRequest: number; test: number }
+) => {
currentImportSummary.value.importedCollections = collections
currentImportSummary.value.showImportSummary = true
+ currentImportSummary.value.scriptsImported = scriptsImported
+ currentImportSummary.value.originalScriptCounts = originalScriptCounts
}
const unsetCurrentImportSummary = () => {
currentImportSummary.value.importedCollections = null
currentImportSummary.value.showImportSummary = false
+ currentImportSummary.value.scriptsImported = false
+ currentImportSummary.value.originalScriptCounts = undefined
+}
+
+// Count scripts in raw Postman collection JSON (before import strips them)
+const countPostmanScripts = (
+ content: string[]
+): { preRequest: number; test: number } => {
+ let preRequestCount = 0
+ let testCount = 0
+
+ const countInItem = (item: any) => {
+ // Only count if this is a request (has request object), not a folder
+ const isRequest = item?.request !== undefined
+
+ if (isRequest && item?.event) {
+ const prerequest = item.event.find((e: any) => e.listen === "prerequest")
+ const test = item.event.find((e: any) => e.listen === "test")
+
+ if (
+ prerequest?.script?.exec &&
+ Array.isArray(prerequest.script.exec) &&
+ prerequest.script.exec.some((line: string) => line?.trim())
+ ) {
+ preRequestCount++
+ }
+
+ if (
+ test?.script?.exec &&
+ Array.isArray(test.script.exec) &&
+ test.script.exec.some((line: string) => line?.trim())
+ ) {
+ testCount++
+ }
+ }
+
+ // Recursively count in nested items (folders)
+ if (item?.item && Array.isArray(item.item)) {
+ item.item.forEach(countInItem)
+ }
+ }
+
+ content.forEach((fileContent) => {
+ try {
+ const collection = JSON.parse(fileContent)
+ if (collection?.item && Array.isArray(collection.item)) {
+ collection.item.forEach(countInItem)
+ }
+ } catch (e) {
+ // Invalid JSON, skip
+ }
+ })
+
+ return { preRequest: preRequestCount, test: testCount }
}
const HoppRESTImporter: ImporterOrExporter = {
@@ -379,15 +509,20 @@ const HoppPostmanImporter: ImporterOrExporter = {
caption: "import.from_file",
acceptedFileTypes: ".json",
description: "import.from_postman_import_summary",
- onImportFromFile: async (content) => {
+ showPostmanScriptOption: true,
+ onImportFromFile: async (content: string[], importScripts?: boolean) => {
isPostmanImporterInProgress.value = true
- const res = await hoppPostmanImporter(content)()
+ // Count scripts from raw Postman JSON before importing
+ const originalCounts =
+ importScripts === undefined ? countPostmanScripts(content) : undefined
+
+ const res = await hoppPostmanImporter(content, importScripts ?? false)()
if (E.isRight(res)) {
await handleImportToStore(res.right)
- setCurrentImportSummary(res.right)
+ setCurrentImportSummary(res.right, importScripts, originalCounts)
platform.analytics?.logEvent({
platform: "rest",
diff --git a/packages/hoppscotch-common/src/components/collections/MyCollections.vue b/packages/hoppscotch-common/src/components/collections/MyCollections.vue
index 7d088129dcf..2e9ba0427e4 100644
--- a/packages/hoppscotch-common/src/components/collections/MyCollections.vue
+++ b/packages/hoppscotch-common/src/components/collections/MyCollections.vue
@@ -99,6 +99,13 @@
collection: node.data.data.data,
})
"
+ @create-mock-server="
+ node.data.type === 'collections' &&
+ emit('create-mock-server', {
+ collectionIndex: node.id,
+ collection: node.data.data.data,
+ })
+ "
@export-data="
node.data.type === 'collections' &&
emit('export-data', node.data.data.data)
@@ -647,6 +654,13 @@ const emit = defineEmits<{
(event: "select", payload: Picked | null): void
(event: "display-modal-import-export"): void
(event: "select-response", payload: ResponsePayload): void
+ (
+ event: "create-mock-server",
+ payload: {
+ collectionIndex: string
+ collection: HoppCollection
+ }
+ ): void
}>()
const refFilterCollection = toRef(props, "filteredCollections")
diff --git a/packages/hoppscotch-common/src/components/collections/SaveRequest.vue b/packages/hoppscotch-common/src/components/collections/SaveRequest.vue
index 79a5af0a211..8931046e455 100644
--- a/packages/hoppscotch-common/src/components/collections/SaveRequest.vue
+++ b/packages/hoppscotch-common/src/components/collections/SaveRequest.vue
@@ -154,6 +154,7 @@ import { TeamWorkspace } from "~/services/workspace.service"
import IconSparkle from "~icons/lucide/sparkles"
import IconThumbsDown from "~icons/lucide/thumbs-down"
import IconThumbsUp from "~icons/lucide/thumbs-up"
+import { handleTokenValidation } from "~/helpers/handleTokenValidation"
const t = useI18n()
const toast = useToast()
@@ -312,6 +313,9 @@ const onSelect = (pickedVal: Picked | null) => {
}
const saveRequestAs = async () => {
+ const isValidToken = await handleTokenValidation()
+ if (!isValidToken) return
+
if (!requestName.value) {
toast.error(`${t("error.empty_req_name")}`)
return
diff --git a/packages/hoppscotch-common/src/components/collections/TeamCollections.vue b/packages/hoppscotch-common/src/components/collections/TeamCollections.vue
index afa57e93680..e7ba5712272 100644
--- a/packages/hoppscotch-common/src/components/collections/TeamCollections.vue
+++ b/packages/hoppscotch-common/src/components/collections/TeamCollections.vue
@@ -118,6 +118,13 @@
collection: node.data.data.data,
})
"
+ @create-mock-server="
+ node.data.type === 'collections' &&
+ emit('create-mock-server', {
+ collectionID: node.data.data.data.id,
+ collection: node.data.data.data,
+ })
+ "
@export-data="
node.data.type === 'collections' &&
emit('export-data', node.data.data.data)
@@ -716,6 +723,13 @@ const emit = defineEmits<{
event: "run-collection",
payload: { collectionID: string; path: string }
): void
+ (
+ event: "create-mock-server",
+ payload: {
+ collectionID: string
+ collection: TeamCollection
+ }
+ ): void
}>()
const currentSortValuesService = useService(CurrentSortValuesService)
diff --git a/packages/hoppscotch-common/src/components/collections/graphql/ImportExport.vue b/packages/hoppscotch-common/src/components/collections/graphql/ImportExport.vue
index 94d13ba75f5..b0e63b870ab 100644
--- a/packages/hoppscotch-common/src/components/collections/graphql/ImportExport.vue
+++ b/packages/hoppscotch-common/src/components/collections/graphql/ImportExport.vue
@@ -18,6 +18,11 @@ import { useToast } from "~/composables/toast"
import { ImporterOrExporter } from "~/components/importExport/types"
import { FileSource } from "~/helpers/import-export/import/import-sources/FileSource"
import { GistSource } from "~/helpers/import-export/import/import-sources/GistSource"
+import {
+ importUserCollectionsFromJSON,
+ fetchAndConvertUserCollections,
+} from "~/helpers/backend/mutations/UserCollection"
+import { ReqType } from "~/helpers/backend/graphql"
import IconFolderPlus from "~icons/lucide/folder-plus"
import IconUser from "~icons/lucide/user"
@@ -28,6 +33,7 @@ import { platform } from "~/platform"
import {
appendGraphqlCollections,
graphqlCollections$,
+ setGraphqlCollections,
} from "~/newstore/collections"
import { hoppGqlCollectionsImporter } from "~/helpers/import-export/import/hoppGql"
import { gqlCollectionsExporter } from "~/helpers/import-export/export/gqlCollections"
@@ -71,7 +77,7 @@ const GqlCollectionsHoppImporter: ImporterOrExporter = {
)()
if (E.isRight(validatedCollection)) {
- handleImportToStore(validatedCollection.right)
+ await handleImportToStore(validatedCollection.right)
platform.analytics?.logEvent({
type: "HOPP_IMPORT_COLLECTION",
@@ -110,7 +116,7 @@ const GqlCollectionsGistImporter: ImporterOrExporter = {
return
}
- handleImportToStore(res.right)
+ await handleImportToStore(res.right)
platform.analytics?.logEvent({
type: "HOPP_IMPORT_COLLECTION",
@@ -231,9 +237,71 @@ const showImportFailedError = () => {
toast.error(t("import.failed"))
}
-const handleImportToStore = (gqlCollections: HoppCollection[]) => {
- appendGraphqlCollections(gqlCollections)
- toast.success(t("state.file_imported"))
+const handleImportToStore = async (gqlCollections: HoppCollection[]) => {
+ // If user is logged in, try to import to backend first
+ if (currentUser.value) {
+ try {
+ const transformedCollection = gqlCollections.map((collection) =>
+ translateToPersonalCollectionFormat(collection)
+ )
+
+ const res = await importUserCollectionsFromJSON(
+ JSON.stringify(transformedCollection),
+ ReqType.Gql
+ )()
+
+ if (E.isRight(res)) {
+ // Backend import succeeded, now fetch and persist collections in store
+ const fetchResult = await fetchAndConvertUserCollections(ReqType.Gql)
+
+ if (E.isRight(fetchResult)) {
+ // Replace local collections with backend collections
+ setGraphqlCollections(fetchResult.right)
+ } else {
+ // Failed to fetch, append to local store as fallback
+ appendGraphqlCollections(gqlCollections)
+ }
+
+ toast.success(t("state.file_imported"))
+ return
+ }
+ // Backend import failed, fall back to local storage
+ appendGraphqlCollections(gqlCollections)
+ toast.success(t("state.file_imported"))
+ return
+ } catch {
+ // Backend import failed, fall back to local storage
+ appendGraphqlCollections(gqlCollections)
+ toast.success(t("state.file_imported"))
+ return
+ }
+ } else {
+ // User not logged in, use local storage
+ appendGraphqlCollections(gqlCollections)
+ toast.success(t("state.file_imported"))
+ }
+}
+
+function translateToPersonalCollectionFormat(x: HoppCollection) {
+ const folders: HoppCollection[] = (x.folders ?? []).map(
+ translateToPersonalCollectionFormat
+ )
+
+ const data = {
+ auth: x.auth,
+ headers: x.headers,
+ variables: x.variables,
+ }
+
+ const obj = {
+ ...x,
+ folders,
+ data,
+ }
+
+ if (x.id) obj.id = x.id
+
+ return obj
}
const emit = defineEmits<{
diff --git a/packages/hoppscotch-common/src/components/collections/index.vue b/packages/hoppscotch-common/src/components/collections/index.vue
index 8178a6f4428..4390a417290 100644
--- a/packages/hoppscotch-common/src/components/collections/index.vue
+++ b/packages/hoppscotch-common/src/components/collections/index.vue
@@ -56,6 +56,7 @@
@duplicate-request="duplicateRequest"
@duplicate-response="duplicateResponse"
@edit-properties="editProperties"
+ @create-mock-server="createMockServer"
@export-data="exportData"
@remove-collection="removeCollection"
@remove-folder="removeFolder"
@@ -104,6 +105,7 @@
@edit-request="editRequest"
@edit-response="editResponse"
@edit-properties="editProperties"
+ @create-mock-server="createTeamMockServer"
@export-data="exportData"
@expand-team-collection="expandTeamCollection"
@remove-collection="removeCollection"
@@ -220,6 +222,8 @@
:collection-runner-data="collectionRunnerData"
@hide-modal="showCollectionsRunnerModal = false"
/>
+
+
@@ -1073,6 +1077,46 @@ const updateEditingCollection = async (newName: string) => {
}
}
+const createMockServer = (payload: {
+ collectionIndex: string
+ collection: HoppCollection
+}) => {
+ // Import the mock server store dynamically to avoid circular dependencies
+ import("~/newstore/mockServers").then(({ showCreateMockServerModal$ }) => {
+ let collectionID = payload.collection.id ?? payload.collection._ref_id
+
+ // If this is a child collection (folder), we need to get the root collection ID
+ if (payload.collectionIndex.includes("/")) {
+ // Extract the root collection index from the path (e.g., "0/1/2" -> "0")
+ const rootIndex = payload.collectionIndex.split("/")[0]
+ const rootCollection = myCollections.value[parseInt(rootIndex)]
+ if (rootCollection) {
+ collectionID = rootCollection.id ?? rootCollection._ref_id
+ }
+ }
+
+ showCreateMockServerModal$.next({
+ show: true,
+ collectionID: collectionID,
+ collectionName: payload.collection.name,
+ })
+ })
+}
+
+const createTeamMockServer = (payload: {
+ collectionID: string
+ collection: TeamCollection
+}) => {
+ // Import the mock server store dynamically to avoid circular dependencies
+ import("~/newstore/mockServers").then(({ showCreateMockServerModal$ }) => {
+ showCreateMockServerModal$.next({
+ show: true,
+ collectionID: payload.collectionID,
+ collectionName: payload.collection.title,
+ })
+ })
+}
+
const editFolder = (payload: {
folderPath: string | undefined
folder: HoppCollection | TeamCollection
@@ -2787,9 +2831,12 @@ const exportData = async (collection: HoppCollection | TeamCollection) => {
if (collectionsType.value.type === "my-collections") {
const collectionJSON = JSON.stringify(collection, null, 2)
+ // Strip `export {};\n` from `testScript` and `preRequestScript` fields
+ const cleanedCollectionJSON = collectionJSON.replace(/export \{\};\\n/g, "")
+
const name = (collection as HoppCollection).name
- initializeDownloadCollection(collectionJSON, name)
+ initializeDownloadCollection(cleanedCollectionJSON, name)
} else {
if (!collection.id) return
exportLoading.value = true
@@ -2806,8 +2853,14 @@ const exportData = async (collection: HoppCollection | TeamCollection) => {
const hoppColl = teamCollToHoppRESTColl(coll)
const collectionJSONString = JSON.stringify(hoppColl, null, 2)
+ // Strip `export {};\n` from `testScript` and `preRequestScript` fields
+ const cleanedCollectionJSON = collectionJSONString.replace(
+ /export \{\};\\n/g,
+ ""
+ )
+
await initializeDownloadCollection(
- collectionJSONString,
+ cleanedCollectionJSON,
hoppColl.name
)
exportLoading.value = false
diff --git a/packages/hoppscotch-common/src/components/http/Request.vue b/packages/hoppscotch-common/src/components/http/Request.vue
index 6afce1bf93e..585bfdec84a 100644
--- a/packages/hoppscotch-common/src/components/http/Request.vue
+++ b/packages/hoppscotch-common/src/components/http/Request.vue
@@ -270,6 +270,7 @@ import { RESTTabService } from "~/services/tab/rest"
import { getMethodLabelColor } from "~/helpers/rest/labelColoring"
import { WorkspaceService } from "~/services/workspace.service"
import { KernelInterceptorService } from "~/services/kernel-interceptor.service"
+import { handleTokenValidation } from "~/helpers/handleTokenValidation"
const t = useI18n()
const interceptorService = useService(KernelInterceptorService)
@@ -514,7 +515,10 @@ const cycleDownMethod = () => {
}
}
-const saveRequest = () => {
+const saveRequest = async () => {
+ const isValidToken = await handleTokenValidation()
+ if (!isValidToken) return
+
const saveCtx = tab.value.document.saveContext
if (!saveCtx) {
diff --git a/packages/hoppscotch-common/src/components/http/Sidebar.vue b/packages/hoppscotch-common/src/components/http/Sidebar.vue
index b62836b1c04..36ad55dd431 100644
--- a/packages/hoppscotch-common/src/components/http/Sidebar.vue
+++ b/packages/hoppscotch-common/src/components/http/Sidebar.vue
@@ -51,6 +51,19 @@
class="px-4 mt-4"
/>
+
+
+ {{ t("tab.mock_servers") }}
+
+
+
@@ -60,17 +73,27 @@ import IconLayers from "~icons/lucide/layers"
import IconFolder from "~icons/lucide/folder"
import IconShare2 from "~icons/lucide/share-2"
import IconCode from "~icons/lucide/code"
+import IconServer from "~icons/lucide/server"
import { ref } from "vue"
import { useI18n } from "@composables/i18n"
+import MockServerDashboard from "~/components/mockServer/MockServerDashboard.vue"
+import { useMockServerWorkspaceSync } from "~/composables/mockServerWorkspace"
+import { useMockServerVisibility } from "~/composables/mockServerVisibility"
const t = useI18n()
+const { isMockServerVisible } = useMockServerVisibility()
+
type RequestOptionTabs =
| "history"
| "collections"
| "env"
| "share-request"
| "codegen"
+ | "mock-servers"
const selectedNavigationTab = ref("collections")
+
+// Ensure mock servers are kept in sync with workspace changes globally
+useMockServerWorkspaceSync()
diff --git a/packages/hoppscotch-common/src/components/importExport/Base.vue b/packages/hoppscotch-common/src/components/importExport/Base.vue
index b13b4ba4b6b..d7de6c12e44 100644
--- a/packages/hoppscotch-common/src/components/importExport/Base.vue
+++ b/packages/hoppscotch-common/src/components/importExport/Base.vue
@@ -202,6 +202,8 @@ props.importerModules.forEach((importer) => {
props: () => ({
collections: importSummary.value.importedCollections,
importFormat: importer.metadata.format,
+ scriptsImported: importSummary.value.scriptsImported,
+ originalScriptCounts: importSummary.value.originalScriptCounts,
"on-close": () => {
emit("hide-modal")
},
diff --git a/packages/hoppscotch-common/src/components/importExport/ImportExportSteps/FileImport.vue b/packages/hoppscotch-common/src/components/importExport/ImportExportSteps/FileImport.vue
index 0659d4f38b9..1f85aa62f39 100644
--- a/packages/hoppscotch-common/src/components/importExport/ImportExportSteps/FileImport.vue
+++ b/packages/hoppscotch-common/src/components/importExport/ImportExportSteps/FileImport.vue
@@ -52,13 +52,41 @@
}}
+
+
+
+
+
+
+
@@ -69,6 +97,7 @@ import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
import { computed, ref } from "vue"
import { platform } from "~/platform"
+import { useSetting } from "~/composables/settings"
const props = withDefaults(
defineProps<{
@@ -76,16 +105,24 @@ const props = withDefaults(
acceptedFileTypes: string
loading?: boolean
description?: string
+ showPostmanScriptOption?: boolean
}>(),
{
loading: false,
description: undefined,
+ showPostmanScriptOption: false,
}
)
const t = useI18n()
const toast = useToast()
+// Postman-specific: Script import state (only use case so far)
+const importScripts = ref(false)
+const experimentalScriptingEnabled = useSetting(
+ "EXPERIMENTAL_SCRIPTING_SANDBOX"
+)
+
const ALLOWED_FILE_SIZE_LIMIT = platform.limits?.collectionImportSizeLimit ?? 10 // Default to 10 MB
const importFilesCount = ref(0)
@@ -97,7 +134,7 @@ const fileContent = ref([])
const inputChooseFileToImportFrom = ref()
const emit = defineEmits<{
- (e: "importFromFile", content: string[]): void
+ (e: "importFromFile", content: string[], ...additionalArgs: any[]): void
}>()
// Disable the import CTA if no file is selected, the file size limit is exceeded, or during an import action indicated by the `isLoading` prop
@@ -106,6 +143,16 @@ const disableImportCTA = computed(
!hasFile.value || showFileSizeLimitExceededWarning.value || props.loading
)
+const handleImport = () => {
+ // If Postman script option is enabled AND experimental sandbox is enabled, pass the importScripts value
+ // Otherwise, don't pass it (undefined) to indicate the feature wasn't available
+ if (props.showPostmanScriptOption && experimentalScriptingEnabled.value) {
+ emit("importFromFile", fileContent.value, importScripts.value)
+ } else {
+ emit("importFromFile", fileContent.value)
+ }
+}
+
const onFileChange = async () => {
// Reset the state on entering the handler to avoid any stale state
if (showFileSizeLimitExceededWarning.value) {
diff --git a/packages/hoppscotch-common/src/components/importExport/ImportExportSteps/ImportSummary.vue b/packages/hoppscotch-common/src/components/importExport/ImportExportSteps/ImportSummary.vue
index 80e030f0c87..72966e97c04 100644
--- a/packages/hoppscotch-common/src/components/importExport/ImportExportSteps/ImportSummary.vue
+++ b/packages/hoppscotch-common/src/components/importExport/ImportExportSteps/ImportSummary.vue
@@ -1,3 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+ {{ t(feature.label) }}
+
+
+
+
+ {{ feature.count }}
+ {{
+ feature.count != 1
+ ? t(feature.label)
+ : t(feature.label).slice(0, -1)
+ }}
+ Imported
+
+
+
+ 0 {{ t(feature.label) }} Imported
+
+
+
+
+
+ 0 {{ t(feature.label) }} Imported
+
+
+
+ {{
+ t("import.import_summary_not_supported_by_hoppscotch_import", {
+ featureLabel: t(feature.label),
+ })
+ }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ totalScriptsCount }}
+ {{
+ totalScriptsCount === 1
+ ? t("import.import_summary_script_found")
+ : t("import.import_summary_scripts_found")
+ }}
+
+
+ {{ t("import.import_summary_enable_experimental_sandbox") }}
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+const showScriptImportInfo = computed(() => {
+ return (
+ props.importFormat === "postman" &&
+ props.scriptsImported === undefined &&
+ totalScriptsCount.value > 0
+ )
+})
-
-
- {{ t(feature.label) }}
-
-
-
-
- {{ feature.count }}
- {{
- feature.count != 1
- ? t(feature.label)
- : t(feature.label).slice(0, -1)
- }}
- Imported
-
-
-
- {{
- t("import.import_summary_not_supported_by_hoppscotch_import", {
- featureLabel: t(feature.label),
- })
- }}
-
-
-
-
+const totalScriptsCount = computed(() => {
+ if (props.importFormat !== "postman" || props.scriptsImported !== undefined)
+ return 0
-
-
-
-
+ // Use original counts from raw Postman JSON
+ const preRequestScripts = props.originalScriptCounts?.preRequest || 0
+ const testScripts = props.originalScriptCounts?.test || 0
+
+ return preRequestScripts + testScripts
+})
+
diff --git a/packages/hoppscotch-common/src/components/mockServer/CreateMockServer.vue b/packages/hoppscotch-common/src/components/mockServer/CreateMockServer.vue
new file mode 100644
index 00000000000..37714872075
--- /dev/null
+++ b/packages/hoppscotch-common/src/components/mockServer/CreateMockServer.vue
@@ -0,0 +1,543 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{
+ if (!option.disabled) {
+ selectCollection(option)
+ hide()
+ }
+ }
+ "
+ >
+
+
+
+ {{ t("empty.collections") }}
+
+
+
+
+
+
+
+ {{ collectionName }}
+
+
+
+
+
+
+
+
+ {{ existingMockServer?.name }}
+
+
+
+
+
+
+
+ {{
+ existingMockServer?.serverUrlPathBased ||
+ existingMockServer?.serverUrlDomainBased ||
+ ""
+ }}
+
+
+
+
+
+
+
+
+
+
+ {{
+ existingMockServer?.isActive
+ ? t("mockServer.dashboard.active")
+ : t("mockServer.dashboard.inactive")
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t("mock_server.make_public") }}
+
+
+
+
+
+ {{ t("mock_server.private_access_hint") }}
+
+
+
+
+
+
+
+
+ {{ createdServer.serverUrlPathBased }}
+
+
+
+
+
+
+
+
+
+
+ {{ createdServer.serverUrlDomainBased }}
+
+
+
+
+ {{ t("mock_server.note") }}:
+ {{ t("mock_server.subdomain_note") }}
+
+
+
+
+
+
+
+
+
+
+ {{ t("mock_server.description") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/hoppscotch-common/src/components/mockServer/EditMockServer.vue b/packages/hoppscotch-common/src/components/mockServer/EditMockServer.vue
new file mode 100644
index 00000000000..71b922d447c
--- /dev/null
+++ b/packages/hoppscotch-common/src/components/mockServer/EditMockServer.vue
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ mockServer.collection?.title || t("mock_server.no_collection") }}
+
+
+
+
+
+
+
+
+ {{
+ mockServer.serverUrlDomainBased || mockServer.serverUrlPathBased
+ }}
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ isActive
+ ? t("mockServer.dashboard.active")
+ : t("mockServer.dashboard.inactive")
+ }}
+
+
+
+
+
+
+
+
+
+ {{ t("mock_server.delay_description") }}
+
+
+
+
+
+
+
+
+
+ {{
+ isPublic
+ ? t("mock_server.public_description")
+ : t("mock_server.private_description")
+ }}
+
+
+
+ {{ t("mock_server.private_access_hint") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/hoppscotch-common/src/components/mockServer/LogSection.vue b/packages/hoppscotch-common/src/components/mockServer/LogSection.vue
new file mode 100644
index 00000000000..29f446582ff
--- /dev/null
+++ b/packages/hoppscotch-common/src/components/mockServer/LogSection.vue
@@ -0,0 +1,110 @@
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
{{ formattedContent }}
+
+
+
+ {{ t("state.no_content_found") }}
+
+
+
+
+
diff --git a/packages/hoppscotch-common/src/components/mockServer/MockServerDashboard.vue b/packages/hoppscotch-common/src/components/mockServer/MockServerDashboard.vue
new file mode 100644
index 00000000000..3a0c05e12b2
--- /dev/null
+++ b/packages/hoppscotch-common/src/components/mockServer/MockServerDashboard.vue
@@ -0,0 +1,376 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t("state.loading") }}
+
+
+
![]()
+
+ {{ t("empty.mock_servers") }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ mockServer.name }}
+
+
+ {{
+ mockServer.collection === null
+ ? t("mock_server.collection_deleted")
+ : mockServer.collection?.title ||
+ t("mock_server.no_collection")
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ toggleMockServer(mockServer)
+ hide()
+ }
+ "
+ />
+ {
+ deleteMockServer(mockServer)
+ hide()
+ }
+ "
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/hoppscotch-common/src/components/mockServer/MockServerLogs.vue b/packages/hoppscotch-common/src/components/mockServer/MockServerLogs.vue
new file mode 100644
index 00000000000..720b2599ded
--- /dev/null
+++ b/packages/hoppscotch-common/src/components/mockServer/MockServerLogs.vue
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+
+
+
+
+ {{ t("mock_server.no_logs") }}
+
+
+
+
+
+
+
+
+ {{ log.requestMethod }}
+
+
+ {{ log.requestPath }}
+
+
+
+ {{ log.responseStatus }}
+
+
+
+ {{ formatExecutedAt(log.executedAt) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/hoppscotch-common/src/components/settings/Agent.vue b/packages/hoppscotch-common/src/components/settings/Agent.vue
index b2665b7aba9..7004425374f 100644
--- a/packages/hoppscotch-common/src/components/settings/Agent.vue
+++ b/packages/hoppscotch-common/src/components/settings/Agent.vue
@@ -31,6 +31,14 @@
{{ t("settings.verify_peer") }}
+
+
+ {{ t("settings.follow_redirects") }}
+
+
+
+
+ {{ t("settings.follow_redirects") }}
+
+
-
+
+
diff --git a/packages/hoppscotch-sh-admin/src/composables/useConfigHandler.ts b/packages/hoppscotch-sh-admin/src/composables/useConfigHandler.ts
index 7501512d41c..d3f6b582092 100644
--- a/packages/hoppscotch-sh-admin/src/composables/useConfigHandler.ts
+++ b/packages/hoppscotch-sh-admin/src/composables/useConfigHandler.ts
@@ -26,13 +26,21 @@ import {
GOOGLE_CONFIGS,
MAIL_CONFIGS,
MICROSOFT_CONFIGS,
+ MOCK_SERVER_CONFIGS,
ServerConfigs,
+ TOKEN_VALIDATION_CONFIGS,
UpdatedConfigs,
} from '~/helpers/configs';
import { getCompiledErrorMessage } from '~/helpers/errors';
import { useToast } from './toast';
import { useClientHandler } from './useClientHandler';
+const COOKIE_NAME_REGEX = /^[A-Za-z0-9_-]+$/;
+
+const OPTIONAL_TOKEN_FIELD_KEYS = new Set(
+ TOKEN_VALIDATION_CONFIGS.filter((cfg) => cfg.optional).map((cfg) => cfg.key)
+);
+
/** Composable that handles all operations related to server configurations
* @param updatedConfigs A Config Object containing the updated configs
*/
@@ -153,6 +161,7 @@ export function useConfigHandler(updatedConfigs?: ServerConfigs) {
InfraConfigEnum.AccessTokenValidity
),
session_secret: getFieldValue(InfraConfigEnum.SessionSecret),
+ session_cookie_name: getFieldValue(InfraConfigEnum.SessionCookieName),
},
},
dataSharingConfigs: {
@@ -176,6 +185,14 @@ export function useConfigHandler(updatedConfigs?: ServerConfigs) {
rate_limit_max: getFieldValue(InfraConfigEnum.RateLimitMax),
},
},
+ mockServerConfigs: {
+ name: 'mock_server',
+ fields: {
+ mock_server_wildcard_domain: getFieldValue(
+ InfraConfigEnum.MockServerWildcardDomain
+ ),
+ },
+ },
};
// Cloning the current configs to working configs
@@ -275,8 +292,12 @@ export function useConfigHandler(updatedConfigs?: ServerConfigs) {
// This section has no enabled property, so we check fields directly
// for a valid number (>0) or non-empty string
- if (section.name === 'token')
- return Object.values(section.fields).some(isFieldNotValid);
+ if (section.name === 'token') {
+ return Object.entries(section.fields).some(
+ ([key, value]) =>
+ !OPTIONAL_TOKEN_FIELD_KEYS.has(key) && isFieldNotValid(value)
+ );
+ }
// For rate limit section, we want to check if the values are not valid numbers
// and not empty strings
@@ -343,6 +364,11 @@ export function useConfigHandler(updatedConfigs?: ServerConfigs) {
enabled: isCustomMailConfigEnabled,
fields: customMailConfigFields,
},
+ {
+ config: MOCK_SERVER_CONFIGS,
+ enabled: true,
+ fields: updatedConfigs?.mockServerConfigs?.fields ?? {},
+ },
];
const transformedConfigs: UpdatedConfigs[] = [];
@@ -557,6 +583,14 @@ export function useConfigHandler(updatedConfigs?: ServerConfigs) {
const sessionSecret = String(
updatedConfigs?.tokenConfigs.fields.session_secret
);
+ const sessionCookieName = String(
+ updatedConfigs?.tokenConfigs.fields.session_cookie_name || ''
+ );
+ // Validate cookie name: allow empty (falls back to default), else enforce pattern
+ if (sessionCookieName && !COOKIE_NAME_REGEX.test(sessionCookieName)) {
+ toast.error(t('configs.auth_providers.token.session_cookie_name_invalid'));
+ return false;
+ }
if (
isFieldEmpty(jwtSecret) ||
isFieldEmpty(tokenSaltComplexity) ||
@@ -594,6 +628,10 @@ export function useConfigHandler(updatedConfigs?: ServerConfigs) {
name: InfraConfigEnum.SessionSecret,
value: sessionSecret,
},
+ {
+ name: InfraConfigEnum.SessionCookieName,
+ value: sessionCookieName,
+ },
];
return executeMutation(
diff --git a/packages/hoppscotch-sh-admin/src/helpers/configs.ts b/packages/hoppscotch-sh-admin/src/helpers/configs.ts
index 9dcaf118a5a..03271bfeab5 100644
--- a/packages/hoppscotch-sh-admin/src/helpers/configs.ts
+++ b/packages/hoppscotch-sh-admin/src/helpers/configs.ts
@@ -67,6 +67,7 @@ export type ServerConfigs = {
refresh_token_validity: string;
access_token_validity: string;
session_secret: string;
+ session_cookie_name: string;
};
};
@@ -87,6 +88,12 @@ export type ServerConfigs = {
rate_limit_max: string;
};
};
+ mockServerConfigs?: {
+ name: string;
+ fields: {
+ mock_server_wildcard_domain: string;
+ };
+ };
};
export type UpdatedConfigs = {
@@ -109,6 +116,8 @@ export type ConfigSection = {
export type Config = {
name: InfraConfigEnum;
key: string;
+ // Marks fields that are optional and should be excluded from mandatory validation
+ optional?: boolean;
};
export const GOOGLE_CONFIGS: Config[] = [
@@ -251,6 +260,11 @@ export const TOKEN_VALIDATION_CONFIGS: Config[] = [
name: InfraConfigEnum.SessionSecret,
key: 'session_secret',
},
+ {
+ name: InfraConfigEnum.SessionCookieName,
+ key: 'session_cookie_name',
+ optional: true,
+ },
{
name: InfraConfigEnum.TokenSaltComplexity,
key: 'token_salt_complexity',
@@ -269,6 +283,13 @@ export const TOKEN_VALIDATION_CONFIGS: Config[] = [
},
];
+export const MOCK_SERVER_CONFIGS: Config[] = [
+ {
+ name: InfraConfigEnum.MockServerWildcardDomain,
+ key: 'mock_server_wildcard_domain',
+ },
+];
+
export const ALL_CONFIGS = [
GOOGLE_CONFIGS,
MICROSOFT_CONFIGS,
@@ -279,4 +300,5 @@ export const ALL_CONFIGS = [
HISTORY_STORE_CONFIG,
RATE_LIMIT_CONFIGS,
TOKEN_VALIDATION_CONFIGS,
+ MOCK_SERVER_CONFIGS,
];
diff --git a/packages/hoppscotch-sh-admin/src/helpers/userManagement.ts b/packages/hoppscotch-sh-admin/src/helpers/userManagement.ts
index c03da5f16d6..0866172ade6 100644
--- a/packages/hoppscotch-sh-admin/src/helpers/userManagement.ts
+++ b/packages/hoppscotch-sh-admin/src/helpers/userManagement.ts
@@ -67,7 +67,7 @@ export const handleUserDeletion = (deletedUsersList: UserDeletionResult[]) => {
// Indicates the actual count of users deleted (filtered via the `isDeleted` field)
const deletedUsersCount = deletedUserIDs.length;
- if (isBulkAction && deletedUsersCount > 0) {
+ if (deletedUsersCount > 0) {
toastMessages.push({
message: t('state.delete_some_users_success', {
count: deletedUsersCount,
diff --git a/packages/hoppscotch-sh-admin/src/pages/settings.vue b/packages/hoppscotch-sh-admin/src/pages/settings.vue
index d8ef68c15b2..200ceeaca0e 100644
--- a/packages/hoppscotch-sh-admin/src/pages/settings.vue
+++ b/packages/hoppscotch-sh-admin/src/pages/settings.vue
@@ -37,9 +37,13 @@
+
+
+
+
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 389d824ce78..b6922e3946a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9,6 +9,7 @@ overrides:
apiconnect-wsdl: 2.0.36
cross-spawn: 7.0.6
execa@0.10.0: 2.0.0
+ nodemailer@<7.0.7: 7.0.7
sha.js@2.4.11: 2.4.12
subscriptions-transport-ws>ws: 7.5.10
vue: 3.5.22
@@ -20,20 +21,20 @@ importers:
.:
devDependencies:
'@commitlint/cli':
- specifier: 19.8.1
- version: 19.8.1(@types/node@24.5.2)(typescript@5.9.2)
+ specifier: 20.1.0
+ version: 20.1.0(@types/node@24.9.1)(typescript@5.9.3)
'@commitlint/config-conventional':
- specifier: 19.8.1
- version: 19.8.1
+ specifier: 20.0.0
+ version: 20.0.0
'@hoppscotch/ui':
specifier: 0.2.5
- version: 0.2.5(eslint@9.36.0(jiti@2.6.0))(terser@5.39.2)(typescript@5.9.2)(vite@7.1.2(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))
+ version: 0.2.5(eslint@9.37.0(jiti@2.6.0))(terser@5.39.2)(typescript@5.9.3)(vite@7.1.2(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
'@types/node':
- specifier: 24.5.2
- version: 24.5.2
+ specifier: 24.9.1
+ version: 24.9.1
cross-env:
- specifier: 10.0.0
- version: 10.0.0
+ specifier: 10.1.0
+ version: 10.1.0
http-server:
specifier: 14.1.1
version: 14.1.1
@@ -41,8 +42,8 @@ importers:
specifier: 9.1.7
version: 9.1.7
lint-staged:
- specifier: 16.2.1
- version: 16.2.1
+ specifier: 16.2.5
+ version: 16.2.5
packages/codemirror-lang-graphql:
dependencies:
@@ -61,22 +62,22 @@ importers:
version: 1.8.0
'@rollup/plugin-typescript':
specifier: 12.1.4
- version: 12.1.4(rollup@4.52.2)(tslib@2.8.1)(typescript@5.9.2)
+ version: 12.1.4(rollup@4.52.5)(tslib@2.8.1)(typescript@5.9.3)
mocha:
- specifier: 11.7.2
- version: 11.7.2
+ specifier: 11.7.4
+ version: 11.7.4
rollup:
- specifier: 4.52.2
- version: 4.52.2
+ specifier: 4.52.5
+ version: 4.52.5
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
packages/hoppscotch-agent:
dependencies:
'@hoppscotch/ui':
specifier: 0.2.5
- version: 0.2.5(eslint@9.36.0(jiti@2.6.0))(terser@5.39.2)(typescript@5.9.2)(vite@6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))
+ version: 0.2.5(eslint@9.37.0(jiti@2.6.0))(terser@5.39.2)(typescript@5.9.3)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
'@tauri-apps/api':
specifier: 2.1.1
version: 2.1.1
@@ -85,7 +86,7 @@ importers:
version: 2.2.1
'@vueuse/core':
specifier: 13.7.0
- version: 13.7.0(vue@3.5.22(typescript@5.9.2))
+ version: 13.7.0(vue@3.5.22(typescript@5.9.3))
axios:
specifier: 1.12.2
version: 1.12.2
@@ -97,7 +98,7 @@ importers:
version: 4.17.21
vue:
specifier: 3.5.22
- version: 3.5.22(typescript@5.9.2)
+ version: 3.5.22(typescript@5.9.3)
devDependencies:
'@iconify-json/lucide':
specifier: 1.2.68
@@ -109,11 +110,11 @@ importers:
specifier: 4.17.12
version: 4.17.12
'@types/node':
- specifier: 24.3.0
- version: 24.3.0
+ specifier: 24.9.1
+ version: 24.9.1
'@vitejs/plugin-vue':
specifier: 5.1.4
- version: 5.1.4(vite@6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))
+ version: 5.1.4(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
autoprefixer:
specifier: 10.4.21
version: 10.4.21(postcss@8.5.6)
@@ -122,34 +123,37 @@ importers:
version: 8.5.6
tailwindcss:
specifier: 3.4.16
- version: 3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.3.0)(typescript@5.9.2))
+ version: 3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
unplugin-icons:
specifier: 22.2.0
version: 22.2.0(@vue/compiler-sfc@3.5.22)(svelte@3.59.2)(vue-template-compiler@2.7.16)
unplugin-vue-components:
specifier: 29.0.0
- version: 29.0.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.2))
+ version: 29.0.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.3))
vite:
specifier: 6.3.6
- version: 6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ version: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
vue-tsc:
specifier: 2.2.0
- version: 2.2.0(typescript@5.9.2)
+ version: 2.2.0(typescript@5.9.3)
packages/hoppscotch-backend:
dependencies:
'@apollo/server':
specifier: 4.12.1
version: 4.12.1(graphql@16.11.0)
+ '@as-integrations/express5':
+ specifier: 1.1.2
+ version: 1.1.2(@apollo/server@4.12.1(graphql@16.11.0))(express@5.1.0)
'@nestjs-modules/mailer':
specifier: 2.0.2
- version: 2.0.2(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(nodemailer@7.0.6)(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ version: 2.0.2(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(nodemailer@7.0.9)(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
'@nestjs/apollo':
- specifier: 13.1.0
- version: 13.1.0(@apollo/server@4.12.1(graphql@16.11.0))(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(@nestjs/graphql@13.1.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(graphql@16.11.0)(reflect-metadata@0.2.2))(graphql@16.11.0)
+ specifier: 13.2.1
+ version: 13.2.1(@apollo/server@4.12.1(graphql@16.11.0))(@as-integrations/express5@1.1.2(@apollo/server@4.12.1(graphql@16.11.0))(express@5.1.0))(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(@nestjs/graphql@13.2.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(graphql@16.11.0)(reflect-metadata@0.2.2))(graphql@16.11.0)
'@nestjs/common':
specifier: 11.1.6
version: 11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)
@@ -160,11 +164,11 @@ importers:
specifier: 11.1.6
version: 11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/graphql':
- specifier: 13.1.0
- version: 13.1.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(graphql@16.11.0)(reflect-metadata@0.2.2)
+ specifier: 13.2.0
+ version: 13.2.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(graphql@16.11.0)(reflect-metadata@0.2.2)
'@nestjs/jwt':
- specifier: 11.0.0
- version: 11.0.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))
+ specifier: 11.0.1
+ version: 11.0.1(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))
'@nestjs/passport':
specifier: 11.0.0
version: 11.0.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(passport@0.7.0)
@@ -175,17 +179,17 @@ importers:
specifier: 6.0.1
version: 6.0.1(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)
'@nestjs/swagger':
- specifier: 11.2.0
- version: 11.2.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)
+ specifier: 11.2.1
+ version: 11.2.1(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)
'@nestjs/terminus':
specifier: 11.0.0
- version: 11.0.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(@prisma/client@6.16.2(prisma@6.16.2(typescript@5.9.2))(typescript@5.9.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)
+ version: 11.0.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(@prisma/client@6.17.1(prisma@6.17.1(typescript@5.9.3))(typescript@5.9.3))(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/throttler':
specifier: 6.4.0
version: 6.4.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(reflect-metadata@0.2.2)
'@prisma/client':
- specifier: 6.16.2
- version: 6.16.2(prisma@6.16.2(typescript@5.9.2))(typescript@5.9.2)
+ specifier: 6.17.1
+ version: 6.17.1(prisma@6.17.1(typescript@5.9.3))(typescript@5.9.3)
argon2:
specifier: 0.44.0
version: 0.44.0
@@ -235,8 +239,8 @@ importers:
specifier: 1.10.1
version: 1.10.1
nodemailer:
- specifier: 7.0.6
- version: 7.0.6
+ specifier: 7.0.9
+ version: 7.0.9
passport:
specifier: 0.7.0
version: 0.7.0
@@ -256,11 +260,11 @@ importers:
specifier: 2.1.0
version: 2.1.0
posthog-node:
- specifier: 5.8.8
- version: 5.8.8
+ specifier: 5.10.0
+ version: 5.10.0
prisma:
- specifier: 6.16.2
- version: 6.16.2(typescript@5.9.2)
+ specifier: 6.17.1
+ version: 6.17.1(typescript@5.9.3)
reflect-metadata:
specifier: 0.2.2
version: 0.2.2
@@ -275,14 +279,14 @@ importers:
specifier: 3.3.1
version: 3.3.1
'@eslint/js':
- specifier: 9.36.0
- version: 9.36.0
+ specifier: 9.37.0
+ version: 9.37.0
'@nestjs/cli':
specifier: 11.0.10
- version: 11.0.10(@swc/core@1.4.2)(@types/node@24.5.2)
+ version: 11.0.10(@swc/core@1.4.2)(@types/node@24.9.1)
'@nestjs/schematics':
- specifier: 11.0.7
- version: 11.0.7(chokidar@4.0.3)(typescript@5.9.2)
+ specifier: 11.0.9
+ version: 11.0.9(chokidar@4.0.3)(typescript@5.9.3)
'@nestjs/testing':
specifier: 11.1.6
version: 11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(@nestjs/platform-express@11.1.6)
@@ -302,11 +306,11 @@ importers:
specifier: 30.0.0
version: 30.0.0
'@types/node':
- specifier: 24.5.2
- version: 24.5.2
+ specifier: 24.9.1
+ version: 24.9.1
'@types/nodemailer':
- specifier: 7.0.1
- version: 7.0.1
+ specifier: 7.0.2
+ version: 7.0.2
'@types/passport-github2':
specifier: 1.2.9
version: 1.2.9
@@ -323,32 +327,32 @@ importers:
specifier: 6.0.3
version: 6.0.3
'@typescript-eslint/eslint-plugin':
- specifier: 8.44.1
- version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)
+ specifier: 8.46.1
+ version: 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.44.1
- version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)
+ specifier: 8.46.1
+ version: 8.46.1(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)
cross-env:
- specifier: 10.0.0
- version: 10.0.0
+ specifier: 10.1.0
+ version: 10.1.0
eslint:
- specifier: 9.36.0
- version: 9.36.0(jiti@2.6.0)
+ specifier: 9.37.0
+ version: 9.37.0(jiti@2.6.0)
eslint-config-prettier:
specifier: 10.1.8
- version: 10.1.8(eslint@9.36.0(jiti@2.6.0))
+ version: 10.1.8(eslint@9.37.0(jiti@2.6.0))
eslint-plugin-prettier:
specifier: 5.5.4
- version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2)
+ version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@2.6.0)))(eslint@9.37.0(jiti@2.6.0))(prettier@3.6.2)
globals:
specifier: 16.4.0
version: 16.4.0
jest:
- specifier: 30.1.3
- version: 30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
+ specifier: 30.2.0
+ version: 30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
jest-mock-extended:
specifier: 4.0.0
- version: 4.0.0(@jest/globals@30.1.2)(jest@30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)))(typescript@5.9.2)
+ version: 4.0.0(@jest/globals@30.2.0)(jest@30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)))(typescript@5.9.3)
prettier:
specifier: 3.6.2
version: 3.6.2
@@ -359,20 +363,20 @@ importers:
specifier: 7.1.4
version: 7.1.4
ts-jest:
- specifier: 29.4.4
- version: 29.4.4(@babel/core@7.28.4)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.4))(jest-util@30.0.5)(jest@30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)))(typescript@5.9.2)
+ specifier: 29.4.5
+ version: 29.4.5(@babel/core@7.28.4)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.4))(jest-util@30.2.0)(jest@30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)))(typescript@5.9.3)
ts-loader:
specifier: 9.5.4
- version: 9.5.4(typescript@5.9.2)(webpack@5.100.2(@swc/core@1.4.2))
+ version: 9.5.4(typescript@5.9.3)(webpack@5.100.2(@swc/core@1.4.2))
ts-node:
specifier: 10.9.2
- version: 10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)
+ version: 10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)
tsconfig-paths:
specifier: 4.2.0
version: 4.2.0
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
packages/hoppscotch-cli:
dependencies:
@@ -438,23 +442,23 @@ importers:
specifier: 3.6.2
version: 3.6.2
semver:
- specifier: 7.7.2
- version: 7.7.2
+ specifier: 7.7.3
+ version: 7.7.3
tsup:
specifier: 8.5.0
- version: 8.5.0(@swc/core@1.4.2)(jiti@2.6.0)(postcss@8.5.6)(typescript@5.9.2)(yaml@2.8.1)
+ version: 8.5.0(@swc/core@1.4.2)(jiti@2.6.0)(postcss@8.5.6)(typescript@5.9.3)(yaml@2.8.1)
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
vitest:
specifier: 3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.0)(jsdom@26.1.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@24.9.1)(jiti@2.6.0)(jsdom@26.1.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
packages/hoppscotch-common:
dependencies:
'@apidevtools/swagger-parser':
- specifier: 12.0.0
- version: 12.0.0(openapi-types@12.1.3)
+ specifier: 12.1.0
+ version: 12.1.0(openapi-types@12.1.3)
'@codemirror/autocomplete':
specifier: 6.18.6
version: 6.18.6
@@ -492,8 +496,8 @@ importers:
specifier: 6.38.1
version: 6.38.1
'@guolao/vue-monaco-editor':
- specifier: 1.5.5
- version: 1.5.5(monaco-editor@0.52.2)(vue@3.5.22(typescript@5.9.2))
+ specifier: 1.6.0
+ version: 1.6.0(monaco-editor@0.52.2)(vue@3.5.22(typescript@5.9.3))
'@hoppscotch/codemirror-lang-graphql':
specifier: workspace:^
version: link:../codemirror-lang-graphql
@@ -514,10 +518,10 @@ importers:
version: '@CuriousCorrelation/plugin-appload@https://codeload.github.com/CuriousCorrelation/tauri-plugin-appload/tar.gz/e05861959938b57479a1a81fa796735ebbd08c7c'
'@hoppscotch/ui':
specifier: 0.2.5
- version: 0.2.5(eslint@8.57.0)(terser@5.39.2)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))
+ version: 0.2.5(eslint@8.57.0)(terser@5.39.2)(typescript@5.9.3)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
'@hoppscotch/vue-toasted':
specifier: 0.1.0
- version: 0.1.0(vue@3.5.22(typescript@5.9.2))
+ version: 0.1.0(vue@3.5.22(typescript@5.9.3))
'@lezer/highlight':
specifier: 1.2.1
version: 1.2.1
@@ -543,8 +547,8 @@ importers:
specifier: 14.1.2
version: 14.1.2
'@unhead/vue':
- specifier: 2.0.17
- version: 2.0.17(vue@3.5.22(typescript@5.9.2))
+ specifier: 2.0.19
+ version: 2.0.19(vue@3.5.22(typescript@5.9.3))
'@urql/core':
specifier: 6.0.1
version: 6.0.1(graphql@16.11.0)
@@ -556,7 +560,7 @@ importers:
version: 3.0.0(@urql/core@6.0.1(graphql@16.11.0))
'@vueuse/core':
specifier: 13.7.0
- version: 13.7.0(vue@3.5.22(typescript@5.9.2))
+ version: 13.7.0(vue@3.5.22(typescript@5.9.3))
acorn-walk:
specifier: 8.3.4
version: 8.3.4
@@ -574,7 +578,7 @@ importers:
version: 2.0.0
dioc:
specifier: 3.0.2
- version: 3.0.2(vue@3.5.22(typescript@5.9.2))
+ version: 3.0.2(vue@3.5.22(typescript@5.9.3))
esprima:
specifier: 4.0.1
version: 4.0.1
@@ -592,7 +596,7 @@ importers:
version: 16.11.0
graphql-language-service-interface:
specifier: 2.10.2
- version: 2.10.2(@types/node@24.5.2)(graphql@16.11.0)
+ version: 2.10.2(@types/node@24.9.1)(graphql@16.11.0)
graphql-tag:
specifier: 2.12.6
version: 2.12.6(graphql@16.11.0)
@@ -621,8 +625,8 @@ importers:
specifier: 4.17.21
version: 4.17.21
lossless-json:
- specifier: 4.2.0
- version: 4.2.0
+ specifier: 4.3.0
+ version: 4.3.0
markdown-it:
specifier: 14.1.0
version: 14.1.0
@@ -684,8 +688,8 @@ importers:
specifier: 0.11.0
version: 0.11.0(graphql@16.11.0)
superjson:
- specifier: 2.2.2
- version: 2.2.2
+ specifier: 2.2.3
+ version: 2.2.3
tern:
specifier: 0.24.3
version: 0.24.3
@@ -709,25 +713,25 @@ importers:
version: 0.4.0(zod@3.25.32)
vue:
specifier: 3.5.22
- version: 3.5.22(typescript@5.9.2)
+ version: 3.5.22(typescript@5.9.3)
vue-i18n:
specifier: 11.1.12
- version: 11.1.12(vue@3.5.22(typescript@5.9.2))
+ version: 11.1.12(vue@3.5.22(typescript@5.9.3))
vue-json-pretty:
specifier: 2.5.0
- version: 2.5.0(vue@3.5.22(typescript@5.9.2))
+ version: 2.5.0(vue@3.5.22(typescript@5.9.3))
vue-pdf-embed:
specifier: 2.1.3
- version: 2.1.3(vue@3.5.22(typescript@5.9.2))
+ version: 2.1.3(vue@3.5.22(typescript@5.9.3))
vue-router:
- specifier: 4.5.1
- version: 4.5.1(vue@3.5.22(typescript@5.9.2))
+ specifier: 4.6.3
+ version: 4.6.3(vue@3.5.22(typescript@5.9.3))
vue-tippy:
specifier: 6.7.1
- version: 6.7.1(vue@3.5.22(typescript@5.9.2))
+ version: 6.7.1(vue@3.5.22(typescript@5.9.3))
vuedraggable-es:
specifier: 4.1.1
- version: 4.1.1(vue@3.5.22(typescript@5.9.2))
+ version: 4.1.1(vue@3.5.22(typescript@5.9.3))
wonka:
specifier: 6.3.5
version: 6.3.5
@@ -746,16 +750,16 @@ importers:
devDependencies:
'@esbuild-plugins/node-globals-polyfill':
specifier: 0.2.3
- version: 0.2.3(esbuild@0.25.10)
+ version: 0.2.3(esbuild@0.25.11)
'@esbuild-plugins/node-modules-polyfill':
specifier: 0.2.2
- version: 0.2.2(esbuild@0.25.10)
+ version: 0.2.2(esbuild@0.25.11)
'@graphql-codegen/add':
specifier: 5.0.3
version: 5.0.3(graphql@16.11.0)
'@graphql-codegen/cli':
specifier: 5.0.7
- version: 5.0.7(@parcel/watcher@2.5.1)(@types/node@24.5.2)(graphql@16.11.0)(typescript@5.9.2)
+ version: 5.0.7(@parcel/watcher@2.5.1)(@types/node@24.9.1)(graphql@16.11.0)(typescript@5.9.3)
'@graphql-codegen/typed-document-node':
specifier: 5.1.2
version: 5.1.2(graphql@16.11.0)
@@ -779,13 +783,13 @@ importers:
version: 1.2.68
'@intlify/unplugin-vue-i18n':
specifier: 6.0.8
- version: 6.0.8(@vue/compiler-dom@3.5.22)(eslint@8.57.0)(rollup@4.52.2)(typescript@5.9.2)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2))
+ version: 6.0.8(@vue/compiler-dom@3.5.22)(eslint@8.57.0)(rollup@4.52.5)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))
'@relmify/jest-fp-ts':
specifier: 2.1.1
version: 2.1.1(fp-ts@2.16.11)(io-ts@2.2.22(fp-ts@2.16.11))
'@rushstack/eslint-patch':
- specifier: 1.12.0
- version: 1.12.0
+ specifier: 1.14.0
+ version: 1.14.0
'@types/har-format':
specifier: 1.2.16
version: 1.2.16
@@ -809,7 +813,7 @@ importers:
version: 6.14.0
'@types/splitpanes':
specifier: 2.2.6
- version: 2.2.6(typescript@5.9.2)
+ version: 2.2.6(typescript@5.9.3)
'@types/uuid':
specifier: 10.0.0
version: 10.0.0
@@ -817,20 +821,20 @@ importers:
specifier: 21.0.3
version: 21.0.3
'@typescript-eslint/eslint-plugin':
- specifier: 8.44.1
- version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(typescript@5.9.2)
+ specifier: 8.46.2
+ version: 8.46.2(@typescript-eslint/parser@8.46.2(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(typescript@5.9.3)
'@typescript-eslint/parser':
- specifier: 8.44.1
- version: 8.44.1(eslint@8.57.0)(typescript@5.9.2)
+ specifier: 8.46.2
+ version: 8.46.2(eslint@8.57.0)(typescript@5.9.3)
'@vitejs/plugin-vue':
specifier: 5.1.4
- version: 5.1.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))
+ version: 5.1.4(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
'@vue/compiler-sfc':
specifier: 3.5.22
version: 3.5.22
'@vue/eslint-config-typescript':
specifier: 13.0.0
- version: 13.0.0(eslint-plugin-vue@10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0)))(eslint@8.57.0)(typescript@5.9.2)
+ version: 13.0.0(eslint-plugin-vue@10.5.1(@typescript-eslint/parser@8.46.2(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0)))(eslint@8.57.0)(typescript@5.9.3)
'@vue/runtime-core':
specifier: 3.5.22
version: 3.5.22
@@ -838,11 +842,11 @@ importers:
specifier: 10.4.21
version: 10.4.21(postcss@8.5.6)
cross-env:
- specifier: 10.0.0
- version: 10.0.0
+ specifier: 10.1.0
+ version: 10.1.0
dotenv:
- specifier: 17.2.2
- version: 17.2.2
+ specifier: 17.2.3
+ version: 17.2.3
eslint:
specifier: 8.57.0
version: 8.57.0
@@ -850,8 +854,8 @@ importers:
specifier: 5.5.4
version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@8.57.0))(eslint@8.57.0)(prettier@3.6.2)
eslint-plugin-vue:
- specifier: 10.5.0
- version: 10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0))
+ specifier: 10.5.1
+ version: 10.5.1(@typescript-eslint/parser@8.46.2(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0))
glob:
specifier: 11.0.3
version: 11.0.3
@@ -875,55 +879,55 @@ importers:
version: 0.6.14(prettier@3.6.2)
rollup-plugin-polyfill-node:
specifier: 0.13.0
- version: 0.13.0(rollup@4.52.2)
+ version: 0.13.0(rollup@4.52.5)
sass:
specifier: 1.93.2
version: 1.93.2
tailwindcss:
specifier: 3.4.16
- version: 3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
+ version: 3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
unplugin-fonts:
specifier: 1.4.0
- version: 1.4.0(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ version: 1.4.0(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
unplugin-icons:
specifier: 22.2.0
version: 22.2.0(@vue/compiler-sfc@3.5.22)(svelte@3.59.2)(vue-template-compiler@2.7.16)
unplugin-vue-components:
specifier: 29.0.0
- version: 29.0.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.2))
+ version: 29.0.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.3))
vite:
specifier: 6.3.6
- version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ version: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
vite-plugin-checker:
specifier: 0.10.3
- version: 0.10.3(eslint@8.57.0)(meow@13.2.0)(optionator@0.9.4)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-tsc@1.8.8(typescript@5.9.2))
+ version: 0.10.3(eslint@8.57.0)(meow@13.2.0)(optionator@0.9.4)(typescript@5.9.3)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-tsc@1.8.8(typescript@5.9.3))
vite-plugin-fonts:
specifier: 0.7.0
- version: 0.7.0(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ version: 0.7.0(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
vite-plugin-html-config:
specifier: 2.0.2
- version: 2.0.2(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ version: 2.0.2(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
vite-plugin-pages:
specifier: 0.33.1
- version: 0.33.1(@vue/compiler-sfc@3.5.22)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2)))
+ version: 0.33.1(@vue/compiler-sfc@3.5.22)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))
vite-plugin-pages-sitemap:
specifier: 1.7.1
version: 1.7.1
vite-plugin-pwa:
- specifier: 1.0.3
- version: 1.0.3(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.3.0)
+ specifier: 1.1.0
+ version: 1.1.0(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.3.0)
vite-plugin-vue-layouts:
specifier: 0.11.0
- version: 0.11.0(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2))
+ version: 0.11.0(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))
vitest:
specifier: 3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.0)(jsdom@26.1.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@24.9.1)(jiti@2.6.0)(jsdom@26.1.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
vue-tsc:
specifier: 1.8.8
- version: 1.8.8(typescript@5.9.2)
+ version: 1.8.8(typescript@5.9.3)
packages/hoppscotch-data:
dependencies:
@@ -959,11 +963,11 @@ importers:
specifier: 10.0.0
version: 10.0.0
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
vite:
specifier: 6.3.6
- version: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ version: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
packages/hoppscotch-desktop:
dependencies:
@@ -987,7 +991,7 @@ importers:
version: '@CuriousCorrelation/plugin-appload@https://codeload.github.com/CuriousCorrelation/tauri-plugin-appload/tar.gz/e05861959938b57479a1a81fa796735ebbd08c7c'
'@hoppscotch/ui':
specifier: 0.2.5
- version: 0.2.5(eslint@8.57.0)(terser@5.39.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))
+ version: 0.2.5(eslint@8.57.0)(terser@5.39.2)(typescript@5.9.3)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
'@tauri-apps/api':
specifier: 2.1.1
version: 2.1.1
@@ -1008,7 +1012,7 @@ importers:
version: 2.5.1
'@vueuse/core':
specifier: 13.7.0
- version: 13.7.0(vue@3.5.22(typescript@5.9.2))
+ version: 13.7.0(vue@3.5.22(typescript@5.9.3))
fp-ts:
specifier: 2.16.11
version: 2.16.11
@@ -1017,13 +1021,13 @@ importers:
version: 7.8.2
vue:
specifier: 3.5.22
- version: 3.5.22(typescript@5.9.2)
+ version: 3.5.22(typescript@5.9.3)
vue-router:
- specifier: 4.5.1
- version: 4.5.1(vue@3.5.22(typescript@5.9.2))
+ specifier: 4.6.3
+ version: 4.6.3(vue@3.5.22(typescript@5.9.3))
vue-tippy:
specifier: 6.7.1
- version: 6.7.1(vue@3.5.22(typescript@5.9.2))
+ version: 6.7.1(vue@3.5.22(typescript@5.9.3))
zod:
specifier: 3.25.32
version: 3.25.32
@@ -1032,23 +1036,23 @@ importers:
specifier: 1.2.68
version: 1.2.68
'@rushstack/eslint-patch':
- specifier: 1.12.0
- version: 1.12.0
+ specifier: 1.14.0
+ version: 1.14.0
'@tauri-apps/cli':
specifier: ^2
version: 2.0.4
'@typescript-eslint/eslint-plugin':
specifier: 8.44.1
- version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(typescript@5.9.2)
+ version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(typescript@5.9.3)
'@typescript-eslint/parser':
specifier: 8.44.1
- version: 8.44.1(eslint@8.57.0)(typescript@5.9.2)
+ version: 8.44.1(eslint@8.57.0)(typescript@5.9.3)
'@vitejs/plugin-vue':
specifier: 5.1.4
- version: 5.1.4(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))
+ version: 5.1.4(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
'@vue/eslint-config-typescript':
specifier: 13.0.0
- version: 13.0.0(eslint-plugin-vue@10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0)))(eslint@8.57.0)(typescript@5.9.2)
+ version: 13.0.0(eslint-plugin-vue@10.5.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0)))(eslint@8.57.0)(typescript@5.9.3)
autoprefixer:
specifier: 10.4.21
version: 10.4.21(postcss@8.5.6)
@@ -1059,8 +1063,8 @@ importers:
specifier: 5.5.4
version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@8.57.0))(eslint@8.57.0)(prettier@3.6.2)
eslint-plugin-vue:
- specifier: 10.5.0
- version: 10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0))
+ specifier: 10.5.1
+ version: 10.5.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0))
postcss:
specifier: 8.5.6
version: 8.5.6
@@ -1069,22 +1073,22 @@ importers:
version: 1.93.2
tailwindcss:
specifier: 3.4.16
- version: 3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
+ version: 3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
unplugin-icons:
specifier: 22.2.0
version: 22.2.0(@vue/compiler-sfc@3.5.22)(svelte@3.59.2)(vue-template-compiler@2.7.16)
unplugin-vue-components:
specifier: 29.0.0
- version: 29.0.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.2))
+ version: 29.0.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.3))
vite:
specifier: 6.3.5
- version: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ version: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
vue-tsc:
specifier: 2.2.0
- version: 2.2.0(typescript@5.9.2)
+ version: 2.2.0(typescript@5.9.3)
packages/hoppscotch-desktop/plugin-workspace/tauri-plugin-appload:
dependencies:
@@ -1094,16 +1098,16 @@ importers:
devDependencies:
'@rollup/plugin-typescript':
specifier: ^11.1.6
- version: 11.1.6(rollup@4.52.2)(tslib@2.8.0)(typescript@5.9.2)
+ version: 11.1.6(rollup@4.52.5)(tslib@2.8.0)(typescript@5.9.3)
rollup:
- specifier: ^4.52.2
- version: 4.52.2
+ specifier: ^4.52.5
+ version: 4.52.5
tslib:
specifier: ^2.6.2
version: 2.8.0
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
packages/hoppscotch-desktop/plugin-workspace/tauri-plugin-appload/examples/tauri-app:
dependencies:
@@ -1116,7 +1120,7 @@ importers:
devDependencies:
'@sveltejs/vite-plugin-svelte':
specifier: ^1.0.1
- version: 1.4.0(svelte@3.59.2)(vite@3.2.11(@types/node@24.5.2)(sass@1.93.2)(terser@5.39.2))
+ version: 1.4.0(svelte@3.59.2)(vite@3.2.11(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))
'@tauri-apps/cli':
specifier: ^2.0.0-alpha.17
version: 2.0.4
@@ -1125,7 +1129,7 @@ importers:
version: 3.59.2
vite:
specifier: ^3.0.2
- version: 3.2.11(@types/node@24.5.2)(sass@1.93.2)(terser@5.39.2)
+ version: 3.2.11(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
packages/hoppscotch-desktop/plugin-workspace/tauri-plugin-relay:
dependencies:
@@ -1135,16 +1139,16 @@ importers:
devDependencies:
'@rollup/plugin-typescript':
specifier: ^11.1.6
- version: 11.1.6(rollup@4.52.2)(tslib@2.8.0)(typescript@5.9.2)
+ version: 11.1.6(rollup@4.52.5)(tslib@2.8.0)(typescript@5.9.3)
rollup:
- specifier: ^4.52.2
- version: 4.52.2
+ specifier: ^4.52.5
+ version: 4.52.5
tslib:
specifier: ^2.6.2
version: 2.8.0
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
packages/hoppscotch-js-sandbox:
dependencies:
@@ -1154,6 +1158,9 @@ importers:
'@types/lodash-es':
specifier: 4.17.12
version: 4.17.12
+ chai:
+ specifier: 6.2.0
+ version: 6.2.0
faraday-cage:
specifier: 0.1.0
version: 0.1.0
@@ -1176,6 +1183,9 @@ importers:
'@relmify/jest-fp-ts':
specifier: 2.1.1
version: 2.1.1(fp-ts@2.16.11)(io-ts@2.2.22(fp-ts@2.16.11))
+ '@types/chai':
+ specifier: 5.2.2
+ version: 5.2.2
'@types/jest':
specifier: 30.0.0
version: 30.0.0
@@ -1183,14 +1193,14 @@ importers:
specifier: 4.17.20
version: 4.17.20
'@types/node':
- specifier: 24.3.0
- version: 24.3.0
+ specifier: 24.9.1
+ version: 24.9.1
'@typescript-eslint/eslint-plugin':
specifier: 8.44.1
- version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(typescript@5.9.2)
+ version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(typescript@5.9.3)
'@typescript-eslint/parser':
specifier: 8.44.1
- version: 8.44.1(eslint@8.57.0)(typescript@5.9.2)
+ version: 8.44.1(eslint@8.57.0)(typescript@5.9.3)
eslint:
specifier: 8.57.0
version: 8.57.0
@@ -1207,20 +1217,20 @@ importers:
specifier: 3.6.2
version: 3.6.2
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
vite:
specifier: 6.3.6
- version: 6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ version: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
vitest:
specifier: 3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.6.0)(jsdom@26.1.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@24.9.1)(jiti@2.6.0)(jsdom@26.1.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
packages/hoppscotch-kernel:
dependencies:
'@hoppscotch/plugin-relay':
- specifier: github:CuriousCorrelation/tauri-plugin-relay#5d59b97fe331ca62e8be0454ff3f4e5f6185ae70
- version: '@CuriousCorrelation/plugin-relay@https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/5d59b97fe331ca62e8be0454ff3f4e5f6185ae70'
+ specifier: github:CuriousCorrelation/tauri-plugin-relay#7cf09c1ad31e228758738c2f4e1c8fe9cc141291
+ version: '@CuriousCorrelation/plugin-relay@https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/7cf09c1ad31e228758738c2f4e1c8fe9cc141291'
'@tauri-apps/api':
specifier: 2.1.1
version: 2.1.1
@@ -1246,21 +1256,21 @@ importers:
specifier: 2.16.11
version: 2.16.11
superjson:
- specifier: 2.2.2
- version: 2.2.2
+ specifier: 2.2.3
+ version: 2.2.3
zod:
specifier: 3.25.32
version: 3.25.32
devDependencies:
'@types/node':
- specifier: 24.3.0
- version: 24.3.0
+ specifier: 24.9.1
+ version: 24.9.1
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
vite:
specifier: 6.3.5
- version: 6.3.5(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ version: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
packages/hoppscotch-selfhost-desktop:
dependencies:
@@ -1290,7 +1300,7 @@ importers:
version: 1.5.6
'@vueuse/core':
specifier: 10.5.0
- version: 10.5.0(vue@3.5.22(typescript@5.8.3))
+ version: 10.5.0(vue@3.5.22(typescript@5.9.3))
axios:
specifier: 1.8.2
version: 1.8.2
@@ -1299,7 +1309,7 @@ importers:
version: 6.0.3
dioc:
specifier: 3.0.2
- version: 3.0.2(vue@3.5.22(typescript@5.8.3))
+ version: 3.0.2(vue@3.5.22(typescript@5.9.3))
environments.api:
specifier: link:@platform/environments/environments.api
version: link:@platform/environments/environments.api
@@ -1338,7 +1348,7 @@ importers:
version: 0.3.0(zod@3.25.32)
vue:
specifier: 3.5.22
- version: 3.5.22(typescript@5.8.3)
+ version: 3.5.22(typescript@5.9.3)
workbox-window:
specifier: 6.6.0
version: 6.6.0
@@ -1351,7 +1361,7 @@ importers:
version: 5.0.0(graphql@16.11.0)
'@graphql-codegen/cli':
specifier: 5.0.0
- version: 5.0.0(@parcel/watcher@2.5.1)(@types/node@18.18.8)(graphql@16.11.0)(typescript@5.8.3)
+ version: 5.0.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(graphql@16.11.0)(typescript@5.9.3)
'@graphql-codegen/typed-document-node':
specifier: 5.0.1
version: 5.0.1(graphql@16.11.0)
@@ -1375,40 +1385,40 @@ importers:
version: 1.2.68
'@intlify/unplugin-vue-i18n':
specifier: 6.0.4
- version: 6.0.4(@vue/compiler-dom@3.5.22)(eslint@8.47.0)(rollup@2.79.2)(typescript@5.8.3)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.8.3)))(vue@3.5.22(typescript@5.8.3))(webpack-sources@3.3.3)
+ version: 6.0.4(@vue/compiler-dom@3.5.22)(eslint@8.47.0)(rollup@2.79.2)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))(webpack-sources@3.3.3)
'@rushstack/eslint-patch':
- specifier: 1.3.3
- version: 1.3.3
+ specifier: 1.14.0
+ version: 1.14.0
'@types/lodash-es':
specifier: 4.17.10
version: 4.17.10
'@types/node':
- specifier: 18.18.8
- version: 18.18.8
+ specifier: 24.9.1
+ version: 24.9.1
'@typescript-eslint/eslint-plugin':
specifier: 8.44.1
- version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.8.3))(eslint@8.47.0)(typescript@5.8.3)
+ version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.9.3))(eslint@8.47.0)(typescript@5.9.3)
'@typescript-eslint/parser':
specifier: 8.44.1
- version: 8.44.1(eslint@8.47.0)(typescript@5.8.3)
+ version: 8.44.1(eslint@8.47.0)(typescript@5.9.3)
'@vitejs/plugin-legacy':
specifier: 2.3.0
- version: 2.3.0(terser@5.39.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))
+ version: 2.3.0(terser@5.39.2)(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))
'@vitejs/plugin-vue':
specifier: 4.3.1
- version: 4.3.1(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))(vue@3.5.22(typescript@5.8.3))
+ version: 4.3.1(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))(vue@3.5.22(typescript@5.9.3))
'@vue/eslint-config-typescript':
specifier: 11.0.3
- version: 11.0.3(eslint-plugin-vue@10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.8.3))(eslint@8.47.0)(vue-eslint-parser@10.2.0(eslint@8.47.0)))(eslint@8.47.0)(typescript@5.8.3)
+ version: 11.0.3(eslint-plugin-vue@10.5.1(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.9.3))(eslint@8.47.0)(vue-eslint-parser@10.2.0(eslint@8.47.0)))(eslint@8.47.0)(typescript@5.9.3)
autoprefixer:
specifier: 10.4.16
version: 10.4.16(postcss@8.4.32)
cross-env:
- specifier: 7.0.3
- version: 7.0.3
+ specifier: 10.1.0
+ version: 10.1.0
dotenv:
- specifier: 17.2.2
- version: 17.2.2
+ specifier: 17.2.3
+ version: 17.2.3
eslint:
specifier: 8.47.0
version: 8.47.0
@@ -1416,8 +1426,8 @@ importers:
specifier: 4.2.1
version: 4.2.1(eslint@8.47.0)(prettier@3.6.2)
eslint-plugin-vue:
- specifier: 10.5.0
- version: 10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.8.3))(eslint@8.47.0)(vue-eslint-parser@10.2.0(eslint@8.47.0))
+ specifier: 10.5.1
+ version: 10.5.1(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.9.3))(eslint@8.47.0)(vue-eslint-parser@10.2.0(eslint@8.47.0))
npm-run-all:
specifier: 4.1.5
version: 4.1.5
@@ -1426,46 +1436,46 @@ importers:
version: 8.4.32
tailwindcss:
specifier: 3.3.6
- version: 3.3.6(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.8.3))
+ version: 3.3.6(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
typescript:
- specifier: 5.8.3
- version: 5.8.3
+ specifier: 5.9.3
+ version: 5.9.3
unplugin-fonts:
specifier: 1.1.1
- version: 1.1.1(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))
+ version: 1.1.1(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))
unplugin-icons:
specifier: 0.14.9
version: 0.14.9(@vue/compiler-sfc@3.5.22)(vue-template-compiler@2.7.16)
unplugin-vue-components:
specifier: 0.21.0
- version: 0.21.0(@babel/parser@7.28.4)(esbuild@0.25.10)(rollup@2.79.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))(vue@3.5.22(typescript@5.8.3))(webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.10))
+ version: 0.21.0(@babel/parser@7.28.4)(esbuild@0.25.11)(rollup@2.79.2)(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))(vue@3.5.22(typescript@5.9.3))(webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.11))
vite:
specifier: 4.5.0
- version: 4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)
+ version: 4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
vite-plugin-html-config:
specifier: 1.0.11
- version: 1.0.11(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))
+ version: 1.0.11(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))
vite-plugin-inspect:
specifier: 0.7.38
- version: 0.7.38(rollup@2.79.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))
+ version: 0.7.38(rollup@2.79.2)(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))
vite-plugin-pages:
specifier: 0.26.0
- version: 0.26.0(@vue/compiler-sfc@3.5.22)(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))
+ version: 0.26.0(@vue/compiler-sfc@3.5.22)(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))
vite-plugin-pages-sitemap:
specifier: 1.6.1
version: 1.6.1
vite-plugin-pwa:
- specifier: 0.13.1
- version: 0.13.1(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@6.6.0)
+ specifier: 1.1.0
+ version: 1.1.0(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@6.6.0)
vite-plugin-static-copy:
specifier: 0.12.0
- version: 0.12.0(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))
+ version: 0.12.0(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))
vite-plugin-vue-layouts:
specifier: 0.7.0
- version: 0.7.0(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))(vue-router@4.5.1(vue@3.5.22(typescript@5.8.3)))(vue@3.5.22(typescript@5.8.3))
+ version: 0.7.0(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))
vue-tsc:
specifier: 1.8.8
- version: 1.8.8(typescript@5.8.3)
+ version: 1.8.8(typescript@5.9.3)
packages/hoppscotch-selfhost-web:
dependencies:
@@ -1489,7 +1499,7 @@ importers:
version: link:../hoppscotch-kernel
'@hoppscotch/ui':
specifier: 0.2.5
- version: 0.2.5(eslint@8.57.0)(terser@5.39.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))
+ version: 0.2.5(eslint@8.57.0)(terser@5.39.2)(typescript@5.9.3)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
'@import-meta-env/unplugin':
specifier: 0.6.2
version: 0.6.2(@import-meta-env/cli@0.7.3)
@@ -1507,7 +1517,7 @@ importers:
version: 2.2.1
'@vueuse/core':
specifier: 13.7.0
- version: 13.7.0(vue@3.5.22(typescript@5.9.2))
+ version: 13.7.0(vue@3.5.22(typescript@5.9.3))
axios:
specifier: 1.12.2
version: 1.12.2
@@ -1516,7 +1526,7 @@ importers:
version: 6.0.3
dioc:
specifier: 3.0.2
- version: 3.0.2(vue@3.5.22(typescript@5.9.2))
+ version: 3.0.2(vue@3.5.22(typescript@5.9.3))
fp-ts:
specifier: 2.16.11
version: 2.16.11
@@ -1537,7 +1547,7 @@ importers:
version: 0.4.0(zod@3.25.32)
vue:
specifier: 3.5.22
- version: 3.5.22(typescript@5.9.2)
+ version: 3.5.22(typescript@5.9.3)
workbox-window:
specifier: 7.3.0
version: 7.3.0
@@ -1550,7 +1560,7 @@ importers:
version: 5.0.3(graphql@16.11.0)
'@graphql-codegen/cli':
specifier: 5.0.7
- version: 5.0.7(@parcel/watcher@2.5.1)(@types/node@24.5.2)(graphql@16.11.0)(typescript@5.9.2)
+ version: 5.0.7(@parcel/watcher@2.5.1)(@types/node@24.9.1)(graphql@16.11.0)(typescript@5.9.3)
'@graphql-codegen/typed-document-node':
specifier: 5.1.2
version: 5.1.2(graphql@16.11.0)
@@ -1574,34 +1584,34 @@ importers:
version: 1.2.68
'@intlify/unplugin-vue-i18n':
specifier: 6.0.8
- version: 6.0.8(@vue/compiler-dom@3.5.22)(eslint@8.57.0)(rollup@4.52.2)(typescript@5.9.2)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2))
+ version: 6.0.8(@vue/compiler-dom@3.5.22)(eslint@8.57.0)(rollup@4.52.5)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))
'@rushstack/eslint-patch':
- specifier: 1.12.0
- version: 1.12.0
+ specifier: 1.14.0
+ version: 1.14.0
'@typescript-eslint/eslint-plugin':
specifier: 8.44.1
- version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(typescript@5.9.2)
+ version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(typescript@5.9.3)
'@typescript-eslint/parser':
specifier: 8.44.1
- version: 8.44.1(eslint@8.57.0)(typescript@5.9.2)
+ version: 8.44.1(eslint@8.57.0)(typescript@5.9.3)
'@vitejs/plugin-legacy':
specifier: 5.4.2
- version: 5.4.2(terser@5.39.2)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ version: 5.4.2(terser@5.39.2)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
'@vitejs/plugin-vue':
specifier: 5.1.4
- version: 5.1.4(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))
+ version: 5.1.4(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
'@vue/eslint-config-typescript':
specifier: 13.0.0
- version: 13.0.0(eslint-plugin-vue@10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0)))(eslint@8.57.0)(typescript@5.9.2)
+ version: 13.0.0(eslint-plugin-vue@10.5.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0)))(eslint@8.57.0)(typescript@5.9.3)
autoprefixer:
specifier: 10.4.21
version: 10.4.21(postcss@8.5.6)
cross-env:
- specifier: 10.0.0
- version: 10.0.0
+ specifier: 10.1.0
+ version: 10.1.0
dotenv:
- specifier: 17.2.2
- version: 17.2.2
+ specifier: 17.2.3
+ version: 17.2.3
eslint:
specifier: 8.57.0
version: 8.57.0
@@ -1609,8 +1619,8 @@ importers:
specifier: 5.5.4
version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@8.57.0))(eslint@8.57.0)(prettier@3.6.2)
eslint-plugin-vue:
- specifier: 10.5.0
- version: 10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0))
+ specifier: 10.5.1
+ version: 10.5.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0))
npm-run-all:
specifier: 4.1.5
version: 4.1.5
@@ -1622,49 +1632,49 @@ importers:
version: 0.6.14(prettier@3.6.2)
tailwindcss:
specifier: 3.4.16
- version: 3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
+ version: 3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
unplugin-fonts:
specifier: 1.4.0
- version: 1.4.0(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ version: 1.4.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
unplugin-icons:
specifier: 22.2.0
version: 22.2.0(@vue/compiler-sfc@3.5.22)(svelte@3.59.2)(vue-template-compiler@2.7.16)
unplugin-vue-components:
specifier: 29.0.0
- version: 29.0.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.2))
+ version: 29.0.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.3))
vite:
specifier: 6.3.5
- version: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ version: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
vite-plugin-fonts:
specifier: 0.7.0
- version: 0.7.0(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ version: 0.7.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
vite-plugin-html-config:
specifier: 2.0.2
- version: 2.0.2(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ version: 2.0.2(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
vite-plugin-inspect:
specifier: 11.3.3
- version: 11.3.3(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ version: 11.3.3(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
vite-plugin-pages:
specifier: 0.33.1
- version: 0.33.1(@vue/compiler-sfc@3.5.22)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2)))
+ version: 0.33.1(@vue/compiler-sfc@3.5.22)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))
vite-plugin-pages-sitemap:
specifier: 1.7.1
version: 1.7.1
vite-plugin-pwa:
- specifier: 1.0.3
- version: 1.0.3(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.3.0)
+ specifier: 1.1.0
+ version: 1.1.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.3.0)
vite-plugin-static-copy:
- specifier: 3.1.2
- version: 3.1.2(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ specifier: 3.1.4
+ version: 3.1.4(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
vite-plugin-vue-layouts:
specifier: 0.11.0
- version: 0.11.0(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2))
+ version: 0.11.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))
vue-tsc:
specifier: 2.1.6
- version: 2.1.6(typescript@5.9.2)
+ version: 2.1.6(typescript@5.9.3)
packages/hoppscotch-sh-admin:
dependencies:
@@ -1682,13 +1692,13 @@ importers:
version: 3.2.0(graphql@16.11.0)
'@hoppscotch/ui':
specifier: 0.2.5
- version: 0.2.5(eslint@9.36.0(jiti@2.6.0))(terser@5.39.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))
+ version: 0.2.5(eslint@9.37.0(jiti@2.6.0))(terser@5.39.2)(typescript@5.9.3)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
'@hoppscotch/vue-toasted':
specifier: 0.1.0
- version: 0.1.0(vue@3.5.22(typescript@5.9.2))
+ version: 0.1.0(vue@3.5.22(typescript@5.9.3))
'@intlify/unplugin-vue-i18n':
specifier: 6.0.8
- version: 6.0.8(@vue/compiler-dom@3.5.22)(eslint@9.36.0(jiti@2.6.0))(rollup@4.52.2)(typescript@5.9.2)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2))
+ version: 6.0.8(@vue/compiler-dom@3.5.22)(eslint@9.37.0(jiti@2.6.0))(rollup@4.52.5)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))
'@types/cors':
specifier: 2.8.19
version: 2.8.19
@@ -1697,10 +1707,10 @@ importers:
version: 3.0.0(@urql/core@6.0.1(graphql@16.11.0))
'@urql/vue':
specifier: 2.0.0
- version: 2.0.0(@urql/core@6.0.1(graphql@16.11.0))(vue@3.5.22(typescript@5.9.2))
+ version: 2.0.0(@urql/core@6.0.1(graphql@16.11.0))(vue@3.5.22(typescript@5.9.3))
'@vueuse/core':
specifier: 13.7.0
- version: 13.7.0(vue@3.5.22(typescript@5.9.2))
+ version: 13.7.0(vue@3.5.22(typescript@5.9.3))
axios:
specifier: 1.12.2
version: 1.12.2
@@ -1733,35 +1743,35 @@ importers:
version: 7.8.2
tailwindcss:
specifier: 3.4.16
- version: 3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
+ version: 3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
tippy.js:
specifier: 6.3.7
version: 6.3.7
ts-node-dev:
specifier: 2.0.0
- version: 2.0.0(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)
+ version: 2.0.0(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)
unplugin-icons:
specifier: 22.2.0
version: 22.2.0(@vue/compiler-sfc@3.5.22)(svelte@3.59.2)(vue-template-compiler@2.7.16)
unplugin-vue-components:
specifier: 29.0.0
- version: 29.0.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.2))
+ version: 29.0.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.3))
vue:
specifier: 3.5.22
- version: 3.5.22(typescript@5.9.2)
+ version: 3.5.22(typescript@5.9.3)
vue-i18n:
specifier: 11.1.12
- version: 11.1.12(vue@3.5.22(typescript@5.9.2))
+ version: 11.1.12(vue@3.5.22(typescript@5.9.3))
vue-router:
- specifier: 4.5.1
- version: 4.5.1(vue@3.5.22(typescript@5.9.2))
+ specifier: 4.6.3
+ version: 4.6.3(vue@3.5.22(typescript@5.9.3))
vue-tippy:
specifier: 6.7.1
- version: 6.7.1(vue@3.5.22(typescript@5.9.2))
+ version: 6.7.1(vue@3.5.22(typescript@5.9.3))
devDependencies:
'@graphql-codegen/cli':
specifier: 5.0.7
- version: 5.0.7(@parcel/watcher@2.5.1)(@types/node@24.5.2)(graphql@16.11.0)(typescript@5.9.2)
+ version: 5.0.7(@parcel/watcher@2.5.1)(@types/node@24.9.1)(graphql@16.11.0)(typescript@5.9.3)
'@graphql-codegen/client-preset':
specifier: 4.8.3
version: 4.8.3(graphql@16.11.0)
@@ -1797,7 +1807,7 @@ importers:
version: 4.17.12
'@vitejs/plugin-vue':
specifier: 5.1.4
- version: 5.1.4(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))
+ version: 5.1.4(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
'@vue/compiler-sfc':
specifier: 3.5.22
version: 3.5.22
@@ -1805,8 +1815,8 @@ importers:
specifier: 10.4.21
version: 10.4.21(postcss@8.5.6)
dotenv:
- specifier: 17.2.2
- version: 17.2.2
+ specifier: 17.2.3
+ version: 17.2.3
graphql-tag:
specifier: 2.12.6
version: 2.12.6(graphql@16.11.0)
@@ -1821,25 +1831,25 @@ importers:
version: 1.93.2
ts-node:
specifier: 10.9.2
- version: 10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)
+ version: 10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)
typescript:
- specifier: 5.9.2
- version: 5.9.2
+ specifier: 5.9.3
+ version: 5.9.3
unplugin-fonts:
specifier: 1.4.0
- version: 1.4.0(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ version: 1.4.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
vite:
specifier: 6.3.5
- version: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ version: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
vite-plugin-pages:
specifier: 0.33.1
- version: 0.33.1(@vue/compiler-sfc@3.5.22)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2)))
+ version: 0.33.1(@vue/compiler-sfc@3.5.22)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))
vite-plugin-vue-layouts:
specifier: 0.11.0
- version: 0.11.0(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2))
+ version: 0.11.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))
vue-tsc:
specifier: 2.1.6
- version: 2.1.6(typescript@5.9.2)
+ version: 2.1.6(typescript@5.9.3)
packages:
@@ -1855,8 +1865,8 @@ packages:
resolution: {tarball: https://codeload.github.com/CuriousCorrelation/tauri-plugin-appload/tar.gz/e05861959938b57479a1a81fa796735ebbd08c7c}
version: 0.1.0
- '@CuriousCorrelation/plugin-relay@https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/5d59b97fe331ca62e8be0454ff3f4e5f6185ae70':
- resolution: {tarball: https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/5d59b97fe331ca62e8be0454ff3f4e5f6185ae70}
+ '@CuriousCorrelation/plugin-relay@https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/7cf09c1ad31e228758738c2f4e1c8fe9cc141291':
+ resolution: {tarball: https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/7cf09c1ad31e228758738c2f4e1c8fe9cc141291}
version: 0.1.0
'@alloc/quick-lru@5.2.0':
@@ -1876,6 +1886,15 @@ packages:
chokidar:
optional: true
+ '@angular-devkit/core@19.2.17':
+ resolution: {integrity: sha512-Ah008x2RJkd0F+NLKqIpA34/vUGwjlprRCkvddjDopAWRzYn6xCkz1Tqwuhn0nR1Dy47wTLKYD999TYl5ONOAQ==}
+ engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ peerDependencies:
+ chokidar: ^4.0.0
+ peerDependenciesMeta:
+ chokidar:
+ optional: true
+
'@angular-devkit/schematics-cli@19.2.15':
resolution: {integrity: sha512-1ESFmFGMpGQmalDB3t2EtmWDGv6gOFYBMxmHO2f1KI/UDl8UmZnCGL4mD3EWo8Hv0YIsZ9wOH9Q7ZHNYjeSpzg==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
@@ -1885,6 +1904,10 @@ packages:
resolution: {integrity: sha512-kNOJ+3vekJJCQKWihNmxBkarJzNW09kP5a9E1SRNiQVNOUEeSwcRR0qYotM65nx821gNzjjhJXnAZ8OazWldrg==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ '@angular-devkit/schematics@19.2.17':
+ resolution: {integrity: sha512-ADfbaBsrG8mBF6Mfs+crKA/2ykB8AJI50Cv9tKmZfwcUcyAdmTr+vVvhsBCfvUAEokigSsgqgpYxfkJVxhJYeg==}
+ engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+
'@antfu/install-pkg@0.1.1':
resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==}
@@ -1930,8 +1953,8 @@ packages:
peerDependencies:
openapi-types: '>=7'
- '@apidevtools/swagger-parser@12.0.0':
- resolution: {integrity: sha512-WLJIWcfOXrSKlZEM+yhA2Xzatgl488qr1FoOxixYmtWapBzwSC0gVGq4WObr4hHClMIiFFdOBdixNkvWqkWIWA==}
+ '@apidevtools/swagger-parser@12.1.0':
+ resolution: {integrity: sha512-e5mJoswsnAX0jG+J09xHFYQXb/bUc5S3pLpMxUuRUA2H8T2kni3yEoyz2R3Dltw5f4A6j6rPNMpWTK+iVDFlng==}
peerDependencies:
openapi-types: '>=7'
@@ -2046,6 +2069,13 @@ packages:
resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==}
engines: {node: '>=14'}
+ '@as-integrations/express5@1.1.2':
+ resolution: {integrity: sha512-BxfwtcWNf2CELDkuPQxi5Zl3WqY/dQVJYafeCBOGoFQjv5M0fjhxmAFZ9vKx/5YKKNeok4UY6PkFbHzmQrdxIA==}
+ engines: {node: '>=20'}
+ peerDependencies:
+ '@apollo/server': ^4.0.0 || ^5.0.0
+ express: ^5.0.0
+
'@asamuzakjp/css-color@3.2.0':
resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==}
@@ -2202,10 +2232,6 @@ packages:
resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==}
engines: {node: '>=6.9.0'}
- '@babel/core@7.28.3':
- resolution: {integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==}
- engines: {node: '>=6.9.0'}
-
'@babel/core@7.28.4':
resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==}
engines: {node: '>=6.9.0'}
@@ -2412,10 +2438,6 @@ packages:
resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==}
engines: {node: '>=6.9.0'}
- '@babel/helpers@7.28.3':
- resolution: {integrity: sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==}
- engines: {node: '>=6.9.0'}
-
'@babel/helpers@7.28.4':
resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
engines: {node: '>=6.9.0'}
@@ -3325,10 +3347,6 @@ packages:
resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==}
engines: {node: '>=6.9.0'}
- '@babel/traverse@7.28.3':
- resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==}
- engines: {node: '>=6.9.0'}
-
'@babel/traverse@7.28.4':
resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==}
engines: {node: '>=6.9.0'}
@@ -3393,73 +3411,73 @@ packages:
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
engines: {node: '>=0.1.90'}
- '@commitlint/cli@19.8.1':
- resolution: {integrity: sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==}
+ '@commitlint/cli@20.1.0':
+ resolution: {integrity: sha512-pW5ujjrOovhq5RcYv5xCpb4GkZxkO2+GtOdBW2/qrr0Ll9tl3PX0aBBobGQl3mdZUbOBgwAexEQLeH6uxL0VYg==}
engines: {node: '>=v18'}
hasBin: true
- '@commitlint/config-conventional@19.8.1':
- resolution: {integrity: sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==}
+ '@commitlint/config-conventional@20.0.0':
+ resolution: {integrity: sha512-q7JroPIkDBtyOkVe9Bca0p7kAUYxZMxkrBArCfuD3yN4KjRAenP9PmYwnn7rsw8Q+hHq1QB2BRmBh0/Z19ZoJw==}
engines: {node: '>=v18'}
- '@commitlint/config-validator@19.8.1':
- resolution: {integrity: sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==}
+ '@commitlint/config-validator@20.0.0':
+ resolution: {integrity: sha512-BeyLMaRIJDdroJuYM2EGhDMGwVBMZna9UiIqV9hxj+J551Ctc6yoGuGSmghOy/qPhBSuhA6oMtbEiTmxECafsg==}
engines: {node: '>=v18'}
- '@commitlint/ensure@19.8.1':
- resolution: {integrity: sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==}
+ '@commitlint/ensure@20.0.0':
+ resolution: {integrity: sha512-WBV47Fffvabe68n+13HJNFBqiMH5U1Ryls4W3ieGwPC0C7kJqp3OVQQzG2GXqOALmzrgAB+7GXmyy8N9ct8/Fg==}
engines: {node: '>=v18'}
- '@commitlint/execute-rule@19.8.1':
- resolution: {integrity: sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==}
+ '@commitlint/execute-rule@20.0.0':
+ resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==}
engines: {node: '>=v18'}
- '@commitlint/format@19.8.1':
- resolution: {integrity: sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==}
+ '@commitlint/format@20.0.0':
+ resolution: {integrity: sha512-zrZQXUcSDmQ4eGGrd+gFESiX0Rw+WFJk7nW4VFOmxub4mAATNKBQ4vNw5FgMCVehLUKG2OT2LjOqD0Hk8HvcRg==}
engines: {node: '>=v18'}
- '@commitlint/is-ignored@19.8.1':
- resolution: {integrity: sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==}
+ '@commitlint/is-ignored@20.0.0':
+ resolution: {integrity: sha512-ayPLicsqqGAphYIQwh9LdAYOVAQ9Oe5QCgTNTj+BfxZb9b/JW222V5taPoIBzYnAP0z9EfUtljgBk+0BN4T4Cw==}
engines: {node: '>=v18'}
- '@commitlint/lint@19.8.1':
- resolution: {integrity: sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==}
+ '@commitlint/lint@20.0.0':
+ resolution: {integrity: sha512-kWrX8SfWk4+4nCexfLaQT3f3EcNjJwJBsSZ5rMBw6JCd6OzXufFHgel2Curos4LKIxwec9WSvs2YUD87rXlxNQ==}
engines: {node: '>=v18'}
- '@commitlint/load@19.8.1':
- resolution: {integrity: sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==}
+ '@commitlint/load@20.1.0':
+ resolution: {integrity: sha512-qo9ER0XiAimATQR5QhvvzePfeDfApi/AFlC1G+YN+ZAY8/Ua6IRrDrxRvQAr+YXUKAxUsTDSp9KXeXLBPsNRWg==}
engines: {node: '>=v18'}
- '@commitlint/message@19.8.1':
- resolution: {integrity: sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==}
+ '@commitlint/message@20.0.0':
+ resolution: {integrity: sha512-gLX4YmKnZqSwkmSB9OckQUrI5VyXEYiv3J5JKZRxIp8jOQsWjZgHSG/OgEfMQBK9ibdclEdAyIPYggwXoFGXjQ==}
engines: {node: '>=v18'}
- '@commitlint/parse@19.8.1':
- resolution: {integrity: sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==}
+ '@commitlint/parse@20.0.0':
+ resolution: {integrity: sha512-j/PHCDX2bGM5xGcWObOvpOc54cXjn9g6xScXzAeOLwTsScaL4Y+qd0pFC6HBwTtrH92NvJQc+2Lx9HFkVi48cg==}
engines: {node: '>=v18'}
- '@commitlint/read@19.8.1':
- resolution: {integrity: sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==}
+ '@commitlint/read@20.0.0':
+ resolution: {integrity: sha512-Ti7Y7aEgxsM1nkwA4ZIJczkTFRX/+USMjNrL9NXwWQHqNqrBX2iMi+zfuzZXqfZ327WXBjdkRaytJ+z5vNqTOA==}
engines: {node: '>=v18'}
- '@commitlint/resolve-extends@19.8.1':
- resolution: {integrity: sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==}
+ '@commitlint/resolve-extends@20.1.0':
+ resolution: {integrity: sha512-cxKXQrqHjZT3o+XPdqDCwOWVFQiae++uwd9dUBC7f2MdV58ons3uUvASdW7m55eat5sRiQ6xUHyMWMRm6atZWw==}
engines: {node: '>=v18'}
- '@commitlint/rules@19.8.1':
- resolution: {integrity: sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==}
+ '@commitlint/rules@20.0.0':
+ resolution: {integrity: sha512-gvg2k10I/RfvHn5I5sxvVZKM1fl72Sqrv2YY/BnM7lMHcYqO0E2jnRWoYguvBfEcZ39t+rbATlciggVe77E4zA==}
engines: {node: '>=v18'}
- '@commitlint/to-lines@19.8.1':
- resolution: {integrity: sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==}
+ '@commitlint/to-lines@20.0.0':
+ resolution: {integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==}
engines: {node: '>=v18'}
- '@commitlint/top-level@19.8.1':
- resolution: {integrity: sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==}
+ '@commitlint/top-level@20.0.0':
+ resolution: {integrity: sha512-drXaPSP2EcopukrUXvUXmsQMu3Ey/FuJDc/5oiW4heoCfoE5BdLQyuc7veGeE3aoQaTVqZnh4D5WTWe2vefYKg==}
engines: {node: '>=v18'}
- '@commitlint/types@19.8.1':
- resolution: {integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==}
+ '@commitlint/types@20.0.0':
+ resolution: {integrity: sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==}
engines: {node: '>=v18'}
'@cspotcode/source-map-support@0.8.1':
@@ -3606,6 +3624,12 @@ packages:
cpu: [ppc64]
os: [aix]
+ '@esbuild/aix-ppc64@0.25.11':
+ resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/aix-ppc64@0.25.8':
resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==}
engines: {node: '>=18'}
@@ -3636,6 +3660,12 @@ packages:
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm64@0.25.11':
+ resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm64@0.25.8':
resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==}
engines: {node: '>=18'}
@@ -3672,6 +3702,12 @@ packages:
cpu: [arm]
os: [android]
+ '@esbuild/android-arm@0.25.11':
+ resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-arm@0.25.8':
resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==}
engines: {node: '>=18'}
@@ -3702,6 +3738,12 @@ packages:
cpu: [x64]
os: [android]
+ '@esbuild/android-x64@0.25.11':
+ resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/android-x64@0.25.8':
resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==}
engines: {node: '>=18'}
@@ -3732,6 +3774,12 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-arm64@0.25.11':
+ resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-arm64@0.25.8':
resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==}
engines: {node: '>=18'}
@@ -3762,6 +3810,12 @@ packages:
cpu: [x64]
os: [darwin]
+ '@esbuild/darwin-x64@0.25.11':
+ resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.25.8':
resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==}
engines: {node: '>=18'}
@@ -3792,6 +3846,12 @@ packages:
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-arm64@0.25.11':
+ resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-arm64@0.25.8':
resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==}
engines: {node: '>=18'}
@@ -3822,6 +3882,12 @@ packages:
cpu: [x64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.25.11':
+ resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.25.8':
resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==}
engines: {node: '>=18'}
@@ -3852,6 +3918,12 @@ packages:
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm64@0.25.11':
+ resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm64@0.25.8':
resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==}
engines: {node: '>=18'}
@@ -3882,6 +3954,12 @@ packages:
cpu: [arm]
os: [linux]
+ '@esbuild/linux-arm@0.25.11':
+ resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-arm@0.25.8':
resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==}
engines: {node: '>=18'}
@@ -3912,6 +3990,12 @@ packages:
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-ia32@0.25.11':
+ resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-ia32@0.25.8':
resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==}
engines: {node: '>=18'}
@@ -3948,6 +4032,12 @@ packages:
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-loong64@0.25.11':
+ resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-loong64@0.25.8':
resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==}
engines: {node: '>=18'}
@@ -3978,6 +4068,12 @@ packages:
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-mips64el@0.25.11':
+ resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.25.8':
resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==}
engines: {node: '>=18'}
@@ -4008,6 +4104,12 @@ packages:
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-ppc64@0.25.11':
+ resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-ppc64@0.25.8':
resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==}
engines: {node: '>=18'}
@@ -4038,6 +4140,12 @@ packages:
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-riscv64@0.25.11':
+ resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.25.8':
resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==}
engines: {node: '>=18'}
@@ -4068,6 +4176,12 @@ packages:
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-s390x@0.25.11':
+ resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-s390x@0.25.8':
resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==}
engines: {node: '>=18'}
@@ -4098,6 +4212,12 @@ packages:
cpu: [x64]
os: [linux]
+ '@esbuild/linux-x64@0.25.11':
+ resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/linux-x64@0.25.8':
resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==}
engines: {node: '>=18'}
@@ -4116,6 +4236,12 @@ packages:
cpu: [arm64]
os: [netbsd]
+ '@esbuild/netbsd-arm64@0.25.11':
+ resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
'@esbuild/netbsd-arm64@0.25.8':
resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==}
engines: {node: '>=18'}
@@ -4146,6 +4272,12 @@ packages:
cpu: [x64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.25.11':
+ resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.25.8':
resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==}
engines: {node: '>=18'}
@@ -4164,6 +4296,12 @@ packages:
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-arm64@0.25.11':
+ resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
'@esbuild/openbsd-arm64@0.25.8':
resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==}
engines: {node: '>=18'}
@@ -4194,6 +4332,12 @@ packages:
cpu: [x64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.25.11':
+ resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.25.8':
resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==}
engines: {node: '>=18'}
@@ -4212,6 +4356,12 @@ packages:
cpu: [arm64]
os: [openharmony]
+ '@esbuild/openharmony-arm64@0.25.11':
+ resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
'@esbuild/openharmony-arm64@0.25.8':
resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==}
engines: {node: '>=18'}
@@ -4242,6 +4392,12 @@ packages:
cpu: [x64]
os: [sunos]
+ '@esbuild/sunos-x64@0.25.11':
+ resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/sunos-x64@0.25.8':
resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==}
engines: {node: '>=18'}
@@ -4272,6 +4428,12 @@ packages:
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-arm64@0.25.11':
+ resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-arm64@0.25.8':
resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==}
engines: {node: '>=18'}
@@ -4302,6 +4464,12 @@ packages:
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-ia32@0.25.11':
+ resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-ia32@0.25.8':
resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==}
engines: {node: '>=18'}
@@ -4332,6 +4500,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@esbuild/win32-x64@0.25.11':
+ resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
'@esbuild/win32-x64@0.25.8':
resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==}
engines: {node: '>=18'}
@@ -4374,12 +4548,12 @@ packages:
resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/config-helpers@0.3.1':
- resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==}
+ '@eslint/config-helpers@0.4.0':
+ resolution: {integrity: sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/core@0.15.2':
- resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==}
+ '@eslint/core@0.16.0':
+ resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/eslintrc@2.1.4':
@@ -4398,16 +4572,16 @@ packages:
resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- '@eslint/js@9.36.0':
- resolution: {integrity: sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw==}
+ '@eslint/js@9.37.0':
+ resolution: {integrity: sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@2.1.6':
resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/plugin-kit@0.3.5':
- resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==}
+ '@eslint/plugin-kit@0.4.0':
+ resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@exodus/schemasafe@1.3.0':
@@ -5013,10 +5187,10 @@ packages:
peerDependencies:
graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
- '@guolao/vue-monaco-editor@1.5.5':
- resolution: {integrity: sha512-NFGImQ8dBYj6ehIxy1DngPRkctB9b6GbxvCm6aXZztNsgm/TtM4u+YM9ZwZHQPlXt7a4IODXoKCcTYEVycBSyA==}
+ '@guolao/vue-monaco-editor@1.6.0':
+ resolution: {integrity: sha512-w2IiJ6eJGGeuIgCK6EKZOAfhHTTUB5aZwslzwGbZ5e89Hb4avx6++GkLTW8p84Sng/arFMjLPPxSBI56cFudyQ==}
peerDependencies:
- '@vue/composition-api': ^1.7.1
+ '@vue/composition-api': ^1.7.2
monaco-editor: '>=0.43.0'
vue: 3.5.22
peerDependenciesMeta:
@@ -5484,12 +5658,12 @@ packages:
resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
engines: {node: '>=8'}
- '@jest/console@30.1.2':
- resolution: {integrity: sha512-BGMAxj8VRmoD0MoA/jo9alMXSRoqW8KPeqOfEo1ncxnRLatTBCpRoOwlwlEMdudp68Q6WSGwYrrLtTGOh8fLzw==}
+ '@jest/console@30.2.0':
+ resolution: {integrity: sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- '@jest/core@30.1.3':
- resolution: {integrity: sha512-LIQz7NEDDO1+eyOA2ZmkiAyYvZuo6s1UxD/e2IHldR6D7UYogVq3arTmli07MkENLq6/3JEQjp0mA8rrHHJ8KQ==}
+ '@jest/core@30.2.0':
+ resolution: {integrity: sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
@@ -5501,8 +5675,8 @@ packages:
resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- '@jest/environment@30.1.2':
- resolution: {integrity: sha512-N8t1Ytw4/mr9uN28OnVf0SYE2dGhaIxOVYcwsf9IInBKjvofAjbFRvedvBBlyTYk2knbJTiEjEJ2PyyDIBnd9w==}
+ '@jest/environment@30.2.0':
+ resolution: {integrity: sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/expect-utils@29.7.0':
@@ -5513,16 +5687,16 @@ packages:
resolution: {integrity: sha512-F3lmTT7CXWYywoVUGTCmom0vXq3HTTkaZyTAzIy+bXSBizB7o5qzlC9VCtq0arOa8GqmNsbg/cE9C6HLn7Szew==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- '@jest/expect-utils@30.1.2':
- resolution: {integrity: sha512-HXy1qT/bfdjCv7iC336ExbqqYtZvljrV8odNdso7dWK9bSeHtLlvwWWC3YSybSPL03Gg5rug6WLCZAZFH72m0A==}
+ '@jest/expect-utils@30.2.0':
+ resolution: {integrity: sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- '@jest/expect@30.1.2':
- resolution: {integrity: sha512-tyaIExOwQRCxPCGNC05lIjWJztDwk2gPDNSDGg1zitXJJ8dC3++G/CRjE5mb2wQsf89+lsgAgqxxNpDLiCViTA==}
+ '@jest/expect@30.2.0':
+ resolution: {integrity: sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- '@jest/fake-timers@30.1.2':
- resolution: {integrity: sha512-Beljfv9AYkr9K+ETX9tvV61rJTY706BhBUtiaepQHeEGfe0DbpvUA5Z3fomwc5Xkhns6NWrcFDZn+72fLieUnA==}
+ '@jest/fake-timers@30.2.0':
+ resolution: {integrity: sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/get-type@30.0.1':
@@ -5533,16 +5707,16 @@ packages:
resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- '@jest/globals@30.1.2':
- resolution: {integrity: sha512-teNTPZ8yZe3ahbYnvnVRDeOjr+3pu2uiAtNtrEsiMjVPPj+cXd5E/fr8BL7v/T7F31vYdEHrI5cC/2OoO/vM9A==}
+ '@jest/globals@30.2.0':
+ resolution: {integrity: sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/pattern@30.0.1':
resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- '@jest/reporters@30.1.3':
- resolution: {integrity: sha512-VWEQmJWfXMOrzdFEOyGjUEOuVXllgZsoPtEHZzfdNz18RmzJ5nlR6kp8hDdY8dDS1yGOXAY7DHT+AOHIPSBV0w==}
+ '@jest/reporters@30.2.0':
+ resolution: {integrity: sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
@@ -5558,24 +5732,24 @@ packages:
resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- '@jest/snapshot-utils@30.1.2':
- resolution: {integrity: sha512-vHoMTpimcPSR7OxS2S0V1Cpg8eKDRxucHjoWl5u4RQcnxqQrV3avETiFpl8etn4dqxEGarBeHbIBety/f8mLXw==}
+ '@jest/snapshot-utils@30.2.0':
+ resolution: {integrity: sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/source-map@30.0.1':
resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- '@jest/test-result@30.1.3':
- resolution: {integrity: sha512-P9IV8T24D43cNRANPPokn7tZh0FAFnYS2HIfi5vK18CjRkTDR9Y3e1BoEcAJnl4ghZZF4Ecda4M/k41QkvurEQ==}
+ '@jest/test-result@30.2.0':
+ resolution: {integrity: sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- '@jest/test-sequencer@30.1.3':
- resolution: {integrity: sha512-82J+hzC0qeQIiiZDThh+YUadvshdBswi5nuyXlEmXzrhw5ZQSRHeQ5LpVMD/xc8B3wPePvs6VMzHnntxL+4E3w==}
+ '@jest/test-sequencer@30.2.0':
+ resolution: {integrity: sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- '@jest/transform@30.1.2':
- resolution: {integrity: sha512-UYYFGifSgfjujf1Cbd3iU/IQoSd6uwsj8XHj5DSDf5ERDcWMdJOPTkHWXj4U+Z/uMagyOQZ6Vne8C4nRIrCxqA==}
+ '@jest/transform@30.2.0':
+ resolution: {integrity: sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
'@jest/types@29.6.3':
@@ -5586,6 +5760,10 @@ packages:
resolution: {integrity: sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+ '@jest/types@30.2.0':
+ resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+
'@jitl/quickjs-ffi-types@0.31.0':
resolution: {integrity: sha512-1yrgvXlmXH2oNj3eFTrkwacGJbmM0crwipA3ohCrjv52gBeDaD7PsTvFYinlAnqU8iPME3LGP437yk05a2oejw==}
@@ -5696,8 +5874,8 @@ packages:
'@microsoft/tsdoc@0.15.1':
resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==}
- '@monaco-editor/loader@1.5.0':
- resolution: {integrity: sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw==}
+ '@monaco-editor/loader@1.6.1':
+ resolution: {integrity: sha512-w3tEnj9HYEC73wtjdpR089AqkUPskFRcdkxsiSFt3SoUc3OHpmu+leP94CXBm4mHfefmhsdfI0ZQu6qJ0wgtPg==}
'@napi-rs/canvas-android-arm64@0.1.77':
resolution: {integrity: sha512-jC8YX0rbAnu9YrLK1A52KM2HX9EDjrJSCLVuBf9Dsov4IC6GgwMLS2pwL9GFLJnSZBFgdwnA84efBehHT9eshA==}
@@ -5771,15 +5949,16 @@ packages:
peerDependencies:
'@nestjs/common': '>=7.0.9'
'@nestjs/core': '>=7.0.9'
- nodemailer: '>=6.4.6'
+ nodemailer: 7.0.7
- '@nestjs/apollo@13.1.0':
- resolution: {integrity: sha512-/FRg195AxpZ58Kjd7geeksaRs3blmlGMDUak7WGbrl7ZWX7J9VuulhTjVHP6Z+dhH4Tn+AsyjkkJ2euC8psv3A==}
+ '@nestjs/apollo@13.2.1':
+ resolution: {integrity: sha512-BJPNw8xqs4DfdEEmjaAbI6cIJsHouWjcZN70BKTPl8rZcw4Tf61RonqFRn0F/rr/aiccWGAuXJuWY4dPsgah4Q==}
peerDependencies:
'@apollo/gateway': ^2.0.0
- '@apollo/server': ^4.11.3
+ '@apollo/server': ^5.0.0
'@apollo/subgraph': ^2.0.0
- '@as-integrations/fastify': ^2.1.1
+ '@as-integrations/express5': '*'
+ '@as-integrations/fastify': ^2.1.1 || ^3.0.0
'@nestjs/common': ^11.0.1
'@nestjs/core': ^11.0.1
'@nestjs/graphql': ^13.0.0
@@ -5789,6 +5968,8 @@ packages:
optional: true
'@apollo/subgraph':
optional: true
+ '@as-integrations/express5':
+ optional: true
'@as-integrations/fastify':
optional: true
@@ -5842,15 +6023,15 @@ packages:
'@nestjs/websockets':
optional: true
- '@nestjs/graphql@13.1.0':
- resolution: {integrity: sha512-frjUJOPJNEZVqiFynhDs/+rEor3ySAj4pITTa/szAWRfdPhAxIJzOtZnn+eCLubr4lymlK/q71azFwTFyeVShg==}
+ '@nestjs/graphql@13.2.0':
+ resolution: {integrity: sha512-ehgd4pp9e6PQJWjkjV/jGF4934LLzH7C/efe9a9yKJeTZi+x7AL6p+00Q5fhgG75E2CgUZOrmKa90LhcCwqMfA==}
peerDependencies:
'@apollo/subgraph': ^2.9.3
'@nestjs/common': ^11.0.1
'@nestjs/core': ^11.0.1
class-transformer: '*'
class-validator: '*'
- graphql: ^16.10.0
+ graphql: ^16.11.0
reflect-metadata: ^0.1.13 || ^0.2.0
ts-morph: ^20.0.0 || ^21.0.0 || ^24.0.0 || ^25.0.0
peerDependenciesMeta:
@@ -5863,8 +6044,8 @@ packages:
ts-morph:
optional: true
- '@nestjs/jwt@11.0.0':
- resolution: {integrity: sha512-v7YRsW3Xi8HNTsO+jeHSEEqelX37TVWgwt+BcxtkG/OfXJEOs6GZdbdza200d6KqId1pJQZ6UPj1F0M6E+mxaA==}
+ '@nestjs/jwt@11.0.1':
+ resolution: {integrity: sha512-HXSsc7SAnCnjA98TsZqrE7trGtHDnYXWp4Ffy6LwSmck1QvbGYdMzBquXofX5l6tIRpeY4Qidl2Ti2CVG77Pdw==}
peerDependencies:
'@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0
@@ -5899,13 +6080,13 @@ packages:
'@nestjs/common': ^10.0.0 || ^11.0.0
'@nestjs/core': ^10.0.0 || ^11.0.0
- '@nestjs/schematics@11.0.7':
- resolution: {integrity: sha512-t8dNYYMwEeEsrlwc2jbkfwCfXczq4AeNEgx1KVQuJ6wYibXk0ZbXbPdfp8scnEAaQv1grpncNV5gWgzi7ZwbvQ==}
+ '@nestjs/schematics@11.0.9':
+ resolution: {integrity: sha512-0NfPbPlEaGwIT8/TCThxLzrlz3yzDNkfRNpbL7FiplKq3w4qXpJg0JYwqgMEJnLQZm3L/L/5XjoyfJHUO3qX9g==}
peerDependencies:
typescript: '>=4.8.2'
- '@nestjs/swagger@11.2.0':
- resolution: {integrity: sha512-5wolt8GmpNcrQv34tIPUtPoV1EeFbCetm40Ij3+M0FNNnf2RJ3FyWfuQvI8SBlcJyfaounYVTKzKHreFXsUyOg==}
+ '@nestjs/swagger@11.2.1':
+ resolution: {integrity: sha512-1MS7xf0pzc1mofG53xrrtrurnziafPUHkqzRm4YUVPA/egeiMaSerQBD/feiAeQ2BnX0WiLsTX4HQFO0icvOjQ==}
peerDependencies:
'@fastify/static': ^8.0.0
'@nestjs/common': ^11.0.1
@@ -6158,11 +6339,11 @@ packages:
'@popperjs/core@2.11.8':
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
- '@posthog/core@1.1.0':
- resolution: {integrity: sha512-igElrcnRPJh2nWYACschjH4OwGwzSa6xVFzRDVzpnjirUivdJ8nv4hE+H31nvwE56MFhvvglfHuotnWLMcRW7w==}
+ '@posthog/core@1.3.0':
+ resolution: {integrity: sha512-hxLL8kZNHH098geedcxCz8y6xojkNYbmJEW+1vFXsmPcExyCXIUUJ/34X6xa9GcprKxd0Wsx3vfJQLQX4iVPhw==}
- '@prisma/client@6.16.2':
- resolution: {integrity: sha512-E00PxBcalMfYO/TWnXobBVUai6eW/g5OsifWQsQDzJYm7yaY+IRLo7ZLsaefi0QkTpxfuhFcQ/w180i6kX3iJw==}
+ '@prisma/client@6.17.1':
+ resolution: {integrity: sha512-zL58jbLzYamjnNnmNA51IOZdbk5ci03KviXCuB0Tydc9btH2kDWsi1pQm2VecviRTM7jGia0OPPkgpGnT3nKvw==}
engines: {node: '>=18.18'}
peerDependencies:
prisma: '*'
@@ -6173,23 +6354,23 @@ packages:
typescript:
optional: true
- '@prisma/config@6.16.2':
- resolution: {integrity: sha512-mKXSUrcqXj0LXWPmJsK2s3p9PN+aoAbyMx7m5E1v1FufofR1ZpPoIArjjzOIm+bJRLLvYftoNYLx1tbHgF9/yg==}
+ '@prisma/config@6.17.1':
+ resolution: {integrity: sha512-fs8wY6DsvOCzuiyWVckrVs1LOcbY4LZNz8ki4uUIQ28jCCzojTGqdLhN2Jl5lDnC1yI8/gNIKpsWDM8pLhOdwA==}
- '@prisma/debug@6.16.2':
- resolution: {integrity: sha512-bo4/gA/HVV6u8YK2uY6glhNsJ7r+k/i5iQ9ny/3q5bt9ijCj7WMPUwfTKPvtEgLP+/r26Z686ly11hhcLiQ8zA==}
+ '@prisma/debug@6.17.1':
+ resolution: {integrity: sha512-Vf7Tt5Wh9XcndpbmeotuqOMLWPTjEKCsgojxXP2oxE1/xYe7PtnP76hsouG9vis6fctX+TxgmwxTuYi/+xc7dQ==}
- '@prisma/engines-version@6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43':
- resolution: {integrity: sha512-ThvlDaKIVrnrv97ujNFDYiQbeMQpLa0O86HFA2mNoip4mtFqM7U5GSz2ie1i2xByZtvPztJlNRgPsXGeM/kqAA==}
+ '@prisma/engines-version@6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac':
+ resolution: {integrity: sha512-17140E3huOuD9lMdJ9+SF/juOf3WR3sTJMVyyenzqUPbuH+89nPhSWcrY+Mf7tmSs6HvaO+7S+HkELinn6bhdg==}
- '@prisma/engines@6.16.2':
- resolution: {integrity: sha512-7yf3AjfPUgsg/l7JSu1iEhsmZZ/YE00yURPjTikqm2z4btM0bCl2coFtTGfeSOWbQMmq45Jab+53yGUIAT1sjA==}
+ '@prisma/engines@6.17.1':
+ resolution: {integrity: sha512-D95Ik3GYZkqZ8lSR4EyFOJ/tR33FcYRP8kK61o+WMsyD10UfJwd7+YielflHfKwiGodcqKqoraWw8ElAgMDbPw==}
- '@prisma/fetch-engine@6.16.2':
- resolution: {integrity: sha512-wPnZ8DMRqpgzye758ZvfAMiNJRuYpz+rhgEBZi60ZqDIgOU2694oJxiuu3GKFeYeR/hXxso4/2oBC243t/whxQ==}
+ '@prisma/fetch-engine@6.17.1':
+ resolution: {integrity: sha512-AYZiHOs184qkDMiTeshyJCtyL4yERkjfTkJiSJdYuSfc24m94lTNL5+GFinZ6vVz+ktX4NJzHKn1zIFzGTWrWg==}
- '@prisma/get-platform@6.16.2':
- resolution: {integrity: sha512-U/P36Uke5wS7r1+omtAgJpEB94tlT4SdlgaeTc6HVTTT93pXj7zZ+B/cZnmnvjcNPfWddgoDx8RLjmQwqGDYyA==}
+ '@prisma/get-platform@6.17.1':
+ resolution: {integrity: sha512-AKEn6fsfz0r482S5KRDFlIGEaq9wLNcgalD1adL+fPcFFblIKs1sD81kY/utrHdqKuVC6E1XSRpegDK3ZLL4Qg==}
'@protobufjs/aspromise@1.1.2':
resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
@@ -6347,116 +6528,223 @@ packages:
cpu: [arm]
os: [android]
+ '@rollup/rollup-android-arm-eabi@4.52.5':
+ resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
+ cpu: [arm]
+ os: [android]
+
'@rollup/rollup-android-arm64@4.52.2':
resolution: {integrity: sha512-cqFSWO5tX2vhC9hJTK8WAiPIm4Q8q/cU8j2HQA0L3E1uXvBYbOZMhE2oFL8n2pKB5sOCHY6bBuHaRwG7TkfJyw==}
cpu: [arm64]
os: [android]
+ '@rollup/rollup-android-arm64@4.52.5':
+ resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==}
+ cpu: [arm64]
+ os: [android]
+
'@rollup/rollup-darwin-arm64@4.52.2':
resolution: {integrity: sha512-vngduywkkv8Fkh3wIZf5nFPXzWsNsVu1kvtLETWxTFf/5opZmflgVSeLgdHR56RQh71xhPhWoOkEBvbehwTlVA==}
cpu: [arm64]
os: [darwin]
+ '@rollup/rollup-darwin-arm64@4.52.5':
+ resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==}
+ cpu: [arm64]
+ os: [darwin]
+
'@rollup/rollup-darwin-x64@4.52.2':
resolution: {integrity: sha512-h11KikYrUCYTrDj6h939hhMNlqU2fo/X4NB0OZcys3fya49o1hmFaczAiJWVAFgrM1NCP6RrO7lQKeVYSKBPSQ==}
cpu: [x64]
os: [darwin]
+ '@rollup/rollup-darwin-x64@4.52.5':
+ resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==}
+ cpu: [x64]
+ os: [darwin]
+
'@rollup/rollup-freebsd-arm64@4.52.2':
resolution: {integrity: sha512-/eg4CI61ZUkLXxMHyVlmlGrSQZ34xqWlZNW43IAU4RmdzWEx0mQJ2mN/Cx4IHLVZFL6UBGAh+/GXhgvGb+nVxw==}
cpu: [arm64]
os: [freebsd]
+ '@rollup/rollup-freebsd-arm64@4.52.5':
+ resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==}
+ cpu: [arm64]
+ os: [freebsd]
+
'@rollup/rollup-freebsd-x64@4.52.2':
resolution: {integrity: sha512-QOWgFH5X9+p+S1NAfOqc0z8qEpJIoUHf7OWjNUGOeW18Mx22lAUOiA9b6r2/vpzLdfxi/f+VWsYjUOMCcYh0Ng==}
cpu: [x64]
os: [freebsd]
+ '@rollup/rollup-freebsd-x64@4.52.5':
+ resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==}
+ cpu: [x64]
+ os: [freebsd]
+
'@rollup/rollup-linux-arm-gnueabihf@4.52.2':
resolution: {integrity: sha512-kDWSPafToDd8LcBYd1t5jw7bD5Ojcu12S3uT372e5HKPzQt532vW+rGFFOaiR0opxePyUkHrwz8iWYEyH1IIQA==}
cpu: [arm]
os: [linux]
+ '@rollup/rollup-linux-arm-gnueabihf@4.52.5':
+ resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==}
+ cpu: [arm]
+ os: [linux]
+
'@rollup/rollup-linux-arm-musleabihf@4.52.2':
resolution: {integrity: sha512-gKm7Mk9wCv6/rkzwCiUC4KnevYhlf8ztBrDRT9g/u//1fZLapSRc+eDZj2Eu2wpJ+0RzUKgtNijnVIB4ZxyL+w==}
cpu: [arm]
os: [linux]
+ '@rollup/rollup-linux-arm-musleabihf@4.52.5':
+ resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==}
+ cpu: [arm]
+ os: [linux]
+
'@rollup/rollup-linux-arm64-gnu@4.52.2':
resolution: {integrity: sha512-66lA8vnj5mB/rtDNwPgrrKUOtCLVQypkyDa2gMfOefXK6rcZAxKLO9Fy3GkW8VkPnENv9hBkNOFfGLf6rNKGUg==}
cpu: [arm64]
os: [linux]
+ '@rollup/rollup-linux-arm64-gnu@4.52.5':
+ resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==}
+ cpu: [arm64]
+ os: [linux]
+
'@rollup/rollup-linux-arm64-musl@4.52.2':
resolution: {integrity: sha512-s+OPucLNdJHvuZHuIz2WwncJ+SfWHFEmlC5nKMUgAelUeBUnlB4wt7rXWiyG4Zn07uY2Dd+SGyVa9oyLkVGOjA==}
cpu: [arm64]
os: [linux]
+ '@rollup/rollup-linux-arm64-musl@4.52.5':
+ resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==}
+ cpu: [arm64]
+ os: [linux]
+
'@rollup/rollup-linux-loong64-gnu@4.52.2':
resolution: {integrity: sha512-8wTRM3+gVMDLLDdaT6tKmOE3lJyRy9NpJUS/ZRWmLCmOPIJhVyXwjBo+XbrrwtV33Em1/eCTd5TuGJm4+DmYjw==}
cpu: [loong64]
os: [linux]
+ '@rollup/rollup-linux-loong64-gnu@4.52.5':
+ resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==}
+ cpu: [loong64]
+ os: [linux]
+
'@rollup/rollup-linux-ppc64-gnu@4.52.2':
resolution: {integrity: sha512-6yqEfgJ1anIeuP2P/zhtfBlDpXUb80t8DpbYwXQ3bQd95JMvUaqiX+fKqYqUwZXqdJDd8xdilNtsHM2N0cFm6A==}
cpu: [ppc64]
os: [linux]
+ '@rollup/rollup-linux-ppc64-gnu@4.52.5':
+ resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==}
+ cpu: [ppc64]
+ os: [linux]
+
'@rollup/rollup-linux-riscv64-gnu@4.52.2':
resolution: {integrity: sha512-sshYUiYVSEI2B6dp4jMncwxbrUqRdNApF2c3bhtLAU0qA8Lrri0p0NauOsTWh3yCCCDyBOjESHMExonp7Nzc0w==}
cpu: [riscv64]
os: [linux]
+ '@rollup/rollup-linux-riscv64-gnu@4.52.5':
+ resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==}
+ cpu: [riscv64]
+ os: [linux]
+
'@rollup/rollup-linux-riscv64-musl@4.52.2':
resolution: {integrity: sha512-duBLgd+3pqC4MMwBrKkFxaZerUxZcYApQVC5SdbF5/e/589GwVvlRUnyqMFbM8iUSb1BaoX/3fRL7hB9m2Pj8Q==}
cpu: [riscv64]
os: [linux]
+ '@rollup/rollup-linux-riscv64-musl@4.52.5':
+ resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==}
+ cpu: [riscv64]
+ os: [linux]
+
'@rollup/rollup-linux-s390x-gnu@4.52.2':
resolution: {integrity: sha512-tzhYJJidDUVGMgVyE+PmxENPHlvvqm1KILjjZhB8/xHYqAGeizh3GBGf9u6WdJpZrz1aCpIIHG0LgJgH9rVjHQ==}
cpu: [s390x]
os: [linux]
+ '@rollup/rollup-linux-s390x-gnu@4.52.5':
+ resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==}
+ cpu: [s390x]
+ os: [linux]
+
'@rollup/rollup-linux-x64-gnu@4.52.2':
resolution: {integrity: sha512-opH8GSUuVcCSSyHHcl5hELrmnk4waZoVpgn/4FDao9iyE4WpQhyWJ5ryl5M3ocp4qkRuHfyXnGqg8M9oKCEKRA==}
cpu: [x64]
os: [linux]
+ '@rollup/rollup-linux-x64-gnu@4.52.5':
+ resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==}
+ cpu: [x64]
+ os: [linux]
+
'@rollup/rollup-linux-x64-musl@4.52.2':
resolution: {integrity: sha512-LSeBHnGli1pPKVJ79ZVJgeZWWZXkEe/5o8kcn23M8eMKCUANejchJbF/JqzM4RRjOJfNRhKJk8FuqL1GKjF5oQ==}
cpu: [x64]
os: [linux]
+ '@rollup/rollup-linux-x64-musl@4.52.5':
+ resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==}
+ cpu: [x64]
+ os: [linux]
+
'@rollup/rollup-openharmony-arm64@4.52.2':
resolution: {integrity: sha512-uPj7MQ6/s+/GOpolavm6BPo+6CbhbKYyZHUDvZ/SmJM7pfDBgdGisFX3bY/CBDMg2ZO4utfhlApkSfZ92yXw7Q==}
cpu: [arm64]
os: [openharmony]
+ '@rollup/rollup-openharmony-arm64@4.52.5':
+ resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==}
+ cpu: [arm64]
+ os: [openharmony]
+
'@rollup/rollup-win32-arm64-msvc@4.52.2':
resolution: {integrity: sha512-Z9MUCrSgIaUeeHAiNkm3cQyst2UhzjPraR3gYYfOjAuZI7tcFRTOD+4cHLPoS/3qinchth+V56vtqz1Tv+6KPA==}
cpu: [arm64]
os: [win32]
+ '@rollup/rollup-win32-arm64-msvc@4.52.5':
+ resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==}
+ cpu: [arm64]
+ os: [win32]
+
'@rollup/rollup-win32-ia32-msvc@4.52.2':
resolution: {integrity: sha512-+GnYBmpjldD3XQd+HMejo+0gJGwYIOfFeoBQv32xF/RUIvccUz20/V6Otdv+57NE70D5pa8W/jVGDoGq0oON4A==}
cpu: [ia32]
os: [win32]
+ '@rollup/rollup-win32-ia32-msvc@4.52.5':
+ resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==}
+ cpu: [ia32]
+ os: [win32]
+
'@rollup/rollup-win32-x64-gnu@4.52.2':
resolution: {integrity: sha512-ApXFKluSB6kDQkAqZOKXBjiaqdF1BlKi+/eqnYe9Ee7U2K3pUDKsIyr8EYm/QDHTJIM+4X+lI0gJc3TTRhd+dA==}
cpu: [x64]
os: [win32]
+ '@rollup/rollup-win32-x64-gnu@4.52.5':
+ resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==}
+ cpu: [x64]
+ os: [win32]
+
'@rollup/rollup-win32-x64-msvc@4.52.2':
resolution: {integrity: sha512-ARz+Bs8kY6FtitYM96PqPEVvPXqEZmPZsSkXvyX19YzDqkCaIlhCieLLMI5hxO9SRZ2XtCtm8wxhy0iJ2jxNfw==}
cpu: [x64]
os: [win32]
- '@rushstack/eslint-patch@1.12.0':
- resolution: {integrity: sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==}
+ '@rollup/rollup-win32-x64-msvc@4.52.5':
+ resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==}
+ cpu: [x64]
+ os: [win32]
- '@rushstack/eslint-patch@1.3.3':
- resolution: {integrity: sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==}
+ '@rushstack/eslint-patch@1.14.0':
+ resolution: {integrity: sha512-WJFej426qe4RWOm9MMtP4V3CV4AucXolQty+GRgAWLgQXmpCuwzs7hEpxxhSc/znXUSxum9d/P/32MW0FlAAlA==}
'@scarf/scarf@1.4.0':
resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==}
@@ -7037,12 +7325,12 @@ packages:
'@types/json-schema@7.0.9':
resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==}
+ '@types/jsonwebtoken@9.0.10':
+ resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==}
+
'@types/jsonwebtoken@9.0.6':
resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==}
- '@types/jsonwebtoken@9.0.7':
- resolution: {integrity: sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==}
-
'@types/linkify-it@5.0.0':
resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
@@ -7088,17 +7376,11 @@ packages:
'@types/node@17.0.45':
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
- '@types/node@18.18.8':
- resolution: {integrity: sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==}
-
- '@types/node@24.3.0':
- resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==}
+ '@types/node@24.9.1':
+ resolution: {integrity: sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==}
- '@types/node@24.5.2':
- resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==}
-
- '@types/nodemailer@7.0.1':
- resolution: {integrity: sha512-UfHAghPmGZVzaL8x9y+mKZMWyHC399+iq0MOmya5tIyenWX3lcdSb60vOmp0DocR6gCDTYTozv/ULQnREyyjkg==}
+ '@types/nodemailer@7.0.2':
+ resolution: {integrity: sha512-Zo6uOA9157WRgBk/ZhMpTQ/iCWLMk7OIs/Q9jvHarMvrzUUP/MDdPHL2U1zpf57HrrWGv4nYQn5uIxna0xY3xw==}
'@types/nprogress@0.2.3':
resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==}
@@ -7253,6 +7535,22 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/eslint-plugin@8.46.1':
+ resolution: {integrity: sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^8.46.1
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/eslint-plugin@8.46.2':
+ resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^8.46.2
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/parser@5.62.0':
resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -7280,6 +7578,20 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/parser@8.46.1':
+ resolution: {integrity: sha512-6JSSaBZmsKvEkbRUkf7Zj7dru/8ZCrJxAqArcLaVMee5907JdtEbKGsZ7zNiIm/UAkpGUkaSMZEXShnN2D1HZA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/parser@8.46.2':
+ resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/project-service@8.39.1':
resolution: {integrity: sha512-8fZxek3ONTwBu9ptw5nCKqZOSkXshZB7uAxuFF0J/wTMkKydjXCzqqga7MlFMpHi9DoG4BadhmTkITBcg8Aybw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -7292,6 +7604,18 @@ packages:
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/project-service@8.46.1':
+ resolution: {integrity: sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/project-service@8.46.2':
+ resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/scope-manager@5.62.0':
resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -7312,6 +7636,14 @@ packages:
resolution: {integrity: sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/scope-manager@8.46.1':
+ resolution: {integrity: sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/scope-manager@8.46.2':
+ resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@typescript-eslint/tsconfig-utils@8.39.1':
resolution: {integrity: sha512-ePUPGVtTMR8XMU2Hee8kD0Pu4NDE1CN9Q1sxGSGd/mbOtGZDM7pnhXNJnzW63zk/q+Z54zVzj44HtwXln5CvHA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -7324,13 +7656,25 @@ packages:
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/type-utils@5.62.0':
- resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/tsconfig-utils@8.46.1':
+ resolution: {integrity: sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: '*'
- typescript: '*'
- peerDependenciesMeta:
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/tsconfig-utils@8.46.2':
+ resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/type-utils@5.62.0':
+ resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ typescript: '*'
+ peerDependenciesMeta:
typescript:
optional: true
@@ -7351,6 +7695,20 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/type-utils@8.46.1':
+ resolution: {integrity: sha512-+BlmiHIiqufBxkVnOtFwjah/vrkF4MtKKvpXrKSPLCkCtAp8H01/VV43sfqA98Od7nJpDcFnkwgyfQbOG0AMvw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/type-utils@8.46.2':
+ resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/types@5.62.0':
resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -7367,14 +7725,18 @@ packages:
resolution: {integrity: sha512-7sPDKQQp+S11laqTrhHqeAbsCfMkwJMrV7oTDvtDds4mEofJYir414bYKUEb8YPUm9QL3U+8f6L6YExSoAGdQw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/types@8.40.0':
- resolution: {integrity: sha512-ETdbFlgbAmXHyFPwqUIYrfc12ArvpBhEVgGAxVYSwli26dn8Ko+lIo4Su9vI9ykTZdJn+vJprs/0eZU0YMAEQg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
'@typescript-eslint/types@8.44.1':
resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/types@8.46.1':
+ resolution: {integrity: sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/types@8.46.2':
+ resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@typescript-eslint/typescript-estree@5.62.0':
resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -7411,6 +7773,18 @@ packages:
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/typescript-estree@8.46.1':
+ resolution: {integrity: sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/typescript-estree@8.46.2':
+ resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/utils@5.62.0':
resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -7430,6 +7804,20 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/utils@8.46.1':
+ resolution: {integrity: sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/utils@8.46.2':
+ resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/visitor-keys@5.62.0':
resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -7450,11 +7838,19 @@ packages:
resolution: {integrity: sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/visitor-keys@8.46.1':
+ resolution: {integrity: sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/visitor-keys@8.46.2':
+ resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@ungap/structured-clone@1.3.0':
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
- '@unhead/vue@2.0.17':
- resolution: {integrity: sha512-jzmGZYeMAhETV6qfetmLbZzUjjx1TjdNvFSobeFZb73D7dwD9wl/nOAx36qq+TvjZsLJdF5PQWToz2oDGAUqCg==}
+ '@unhead/vue@2.0.19':
+ resolution: {integrity: sha512-7BYjHfOaoZ9+ARJkT10Q2TjnTUqDXmMpfakIAsD/hXiuff1oqWg1xeXT5+MomhNcC15HbiABpbbBmITLSHxdKg==}
peerDependencies:
vue: 3.5.22
@@ -8186,18 +8582,18 @@ packages:
axios@1.8.2:
resolution: {integrity: sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg==}
- babel-jest@30.1.2:
- resolution: {integrity: sha512-IQCus1rt9kaSh7PQxLYRY5NmkNrNlU2TpabzwV7T2jljnpdHOcmnYYv8QmE04Li4S3a2Lj8/yXyET5pBarPr6g==}
+ babel-jest@30.2.0:
+ resolution: {integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
- '@babel/core': ^7.11.0
+ '@babel/core': ^7.11.0 || ^8.0.0-0
- babel-plugin-istanbul@7.0.0:
- resolution: {integrity: sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==}
+ babel-plugin-istanbul@7.0.1:
+ resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==}
engines: {node: '>=12'}
- babel-plugin-jest-hoist@30.0.1:
- resolution: {integrity: sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ==}
+ babel-plugin-jest-hoist@30.2.0:
+ resolution: {integrity: sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
babel-plugin-polyfill-corejs2@0.4.11:
@@ -8233,21 +8629,21 @@ packages:
babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0:
resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==}
- babel-preset-current-node-syntax@1.1.0:
- resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==}
+ babel-preset-current-node-syntax@1.2.0:
+ resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==}
peerDependencies:
- '@babel/core': ^7.0.0
+ '@babel/core': ^7.0.0 || ^8.0.0-0
babel-preset-fbjs@3.4.0:
resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==}
peerDependencies:
'@babel/core': ^7.0.0
- babel-preset-jest@30.0.1:
- resolution: {integrity: sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw==}
+ babel-preset-jest@30.2.0:
+ resolution: {integrity: sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
- '@babel/core': ^7.11.0
+ '@babel/core': ^7.11.0 || ^8.0.0-beta.1
babel-walk@3.0.0-canary-5:
resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==}
@@ -8270,8 +8666,8 @@ packages:
resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==}
engines: {node: '>=6.0.0'}
- baseline-browser-mapping@2.8.7:
- resolution: {integrity: sha512-bxxN2M3a4d1CRoQC//IqsR5XrLh0IJ8TCv2x6Y9N0nckNz/rTjZB3//GGscZziZOxmjP55rzxg/ze7usFI9FqQ==}
+ baseline-browser-mapping@2.8.19:
+ resolution: {integrity: sha512-zoKGUdu6vb2jd3YOq0nnhEDQVbPcHhco3UImJrv5dSkvxTc2pl2WjOPsjZXDwPDSl5eghIMuY3R6J9NDKF3KcQ==}
hasBin: true
basic-auth@2.0.1:
@@ -8359,8 +8755,8 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
- browserslist@4.26.2:
- resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==}
+ browserslist@4.26.3:
+ resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
@@ -8470,8 +8866,8 @@ packages:
caniuse-lite@1.0.30001736:
resolution: {integrity: sha512-ImpN5gLEY8gWeqfLUyEF4b7mYWcYoR2Si1VhnrbM4JizRFmfGaAQ12PhNykq6nvI4XvKLrsp8Xde74D5phJOSw==}
- caniuse-lite@1.0.30001745:
- resolution: {integrity: sha512-ywt6i8FzvdgrrrGbr1jZVObnVv6adj+0if2/omv9cmR2oiZs30zL4DIyaptKcbOrBdOIc74QTMoJvSE2QHh5UQ==}
+ caniuse-lite@1.0.30001751:
+ resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==}
capital-case@1.0.4:
resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
@@ -8480,6 +8876,10 @@ packages:
resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==}
engines: {node: '>=18'}
+ chai@6.2.0:
+ resolution: {integrity: sha512-aUTnJc/JipRzJrNADXVvpVqi6CO0dn3nx4EVPxijri+fj3LUUDyZQOgVeW54Ob3Y1Xh9Iz8f+CgaCl8v0mn9bA==}
+ engines: {node: '>=18'}
+
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
@@ -8695,8 +9095,8 @@ packages:
resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
engines: {node: ^12.20.0 || >=14}
- comment-json@4.2.5:
- resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==}
+ comment-json@4.4.1:
+ resolution: {integrity: sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==}
engines: {node: '>= 6'}
common-tags@1.8.2:
@@ -8801,15 +9201,15 @@ packages:
cookiejar@2.1.4:
resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==}
- copy-anything@3.0.5:
- resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
- engines: {node: '>=12.13'}
+ copy-anything@4.0.5:
+ resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==}
+ engines: {node: '>=18'}
core-js-compat@3.38.1:
resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==}
- core-js-compat@3.45.1:
- resolution: {integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==}
+ core-js-compat@3.46.0:
+ resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==}
core-js@3.38.1:
resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==}
@@ -8865,16 +9265,11 @@ packages:
resolution: {integrity: sha512-B/CJj5yL3sjtlun6RtYHvoSB26EmQ2NUmhq9ZiJSyKIM4K/fqfh9aelDFlIayD2YMeFZqWLi9hHV+c+pq2Djkw==}
engines: {node: '>=18.x'}
- cross-env@10.0.0:
- resolution: {integrity: sha512-aU8qlEK/nHYtVuN4p7UQgAwVljzMg8hB4YK5ThRqD2l/ziSnryncPNn7bMLt5cFYsKVKBh8HqLqyCoTupEUu7Q==}
+ cross-env@10.1.0:
+ resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==}
engines: {node: '>=20'}
hasBin: true
- cross-env@7.0.3:
- resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
- engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
- hasBin: true
-
cross-fetch@3.2.0:
resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==}
@@ -9275,8 +9670,8 @@ packages:
resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
engines: {node: '>=12'}
- dotenv@17.2.2:
- resolution: {integrity: sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==}
+ dotenv@17.2.3:
+ resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==}
engines: {node: '>=12'}
dset@3.1.4:
@@ -9316,8 +9711,8 @@ packages:
electron-to-chromium@1.5.207:
resolution: {integrity: sha512-mryFrrL/GXDTmAtIVMVf+eIXM09BBPlO5IQ7lUyKmK8d+A4VpRGG+M3ofoVef6qyF8s60rJei8ymlJxjUA8Faw==}
- electron-to-chromium@1.5.224:
- resolution: {integrity: sha512-kWAoUu/bwzvnhpdZSIc6KUyvkI1rbRXMT0Eq8pKReyOyaPZcctMli+EgvcN1PAvwVc7Tdo4Fxi2PsLNDU05mdg==}
+ electron-to-chromium@1.5.238:
+ resolution: {integrity: sha512-khBdc+w/Gv+cS8e/Pbnaw/FXcBUeKrRVik9IxfXtgREOWyJhR4tj43n3amkVogJ/yeQUqzkrZcFhtIxIdqmmcQ==}
electron-to-chromium@1.5.35:
resolution: {integrity: sha512-hOSRInrIDm0Brzp4IHW2F/VM+638qOL2CzE0DgpnGzKW27C95IqqeqgKz/hxHGnvPxvQGpHUGD5qRVC9EZY2+A==}
@@ -9326,8 +9721,8 @@ packages:
resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
engines: {node: '>=12'}
- emoji-regex@10.5.0:
- resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==}
+ emoji-regex@10.6.0:
+ resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -9614,6 +10009,11 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ esbuild@0.25.11:
+ resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==}
+ engines: {node: '>=18'}
+ hasBin: true
+
esbuild@0.25.8:
resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==}
engines: {node: '>=18'}
@@ -9687,8 +10087,8 @@ packages:
eslint-config-prettier:
optional: true
- eslint-plugin-vue@10.5.0:
- resolution: {integrity: sha512-7BZHsG3kC2vei8F2W8hnfDi9RK+cv5eKPMvzBdrl8Vuc0hR5odGQRli8VVzUkrmUHkxFEm4Iio1r5HOKslO0Aw==}
+ eslint-plugin-vue@10.5.1:
+ resolution: {integrity: sha512-SbR9ZBUFKgvWAbq3RrdCtWaW0IKm6wwUiApxf3BVTNfqUIo4IQQmreMg2iHFJJ6C/0wss3LXURBJ1OwS/MhFcQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
@@ -9733,8 +10133,8 @@ packages:
deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
hasBin: true
- eslint@9.36.0:
- resolution: {integrity: sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==}
+ eslint@9.37.0:
+ resolution: {integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
peerDependencies:
@@ -9861,8 +10261,8 @@ packages:
resolution: {integrity: sha512-P0te2pt+hHI5qLJkIR+iMvS+lYUZml8rKKsohVHAGY+uClp9XVbdyYNJOIjSRpHVp8s8YqxJCiHUkSYZGr8rtQ==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- expect@30.1.2:
- resolution: {integrity: sha512-xvHszRavo28ejws8FpemjhwswGj4w/BetHIL8cU49u4sGyXDw2+p3YbeDbj6xzlxi6kWTjIRSTJ+9sNXPnF0Zg==}
+ expect@30.2.0:
+ resolution: {integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
express-session@1.18.2:
@@ -9931,8 +10331,8 @@ packages:
fast-safe-stringify@2.1.1:
resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
- fast-uri@3.0.6:
- resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==}
+ fast-uri@3.1.0:
+ resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
fast-url-parser@1.1.3:
resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==}
@@ -10127,10 +10527,6 @@ packages:
resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
engines: {node: '>=14.14'}
- fs-extra@11.3.1:
- resolution: {integrity: sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==}
- engines: {node: '>=14.14'}
-
fs-extra@9.1.0:
resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
engines: {node: '>=10'}
@@ -10160,6 +10556,10 @@ packages:
functions-have-names@1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ generator-function@2.0.1:
+ resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
+ engines: {node: '>= 0.4'}
+
gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
@@ -10394,22 +10794,6 @@ packages:
peerDependencies:
graphql: '>=0.11 <=16'
- graphql-ws@6.0.4:
- resolution: {integrity: sha512-8b4OZtNOvv8+NZva8HXamrc0y1jluYC0+13gdh7198FKjVzXyTvVc95DCwGzaKEfn3YuWZxUqjJlHe3qKM/F2g==}
- engines: {node: '>=20'}
- peerDependencies:
- '@fastify/websocket': ^10 || ^11
- graphql: ^15.10.1 || ^16
- uWebSockets.js: ^20
- ws: 8.17.1
- peerDependenciesMeta:
- '@fastify/websocket':
- optional: true
- uWebSockets.js:
- optional: true
- ws:
- optional: true
-
graphql-ws@6.0.6:
resolution: {integrity: sha512-zgfER9s+ftkGKUZgc0xbx8T7/HMO4AV5/YuYiFc+AtgcO5T0v8AxYYNQ+ltzuzDZgNkYJaFspm5MMYLjQzrkmw==}
engines: {node: '>=20'}
@@ -10462,10 +10846,6 @@ packages:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
- has-own-prop@2.0.0:
- resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==}
- engines: {node: '>=8'}
-
has-property-descriptors@1.0.2:
resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
@@ -10820,8 +11200,8 @@ packages:
resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
engines: {node: '>= 0.4'}
- is-generator-function@1.1.0:
- resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
+ is-generator-function@1.1.2:
+ resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
engines: {node: '>= 0.4'}
is-glob@4.0.3:
@@ -10984,9 +11364,9 @@ packages:
resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==}
engines: {node: '>= 0.4'}
- is-what@4.1.16:
- resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
- engines: {node: '>=12.13'}
+ is-what@5.5.0:
+ resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==}
+ engines: {node: '>=18'}
is-windows@1.0.2:
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
@@ -11068,16 +11448,16 @@ packages:
engines: {node: '>=10'}
hasBin: true
- jest-changed-files@30.0.5:
- resolution: {integrity: sha512-bGl2Ntdx0eAwXuGpdLdVYVr5YQHnSZlQ0y9HVDu565lCUAe9sj6JOtBbMmBBikGIegne9piDDIOeiLVoqTkz4A==}
+ jest-changed-files@30.2.0:
+ resolution: {integrity: sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-circus@30.1.3:
- resolution: {integrity: sha512-Yf3dnhRON2GJT4RYzM89t/EXIWNxKTpWTL9BfF3+geFetWP4XSvJjiU1vrWplOiUkmq8cHLiwuhz+XuUp9DscA==}
+ jest-circus@30.2.0:
+ resolution: {integrity: sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-cli@30.1.3:
- resolution: {integrity: sha512-G8E2Ol3OKch1DEeIBl41NP7OiC6LBhfg25Btv+idcusmoUSpqUkbrneMqbW9lVpI/rCKb/uETidb7DNteheuAQ==}
+ jest-cli@30.2.0:
+ resolution: {integrity: sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
@@ -11086,8 +11466,8 @@ packages:
node-notifier:
optional: true
- jest-config@30.1.3:
- resolution: {integrity: sha512-M/f7gqdQEPgZNA181Myz+GXCe8jXcJsGjCMXUzRj22FIXsZOyHNte84e0exntOvdPaeh9tA0w+B8qlP2fAezfw==}
+ jest-config@30.2.0:
+ resolution: {integrity: sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
peerDependencies:
'@types/node': '*'
@@ -11109,32 +11489,32 @@ packages:
resolution: {integrity: sha512-1UIqE9PoEKaHcIKvq2vbibrCog4Y8G0zmOxgQUVEiTqwR5hJVMCoDsN1vFvI5JvwD37hjueZ1C4l2FyGnfpE0A==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-diff@30.1.2:
- resolution: {integrity: sha512-4+prq+9J61mOVXCa4Qp8ZjavdxzrWQXrI80GNxP8f4tkI2syPuPrJgdRPZRrfUTRvIoUwcmNLbqEJy9W800+NQ==}
+ jest-diff@30.2.0:
+ resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-docblock@30.0.1:
- resolution: {integrity: sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA==}
+ jest-docblock@30.2.0:
+ resolution: {integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-each@30.1.0:
- resolution: {integrity: sha512-A+9FKzxPluqogNahpCv04UJvcZ9B3HamqpDNWNKDjtxVRYB8xbZLFuCr8JAJFpNp83CA0anGQFlpQna9Me+/tQ==}
+ jest-each@30.2.0:
+ resolution: {integrity: sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-environment-node@30.1.2:
- resolution: {integrity: sha512-w8qBiXtqGWJ9xpJIA98M0EIoq079GOQRQUyse5qg1plShUCQ0Ek1VTTcczqKrn3f24TFAgFtT+4q3aOXvjbsuA==}
+ jest-environment-node@30.2.0:
+ resolution: {integrity: sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-get-type@29.6.3:
resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-haste-map@30.1.0:
- resolution: {integrity: sha512-JLeM84kNjpRkggcGpQLsV7B8W4LNUWz7oDNVnY1Vjj22b5/fAb3kk3htiD+4Na8bmJmjJR7rBtS2Rmq/NEcADg==}
+ jest-haste-map@30.2.0:
+ resolution: {integrity: sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-leak-detector@30.1.0:
- resolution: {integrity: sha512-AoFvJzwxK+4KohH60vRuHaqXfWmeBATFZpzpmzNmYTtmRMiyGPVhkXpBqxUQunw+dQB48bDf4NpUs6ivVbRv1g==}
+ jest-leak-detector@30.2.0:
+ resolution: {integrity: sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-matcher-utils@29.7.0:
@@ -11145,8 +11525,8 @@ packages:
resolution: {integrity: sha512-uQgGWt7GOrRLP1P7IwNWwK1WAQbq+m//ZY0yXygyfWp0rJlksMSLQAA4wYQC3b6wl3zfnchyTx+k3HZ5aPtCbQ==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-matcher-utils@30.1.2:
- resolution: {integrity: sha512-7ai16hy4rSbDjvPTuUhuV8nyPBd6EX34HkBsBcBX2lENCuAQ0qKCPb/+lt8OSWUa9WWmGYLy41PrEzkwRwoGZQ==}
+ jest-matcher-utils@30.2.0:
+ resolution: {integrity: sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-message-util@29.7.0:
@@ -11157,8 +11537,8 @@ packages:
resolution: {integrity: sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-message-util@30.1.0:
- resolution: {integrity: sha512-HizKDGG98cYkWmaLUHChq4iN+oCENohQLb7Z5guBPumYs+/etonmNFlg1Ps6yN9LTPyZn+M+b/9BbnHx3WTMDg==}
+ jest-message-util@30.2.0:
+ resolution: {integrity: sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-mock-extended@4.0.0:
@@ -11172,6 +11552,10 @@ packages:
resolution: {integrity: sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+ jest-mock@30.2.0:
+ resolution: {integrity: sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+
jest-pnp-resolver@1.2.3:
resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
engines: {node: '>=6'}
@@ -11185,24 +11569,24 @@ packages:
resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-resolve-dependencies@30.1.3:
- resolution: {integrity: sha512-DNfq3WGmuRyHRHfEet+Zm3QOmVFtIarUOQHHryKPc0YL9ROfgWZxl4+aZq/VAzok2SS3gZdniP+dO4zgo59hBg==}
+ jest-resolve-dependencies@30.2.0:
+ resolution: {integrity: sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-resolve@30.1.3:
- resolution: {integrity: sha512-DI4PtTqzw9GwELFS41sdMK32Ajp3XZQ8iygeDMWkxlRhm7uUTOFSZFVZABFuxr0jvspn8MAYy54NxZCsuCTSOw==}
+ jest-resolve@30.2.0:
+ resolution: {integrity: sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-runner@30.1.3:
- resolution: {integrity: sha512-dd1ORcxQraW44Uz029TtXj85W11yvLpDuIzNOlofrC8GN+SgDlgY4BvyxJiVeuabA1t6idjNbX59jLd2oplOGQ==}
+ jest-runner@30.2.0:
+ resolution: {integrity: sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-runtime@30.1.3:
- resolution: {integrity: sha512-WS8xgjuNSphdIGnleQcJ3AKE4tBKOVP+tKhCD0u+Tb2sBmsU8DxfbBpZX7//+XOz81zVs4eFpJQwBNji2Y07DA==}
+ jest-runtime@30.2.0:
+ resolution: {integrity: sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-snapshot@30.1.2:
- resolution: {integrity: sha512-4q4+6+1c8B6Cy5pGgFvjDy/Pa6VYRiGu0yQafKkJ9u6wQx4G5PqI2QR6nxTl43yy7IWsINwz6oT4o6tD12a8Dg==}
+ jest-snapshot@30.2.0:
+ resolution: {integrity: sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-util@29.7.0:
@@ -11213,24 +11597,28 @@ packages:
resolution: {integrity: sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-validate@30.1.0:
- resolution: {integrity: sha512-7P3ZlCFW/vhfQ8pE7zW6Oi4EzvuB4sgR72Q1INfW9m0FGo0GADYlPwIkf4CyPq7wq85g+kPMtPOHNAdWHeBOaA==}
+ jest-util@30.2.0:
+ resolution: {integrity: sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+
+ jest-validate@30.2.0:
+ resolution: {integrity: sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest-watcher@30.1.3:
- resolution: {integrity: sha512-6jQUZCP1BTL2gvG9E4YF06Ytq4yMb4If6YoQGRR6PpjtqOXSP3sKe2kqwB6SQ+H9DezOfZaSLnmka1NtGm3fCQ==}
+ jest-watcher@30.2.0:
+ resolution: {integrity: sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
jest-worker@27.5.1:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
- jest-worker@30.1.0:
- resolution: {integrity: sha512-uvWcSjlwAAgIu133Tt77A05H7RIk3Ho8tZL50bQM2AkvLdluw9NG48lRCl3Dt+MOH719n/0nnb5YxUwcuJiKRA==}
+ jest-worker@30.2.0:
+ resolution: {integrity: sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
- jest@30.1.3:
- resolution: {integrity: sha512-Ry+p2+NLk6u8Agh5yVqELfUJvRfV51hhVBRIB5yZPY7mU0DGBmOuFG5GebZbMbm86cdQNK0fhJuDX8/1YorISQ==}
+ jest@30.2.0:
+ resolution: {integrity: sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
@@ -11455,8 +11843,8 @@ packages:
linkify-it@5.0.0:
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
- lint-staged@16.2.1:
- resolution: {integrity: sha512-KMeYmH9wKvHsXdUp+z6w7HN3fHKHXwT1pSTQTYxB9kI6ekK1rlL3kLZEoXZCppRPXFK9PFW/wfQctV7XUqMrPQ==}
+ lint-staged@16.2.5:
+ resolution: {integrity: sha512-o36wH3OX0jRWqDw5dOa8a8x6GXTKaLM+LvhRaucZxez0IxA+KNDUCiyjBfNgsMNmchwSX6urLSL7wShcUqAang==}
engines: {node: '>=20.17'}
hasBin: true
@@ -11478,8 +11866,8 @@ packages:
enquirer:
optional: true
- listr2@9.0.4:
- resolution: {integrity: sha512-1wd/kpAdKRLwv7/3OKC8zZ5U8e/fajCfWMxacUvB79S5nLrYGPtUI/8chMQhn3LQjsRVErTb9i1ECAwW0ZIHnQ==}
+ listr2@9.0.5:
+ resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==}
engines: {node: '>=20.0.0'}
load-esm@1.0.2:
@@ -11619,8 +12007,8 @@ packages:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
- lossless-json@4.2.0:
- resolution: {integrity: sha512-bsHH3x+7acZfqokfn9Ks/ej96yF/z6oGGw1aBmXesq4r3fAjhdG4uYuqzDgZMk5g1CZUd5w3kwwIp9K1LOYUiA==}
+ lossless-json@4.3.0:
+ resolution: {integrity: sha512-ToxOC+SsduRmdSuoLZLYAr5zy1Qu7l5XhmPWM3zefCZ5IcrzW/h108qbJUKfOlDlhvhjUK84+8PSVX0kxnit0g==}
loupe@3.2.0:
resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==}
@@ -11964,8 +12352,8 @@ packages:
mlly@1.7.4:
resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
- mocha@11.7.2:
- resolution: {integrity: sha512-lkqVJPmqqG/w5jmmFtiRvtA2jkDyNVUcefFJKb2uyX4dekk8Okgqop3cgbFiaIvj8uCRJVTP5x9dfxGyXm2jvQ==}
+ mocha@11.7.4:
+ resolution: {integrity: sha512-1jYAaY8x0kAZ0XszLWu14pzsf4KV740Gld4HXkhNTXwcHx4AUEDkPzgEHg9CM5dVcW+zv036tjpsEbLraPJj4w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
@@ -12010,8 +12398,8 @@ packages:
mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
- nano-spawn@1.0.3:
- resolution: {integrity: sha512-jtpsQDetTnvS2Ts1fiRdci5rx0VYws5jGyC+4IYOTnIQ/wwdf6JdomlHBwqC3bJYOvaKu0C2GSZ1A60anrYpaA==}
+ nano-spawn@2.0.0:
+ resolution: {integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==}
engines: {node: '>=20.17'}
nanoid@3.3.11:
@@ -12125,19 +12513,15 @@ packages:
node-releases@2.0.19:
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
- node-releases@2.0.21:
- resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==}
-
- nodemailer@6.9.13:
- resolution: {integrity: sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==}
- engines: {node: '>=6.0.0'}
+ node-releases@2.0.26:
+ resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==}
- nodemailer@6.9.15:
- resolution: {integrity: sha512-AHf04ySLC6CIfuRtRiEYtGEXgRfa6INgWGluDhnxTZhHSKvrBu7lc1VVchQ0d8nPc4cFaZoPq8vkyNoZr0TpGQ==}
+ nodemailer@7.0.7:
+ resolution: {integrity: sha512-jGOaRznodf62TVzdyhKt/f1Q/c3kYynk8629sgJHpRzGZj01ezbgMMWJSAjHADcwTKxco3B68/R+KHJY2T5BaA==}
engines: {node: '>=6.0.0'}
- nodemailer@7.0.6:
- resolution: {integrity: sha512-F44uVzgwo49xboqbFgBGkRaiMgtoBrBEWCVincJPK9+S9Adkzt/wXCLKbf7dxucmxfTI5gHGB+bEmdyzN6QKjw==}
+ nodemailer@7.0.9:
+ resolution: {integrity: sha512-9/Qm0qXIByEP8lEV2qOqcAW7bRpL8CR9jcTwk3NBnHJNmP9fIJ86g2fgmIXqHY+nj55ZEMwWqYAT2QTDpRUYiQ==}
engines: {node: '>=6.0.0'}
normalize-package-data@2.5.0:
@@ -12512,6 +12896,9 @@ packages:
resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==}
engines: {node: '>=16'}
+ path-to-regexp@8.3.0:
+ resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==}
+
path-type@3.0.0:
resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
engines: {node: '>=4'}
@@ -12860,8 +13247,8 @@ packages:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
- posthog-node@5.8.8:
- resolution: {integrity: sha512-M0m7k+mO3EBXGoOB4zswOvQsxpoO8xs4EyUXeKmMG7uVTUCZXdMbCxpAvpbr1h+g3R6A5TDbyRInTf437xGdtw==}
+ posthog-node@5.10.0:
+ resolution: {integrity: sha512-uNN+YUuOdbDSbDMGk/Wq57o2YBEH0Unu1kEq2PuYmqFmnu+oYsKyJBrb58VNwEuYsaXVJmk4FtbD+Tl8BT69+w==}
engines: {node: '>=20'}
posthtml-parser@0.11.0:
@@ -12984,12 +13371,16 @@ packages:
resolution: {integrity: sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==}
engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+ pretty-format@30.2.0:
+ resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==}
+ engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
+
preview-email@3.1.0:
resolution: {integrity: sha512-ZtV1YrwscEjlrUzYrTSs6Nwo49JM3pXLM4fFOBSC3wSni+bxaWlw9/Qgk75PZO8M7cX2EybmL2iwvaV3vkAttw==}
engines: {node: '>=14'}
- prisma@6.16.2:
- resolution: {integrity: sha512-aRvldGE5UUJTtVmFiH3WfNFNiqFlAtePUxcI0UEGlnXCX7DqhiMT5TRYwncHFeA/Reca5W6ToXXyCMTeFPdSXA==}
+ prisma@6.17.1:
+ resolution: {integrity: sha512-ac6h0sM1Tg3zu8NInY+qhP/S9KhENVaw9n1BrGKQVFu05JT5yT5Qqqmb8tMRIE3ZXvVj4xcRA5yfrsy4X7Yy5g==}
engines: {node: '>=18.18'}
hasBin: true
peerDependencies:
@@ -13260,10 +13651,6 @@ packages:
remove-trailing-spaces@1.0.9:
resolution: {integrity: sha512-xzG7w5IRijvIkHIjDk65URsJJ7k4J95wmcArY5PRcmjldIOl7oTvG8+X2Ag690R7SfwiOcHrWZKVc1Pp5WIOzA==}
- repeat-string@1.6.1:
- resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
- engines: {node: '>=0.10'}
-
require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -13299,6 +13686,11 @@ packages:
engines: {node: '>= 0.4'}
hasBin: true
+ resolve@1.22.11:
+ resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==}
+ engines: {node: '>= 0.4'}
+ hasBin: true
+
resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
@@ -13367,6 +13759,11 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
+ rollup@4.52.5:
+ resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
router@2.2.0:
resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
engines: {node: '>= 18'}
@@ -13473,8 +13870,8 @@ packages:
engines: {node: '>=10'}
hasBin: true
- semver@7.7.2:
- resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==}
+ semver@7.7.3:
+ resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
engines: {node: '>=10'}
hasBin: true
@@ -13897,8 +14294,8 @@ packages:
resolution: {integrity: sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==}
engines: {node: '>=14.18.0'}
- superjson@2.2.2:
- resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==}
+ superjson@2.2.3:
+ resolution: {integrity: sha512-ay3d+LW/S6yppKoTz3Bq4mG0xrS5bFwfWEBmQfbC7lt5wmtk+Obq0TxVuA9eYRirBTQb1K3eEpBRHMQEo0WyVw==}
engines: {node: '>=16'}
supertest@7.1.4:
@@ -13940,8 +14337,8 @@ packages:
resolution: {integrity: sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==}
engines: {node: '>=10'}
- swagger-ui-dist@5.21.0:
- resolution: {integrity: sha512-E0K3AB6HvQd8yQNSMR7eE5bk+323AUxjtCz/4ZNKiahOlPhPJxqn3UPIGs00cyY/dhrTDJ61L7C/a8u6zhGrZg==}
+ swagger-ui-dist@5.29.4:
+ resolution: {integrity: sha512-gJFDz/gyLOCQtWwAgqs6Rk78z9ONnqTnlW11gimG9nLap8drKa3AJBKpzIQMIjl5PD2Ix+Tn+mc/tfoT2tgsng==}
swagger2openapi@7.0.8:
resolution: {integrity: sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==}
@@ -14195,8 +14592,8 @@ packages:
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
- ts-jest@29.4.4:
- resolution: {integrity: sha512-ccVcRABct5ZELCT5U0+DZwkXMCcOCLi2doHRrKy1nK/s7J7bch6TzJMsrY09WxgUUIP/ITfmcDS8D2yl63rnXw==}
+ ts-jest@29.4.5:
+ resolution: {integrity: sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==}
engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -14395,8 +14792,8 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
- typescript@5.9.2:
- resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
+ typescript@5.9.3:
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=14.17'}
hasBin: true
@@ -14441,17 +14838,11 @@ packages:
resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==}
engines: {node: '>=0.10.0'}
- undici-types@5.26.5:
- resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
-
- undici-types@7.10.0:
- resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
-
- undici-types@7.12.0:
- resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==}
+ undici-types@7.16.0:
+ resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
- unhead@2.0.17:
- resolution: {integrity: sha512-xX3PCtxaE80khRZobyWCVxeFF88/Tg9eJDcJWY9us727nsTC7C449B8BUfVBmiF2+3LjPcmqeoB2iuMs0U4oJQ==}
+ unhead@2.0.19:
+ resolution: {integrity: sha512-gEEjkV11Aj+rBnY6wnRfsFtF2RxKOLaPN4i+Gx3UhBxnszvV6ApSNZbGk7WKyy/lErQ6ekPN63qdFL7sa1leow==}
unicode-canonical-property-names-ecmascript@2.0.1:
resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==}
@@ -14877,15 +15268,8 @@ packages:
vue-router:
optional: true
- vite-plugin-pwa@0.13.1:
- resolution: {integrity: sha512-NR3dIa+o2hzlzo4lF4Gu0cYvoMjSw2DdRc6Epw1yjmCqWaGuN86WK9JqZie4arNlE1ZuWT3CLiMdiX5wcmmUmg==}
- peerDependencies:
- vite: ^3.1.0
- workbox-build: ^6.5.4
- workbox-window: ^6.5.4
-
- vite-plugin-pwa@1.0.3:
- resolution: {integrity: sha512-/OpqIpUldALGxcsEnv/ekQiQ5xHkQ53wcoN5ewX4jiIDNGs3W+eNcI1WYZeyOLmzoEjg09D7aX0O89YGjen1aw==}
+ vite-plugin-pwa@1.1.0:
+ resolution: {integrity: sha512-VsSpdubPzXhHWVINcSx6uHRMpOHVHQcHsef1QgkOlEoaIDAlssFEW88LBq1a59BuokAhsh2kUDJbaX1bZv4Bjw==}
engines: {node: '>=16.0.0'}
peerDependencies:
'@vite-pwa/assets-generator': ^1.0.0
@@ -14902,8 +15286,8 @@ packages:
peerDependencies:
vite: ^3.0.0
- vite-plugin-static-copy@3.1.2:
- resolution: {integrity: sha512-aVmYOzptLVOI2b1jL+cmkF7O6uhRv1u5fvOkQgbohWZp2CbR22kn9ZqkCUIt9umKF7UhdbsEpshn1rf4720QFg==}
+ vite-plugin-static-copy@3.1.4:
+ resolution: {integrity: sha512-iCmr4GSw4eSnaB+G8zc2f4dxSuDjbkjwpuBLLGvQYR9IW7rnDzftnUjOH5p4RYR+d4GsiBqXRvzuFhs5bnzVyw==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^5.0.0 || ^6.0.0 || ^7.0.0
@@ -15184,8 +15568,8 @@ packages:
vue-promise-modals@0.1.0:
resolution: {integrity: sha512-LmPejeqvZSkxj4KkJe6ZUEJmCUQXVeEAj9ihTX+BRFfZftVCZSZd3B4uuZSKF0iCeQUemkodXUZFxcsNT/2dmg==}
- vue-router@4.5.1:
- resolution: {integrity: sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==}
+ vue-router@4.6.3:
+ resolution: {integrity: sha512-ARBedLm9YlbvQomnmq91Os7ck6efydTSpRP3nuOKCvgJOHNrhRoJDSKtee8kcL1Vf7nz6U+PMBL+hTvR3bTVQg==}
peerDependencies:
vue: 3.5.22
@@ -15640,7 +16024,7 @@ snapshots:
dependencies:
'@tauri-apps/api': 2.1.1
- '@CuriousCorrelation/plugin-relay@https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/5d59b97fe331ca62e8be0454ff3f4e5f6185ae70':
+ '@CuriousCorrelation/plugin-relay@https://codeload.github.com/CuriousCorrelation/tauri-plugin-relay/tar.gz/7cf09c1ad31e228758738c2f4e1c8fe9cc141291':
dependencies:
'@tauri-apps/api': 2.1.1
@@ -15662,11 +16046,22 @@ snapshots:
optionalDependencies:
chokidar: 4.0.3
- '@angular-devkit/schematics-cli@19.2.15(@types/node@24.5.2)(chokidar@4.0.3)':
+ '@angular-devkit/core@19.2.17(chokidar@4.0.3)':
+ dependencies:
+ ajv: 8.17.1
+ ajv-formats: 3.0.1(ajv@8.17.1)
+ jsonc-parser: 3.3.1
+ picomatch: 4.0.2
+ rxjs: 7.8.1
+ source-map: 0.7.4
+ optionalDependencies:
+ chokidar: 4.0.3
+
+ '@angular-devkit/schematics-cli@19.2.15(@types/node@24.9.1)(chokidar@4.0.3)':
dependencies:
'@angular-devkit/core': 19.2.15(chokidar@4.0.3)
'@angular-devkit/schematics': 19.2.15(chokidar@4.0.3)
- '@inquirer/prompts': 7.3.2(@types/node@24.5.2)
+ '@inquirer/prompts': 7.3.2(@types/node@24.9.1)
ansi-colors: 4.1.3
symbol-observable: 4.0.0
yargs-parser: 21.1.1
@@ -15684,6 +16079,16 @@ snapshots:
transitivePeerDependencies:
- chokidar
+ '@angular-devkit/schematics@19.2.17(chokidar@4.0.3)':
+ dependencies:
+ '@angular-devkit/core': 19.2.17(chokidar@4.0.3)
+ jsonc-parser: 3.3.1
+ magic-string: 0.30.17
+ ora: 5.4.1
+ rxjs: 7.8.1
+ transitivePeerDependencies:
+ - chokidar
+
'@antfu/install-pkg@0.1.1':
dependencies:
execa: 5.1.1
@@ -15743,7 +16148,7 @@ snapshots:
openapi-types: 12.1.3
z-schema: 5.0.5
- '@apidevtools/swagger-parser@12.0.0(openapi-types@12.1.3)':
+ '@apidevtools/swagger-parser@12.1.0(openapi-types@12.1.3)':
dependencies:
'@apidevtools/json-schema-ref-parser': 14.0.1
'@apidevtools/openapi-schemas': 2.1.0
@@ -15919,6 +16324,11 @@ snapshots:
transitivePeerDependencies:
- encoding
+ '@as-integrations/express5@1.1.2(@apollo/server@4.12.1(graphql@16.11.0))(express@5.1.0)':
+ dependencies:
+ '@apollo/server': 4.12.1(graphql@16.11.0)
+ express: 5.1.0
+
'@asamuzakjp/css-color@3.2.0':
dependencies:
'@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
@@ -16368,26 +16778,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/core@7.28.3':
- dependencies:
- '@ampproject/remapping': 2.3.0
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.3
- '@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3)
- '@babel/helpers': 7.28.3
- '@babel/parser': 7.28.4
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.3
- '@babel/types': 7.28.2
- convert-source-map: 2.0.0
- debug: 4.4.3(supports-color@8.1.1)
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
'@babel/core@7.28.4':
dependencies:
'@babel/code-frame': 7.27.1
@@ -16426,9 +16816,9 @@ snapshots:
'@babel/generator@7.28.3':
dependencies:
'@babel/parser': 7.28.4
- '@babel/types': 7.28.2
+ '@babel/types': 7.28.4
'@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.30
+ '@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0
'@babel/helper-annotate-as-pure@7.25.7':
@@ -16540,7 +16930,7 @@ snapshots:
'@babel/helper-plugin-utils': 7.27.1
debug: 4.4.3(supports-color@8.1.1)
lodash.debounce: 4.0.8
- resolve: 1.22.10
+ resolve: 1.22.11
transitivePeerDependencies:
- supports-color
@@ -16602,21 +16992,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-module-imports': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
- '@babel/traverse': 7.28.3
- transitivePeerDependencies:
- - supports-color
-
'@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-module-imports': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
- '@babel/traverse': 7.28.3
+ '@babel/traverse': 7.28.4
transitivePeerDependencies:
- supports-color
@@ -16736,11 +17117,6 @@ snapshots:
'@babel/template': 7.27.2
'@babel/types': 7.28.2
- '@babel/helpers@7.28.3':
- dependencies:
- '@babel/template': 7.27.2
- '@babel/types': 7.28.2
-
'@babel/helpers@7.28.4':
dependencies:
'@babel/template': 7.27.2
@@ -16865,27 +17241,15 @@ snapshots:
'@babel/core': 7.25.7
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
-
- '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.27.1
- optional: true
'@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.7)':
dependencies:
@@ -16897,32 +17261,20 @@ snapshots:
'@babel/core': 7.28.0
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
'@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.7)':
dependencies:
'@babel/core': 7.25.7
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
'@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.7)':
dependencies:
@@ -16959,11 +17311,6 @@ snapshots:
'@babel/core': 7.25.7
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.27.1
-
'@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
@@ -16974,41 +17321,29 @@ snapshots:
'@babel/core': 7.25.7
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
'@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.7)':
dependencies:
'@babel/core': 7.25.7
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
'@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)':
dependencies:
'@babel/core': 7.28.0
'@babel/helper-plugin-utils': 7.27.1
- '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.3)':
+ '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)':
dependencies:
- '@babel/core': 7.28.3
+ '@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.7)':
@@ -17016,48 +17351,30 @@ snapshots:
'@babel/core': 7.25.7
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
'@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.7)':
dependencies:
'@babel/core': 7.25.7
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
'@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.7)':
dependencies:
'@babel/core': 7.25.7
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
'@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.7)':
dependencies:
@@ -17069,84 +17386,54 @@ snapshots:
'@babel/core': 7.28.0
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
'@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.7)':
dependencies:
'@babel/core': 7.25.7
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
'@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.7)':
dependencies:
'@babel/core': 7.25.7
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
'@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.7)':
dependencies:
'@babel/core': 7.25.7
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
'@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.7)':
dependencies:
'@babel/core': 7.25.7
'@babel/helper-plugin-utils': 7.25.7
- '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.3)':
- dependencies:
- '@babel/core': 7.28.3
- '@babel/helper-plugin-utils': 7.25.7
-
'@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.4)':
dependencies:
'@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.25.7
- optional: true
- '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.3)':
+ '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)':
dependencies:
- '@babel/core': 7.28.3
+ '@babel/core': 7.28.4
'@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.7)':
@@ -18117,7 +18404,7 @@ snapshots:
babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4)
babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4)
babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4)
- core-js-compat: 3.45.1
+ core-js-compat: 3.46.0
semver: 6.3.1
transitivePeerDependencies:
- supports-color
@@ -18178,18 +18465,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/traverse@7.28.3':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.3
- '@babel/helper-globals': 7.28.0
- '@babel/parser': 7.28.4
- '@babel/template': 7.27.2
- '@babel/types': 7.28.2
- debug: 4.4.3(supports-color@8.1.1)
- transitivePeerDependencies:
- - supports-color
-
'@babel/traverse@7.28.4':
dependencies:
'@babel/code-frame': 7.27.1
@@ -18220,9 +18495,9 @@ snapshots:
'@bcoe/v8-coverage@0.2.3': {}
- '@boringer-avatars/vue3@0.2.1(vue@3.5.22(typescript@5.9.2))':
+ '@boringer-avatars/vue3@0.2.1(vue@3.5.22(typescript@5.9.3))':
dependencies:
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
'@codemirror/autocomplete@6.18.6':
dependencies:
@@ -18309,66 +18584,66 @@ snapshots:
'@colors/colors@1.5.0':
optional: true
- '@commitlint/cli@19.8.1(@types/node@24.5.2)(typescript@5.9.2)':
+ '@commitlint/cli@20.1.0(@types/node@24.9.1)(typescript@5.9.3)':
dependencies:
- '@commitlint/format': 19.8.1
- '@commitlint/lint': 19.8.1
- '@commitlint/load': 19.8.1(@types/node@24.5.2)(typescript@5.9.2)
- '@commitlint/read': 19.8.1
- '@commitlint/types': 19.8.1
+ '@commitlint/format': 20.0.0
+ '@commitlint/lint': 20.0.0
+ '@commitlint/load': 20.1.0(@types/node@24.9.1)(typescript@5.9.3)
+ '@commitlint/read': 20.0.0
+ '@commitlint/types': 20.0.0
tinyexec: 1.0.1
yargs: 17.7.2
transitivePeerDependencies:
- '@types/node'
- typescript
- '@commitlint/config-conventional@19.8.1':
+ '@commitlint/config-conventional@20.0.0':
dependencies:
- '@commitlint/types': 19.8.1
+ '@commitlint/types': 20.0.0
conventional-changelog-conventionalcommits: 7.0.2
- '@commitlint/config-validator@19.8.1':
+ '@commitlint/config-validator@20.0.0':
dependencies:
- '@commitlint/types': 19.8.1
+ '@commitlint/types': 20.0.0
ajv: 8.17.1
- '@commitlint/ensure@19.8.1':
+ '@commitlint/ensure@20.0.0':
dependencies:
- '@commitlint/types': 19.8.1
+ '@commitlint/types': 20.0.0
lodash.camelcase: 4.3.0
lodash.kebabcase: 4.1.1
lodash.snakecase: 4.1.1
lodash.startcase: 4.4.0
lodash.upperfirst: 4.3.1
- '@commitlint/execute-rule@19.8.1': {}
+ '@commitlint/execute-rule@20.0.0': {}
- '@commitlint/format@19.8.1':
+ '@commitlint/format@20.0.0':
dependencies:
- '@commitlint/types': 19.8.1
+ '@commitlint/types': 20.0.0
chalk: 5.6.2
- '@commitlint/is-ignored@19.8.1':
+ '@commitlint/is-ignored@20.0.0':
dependencies:
- '@commitlint/types': 19.8.1
- semver: 7.7.2
+ '@commitlint/types': 20.0.0
+ semver: 7.7.3
- '@commitlint/lint@19.8.1':
+ '@commitlint/lint@20.0.0':
dependencies:
- '@commitlint/is-ignored': 19.8.1
- '@commitlint/parse': 19.8.1
- '@commitlint/rules': 19.8.1
- '@commitlint/types': 19.8.1
+ '@commitlint/is-ignored': 20.0.0
+ '@commitlint/parse': 20.0.0
+ '@commitlint/rules': 20.0.0
+ '@commitlint/types': 20.0.0
- '@commitlint/load@19.8.1(@types/node@24.5.2)(typescript@5.9.2)':
+ '@commitlint/load@20.1.0(@types/node@24.9.1)(typescript@5.9.3)':
dependencies:
- '@commitlint/config-validator': 19.8.1
- '@commitlint/execute-rule': 19.8.1
- '@commitlint/resolve-extends': 19.8.1
- '@commitlint/types': 19.8.1
+ '@commitlint/config-validator': 20.0.0
+ '@commitlint/execute-rule': 20.0.0
+ '@commitlint/resolve-extends': 20.1.0
+ '@commitlint/types': 20.0.0
chalk: 5.6.2
- cosmiconfig: 9.0.0(typescript@5.9.2)
- cosmiconfig-typescript-loader: 6.1.0(@types/node@24.5.2)(cosmiconfig@9.0.0(typescript@5.9.2))(typescript@5.9.2)
+ cosmiconfig: 9.0.0(typescript@5.9.3)
+ cosmiconfig-typescript-loader: 6.1.0(@types/node@24.9.1)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3)
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
lodash.uniq: 4.5.0
@@ -18376,45 +18651,45 @@ snapshots:
- '@types/node'
- typescript
- '@commitlint/message@19.8.1': {}
+ '@commitlint/message@20.0.0': {}
- '@commitlint/parse@19.8.1':
+ '@commitlint/parse@20.0.0':
dependencies:
- '@commitlint/types': 19.8.1
+ '@commitlint/types': 20.0.0
conventional-changelog-angular: 7.0.0
conventional-commits-parser: 5.0.0
- '@commitlint/read@19.8.1':
+ '@commitlint/read@20.0.0':
dependencies:
- '@commitlint/top-level': 19.8.1
- '@commitlint/types': 19.8.1
+ '@commitlint/top-level': 20.0.0
+ '@commitlint/types': 20.0.0
git-raw-commits: 4.0.0
minimist: 1.2.8
tinyexec: 1.0.1
- '@commitlint/resolve-extends@19.8.1':
+ '@commitlint/resolve-extends@20.1.0':
dependencies:
- '@commitlint/config-validator': 19.8.1
- '@commitlint/types': 19.8.1
+ '@commitlint/config-validator': 20.0.0
+ '@commitlint/types': 20.0.0
global-directory: 4.0.1
import-meta-resolve: 4.2.0
lodash.mergewith: 4.6.2
resolve-from: 5.0.0
- '@commitlint/rules@19.8.1':
+ '@commitlint/rules@20.0.0':
dependencies:
- '@commitlint/ensure': 19.8.1
- '@commitlint/message': 19.8.1
- '@commitlint/to-lines': 19.8.1
- '@commitlint/types': 19.8.1
+ '@commitlint/ensure': 20.0.0
+ '@commitlint/message': 20.0.0
+ '@commitlint/to-lines': 20.0.0
+ '@commitlint/types': 20.0.0
- '@commitlint/to-lines@19.8.1': {}
+ '@commitlint/to-lines@20.0.0': {}
- '@commitlint/top-level@19.8.1':
+ '@commitlint/top-level@20.0.0':
dependencies:
find-up: 7.0.0
- '@commitlint/types@19.8.1':
+ '@commitlint/types@20.0.0':
dependencies:
'@types/conventional-commits-parser': 5.0.1
chalk: 5.6.2
@@ -18529,19 +18804,22 @@ snapshots:
'@epic-web/invariant@1.0.0': {}
- '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.25.10)':
+ '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.25.11)':
dependencies:
- esbuild: 0.25.10
+ esbuild: 0.25.11
- '@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.25.10)':
+ '@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.25.11)':
dependencies:
- esbuild: 0.25.10
+ esbuild: 0.25.11
escape-string-regexp: 4.0.0
rollup-plugin-node-polyfills: 0.2.1
'@esbuild/aix-ppc64@0.25.10':
optional: true
+ '@esbuild/aix-ppc64@0.25.11':
+ optional: true
+
'@esbuild/aix-ppc64@0.25.8':
optional: true
@@ -18557,6 +18835,9 @@ snapshots:
'@esbuild/android-arm64@0.25.10':
optional: true
+ '@esbuild/android-arm64@0.25.11':
+ optional: true
+
'@esbuild/android-arm64@0.25.8':
optional: true
@@ -18575,6 +18856,9 @@ snapshots:
'@esbuild/android-arm@0.25.10':
optional: true
+ '@esbuild/android-arm@0.25.11':
+ optional: true
+
'@esbuild/android-arm@0.25.8':
optional: true
@@ -18590,6 +18874,9 @@ snapshots:
'@esbuild/android-x64@0.25.10':
optional: true
+ '@esbuild/android-x64@0.25.11':
+ optional: true
+
'@esbuild/android-x64@0.25.8':
optional: true
@@ -18605,6 +18892,9 @@ snapshots:
'@esbuild/darwin-arm64@0.25.10':
optional: true
+ '@esbuild/darwin-arm64@0.25.11':
+ optional: true
+
'@esbuild/darwin-arm64@0.25.8':
optional: true
@@ -18620,6 +18910,9 @@ snapshots:
'@esbuild/darwin-x64@0.25.10':
optional: true
+ '@esbuild/darwin-x64@0.25.11':
+ optional: true
+
'@esbuild/darwin-x64@0.25.8':
optional: true
@@ -18635,6 +18928,9 @@ snapshots:
'@esbuild/freebsd-arm64@0.25.10':
optional: true
+ '@esbuild/freebsd-arm64@0.25.11':
+ optional: true
+
'@esbuild/freebsd-arm64@0.25.8':
optional: true
@@ -18650,6 +18946,9 @@ snapshots:
'@esbuild/freebsd-x64@0.25.10':
optional: true
+ '@esbuild/freebsd-x64@0.25.11':
+ optional: true
+
'@esbuild/freebsd-x64@0.25.8':
optional: true
@@ -18665,6 +18964,9 @@ snapshots:
'@esbuild/linux-arm64@0.25.10':
optional: true
+ '@esbuild/linux-arm64@0.25.11':
+ optional: true
+
'@esbuild/linux-arm64@0.25.8':
optional: true
@@ -18680,6 +18982,9 @@ snapshots:
'@esbuild/linux-arm@0.25.10':
optional: true
+ '@esbuild/linux-arm@0.25.11':
+ optional: true
+
'@esbuild/linux-arm@0.25.8':
optional: true
@@ -18695,6 +19000,9 @@ snapshots:
'@esbuild/linux-ia32@0.25.10':
optional: true
+ '@esbuild/linux-ia32@0.25.11':
+ optional: true
+
'@esbuild/linux-ia32@0.25.8':
optional: true
@@ -18713,6 +19021,9 @@ snapshots:
'@esbuild/linux-loong64@0.25.10':
optional: true
+ '@esbuild/linux-loong64@0.25.11':
+ optional: true
+
'@esbuild/linux-loong64@0.25.8':
optional: true
@@ -18728,6 +19039,9 @@ snapshots:
'@esbuild/linux-mips64el@0.25.10':
optional: true
+ '@esbuild/linux-mips64el@0.25.11':
+ optional: true
+
'@esbuild/linux-mips64el@0.25.8':
optional: true
@@ -18743,6 +19057,9 @@ snapshots:
'@esbuild/linux-ppc64@0.25.10':
optional: true
+ '@esbuild/linux-ppc64@0.25.11':
+ optional: true
+
'@esbuild/linux-ppc64@0.25.8':
optional: true
@@ -18758,6 +19075,9 @@ snapshots:
'@esbuild/linux-riscv64@0.25.10':
optional: true
+ '@esbuild/linux-riscv64@0.25.11':
+ optional: true
+
'@esbuild/linux-riscv64@0.25.8':
optional: true
@@ -18773,6 +19093,9 @@ snapshots:
'@esbuild/linux-s390x@0.25.10':
optional: true
+ '@esbuild/linux-s390x@0.25.11':
+ optional: true
+
'@esbuild/linux-s390x@0.25.8':
optional: true
@@ -18788,6 +19111,9 @@ snapshots:
'@esbuild/linux-x64@0.25.10':
optional: true
+ '@esbuild/linux-x64@0.25.11':
+ optional: true
+
'@esbuild/linux-x64@0.25.8':
optional: true
@@ -18797,6 +19123,9 @@ snapshots:
'@esbuild/netbsd-arm64@0.25.10':
optional: true
+ '@esbuild/netbsd-arm64@0.25.11':
+ optional: true
+
'@esbuild/netbsd-arm64@0.25.8':
optional: true
@@ -18812,6 +19141,9 @@ snapshots:
'@esbuild/netbsd-x64@0.25.10':
optional: true
+ '@esbuild/netbsd-x64@0.25.11':
+ optional: true
+
'@esbuild/netbsd-x64@0.25.8':
optional: true
@@ -18821,6 +19153,9 @@ snapshots:
'@esbuild/openbsd-arm64@0.25.10':
optional: true
+ '@esbuild/openbsd-arm64@0.25.11':
+ optional: true
+
'@esbuild/openbsd-arm64@0.25.8':
optional: true
@@ -18836,6 +19171,9 @@ snapshots:
'@esbuild/openbsd-x64@0.25.10':
optional: true
+ '@esbuild/openbsd-x64@0.25.11':
+ optional: true
+
'@esbuild/openbsd-x64@0.25.8':
optional: true
@@ -18845,6 +19183,9 @@ snapshots:
'@esbuild/openharmony-arm64@0.25.10':
optional: true
+ '@esbuild/openharmony-arm64@0.25.11':
+ optional: true
+
'@esbuild/openharmony-arm64@0.25.8':
optional: true
@@ -18860,6 +19201,9 @@ snapshots:
'@esbuild/sunos-x64@0.25.10':
optional: true
+ '@esbuild/sunos-x64@0.25.11':
+ optional: true
+
'@esbuild/sunos-x64@0.25.8':
optional: true
@@ -18875,6 +19219,9 @@ snapshots:
'@esbuild/win32-arm64@0.25.10':
optional: true
+ '@esbuild/win32-arm64@0.25.11':
+ optional: true
+
'@esbuild/win32-arm64@0.25.8':
optional: true
@@ -18890,6 +19237,9 @@ snapshots:
'@esbuild/win32-ia32@0.25.10':
optional: true
+ '@esbuild/win32-ia32@0.25.11':
+ optional: true
+
'@esbuild/win32-ia32@0.25.8':
optional: true
@@ -18905,6 +19255,9 @@ snapshots:
'@esbuild/win32-x64@0.25.10':
optional: true
+ '@esbuild/win32-x64@0.25.11':
+ optional: true
+
'@esbuild/win32-x64@0.25.8':
optional: true
@@ -18921,9 +19274,9 @@ snapshots:
eslint: 8.57.0
eslint-visitor-keys: 3.4.3
- '@eslint-community/eslint-utils@4.7.0(eslint@9.36.0(jiti@2.6.0))':
+ '@eslint-community/eslint-utils@4.7.0(eslint@9.37.0(jiti@2.6.0))':
dependencies:
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.37.0(jiti@2.6.0)
eslint-visitor-keys: 3.4.3
'@eslint-community/eslint-utils@4.9.0(eslint@8.47.0)':
@@ -18936,9 +19289,9 @@ snapshots:
eslint: 8.57.0
eslint-visitor-keys: 3.4.3
- '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.0))':
+ '@eslint-community/eslint-utils@4.9.0(eslint@9.37.0(jiti@2.6.0))':
dependencies:
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.37.0(jiti@2.6.0)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.11.1': {}
@@ -18948,21 +19301,23 @@ snapshots:
'@eslint/config-array@0.21.0':
dependencies:
'@eslint/object-schema': 2.1.6
- debug: 4.4.1
+ debug: 4.4.3(supports-color@8.1.1)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
- '@eslint/config-helpers@0.3.1': {}
+ '@eslint/config-helpers@0.4.0':
+ dependencies:
+ '@eslint/core': 0.16.0
- '@eslint/core@0.15.2':
+ '@eslint/core@0.16.0':
dependencies:
'@types/json-schema': 7.0.15
'@eslint/eslintrc@2.1.4':
dependencies:
ajv: 6.12.6
- debug: 4.4.1
+ debug: 4.4.3(supports-color@8.1.1)
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.2
@@ -18991,13 +19346,13 @@ snapshots:
'@eslint/js@8.57.1': {}
- '@eslint/js@9.36.0': {}
+ '@eslint/js@9.37.0': {}
'@eslint/object-schema@2.1.6': {}
- '@eslint/plugin-kit@0.3.5':
+ '@eslint/plugin-kit@0.4.0':
dependencies:
- '@eslint/core': 0.15.2
+ '@eslint/core': 0.16.0
levn: 0.4.1
'@exodus/schemasafe@1.3.0': {}
@@ -19032,7 +19387,7 @@ snapshots:
graphql: 16.11.0
tslib: 2.6.3
- '@graphql-codegen/cli@5.0.0(@parcel/watcher@2.5.1)(@types/node@18.18.8)(graphql@16.11.0)(typescript@5.8.3)':
+ '@graphql-codegen/cli@5.0.0(@parcel/watcher@2.5.1)(@types/node@24.9.1)(graphql@16.11.0)(typescript@5.9.3)':
dependencies:
'@babel/generator': 7.25.7
'@babel/template': 7.25.7
@@ -19042,20 +19397,20 @@ snapshots:
'@graphql-tools/apollo-engine-loader': 8.0.1(graphql@16.11.0)
'@graphql-tools/code-file-loader': 8.1.3(graphql@16.11.0)
'@graphql-tools/git-loader': 8.0.7(graphql@16.11.0)
- '@graphql-tools/github-loader': 8.0.1(@types/node@18.18.8)(graphql@16.11.0)
+ '@graphql-tools/github-loader': 8.0.1(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/graphql-file-loader': 8.0.1(graphql@16.11.0)
'@graphql-tools/json-file-loader': 8.0.1(graphql@16.11.0)
'@graphql-tools/load': 8.0.2(graphql@16.11.0)
- '@graphql-tools/prisma-loader': 8.0.4(@types/node@18.18.8)(graphql@16.11.0)
- '@graphql-tools/url-loader': 8.0.2(@types/node@18.18.8)(graphql@16.11.0)
+ '@graphql-tools/prisma-loader': 8.0.4(@types/node@24.9.1)(graphql@16.11.0)
+ '@graphql-tools/url-loader': 8.0.2(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/utils': 10.5.4(graphql@16.11.0)
'@whatwg-node/fetch': 0.8.8
chalk: 4.1.2
- cosmiconfig: 8.3.6(typescript@5.8.3)
+ cosmiconfig: 8.3.6(typescript@5.9.3)
debounce: 1.2.1
detect-indent: 6.1.0
graphql: 16.11.0
- graphql-config: 5.1.3(@types/node@18.18.8)(graphql@16.11.0)(typescript@5.8.3)
+ graphql-config: 5.1.3(@types/node@24.9.1)(graphql@16.11.0)(typescript@5.9.3)
inquirer: 8.2.6
is-glob: 4.0.3
jiti: 1.21.6
@@ -19081,7 +19436,7 @@ snapshots:
- typescript
- utf-8-validate
- '@graphql-codegen/cli@5.0.7(@parcel/watcher@2.5.1)(@types/node@24.5.2)(graphql@16.11.0)(typescript@5.9.2)':
+ '@graphql-codegen/cli@5.0.7(@parcel/watcher@2.5.1)(@types/node@24.9.1)(graphql@16.11.0)(typescript@5.9.3)':
dependencies:
'@babel/generator': 7.28.0
'@babel/template': 7.27.2
@@ -19092,21 +19447,21 @@ snapshots:
'@graphql-tools/apollo-engine-loader': 8.0.22(graphql@16.11.0)
'@graphql-tools/code-file-loader': 8.1.22(graphql@16.11.0)
'@graphql-tools/git-loader': 8.0.26(graphql@16.11.0)
- '@graphql-tools/github-loader': 8.0.22(@types/node@24.5.2)(graphql@16.11.0)
+ '@graphql-tools/github-loader': 8.0.22(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/graphql-file-loader': 8.0.22(graphql@16.11.0)
'@graphql-tools/json-file-loader': 8.0.20(graphql@16.11.0)
'@graphql-tools/load': 8.1.2(graphql@16.11.0)
- '@graphql-tools/prisma-loader': 8.0.17(@types/node@24.5.2)(graphql@16.11.0)
- '@graphql-tools/url-loader': 8.0.33(@types/node@24.5.2)(graphql@16.11.0)
+ '@graphql-tools/prisma-loader': 8.0.17(@types/node@24.9.1)(graphql@16.11.0)
+ '@graphql-tools/url-loader': 8.0.33(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/utils': 10.9.1(graphql@16.11.0)
'@whatwg-node/fetch': 0.10.10
chalk: 4.1.2
- cosmiconfig: 8.3.6(typescript@5.9.2)
+ cosmiconfig: 8.3.6(typescript@5.9.3)
debounce: 1.2.1
detect-indent: 6.1.0
graphql: 16.11.0
- graphql-config: 5.1.5(@types/node@24.5.2)(graphql@16.11.0)(typescript@5.9.2)
- inquirer: 8.2.7(@types/node@24.5.2)
+ graphql-config: 5.1.5(@types/node@24.9.1)(graphql@16.11.0)(typescript@5.9.3)
+ inquirer: 8.2.7(@types/node@24.9.1)
is-glob: 4.0.3
jiti: 1.21.7
json-to-pretty-yaml: 1.2.2
@@ -19598,7 +19953,7 @@ snapshots:
- uWebSockets.js
- utf-8-validate
- '@graphql-tools/executor-http@0.1.10(@types/node@24.5.2)(graphql@16.11.0)':
+ '@graphql-tools/executor-http@0.1.10(@types/node@24.9.1)(graphql@16.11.0)':
dependencies:
'@graphql-tools/utils': 9.2.1(graphql@16.11.0)
'@repeaterjs/repeater': 3.0.5
@@ -19606,26 +19961,26 @@ snapshots:
dset: 3.1.4
extract-files: 11.0.0
graphql: 16.11.0
- meros: 1.3.0(@types/node@24.5.2)
+ meros: 1.3.0(@types/node@24.9.1)
tslib: 2.8.1
value-or-promise: 1.0.12
transitivePeerDependencies:
- '@types/node'
- '@graphql-tools/executor-http@1.1.6(@types/node@18.18.8)(graphql@16.11.0)':
+ '@graphql-tools/executor-http@1.1.6(@types/node@24.9.1)(graphql@16.11.0)':
dependencies:
'@graphql-tools/utils': 10.8.6(graphql@16.11.0)
'@repeaterjs/repeater': 3.0.6
'@whatwg-node/fetch': 0.9.21
extract-files: 11.0.0
graphql: 16.11.0
- meros: 1.3.0(@types/node@18.18.8)
+ meros: 1.3.0(@types/node@24.9.1)
tslib: 2.8.1
value-or-promise: 1.0.12
transitivePeerDependencies:
- '@types/node'
- '@graphql-tools/executor-http@1.3.3(@types/node@24.5.2)(graphql@16.11.0)':
+ '@graphql-tools/executor-http@1.3.3(@types/node@24.9.1)(graphql@16.11.0)':
dependencies:
'@graphql-hive/signal': 1.0.0
'@graphql-tools/executor-common': 0.0.4(graphql@16.11.0)
@@ -19635,7 +19990,7 @@ snapshots:
'@whatwg-node/fetch': 0.10.10
'@whatwg-node/promise-helpers': 1.3.2
graphql: 16.11.0
- meros: 1.3.1(@types/node@24.5.2)
+ meros: 1.3.1(@types/node@24.9.1)
tslib: 2.8.1
transitivePeerDependencies:
- '@types/node'
@@ -19728,10 +20083,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@graphql-tools/github-loader@8.0.1(@types/node@18.18.8)(graphql@16.11.0)':
+ '@graphql-tools/github-loader@8.0.1(@types/node@24.9.1)(graphql@16.11.0)':
dependencies:
'@ardatan/sync-fetch': 0.0.1
- '@graphql-tools/executor-http': 1.1.6(@types/node@18.18.8)(graphql@16.11.0)
+ '@graphql-tools/executor-http': 1.1.6(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/graphql-tag-pluck': 8.3.2(graphql@16.11.0)
'@graphql-tools/utils': 10.8.6(graphql@16.11.0)
'@whatwg-node/fetch': 0.9.21
@@ -19743,9 +20098,9 @@ snapshots:
- encoding
- supports-color
- '@graphql-tools/github-loader@8.0.22(@types/node@24.5.2)(graphql@16.11.0)':
+ '@graphql-tools/github-loader@8.0.22(@types/node@24.9.1)(graphql@16.11.0)':
dependencies:
- '@graphql-tools/executor-http': 1.3.3(@types/node@24.5.2)(graphql@16.11.0)
+ '@graphql-tools/executor-http': 1.3.3(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/graphql-tag-pluck': 8.3.21(graphql@16.11.0)
'@graphql-tools/utils': 10.9.1(graphql@16.11.0)
'@whatwg-node/fetch': 0.10.10
@@ -19912,9 +20267,9 @@ snapshots:
graphql: 16.11.0
tslib: 2.8.1
- '@graphql-tools/prisma-loader@8.0.17(@types/node@24.5.2)(graphql@16.11.0)':
+ '@graphql-tools/prisma-loader@8.0.17(@types/node@24.9.1)(graphql@16.11.0)':
dependencies:
- '@graphql-tools/url-loader': 8.0.33(@types/node@24.5.2)(graphql@16.11.0)
+ '@graphql-tools/url-loader': 8.0.33(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/utils': 10.9.1(graphql@16.11.0)
'@types/js-yaml': 4.0.9
'@whatwg-node/fetch': 0.10.10
@@ -19941,9 +20296,9 @@ snapshots:
- uWebSockets.js
- utf-8-validate
- '@graphql-tools/prisma-loader@8.0.4(@types/node@18.18.8)(graphql@16.11.0)':
+ '@graphql-tools/prisma-loader@8.0.4(@types/node@24.9.1)(graphql@16.11.0)':
dependencies:
- '@graphql-tools/url-loader': 8.0.2(@types/node@18.18.8)(graphql@16.11.0)
+ '@graphql-tools/url-loader': 8.0.2(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/utils': 10.8.6(graphql@16.11.0)
'@types/js-yaml': 4.0.9
'@whatwg-node/fetch': 0.9.21
@@ -20018,12 +20373,12 @@ snapshots:
tslib: 2.8.1
value-or-promise: 1.0.12
- '@graphql-tools/url-loader@7.17.18(@types/node@24.5.2)(graphql@16.11.0)':
+ '@graphql-tools/url-loader@7.17.18(@types/node@24.9.1)(graphql@16.11.0)':
dependencies:
'@ardatan/sync-fetch': 0.0.1
'@graphql-tools/delegate': 9.0.35(graphql@16.11.0)
'@graphql-tools/executor-graphql-ws': 0.0.14(graphql@16.11.0)
- '@graphql-tools/executor-http': 0.1.10(@types/node@24.5.2)(graphql@16.11.0)
+ '@graphql-tools/executor-http': 0.1.10(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/executor-legacy-ws': 0.0.11(graphql@16.11.0)
'@graphql-tools/utils': 9.2.1(graphql@16.11.0)
'@graphql-tools/wrap': 9.4.2(graphql@16.11.0)
@@ -20040,12 +20395,12 @@ snapshots:
- encoding
- utf-8-validate
- '@graphql-tools/url-loader@8.0.2(@types/node@18.18.8)(graphql@16.11.0)':
+ '@graphql-tools/url-loader@8.0.2(@types/node@24.9.1)(graphql@16.11.0)':
dependencies:
'@ardatan/sync-fetch': 0.0.1
'@graphql-tools/delegate': 10.0.21(graphql@16.11.0)
'@graphql-tools/executor-graphql-ws': 1.3.0(graphql@16.11.0)
- '@graphql-tools/executor-http': 1.1.6(@types/node@18.18.8)(graphql@16.11.0)
+ '@graphql-tools/executor-http': 1.1.6(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/executor-legacy-ws': 1.1.0(graphql@16.11.0)
'@graphql-tools/utils': 10.8.6(graphql@16.11.0)
'@graphql-tools/wrap': 10.0.5(graphql@16.11.0)
@@ -20062,10 +20417,10 @@ snapshots:
- encoding
- utf-8-validate
- '@graphql-tools/url-loader@8.0.33(@types/node@24.5.2)(graphql@16.11.0)':
+ '@graphql-tools/url-loader@8.0.33(@types/node@24.9.1)(graphql@16.11.0)':
dependencies:
'@graphql-tools/executor-graphql-ws': 2.0.7(graphql@16.11.0)
- '@graphql-tools/executor-http': 1.3.3(@types/node@24.5.2)(graphql@16.11.0)
+ '@graphql-tools/executor-http': 1.3.3(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/executor-legacy-ws': 1.1.19(graphql@16.11.0)
'@graphql-tools/utils': 10.9.1(graphql@16.11.0)
'@graphql-tools/wrap': 10.1.4(graphql@16.11.0)
@@ -20153,12 +20508,12 @@ snapshots:
dependencies:
graphql: 16.11.0
- '@guolao/vue-monaco-editor@1.5.5(monaco-editor@0.52.2)(vue@3.5.22(typescript@5.9.2))':
+ '@guolao/vue-monaco-editor@1.6.0(monaco-editor@0.52.2)(vue@3.5.22(typescript@5.9.3))':
dependencies:
- '@monaco-editor/loader': 1.5.0
+ '@monaco-editor/loader': 1.6.1
monaco-editor: 0.52.2
- vue: 3.5.22(typescript@5.9.2)
- vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.2))
+ vue: 3.5.22(typescript@5.9.3)
+ vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.3))
'@hapi/b64@5.0.0':
dependencies:
@@ -20183,23 +20538,23 @@ snapshots:
stringify-object: 3.3.0
yargs: 17.7.2
- '@hoppscotch/ui@0.2.5(eslint@8.57.0)(terser@5.39.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))':
+ '@hoppscotch/ui@0.2.5(eslint@8.57.0)(terser@5.39.2)(typescript@5.9.3)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))':
dependencies:
- '@boringer-avatars/vue3': 0.2.1(vue@3.5.22(typescript@5.9.2))
+ '@boringer-avatars/vue3': 0.2.1(vue@3.5.22(typescript@5.9.3))
'@fontsource-variable/inter': 5.2.6
'@fontsource-variable/material-symbols-rounded': 5.2.19
'@fontsource-variable/roboto-mono': 5.2.6
'@hoppscotch/vue-sonner': 1.2.3
- '@hoppscotch/vue-toasted': 0.1.0(vue@3.5.22(typescript@5.9.2))
- '@vitejs/plugin-legacy': 2.3.0(terser@5.39.2)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
- '@vueuse/core': 8.9.4(vue@3.5.22(typescript@5.9.2))
+ '@hoppscotch/vue-toasted': 0.1.0(vue@3.5.22(typescript@5.9.3))
+ '@vitejs/plugin-legacy': 2.3.0(terser@5.39.2)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ '@vueuse/core': 8.9.4(vue@3.5.22(typescript@5.9.3))
fp-ts: 2.16.11
lodash-es: 4.17.21
path: 0.12.7
- vite-plugin-eslint: 1.8.1(eslint@8.57.0)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
- vue: 3.5.22(typescript@5.9.2)
- vue-promise-modals: 0.1.0(typescript@5.9.2)
- vuedraggable-es: 4.1.1(vue@3.5.22(typescript@5.9.2))
+ vite-plugin-eslint: 1.8.1(eslint@8.57.0)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ vue: 3.5.22(typescript@5.9.3)
+ vue-promise-modals: 0.1.0(typescript@5.9.3)
+ vuedraggable-es: 4.1.1(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- '@vue/composition-api'
- eslint
@@ -20207,23 +20562,23 @@ snapshots:
- typescript
- vite
- '@hoppscotch/ui@0.2.5(eslint@8.57.0)(terser@5.39.2)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))':
+ '@hoppscotch/ui@0.2.5(eslint@8.57.0)(terser@5.39.2)(typescript@5.9.3)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))':
dependencies:
- '@boringer-avatars/vue3': 0.2.1(vue@3.5.22(typescript@5.9.2))
+ '@boringer-avatars/vue3': 0.2.1(vue@3.5.22(typescript@5.9.3))
'@fontsource-variable/inter': 5.2.6
'@fontsource-variable/material-symbols-rounded': 5.2.19
'@fontsource-variable/roboto-mono': 5.2.6
'@hoppscotch/vue-sonner': 1.2.3
- '@hoppscotch/vue-toasted': 0.1.0(vue@3.5.22(typescript@5.9.2))
- '@vitejs/plugin-legacy': 2.3.0(terser@5.39.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
- '@vueuse/core': 8.9.4(vue@3.5.22(typescript@5.9.2))
+ '@hoppscotch/vue-toasted': 0.1.0(vue@3.5.22(typescript@5.9.3))
+ '@vitejs/plugin-legacy': 2.3.0(terser@5.39.2)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ '@vueuse/core': 8.9.4(vue@3.5.22(typescript@5.9.3))
fp-ts: 2.16.11
lodash-es: 4.17.21
path: 0.12.7
- vite-plugin-eslint: 1.8.1(eslint@8.57.0)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
- vue: 3.5.22(typescript@5.9.2)
- vue-promise-modals: 0.1.0(typescript@5.9.2)
- vuedraggable-es: 4.1.1(vue@3.5.22(typescript@5.9.2))
+ vite-plugin-eslint: 1.8.1(eslint@8.57.0)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ vue: 3.5.22(typescript@5.9.3)
+ vue-promise-modals: 0.1.0(typescript@5.9.3)
+ vuedraggable-es: 4.1.1(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- '@vue/composition-api'
- eslint
@@ -20231,23 +20586,23 @@ snapshots:
- typescript
- vite
- '@hoppscotch/ui@0.2.5(eslint@9.36.0(jiti@2.6.0))(terser@5.39.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))':
+ '@hoppscotch/ui@0.2.5(eslint@9.37.0(jiti@2.6.0))(terser@5.39.2)(typescript@5.9.3)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))':
dependencies:
- '@boringer-avatars/vue3': 0.2.1(vue@3.5.22(typescript@5.9.2))
+ '@boringer-avatars/vue3': 0.2.1(vue@3.5.22(typescript@5.9.3))
'@fontsource-variable/inter': 5.2.6
'@fontsource-variable/material-symbols-rounded': 5.2.19
'@fontsource-variable/roboto-mono': 5.2.6
'@hoppscotch/vue-sonner': 1.2.3
- '@hoppscotch/vue-toasted': 0.1.0(vue@3.5.22(typescript@5.9.2))
- '@vitejs/plugin-legacy': 2.3.0(terser@5.39.2)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
- '@vueuse/core': 8.9.4(vue@3.5.22(typescript@5.9.2))
+ '@hoppscotch/vue-toasted': 0.1.0(vue@3.5.22(typescript@5.9.3))
+ '@vitejs/plugin-legacy': 2.3.0(terser@5.39.2)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ '@vueuse/core': 8.9.4(vue@3.5.22(typescript@5.9.3))
fp-ts: 2.16.11
lodash-es: 4.17.21
path: 0.12.7
- vite-plugin-eslint: 1.8.1(eslint@9.36.0(jiti@2.6.0))(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
- vue: 3.5.22(typescript@5.9.2)
- vue-promise-modals: 0.1.0(typescript@5.9.2)
- vuedraggable-es: 4.1.1(vue@3.5.22(typescript@5.9.2))
+ vite-plugin-eslint: 1.8.1(eslint@9.37.0(jiti@2.6.0))(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ vue: 3.5.22(typescript@5.9.3)
+ vue-promise-modals: 0.1.0(typescript@5.9.3)
+ vuedraggable-es: 4.1.1(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- '@vue/composition-api'
- eslint
@@ -20255,23 +20610,23 @@ snapshots:
- typescript
- vite
- '@hoppscotch/ui@0.2.5(eslint@9.36.0(jiti@2.6.0))(terser@5.39.2)(typescript@5.9.2)(vite@6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))':
+ '@hoppscotch/ui@0.2.5(eslint@9.37.0(jiti@2.6.0))(terser@5.39.2)(typescript@5.9.3)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))':
dependencies:
- '@boringer-avatars/vue3': 0.2.1(vue@3.5.22(typescript@5.9.2))
+ '@boringer-avatars/vue3': 0.2.1(vue@3.5.22(typescript@5.9.3))
'@fontsource-variable/inter': 5.2.6
'@fontsource-variable/material-symbols-rounded': 5.2.19
'@fontsource-variable/roboto-mono': 5.2.6
'@hoppscotch/vue-sonner': 1.2.3
- '@hoppscotch/vue-toasted': 0.1.0(vue@3.5.22(typescript@5.9.2))
- '@vitejs/plugin-legacy': 2.3.0(terser@5.39.2)(vite@6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
- '@vueuse/core': 8.9.4(vue@3.5.22(typescript@5.9.2))
+ '@hoppscotch/vue-toasted': 0.1.0(vue@3.5.22(typescript@5.9.3))
+ '@vitejs/plugin-legacy': 2.3.0(terser@5.39.2)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ '@vueuse/core': 8.9.4(vue@3.5.22(typescript@5.9.3))
fp-ts: 2.16.11
lodash-es: 4.17.21
path: 0.12.7
- vite-plugin-eslint: 1.8.1(eslint@9.36.0(jiti@2.6.0))(vite@6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
- vue: 3.5.22(typescript@5.9.2)
- vue-promise-modals: 0.1.0(typescript@5.9.2)
- vuedraggable-es: 4.1.1(vue@3.5.22(typescript@5.9.2))
+ vite-plugin-eslint: 1.8.1(eslint@9.37.0(jiti@2.6.0))(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ vue: 3.5.22(typescript@5.9.3)
+ vue-promise-modals: 0.1.0(typescript@5.9.3)
+ vuedraggable-es: 4.1.1(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- '@vue/composition-api'
- eslint
@@ -20279,23 +20634,23 @@ snapshots:
- typescript
- vite
- '@hoppscotch/ui@0.2.5(eslint@9.36.0(jiti@2.6.0))(terser@5.39.2)(typescript@5.9.2)(vite@7.1.2(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))':
+ '@hoppscotch/ui@0.2.5(eslint@9.37.0(jiti@2.6.0))(terser@5.39.2)(typescript@5.9.3)(vite@7.1.2(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))':
dependencies:
- '@boringer-avatars/vue3': 0.2.1(vue@3.5.22(typescript@5.9.2))
+ '@boringer-avatars/vue3': 0.2.1(vue@3.5.22(typescript@5.9.3))
'@fontsource-variable/inter': 5.2.6
'@fontsource-variable/material-symbols-rounded': 5.2.19
'@fontsource-variable/roboto-mono': 5.2.6
'@hoppscotch/vue-sonner': 1.2.3
- '@hoppscotch/vue-toasted': 0.1.0(vue@3.5.22(typescript@5.9.2))
- '@vitejs/plugin-legacy': 2.3.0(terser@5.39.2)(vite@7.1.2(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
- '@vueuse/core': 8.9.4(vue@3.5.22(typescript@5.9.2))
+ '@hoppscotch/vue-toasted': 0.1.0(vue@3.5.22(typescript@5.9.3))
+ '@vitejs/plugin-legacy': 2.3.0(terser@5.39.2)(vite@7.1.2(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ '@vueuse/core': 8.9.4(vue@3.5.22(typescript@5.9.3))
fp-ts: 2.16.11
lodash-es: 4.17.21
path: 0.12.7
- vite-plugin-eslint: 1.8.1(eslint@9.36.0(jiti@2.6.0))(vite@7.1.2(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
- vue: 3.5.22(typescript@5.9.2)
- vue-promise-modals: 0.1.0(typescript@5.9.2)
- vuedraggable-es: 4.1.1(vue@3.5.22(typescript@5.9.2))
+ vite-plugin-eslint: 1.8.1(eslint@9.37.0(jiti@2.6.0))(vite@7.1.2(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ vue: 3.5.22(typescript@5.9.3)
+ vue-promise-modals: 0.1.0(typescript@5.9.3)
+ vuedraggable-es: 4.1.1(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- '@vue/composition-api'
- eslint
@@ -20305,9 +20660,9 @@ snapshots:
'@hoppscotch/vue-sonner@1.2.3': {}
- '@hoppscotch/vue-toasted@0.1.0(vue@3.5.22(typescript@5.9.2))':
+ '@hoppscotch/vue-toasted@0.1.0(vue@3.5.22(typescript@5.9.3))':
dependencies:
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
'@humanfs/core@0.19.1': {}
@@ -20319,7 +20674,7 @@ snapshots:
'@humanwhocodes/config-array@0.11.14':
dependencies:
'@humanwhocodes/object-schema': 2.0.3
- debug: 4.4.1
+ debug: 4.4.3(supports-color@8.1.1)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -20345,7 +20700,7 @@ snapshots:
'@antfu/install-pkg': 0.1.1
'@antfu/utils': 0.5.2
'@iconify/types': 1.1.0
- debug: 4.3.7
+ debug: 4.4.3(supports-color@8.1.1)
kolorist: 1.8.0
local-pkg: 0.4.3
transitivePeerDependencies:
@@ -20384,44 +20739,44 @@ snapshots:
optionalDependencies:
'@import-meta-env/cli': 0.7.3(@import-meta-env/unplugin@0.6.2)
- '@inquirer/checkbox@4.1.6(@types/node@24.5.2)':
+ '@inquirer/checkbox@4.1.6(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.11(@types/node@24.5.2)
+ '@inquirer/core': 10.1.11(@types/node@24.9.1)
'@inquirer/figures': 1.0.11
- '@inquirer/type': 3.0.6(@types/node@24.5.2)
+ '@inquirer/type': 3.0.6(@types/node@24.9.1)
ansi-escapes: 4.3.2
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/checkbox@4.2.1(@types/node@24.5.2)':
+ '@inquirer/checkbox@4.2.1(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.15(@types/node@24.5.2)
+ '@inquirer/core': 10.1.15(@types/node@24.9.1)
'@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.9.1)
ansi-escapes: 4.3.2
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/confirm@5.1.10(@types/node@24.5.2)':
+ '@inquirer/confirm@5.1.10(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.11(@types/node@24.5.2)
- '@inquirer/type': 3.0.6(@types/node@24.5.2)
+ '@inquirer/core': 10.1.11(@types/node@24.9.1)
+ '@inquirer/type': 3.0.6(@types/node@24.9.1)
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/confirm@5.1.15(@types/node@24.5.2)':
+ '@inquirer/confirm@5.1.15(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.15(@types/node@24.5.2)
- '@inquirer/type': 3.0.8(@types/node@24.5.2)
+ '@inquirer/core': 10.1.15(@types/node@24.9.1)
+ '@inquirer/type': 3.0.8(@types/node@24.9.1)
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/core@10.1.11(@types/node@24.5.2)':
+ '@inquirer/core@10.1.11(@types/node@24.9.1)':
dependencies:
'@inquirer/figures': 1.0.11
- '@inquirer/type': 3.0.6(@types/node@24.5.2)
+ '@inquirer/type': 3.0.6(@types/node@24.9.1)
ansi-escapes: 4.3.2
cli-width: 4.1.0
mute-stream: 2.0.0
@@ -20429,12 +20784,12 @@ snapshots:
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/core@10.1.15(@types/node@24.5.2)':
+ '@inquirer/core@10.1.15(@types/node@24.9.1)':
dependencies:
'@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.9.1)
ansi-escapes: 4.3.2
cli-width: 4.1.0
mute-stream: 2.0.0
@@ -20442,208 +20797,194 @@ snapshots:
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/editor@4.2.11(@types/node@24.5.2)':
+ '@inquirer/editor@4.2.11(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.11(@types/node@24.5.2)
- '@inquirer/type': 3.0.6(@types/node@24.5.2)
+ '@inquirer/core': 10.1.11(@types/node@24.9.1)
+ '@inquirer/type': 3.0.6(@types/node@24.9.1)
external-editor: 3.1.0
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/editor@4.2.17(@types/node@24.5.2)':
+ '@inquirer/editor@4.2.17(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.15(@types/node@24.5.2)
- '@inquirer/external-editor': 1.0.1(@types/node@24.5.2)
- '@inquirer/type': 3.0.8(@types/node@24.5.2)
+ '@inquirer/core': 10.1.15(@types/node@24.9.1)
+ '@inquirer/external-editor': 1.0.1(@types/node@24.9.1)
+ '@inquirer/type': 3.0.8(@types/node@24.9.1)
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/expand@4.0.13(@types/node@24.5.2)':
+ '@inquirer/expand@4.0.13(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.11(@types/node@24.5.2)
- '@inquirer/type': 3.0.6(@types/node@24.5.2)
+ '@inquirer/core': 10.1.11(@types/node@24.9.1)
+ '@inquirer/type': 3.0.6(@types/node@24.9.1)
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/expand@4.0.17(@types/node@24.5.2)':
+ '@inquirer/expand@4.0.17(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.15(@types/node@24.5.2)
- '@inquirer/type': 3.0.8(@types/node@24.5.2)
+ '@inquirer/core': 10.1.15(@types/node@24.9.1)
+ '@inquirer/type': 3.0.8(@types/node@24.9.1)
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/external-editor@1.0.0(@types/node@24.5.2)':
+ '@inquirer/external-editor@1.0.0(@types/node@24.9.1)':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
chardet: 2.1.0
iconv-lite: 0.6.3
- '@inquirer/external-editor@1.0.1(@types/node@24.5.2)':
+ '@inquirer/external-editor@1.0.1(@types/node@24.9.1)':
dependencies:
chardet: 2.1.0
iconv-lite: 0.6.3
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@inquirer/figures@1.0.11': {}
'@inquirer/figures@1.0.13': {}
- '@inquirer/input@4.1.10(@types/node@24.5.2)':
+ '@inquirer/input@4.1.10(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.11(@types/node@24.5.2)
- '@inquirer/type': 3.0.6(@types/node@24.5.2)
+ '@inquirer/core': 10.1.11(@types/node@24.9.1)
+ '@inquirer/type': 3.0.6(@types/node@24.9.1)
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/input@4.2.1(@types/node@24.5.2)':
+ '@inquirer/input@4.2.1(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.15(@types/node@24.5.2)
- '@inquirer/type': 3.0.8(@types/node@24.5.2)
+ '@inquirer/core': 10.1.15(@types/node@24.9.1)
+ '@inquirer/type': 3.0.8(@types/node@24.9.1)
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/number@3.0.13(@types/node@24.5.2)':
+ '@inquirer/number@3.0.13(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.11(@types/node@24.5.2)
- '@inquirer/type': 3.0.6(@types/node@24.5.2)
+ '@inquirer/core': 10.1.11(@types/node@24.9.1)
+ '@inquirer/type': 3.0.6(@types/node@24.9.1)
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/number@3.0.17(@types/node@24.5.2)':
+ '@inquirer/number@3.0.17(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.15(@types/node@24.5.2)
- '@inquirer/type': 3.0.8(@types/node@24.5.2)
+ '@inquirer/core': 10.1.15(@types/node@24.9.1)
+ '@inquirer/type': 3.0.8(@types/node@24.9.1)
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/password@4.0.13(@types/node@24.5.2)':
+ '@inquirer/password@4.0.13(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.11(@types/node@24.5.2)
- '@inquirer/type': 3.0.6(@types/node@24.5.2)
+ '@inquirer/core': 10.1.11(@types/node@24.9.1)
+ '@inquirer/type': 3.0.6(@types/node@24.9.1)
ansi-escapes: 4.3.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/password@4.0.17(@types/node@24.5.2)':
+ '@inquirer/password@4.0.17(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.15(@types/node@24.5.2)
- '@inquirer/type': 3.0.8(@types/node@24.5.2)
+ '@inquirer/core': 10.1.15(@types/node@24.9.1)
+ '@inquirer/type': 3.0.8(@types/node@24.9.1)
ansi-escapes: 4.3.2
optionalDependencies:
- '@types/node': 24.5.2
-
- '@inquirer/prompts@7.3.2(@types/node@24.5.2)':
- dependencies:
- '@inquirer/checkbox': 4.1.6(@types/node@24.5.2)
- '@inquirer/confirm': 5.1.10(@types/node@24.5.2)
- '@inquirer/editor': 4.2.11(@types/node@24.5.2)
- '@inquirer/expand': 4.0.13(@types/node@24.5.2)
- '@inquirer/input': 4.1.10(@types/node@24.5.2)
- '@inquirer/number': 3.0.13(@types/node@24.5.2)
- '@inquirer/password': 4.0.13(@types/node@24.5.2)
- '@inquirer/rawlist': 4.1.1(@types/node@24.5.2)
- '@inquirer/search': 3.0.13(@types/node@24.5.2)
- '@inquirer/select': 4.2.1(@types/node@24.5.2)
+ '@types/node': 24.9.1
+
+ '@inquirer/prompts@7.3.2(@types/node@24.9.1)':
+ dependencies:
+ '@inquirer/checkbox': 4.1.6(@types/node@24.9.1)
+ '@inquirer/confirm': 5.1.10(@types/node@24.9.1)
+ '@inquirer/editor': 4.2.11(@types/node@24.9.1)
+ '@inquirer/expand': 4.0.13(@types/node@24.9.1)
+ '@inquirer/input': 4.1.10(@types/node@24.9.1)
+ '@inquirer/number': 3.0.13(@types/node@24.9.1)
+ '@inquirer/password': 4.0.13(@types/node@24.9.1)
+ '@inquirer/rawlist': 4.1.1(@types/node@24.9.1)
+ '@inquirer/search': 3.0.13(@types/node@24.9.1)
+ '@inquirer/select': 4.2.1(@types/node@24.9.1)
optionalDependencies:
- '@types/node': 24.5.2
-
- '@inquirer/prompts@7.8.0(@types/node@24.5.2)':
- dependencies:
- '@inquirer/checkbox': 4.2.1(@types/node@24.5.2)
- '@inquirer/confirm': 5.1.15(@types/node@24.5.2)
- '@inquirer/editor': 4.2.17(@types/node@24.5.2)
- '@inquirer/expand': 4.0.17(@types/node@24.5.2)
- '@inquirer/input': 4.2.1(@types/node@24.5.2)
- '@inquirer/number': 3.0.17(@types/node@24.5.2)
- '@inquirer/password': 4.0.17(@types/node@24.5.2)
- '@inquirer/rawlist': 4.1.5(@types/node@24.5.2)
- '@inquirer/search': 3.1.0(@types/node@24.5.2)
- '@inquirer/select': 4.3.1(@types/node@24.5.2)
+ '@types/node': 24.9.1
+
+ '@inquirer/prompts@7.8.0(@types/node@24.9.1)':
+ dependencies:
+ '@inquirer/checkbox': 4.2.1(@types/node@24.9.1)
+ '@inquirer/confirm': 5.1.15(@types/node@24.9.1)
+ '@inquirer/editor': 4.2.17(@types/node@24.9.1)
+ '@inquirer/expand': 4.0.17(@types/node@24.9.1)
+ '@inquirer/input': 4.2.1(@types/node@24.9.1)
+ '@inquirer/number': 3.0.17(@types/node@24.9.1)
+ '@inquirer/password': 4.0.17(@types/node@24.9.1)
+ '@inquirer/rawlist': 4.1.5(@types/node@24.9.1)
+ '@inquirer/search': 3.1.0(@types/node@24.9.1)
+ '@inquirer/select': 4.3.1(@types/node@24.9.1)
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/rawlist@4.1.1(@types/node@24.5.2)':
+ '@inquirer/rawlist@4.1.1(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.11(@types/node@24.5.2)
- '@inquirer/type': 3.0.6(@types/node@24.5.2)
+ '@inquirer/core': 10.1.11(@types/node@24.9.1)
+ '@inquirer/type': 3.0.6(@types/node@24.9.1)
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/rawlist@4.1.5(@types/node@24.5.2)':
+ '@inquirer/rawlist@4.1.5(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.15(@types/node@24.5.2)
- '@inquirer/type': 3.0.8(@types/node@24.5.2)
+ '@inquirer/core': 10.1.15(@types/node@24.9.1)
+ '@inquirer/type': 3.0.8(@types/node@24.9.1)
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/search@3.0.13(@types/node@24.5.2)':
+ '@inquirer/search@3.0.13(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.11(@types/node@24.5.2)
+ '@inquirer/core': 10.1.11(@types/node@24.9.1)
'@inquirer/figures': 1.0.11
- '@inquirer/type': 3.0.6(@types/node@24.5.2)
+ '@inquirer/type': 3.0.6(@types/node@24.9.1)
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/search@3.1.0(@types/node@24.5.2)':
+ '@inquirer/search@3.1.0(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.15(@types/node@24.5.2)
+ '@inquirer/core': 10.1.15(@types/node@24.9.1)
'@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.9.1)
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/select@4.2.1(@types/node@24.5.2)':
+ '@inquirer/select@4.2.1(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.11(@types/node@24.5.2)
+ '@inquirer/core': 10.1.11(@types/node@24.9.1)
'@inquirer/figures': 1.0.11
- '@inquirer/type': 3.0.6(@types/node@24.5.2)
+ '@inquirer/type': 3.0.6(@types/node@24.9.1)
ansi-escapes: 4.3.2
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/select@4.3.1(@types/node@24.5.2)':
+ '@inquirer/select@4.3.1(@types/node@24.9.1)':
dependencies:
- '@inquirer/core': 10.1.15(@types/node@24.5.2)
+ '@inquirer/core': 10.1.15(@types/node@24.9.1)
'@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.9.1)
ansi-escapes: 4.3.2
yoctocolors-cjs: 2.1.2
optionalDependencies:
- '@types/node': 24.5.2
-
- '@inquirer/type@3.0.6(@types/node@24.5.2)':
- optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@inquirer/type@3.0.8(@types/node@24.5.2)':
+ '@inquirer/type@3.0.6(@types/node@24.9.1)':
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- '@intlify/bundle-utils@10.0.1(vue-i18n@11.1.12(vue@3.5.22(typescript@5.8.3)))':
- dependencies:
- '@intlify/message-compiler': 11.1.11
- '@intlify/shared': 11.1.11
- acorn: 8.15.0
- escodegen: 2.1.0
- estree-walker: 2.0.2
- jsonc-eslint-parser: 2.4.0
- mlly: 1.7.4
- source-map-js: 1.2.1
- yaml-eslint-parser: 1.3.0
+ '@inquirer/type@3.0.8(@types/node@24.9.1)':
optionalDependencies:
- vue-i18n: 11.1.12(vue@3.5.22(typescript@5.8.3))
+ '@types/node': 24.9.1
- '@intlify/bundle-utils@10.0.1(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.2)))':
+ '@intlify/bundle-utils@10.0.1(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))':
dependencies:
'@intlify/message-compiler': 11.1.11
'@intlify/shared': 11.1.11
@@ -20655,7 +20996,7 @@ snapshots:
source-map-js: 1.2.1
yaml-eslint-parser: 1.3.0
optionalDependencies:
- vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.2))
+ vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.3))
'@intlify/core-base@11.1.12':
dependencies:
@@ -20678,15 +21019,15 @@ snapshots:
'@intlify/shared@11.1.3': {}
- '@intlify/unplugin-vue-i18n@6.0.4(@vue/compiler-dom@3.5.22)(eslint@8.47.0)(rollup@2.79.2)(typescript@5.8.3)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.8.3)))(vue@3.5.22(typescript@5.8.3))(webpack-sources@3.3.3)':
+ '@intlify/unplugin-vue-i18n@6.0.4(@vue/compiler-dom@3.5.22)(eslint@8.47.0)(rollup@2.79.2)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))(webpack-sources@3.3.3)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0)
- '@intlify/bundle-utils': 10.0.1(vue-i18n@11.1.12(vue@3.5.22(typescript@5.8.3)))
+ '@intlify/bundle-utils': 10.0.1(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))
'@intlify/shared': 11.1.3
- '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.3)(@vue/compiler-dom@3.5.22)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.8.3)))(vue@3.5.22(typescript@5.8.3))
+ '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.3)(@vue/compiler-dom@3.5.22)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))
'@rollup/pluginutils': 5.1.2(rollup@2.79.2)
'@typescript-eslint/scope-manager': 8.31.0
- '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3)
+ '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.9.3)
debug: 4.4.0
fast-glob: 3.3.2
js-yaml: 4.1.0
@@ -20695,9 +21036,9 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
unplugin: 1.14.1(webpack-sources@3.3.3)
- vue: 3.5.22(typescript@5.8.3)
+ vue: 3.5.22(typescript@5.9.3)
optionalDependencies:
- vue-i18n: 11.1.12(vue@3.5.22(typescript@5.8.3))
+ vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- '@vue/compiler-dom'
- eslint
@@ -20706,15 +21047,15 @@ snapshots:
- typescript
- webpack-sources
- '@intlify/unplugin-vue-i18n@6.0.8(@vue/compiler-dom@3.5.22)(eslint@8.57.0)(rollup@4.52.2)(typescript@5.9.2)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2))':
+ '@intlify/unplugin-vue-i18n@6.0.8(@vue/compiler-dom@3.5.22)(eslint@8.57.0)(rollup@4.52.5)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))':
dependencies:
'@eslint-community/eslint-utils': 4.7.0(eslint@8.57.0)
- '@intlify/bundle-utils': 10.0.1(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.2)))
+ '@intlify/bundle-utils': 10.0.1(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))
'@intlify/shared': 11.1.11
- '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.11)(@vue/compiler-dom@3.5.22)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2))
- '@rollup/pluginutils': 5.2.0(rollup@4.52.2)
+ '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.11)(@vue/compiler-dom@3.5.22)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))
+ '@rollup/pluginutils': 5.2.0(rollup@4.52.5)
'@typescript-eslint/scope-manager': 8.39.1
- '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2)
+ '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.3)
debug: 4.4.1
fast-glob: 3.3.3
js-yaml: 4.1.0
@@ -20723,9 +21064,9 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
unplugin: 1.16.1
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
optionalDependencies:
- vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.2))
+ vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- '@vue/compiler-dom'
- eslint
@@ -20733,15 +21074,15 @@ snapshots:
- supports-color
- typescript
- '@intlify/unplugin-vue-i18n@6.0.8(@vue/compiler-dom@3.5.22)(eslint@9.36.0(jiti@2.6.0))(rollup@4.52.2)(typescript@5.9.2)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2))':
+ '@intlify/unplugin-vue-i18n@6.0.8(@vue/compiler-dom@3.5.22)(eslint@9.37.0(jiti@2.6.0))(rollup@4.52.5)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))':
dependencies:
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.36.0(jiti@2.6.0))
- '@intlify/bundle-utils': 10.0.1(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.2)))
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.37.0(jiti@2.6.0))
+ '@intlify/bundle-utils': 10.0.1(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))
'@intlify/shared': 11.1.11
- '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.11)(@vue/compiler-dom@3.5.22)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2))
- '@rollup/pluginutils': 5.2.0(rollup@4.52.2)
+ '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.11)(@vue/compiler-dom@3.5.22)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))
+ '@rollup/pluginutils': 5.2.0(rollup@4.52.5)
'@typescript-eslint/scope-manager': 8.39.1
- '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2)
+ '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.3)
debug: 4.4.1
fast-glob: 3.3.3
js-yaml: 4.1.0
@@ -20750,9 +21091,9 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
unplugin: 1.16.1
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
optionalDependencies:
- vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.2))
+ vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- '@vue/compiler-dom'
- eslint
@@ -20760,23 +21101,23 @@ snapshots:
- supports-color
- typescript
- '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.11)(@vue/compiler-dom@3.5.22)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2))':
+ '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.11)(@vue/compiler-dom@3.5.22)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))':
dependencies:
'@babel/parser': 7.28.3
optionalDependencies:
'@intlify/shared': 11.1.11
'@vue/compiler-dom': 3.5.22
- vue: 3.5.22(typescript@5.9.2)
- vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.2))
+ vue: 3.5.22(typescript@5.9.3)
+ vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.3))
- '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.3)(@vue/compiler-dom@3.5.22)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.8.3)))(vue@3.5.22(typescript@5.8.3))':
+ '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.3)(@vue/compiler-dom@3.5.22)(vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3))':
dependencies:
'@babel/parser': 7.28.3
optionalDependencies:
'@intlify/shared': 11.1.3
'@vue/compiler-dom': 3.5.22
- vue: 3.5.22(typescript@5.8.3)
- vue-i18n: 11.1.12(vue@3.5.22(typescript@5.8.3))
+ vue: 3.5.22(typescript@5.9.3)
+ vue-i18n: 11.1.12(vue@3.5.22(typescript@5.9.3))
'@ioredis/commands@1.2.0':
optional: true
@@ -20806,44 +21147,44 @@ snapshots:
'@istanbuljs/schema@0.1.3': {}
- '@jest/console@30.1.2':
+ '@jest/console@30.2.0':
dependencies:
- '@jest/types': 30.0.5
- '@types/node': 24.5.2
+ '@jest/types': 30.2.0
+ '@types/node': 24.9.1
chalk: 4.1.2
- jest-message-util: 30.1.0
- jest-util: 30.0.5
+ jest-message-util: 30.2.0
+ jest-util: 30.2.0
slash: 3.0.0
- '@jest/core@30.1.3(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))':
+ '@jest/core@30.2.0(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))':
dependencies:
- '@jest/console': 30.1.2
+ '@jest/console': 30.2.0
'@jest/pattern': 30.0.1
- '@jest/reporters': 30.1.3
- '@jest/test-result': 30.1.3
- '@jest/transform': 30.1.2
- '@jest/types': 30.0.5
- '@types/node': 24.5.2
+ '@jest/reporters': 30.2.0
+ '@jest/test-result': 30.2.0
+ '@jest/transform': 30.2.0
+ '@jest/types': 30.2.0
+ '@types/node': 24.9.1
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 4.3.0
exit-x: 0.2.2
graceful-fs: 4.2.11
- jest-changed-files: 30.0.5
- jest-config: 30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
- jest-haste-map: 30.1.0
- jest-message-util: 30.1.0
+ jest-changed-files: 30.2.0
+ jest-config: 30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
+ jest-haste-map: 30.2.0
+ jest-message-util: 30.2.0
jest-regex-util: 30.0.1
- jest-resolve: 30.1.3
- jest-resolve-dependencies: 30.1.3
- jest-runner: 30.1.3
- jest-runtime: 30.1.3
- jest-snapshot: 30.1.2
- jest-util: 30.0.5
- jest-validate: 30.1.0
- jest-watcher: 30.1.3
+ jest-resolve: 30.2.0
+ jest-resolve-dependencies: 30.2.0
+ jest-runner: 30.2.0
+ jest-runtime: 30.2.0
+ jest-snapshot: 30.2.0
+ jest-util: 30.2.0
+ jest-validate: 30.2.0
+ jest-watcher: 30.2.0
micromatch: 4.0.8
- pretty-format: 30.0.5
+ pretty-format: 30.2.0
slash: 3.0.0
transitivePeerDependencies:
- babel-plugin-macros
@@ -20853,12 +21194,12 @@ snapshots:
'@jest/diff-sequences@30.0.1': {}
- '@jest/environment@30.1.2':
+ '@jest/environment@30.2.0':
dependencies:
- '@jest/fake-timers': 30.1.2
- '@jest/types': 30.0.5
- '@types/node': 24.5.2
- jest-mock: 30.0.5
+ '@jest/fake-timers': 30.2.0
+ '@jest/types': 30.2.0
+ '@types/node': 24.9.1
+ jest-mock: 30.2.0
'@jest/expect-utils@29.7.0':
dependencies:
@@ -20868,53 +21209,53 @@ snapshots:
dependencies:
'@jest/get-type': 30.0.1
- '@jest/expect-utils@30.1.2':
+ '@jest/expect-utils@30.2.0':
dependencies:
'@jest/get-type': 30.1.0
- '@jest/expect@30.1.2':
+ '@jest/expect@30.2.0':
dependencies:
- expect: 30.1.2
- jest-snapshot: 30.1.2
+ expect: 30.2.0
+ jest-snapshot: 30.2.0
transitivePeerDependencies:
- supports-color
- '@jest/fake-timers@30.1.2':
+ '@jest/fake-timers@30.2.0':
dependencies:
- '@jest/types': 30.0.5
+ '@jest/types': 30.2.0
'@sinonjs/fake-timers': 13.0.5
- '@types/node': 24.5.2
- jest-message-util: 30.1.0
- jest-mock: 30.0.5
- jest-util: 30.0.5
+ '@types/node': 24.9.1
+ jest-message-util: 30.2.0
+ jest-mock: 30.2.0
+ jest-util: 30.2.0
'@jest/get-type@30.0.1': {}
'@jest/get-type@30.1.0': {}
- '@jest/globals@30.1.2':
+ '@jest/globals@30.2.0':
dependencies:
- '@jest/environment': 30.1.2
- '@jest/expect': 30.1.2
- '@jest/types': 30.0.5
- jest-mock: 30.0.5
+ '@jest/environment': 30.2.0
+ '@jest/expect': 30.2.0
+ '@jest/types': 30.2.0
+ jest-mock: 30.2.0
transitivePeerDependencies:
- supports-color
'@jest/pattern@30.0.1':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
jest-regex-util: 30.0.1
- '@jest/reporters@30.1.3':
+ '@jest/reporters@30.2.0':
dependencies:
'@bcoe/v8-coverage': 0.2.3
- '@jest/console': 30.1.2
- '@jest/test-result': 30.1.3
- '@jest/transform': 30.1.2
- '@jest/types': 30.0.5
- '@jridgewell/trace-mapping': 0.3.30
- '@types/node': 24.5.2
+ '@jest/console': 30.2.0
+ '@jest/test-result': 30.2.0
+ '@jest/transform': 30.2.0
+ '@jest/types': 30.2.0
+ '@jridgewell/trace-mapping': 0.3.31
+ '@types/node': 24.9.1
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit-x: 0.2.2
@@ -20925,9 +21266,9 @@ snapshots:
istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 5.0.6
istanbul-reports: 3.1.7
- jest-message-util: 30.1.0
- jest-util: 30.0.5
- jest-worker: 30.1.0
+ jest-message-util: 30.2.0
+ jest-util: 30.2.0
+ jest-worker: 30.2.0
slash: 3.0.0
string-length: 4.0.2
v8-to-istanbul: 9.3.0
@@ -20942,46 +21283,46 @@ snapshots:
dependencies:
'@sinclair/typebox': 0.34.38
- '@jest/snapshot-utils@30.1.2':
+ '@jest/snapshot-utils@30.2.0':
dependencies:
- '@jest/types': 30.0.5
+ '@jest/types': 30.2.0
chalk: 4.1.2
graceful-fs: 4.2.11
natural-compare: 1.4.0
'@jest/source-map@30.0.1':
dependencies:
- '@jridgewell/trace-mapping': 0.3.30
+ '@jridgewell/trace-mapping': 0.3.31
callsites: 3.1.0
graceful-fs: 4.2.11
- '@jest/test-result@30.1.3':
+ '@jest/test-result@30.2.0':
dependencies:
- '@jest/console': 30.1.2
- '@jest/types': 30.0.5
+ '@jest/console': 30.2.0
+ '@jest/types': 30.2.0
'@types/istanbul-lib-coverage': 2.0.6
collect-v8-coverage: 1.0.2
- '@jest/test-sequencer@30.1.3':
+ '@jest/test-sequencer@30.2.0':
dependencies:
- '@jest/test-result': 30.1.3
+ '@jest/test-result': 30.2.0
graceful-fs: 4.2.11
- jest-haste-map: 30.1.0
+ jest-haste-map: 30.2.0
slash: 3.0.0
- '@jest/transform@30.1.2':
+ '@jest/transform@30.2.0':
dependencies:
- '@babel/core': 7.28.3
- '@jest/types': 30.0.5
- '@jridgewell/trace-mapping': 0.3.30
- babel-plugin-istanbul: 7.0.0
+ '@babel/core': 7.28.4
+ '@jest/types': 30.2.0
+ '@jridgewell/trace-mapping': 0.3.31
+ babel-plugin-istanbul: 7.0.1
chalk: 4.1.2
convert-source-map: 2.0.0
fast-json-stable-stringify: 2.1.0
graceful-fs: 4.2.11
- jest-haste-map: 30.1.0
+ jest-haste-map: 30.2.0
jest-regex-util: 30.0.1
- jest-util: 30.0.5
+ jest-util: 30.2.0
micromatch: 4.0.8
pirates: 4.0.7
slash: 3.0.0
@@ -20994,7 +21335,7 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/yargs': 17.0.33
chalk: 4.1.2
@@ -21004,7 +21345,17 @@ snapshots:
'@jest/schemas': 30.0.5
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
+ '@types/yargs': 17.0.33
+ chalk: 4.1.2
+
+ '@jest/types@30.2.0':
+ dependencies:
+ '@jest/pattern': 30.0.1
+ '@jest/schemas': 30.0.5
+ '@types/istanbul-lib-coverage': 2.0.6
+ '@types/istanbul-reports': 3.0.4
+ '@types/node': 24.9.1
'@types/yargs': 17.0.33
chalk: 4.1.2
@@ -21132,7 +21483,7 @@ snapshots:
'@microsoft/tsdoc@0.15.1': {}
- '@monaco-editor/loader@1.5.0':
+ '@monaco-editor/loader@1.6.1':
dependencies:
state-local: 1.0.7
@@ -21187,13 +21538,13 @@ snapshots:
'@tybys/wasm-util': 0.10.0
optional: true
- '@nestjs-modules/mailer@2.0.2(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(nodemailer@7.0.6)(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)':
+ '@nestjs-modules/mailer@2.0.2(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(nodemailer@7.0.9)(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)':
dependencies:
'@css-inline/css-inline': 0.14.1
'@nestjs/common': 11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/core': 11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)
glob: 10.3.12
- nodemailer: 7.0.6
+ nodemailer: 7.0.9
optionalDependencies:
'@types/ejs': 3.1.5
'@types/mjml': 4.7.4
@@ -21201,7 +21552,7 @@ snapshots:
ejs: 3.1.10
handlebars: 4.7.8
liquidjs: 10.17.0
- mjml: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
preview-email: 3.1.0
pug: 3.0.3
transitivePeerDependencies:
@@ -21214,25 +21565,27 @@ snapshots:
- typescript
- uncss
- '@nestjs/apollo@13.1.0(@apollo/server@4.12.1(graphql@16.11.0))(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(@nestjs/graphql@13.1.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(graphql@16.11.0)(reflect-metadata@0.2.2))(graphql@16.11.0)':
+ '@nestjs/apollo@13.2.1(@apollo/server@4.12.1(graphql@16.11.0))(@as-integrations/express5@1.1.2(@apollo/server@4.12.1(graphql@16.11.0))(express@5.1.0))(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(@nestjs/graphql@13.2.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(graphql@16.11.0)(reflect-metadata@0.2.2))(graphql@16.11.0)':
dependencies:
'@apollo/server': 4.12.1(graphql@16.11.0)
'@apollo/server-plugin-landing-page-graphql-playground': 4.0.1(@apollo/server@4.12.1(graphql@16.11.0))
'@nestjs/common': 11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/core': 11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)
- '@nestjs/graphql': 13.1.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(graphql@16.11.0)(reflect-metadata@0.2.2)
+ '@nestjs/graphql': 13.2.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(graphql@16.11.0)(reflect-metadata@0.2.2)
graphql: 16.11.0
iterall: 1.3.0
lodash.omit: 4.5.0
tslib: 2.8.1
+ optionalDependencies:
+ '@as-integrations/express5': 1.1.2(@apollo/server@4.12.1(graphql@16.11.0))(express@5.1.0)
- '@nestjs/cli@11.0.10(@swc/core@1.4.2)(@types/node@24.5.2)':
+ '@nestjs/cli@11.0.10(@swc/core@1.4.2)(@types/node@24.9.1)':
dependencies:
'@angular-devkit/core': 19.2.15(chokidar@4.0.3)
'@angular-devkit/schematics': 19.2.15(chokidar@4.0.3)
- '@angular-devkit/schematics-cli': 19.2.15(@types/node@24.5.2)(chokidar@4.0.3)
- '@inquirer/prompts': 7.8.0(@types/node@24.5.2)
- '@nestjs/schematics': 11.0.7(chokidar@4.0.3)(typescript@5.8.3)
+ '@angular-devkit/schematics-cli': 19.2.15(@types/node@24.9.1)(chokidar@4.0.3)
+ '@inquirer/prompts': 7.8.0(@types/node@24.9.1)
+ '@nestjs/schematics': 11.0.9(chokidar@4.0.3)(typescript@5.8.3)
ansis: 4.1.0
chokidar: 4.0.3
cli-table3: 0.6.5
@@ -21292,11 +21645,11 @@ snapshots:
optionalDependencies:
'@nestjs/platform-express': 11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)
- '@nestjs/graphql@13.1.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(graphql@16.11.0)(reflect-metadata@0.2.2)':
+ '@nestjs/graphql@13.2.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(graphql@16.11.0)(reflect-metadata@0.2.2)':
dependencies:
- '@graphql-tools/merge': 9.0.24(graphql@16.11.0)
- '@graphql-tools/schema': 10.0.23(graphql@16.11.0)
- '@graphql-tools/utils': 10.8.6(graphql@16.11.0)
+ '@graphql-tools/merge': 9.1.1(graphql@16.11.0)
+ '@graphql-tools/schema': 10.0.25(graphql@16.11.0)
+ '@graphql-tools/utils': 10.9.1(graphql@16.11.0)
'@nestjs/common': 11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/core': 11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/mapped-types': 2.1.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)
@@ -21304,7 +21657,7 @@ snapshots:
fast-glob: 3.3.3
graphql: 16.11.0
graphql-tag: 2.12.6(graphql@16.11.0)
- graphql-ws: 6.0.4(graphql@16.11.0)(ws@8.17.1)
+ graphql-ws: 6.0.6(graphql@16.11.0)(ws@8.17.1)
lodash: 4.17.21
normalize-path: 3.0.0
reflect-metadata: 0.2.2
@@ -21317,13 +21670,14 @@ snapshots:
transitivePeerDependencies:
- '@fastify/websocket'
- bufferutil
+ - crossws
- uWebSockets.js
- utf-8-validate
- '@nestjs/jwt@11.0.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))':
+ '@nestjs/jwt@11.0.1(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))':
dependencies:
'@nestjs/common': 11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)
- '@types/jsonwebtoken': 9.0.7
+ '@types/jsonwebtoken': 9.0.10
jsonwebtoken: 9.0.2
'@nestjs/mapped-types@2.1.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)':
@@ -21357,29 +21711,29 @@ snapshots:
'@nestjs/core': 11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)
cron: 4.3.3
- '@nestjs/schematics@11.0.7(chokidar@4.0.3)(typescript@5.8.3)':
+ '@nestjs/schematics@11.0.9(chokidar@4.0.3)(typescript@5.8.3)':
dependencies:
- '@angular-devkit/core': 19.2.15(chokidar@4.0.3)
- '@angular-devkit/schematics': 19.2.15(chokidar@4.0.3)
- comment-json: 4.2.5
+ '@angular-devkit/core': 19.2.17(chokidar@4.0.3)
+ '@angular-devkit/schematics': 19.2.17(chokidar@4.0.3)
+ comment-json: 4.4.1
jsonc-parser: 3.3.1
pluralize: 8.0.0
typescript: 5.8.3
transitivePeerDependencies:
- chokidar
- '@nestjs/schematics@11.0.7(chokidar@4.0.3)(typescript@5.9.2)':
+ '@nestjs/schematics@11.0.9(chokidar@4.0.3)(typescript@5.9.3)':
dependencies:
- '@angular-devkit/core': 19.2.15(chokidar@4.0.3)
- '@angular-devkit/schematics': 19.2.15(chokidar@4.0.3)
- comment-json: 4.2.5
+ '@angular-devkit/core': 19.2.17(chokidar@4.0.3)
+ '@angular-devkit/schematics': 19.2.17(chokidar@4.0.3)
+ comment-json: 4.4.1
jsonc-parser: 3.3.1
pluralize: 8.0.0
- typescript: 5.9.2
+ typescript: 5.9.3
transitivePeerDependencies:
- chokidar
- '@nestjs/swagger@11.2.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)':
+ '@nestjs/swagger@11.2.1(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)':
dependencies:
'@microsoft/tsdoc': 0.15.1
'@nestjs/common': 11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)
@@ -21387,14 +21741,14 @@ snapshots:
'@nestjs/mapped-types': 2.1.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)
js-yaml: 4.1.0
lodash: 4.17.21
- path-to-regexp: 8.2.0
+ path-to-regexp: 8.3.0
reflect-metadata: 0.2.2
- swagger-ui-dist: 5.21.0
+ swagger-ui-dist: 5.29.4
optionalDependencies:
class-transformer: 0.5.1
class-validator: 0.14.2
- '@nestjs/terminus@11.0.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(@prisma/client@6.16.2(prisma@6.16.2(typescript@5.9.2))(typescript@5.9.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)':
+ '@nestjs/terminus@11.0.0(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(@prisma/client@6.17.1(prisma@6.17.1(typescript@5.9.3))(typescript@5.9.3))(reflect-metadata@0.2.2)(rxjs@7.8.2)':
dependencies:
'@nestjs/common': 11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/core': 11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.6)(reflect-metadata@0.2.2)(rxjs@7.8.2)
@@ -21403,7 +21757,7 @@ snapshots:
reflect-metadata: 0.2.2
rxjs: 7.8.2
optionalDependencies:
- '@prisma/client': 6.16.2(prisma@6.16.2(typescript@5.9.2))(typescript@5.9.2)
+ '@prisma/client': 6.17.1(prisma@6.17.1(typescript@5.9.3))(typescript@5.9.3)
'@nestjs/testing@11.1.6(@nestjs/common@11.1.6(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.6)(@nestjs/platform-express@11.1.6)':
dependencies:
@@ -21567,14 +21921,14 @@ snapshots:
'@popperjs/core@2.11.8': {}
- '@posthog/core@1.1.0': {}
+ '@posthog/core@1.3.0': {}
- '@prisma/client@6.16.2(prisma@6.16.2(typescript@5.9.2))(typescript@5.9.2)':
+ '@prisma/client@6.17.1(prisma@6.17.1(typescript@5.9.3))(typescript@5.9.3)':
optionalDependencies:
- prisma: 6.16.2(typescript@5.9.2)
- typescript: 5.9.2
+ prisma: 6.17.1(typescript@5.9.3)
+ typescript: 5.9.3
- '@prisma/config@6.16.2':
+ '@prisma/config@6.17.1':
dependencies:
c12: 3.1.0
deepmerge-ts: 7.1.5
@@ -21583,26 +21937,26 @@ snapshots:
transitivePeerDependencies:
- magicast
- '@prisma/debug@6.16.2': {}
+ '@prisma/debug@6.17.1': {}
- '@prisma/engines-version@6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43': {}
+ '@prisma/engines-version@6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac': {}
- '@prisma/engines@6.16.2':
+ '@prisma/engines@6.17.1':
dependencies:
- '@prisma/debug': 6.16.2
- '@prisma/engines-version': 6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43
- '@prisma/fetch-engine': 6.16.2
- '@prisma/get-platform': 6.16.2
+ '@prisma/debug': 6.17.1
+ '@prisma/engines-version': 6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac
+ '@prisma/fetch-engine': 6.17.1
+ '@prisma/get-platform': 6.17.1
- '@prisma/fetch-engine@6.16.2':
+ '@prisma/fetch-engine@6.17.1':
dependencies:
- '@prisma/debug': 6.16.2
- '@prisma/engines-version': 6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43
- '@prisma/get-platform': 6.16.2
+ '@prisma/debug': 6.17.1
+ '@prisma/engines-version': 6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac
+ '@prisma/get-platform': 6.17.1
- '@prisma/get-platform@6.16.2':
+ '@prisma/get-platform@6.17.1':
dependencies:
- '@prisma/debug': 6.16.2
+ '@prisma/debug': 6.17.1
'@protobufjs/aspromise@1.1.2': {}
@@ -21653,13 +22007,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@rollup/plugin-inject@5.0.5(rollup@4.52.2)':
+ '@rollup/plugin-inject@5.0.5(rollup@4.52.5)':
dependencies:
- '@rollup/pluginutils': 5.2.0(rollup@4.52.2)
+ '@rollup/pluginutils': 5.2.0(rollup@4.52.5)
estree-walker: 2.0.2
magic-string: 0.30.17
optionalDependencies:
- rollup: 4.52.2
+ rollup: 4.52.5
'@rollup/plugin-node-resolve@15.3.1(rollup@2.79.2)':
dependencies:
@@ -21667,7 +22021,7 @@ snapshots:
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-module: 1.0.0
- resolve: 1.22.10
+ resolve: 1.22.11
optionalDependencies:
rollup: 2.79.2
@@ -21685,22 +22039,22 @@ snapshots:
optionalDependencies:
rollup: 2.79.2
- '@rollup/plugin-typescript@11.1.6(rollup@4.52.2)(tslib@2.8.0)(typescript@5.9.2)':
+ '@rollup/plugin-typescript@11.1.6(rollup@4.52.5)(tslib@2.8.0)(typescript@5.9.3)':
dependencies:
- '@rollup/pluginutils': 5.1.2(rollup@4.52.2)
+ '@rollup/pluginutils': 5.1.2(rollup@4.52.5)
resolve: 1.22.8
- typescript: 5.9.2
+ typescript: 5.9.3
optionalDependencies:
- rollup: 4.52.2
+ rollup: 4.52.5
tslib: 2.8.0
- '@rollup/plugin-typescript@12.1.4(rollup@4.52.2)(tslib@2.8.1)(typescript@5.9.2)':
+ '@rollup/plugin-typescript@12.1.4(rollup@4.52.5)(tslib@2.8.1)(typescript@5.9.3)':
dependencies:
- '@rollup/pluginutils': 5.2.0(rollup@4.52.2)
+ '@rollup/pluginutils': 5.2.0(rollup@4.52.5)
resolve: 1.22.10
- typescript: 5.9.2
+ typescript: 5.9.3
optionalDependencies:
- rollup: 4.52.2
+ rollup: 4.52.5
tslib: 2.8.1
'@rollup/pluginutils@3.1.0(rollup@2.79.2)':
@@ -21723,21 +22077,21 @@ snapshots:
optionalDependencies:
rollup: 2.79.2
- '@rollup/pluginutils@5.1.2(rollup@4.52.2)':
+ '@rollup/pluginutils@5.1.2(rollup@4.52.5)':
dependencies:
'@types/estree': 1.0.8
estree-walker: 2.0.2
picomatch: 2.3.1
optionalDependencies:
- rollup: 4.52.2
+ rollup: 4.52.5
- '@rollup/pluginutils@5.2.0(rollup@4.52.2)':
+ '@rollup/pluginutils@5.2.0(rollup@4.52.5)':
dependencies:
'@types/estree': 1.0.8
estree-walker: 2.0.2
picomatch: 4.0.3
optionalDependencies:
- rollup: 4.52.2
+ rollup: 4.52.5
'@rollup/pluginutils@5.3.0(rollup@2.79.2)':
dependencies:
@@ -21750,72 +22104,136 @@ snapshots:
'@rollup/rollup-android-arm-eabi@4.52.2':
optional: true
+ '@rollup/rollup-android-arm-eabi@4.52.5':
+ optional: true
+
'@rollup/rollup-android-arm64@4.52.2':
optional: true
+ '@rollup/rollup-android-arm64@4.52.5':
+ optional: true
+
'@rollup/rollup-darwin-arm64@4.52.2':
optional: true
+ '@rollup/rollup-darwin-arm64@4.52.5':
+ optional: true
+
'@rollup/rollup-darwin-x64@4.52.2':
optional: true
+ '@rollup/rollup-darwin-x64@4.52.5':
+ optional: true
+
'@rollup/rollup-freebsd-arm64@4.52.2':
optional: true
+ '@rollup/rollup-freebsd-arm64@4.52.5':
+ optional: true
+
'@rollup/rollup-freebsd-x64@4.52.2':
optional: true
+ '@rollup/rollup-freebsd-x64@4.52.5':
+ optional: true
+
'@rollup/rollup-linux-arm-gnueabihf@4.52.2':
optional: true
+ '@rollup/rollup-linux-arm-gnueabihf@4.52.5':
+ optional: true
+
'@rollup/rollup-linux-arm-musleabihf@4.52.2':
optional: true
+ '@rollup/rollup-linux-arm-musleabihf@4.52.5':
+ optional: true
+
'@rollup/rollup-linux-arm64-gnu@4.52.2':
optional: true
+ '@rollup/rollup-linux-arm64-gnu@4.52.5':
+ optional: true
+
'@rollup/rollup-linux-arm64-musl@4.52.2':
optional: true
+ '@rollup/rollup-linux-arm64-musl@4.52.5':
+ optional: true
+
'@rollup/rollup-linux-loong64-gnu@4.52.2':
optional: true
+ '@rollup/rollup-linux-loong64-gnu@4.52.5':
+ optional: true
+
'@rollup/rollup-linux-ppc64-gnu@4.52.2':
optional: true
+ '@rollup/rollup-linux-ppc64-gnu@4.52.5':
+ optional: true
+
'@rollup/rollup-linux-riscv64-gnu@4.52.2':
optional: true
+ '@rollup/rollup-linux-riscv64-gnu@4.52.5':
+ optional: true
+
'@rollup/rollup-linux-riscv64-musl@4.52.2':
optional: true
+ '@rollup/rollup-linux-riscv64-musl@4.52.5':
+ optional: true
+
'@rollup/rollup-linux-s390x-gnu@4.52.2':
optional: true
+ '@rollup/rollup-linux-s390x-gnu@4.52.5':
+ optional: true
+
'@rollup/rollup-linux-x64-gnu@4.52.2':
optional: true
+ '@rollup/rollup-linux-x64-gnu@4.52.5':
+ optional: true
+
'@rollup/rollup-linux-x64-musl@4.52.2':
optional: true
+ '@rollup/rollup-linux-x64-musl@4.52.5':
+ optional: true
+
'@rollup/rollup-openharmony-arm64@4.52.2':
optional: true
+ '@rollup/rollup-openharmony-arm64@4.52.5':
+ optional: true
+
'@rollup/rollup-win32-arm64-msvc@4.52.2':
optional: true
+ '@rollup/rollup-win32-arm64-msvc@4.52.5':
+ optional: true
+
'@rollup/rollup-win32-ia32-msvc@4.52.2':
optional: true
+ '@rollup/rollup-win32-ia32-msvc@4.52.5':
+ optional: true
+
'@rollup/rollup-win32-x64-gnu@4.52.2':
optional: true
+ '@rollup/rollup-win32-x64-gnu@4.52.5':
+ optional: true
+
'@rollup/rollup-win32-x64-msvc@4.52.2':
optional: true
- '@rushstack/eslint-patch@1.12.0': {}
+ '@rollup/rollup-win32-x64-msvc@4.52.5':
+ optional: true
- '@rushstack/eslint-patch@1.3.3': {}
+ '@rushstack/eslint-patch@1.14.0': {}
'@scarf/scarf@1.4.0': {}
@@ -22127,7 +22545,7 @@ snapshots:
magic-string: 0.25.9
string.prototype.matchall: 4.0.12
- '@sveltejs/vite-plugin-svelte@1.4.0(svelte@3.59.2)(vite@3.2.11(@types/node@24.5.2)(sass@1.93.2)(terser@5.39.2))':
+ '@sveltejs/vite-plugin-svelte@1.4.0(svelte@3.59.2)(vite@3.2.11(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))':
dependencies:
debug: 4.3.7
deepmerge: 4.3.1
@@ -22135,8 +22553,8 @@ snapshots:
magic-string: 0.26.7
svelte: 3.59.2
svelte-hmr: 0.15.3(svelte@3.59.2)
- vite: 3.2.11(@types/node@24.5.2)(sass@1.93.2)(terser@5.39.2)
- vitefu: 0.2.5(vite@3.2.11(@types/node@24.5.2)(sass@1.93.2)(terser@5.39.2))
+ vite: 3.2.11(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
+ vitefu: 0.2.5(vite@3.2.11(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))
transitivePeerDependencies:
- supports-color
@@ -22345,32 +22763,32 @@ snapshots:
'@types/babel__core@7.20.5':
dependencies:
'@babel/parser': 7.28.4
- '@babel/types': 7.28.2
+ '@babel/types': 7.28.4
'@types/babel__generator': 7.6.8
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.20.6
'@types/babel__generator@7.6.8':
dependencies:
- '@babel/types': 7.28.2
+ '@babel/types': 7.28.4
'@types/babel__template@7.4.4':
dependencies:
'@babel/parser': 7.28.4
- '@babel/types': 7.28.2
+ '@babel/types': 7.28.4
'@types/babel__traverse@7.20.6':
dependencies:
- '@babel/types': 7.28.2
+ '@babel/types': 7.28.4
'@types/bcrypt@6.0.0':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/caseless@0.12.5': {}
@@ -22382,11 +22800,11 @@ snapshots:
'@types/connect@3.4.38':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/conventional-commits-parser@5.0.1':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/cookie-parser@1.4.9(@types/express@5.0.3)':
dependencies:
@@ -22396,7 +22814,7 @@ snapshots:
'@types/cors@2.8.19':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/crypto-js@4.2.2': {}
@@ -22430,14 +22848,14 @@ snapshots:
'@types/express-serve-static-core@4.19.6':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/qs': 6.14.0
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
'@types/express-serve-static-core@5.0.6':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/qs': 6.14.0
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
@@ -22461,7 +22879,7 @@ snapshots:
dependencies:
'@hapi/boom': 9.1.4
'@types/crypto-js': 4.2.2
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/request': 2.48.12
'@types/http-errors@2.0.4': {}
@@ -22487,13 +22905,14 @@ snapshots:
'@types/json-schema@7.0.9': {}
- '@types/jsonwebtoken@9.0.6':
+ '@types/jsonwebtoken@9.0.10':
dependencies:
- '@types/node': 24.5.2
+ '@types/ms': 2.1.0
+ '@types/node': 24.9.1
- '@types/jsonwebtoken@9.0.7':
+ '@types/jsonwebtoken@9.0.6':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/linkify-it@5.0.0': {}
@@ -22534,27 +22953,19 @@ snapshots:
'@types/node-fetch@2.6.13':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
form-data: 4.0.4
'@types/node@17.0.45': {}
- '@types/node@18.18.8':
+ '@types/node@24.9.1':
dependencies:
- undici-types: 5.26.5
+ undici-types: 7.16.0
- '@types/node@24.3.0':
- dependencies:
- undici-types: 7.10.0
-
- '@types/node@24.5.2':
- dependencies:
- undici-types: 7.12.0
-
- '@types/nodemailer@7.0.1':
+ '@types/nodemailer@7.0.2':
dependencies:
'@aws-sdk/client-sesv2': 3.872.0
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
transitivePeerDependencies:
- aws-crt
@@ -22562,13 +22973,13 @@ snapshots:
'@types/oauth@0.9.4':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/paho-mqtt@1.0.10': {}
'@types/papaparse@5.3.16':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/passport-github2@1.2.9':
dependencies:
@@ -22608,7 +23019,7 @@ snapshots:
'@types/postman-collection@3.5.11':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/pug@2.0.10':
optional: true
@@ -22624,7 +23035,7 @@ snapshots:
'@types/request@2.48.12':
dependencies:
'@types/caseless': 0.12.5
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/tough-cookie': 4.0.5
form-data: 4.0.4
@@ -22639,17 +23050,17 @@ snapshots:
'@types/send@0.17.4':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/serve-static@1.15.7':
dependencies:
'@types/http-errors': 2.0.4
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/send': 0.17.4
- '@types/splitpanes@2.2.6(typescript@5.9.2)':
+ '@types/splitpanes@2.2.6(typescript@5.9.3)':
dependencies:
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
transitivePeerDependencies:
- typescript
@@ -22663,7 +23074,7 @@ snapshots:
dependencies:
'@types/cookiejar': 2.1.5
'@types/methods': 1.1.4
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
form-data: 4.0.4
'@types/supertest@6.0.3':
@@ -22689,15 +23100,15 @@ snapshots:
'@types/ws@8.18.1':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/ws@8.5.10':
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@types/ws@8.5.12':
dependencies:
- '@types/node': 18.18.8
+ '@types/node': 24.9.1
'@types/yargs-parser@21.0.3': {}
@@ -22705,179 +23116,217 @@ snapshots:
dependencies:
'@types/yargs-parser': 21.0.3
- '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.47.0)(typescript@5.8.3))(eslint@8.47.0)(typescript@5.8.3)':
+ '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.47.0)(typescript@5.9.3))(eslint@8.47.0)(typescript@5.9.3)':
dependencies:
- '@eslint-community/regexpp': 4.11.1
- '@typescript-eslint/parser': 5.62.0(eslint@8.47.0)(typescript@5.8.3)
+ '@eslint-community/regexpp': 4.12.1
+ '@typescript-eslint/parser': 5.62.0(eslint@8.47.0)(typescript@5.9.3)
'@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/type-utils': 5.62.0(eslint@8.47.0)(typescript@5.8.3)
- '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@5.8.3)
+ '@typescript-eslint/type-utils': 5.62.0(eslint@8.47.0)(typescript@5.9.3)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@5.9.3)
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.47.0
graphemer: 1.4.0
ignore: 5.3.2
natural-compare-lite: 1.4.0
- semver: 7.7.2
- tsutils: 3.21.0(typescript@5.8.3)
+ semver: 7.7.3
+ tsutils: 3.21.0(typescript@5.9.3)
optionalDependencies:
- typescript: 5.8.3
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(typescript@5.9.2)':
+ '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.9.2)
+ '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.9.3)
'@typescript-eslint/scope-manager': 7.18.0
- '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.9.2)
- '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.9.2)
+ '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.9.3)
+ '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 7.18.0
eslint: 8.57.0
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
- ts-api-utils: 1.4.3(typescript@5.9.2)
+ ts-api-utils: 1.4.3(typescript@5.9.3)
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.8.3))(eslint@8.47.0)(typescript@5.8.3)':
+ '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.9.3))(eslint@8.47.0)(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.44.1(eslint@8.47.0)(typescript@5.8.3)
+ '@typescript-eslint/parser': 8.44.1(eslint@8.47.0)(typescript@5.9.3)
'@typescript-eslint/scope-manager': 8.44.1
- '@typescript-eslint/type-utils': 8.44.1(eslint@8.47.0)(typescript@5.8.3)
- '@typescript-eslint/utils': 8.44.1(eslint@8.47.0)(typescript@5.8.3)
+ '@typescript-eslint/type-utils': 8.44.1(eslint@8.47.0)(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.44.1(eslint@8.47.0)(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.44.1
eslint: 8.47.0
graphemer: 1.4.0
ignore: 7.0.5
natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.8.3)
- typescript: 5.8.3
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(typescript@5.9.2)':
+ '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.44.1(eslint@8.57.0)(typescript@5.9.2)
+ '@typescript-eslint/parser': 8.44.1(eslint@8.57.0)(typescript@5.9.3)
'@typescript-eslint/scope-manager': 8.44.1
- '@typescript-eslint/type-utils': 8.44.1(eslint@8.57.0)(typescript@5.9.2)
- '@typescript-eslint/utils': 8.44.1(eslint@8.57.0)(typescript@5.9.2)
+ '@typescript-eslint/type-utils': 8.44.1(eslint@8.57.0)(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.44.1(eslint@8.57.0)(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.44.1
eslint: 8.57.0
graphemer: 1.4.0
ignore: 7.0.5
natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.9.2)
- typescript: 5.9.2
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)':
+ '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)
- '@typescript-eslint/scope-manager': 8.44.1
- '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)
- '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)
- '@typescript-eslint/visitor-keys': 8.44.1
- eslint: 9.36.0(jiti@2.6.0)
+ '@typescript-eslint/parser': 8.46.1(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.46.1
+ '@typescript-eslint/type-utils': 8.46.1(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.46.1(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.46.1
+ eslint: 9.37.0(jiti@2.6.0)
graphemer: 1.4.0
ignore: 7.0.5
natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.9.2)
- typescript: 5.9.2
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@5.62.0(eslint@8.47.0)(typescript@5.8.3)':
+ '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/regexpp': 4.12.1
+ '@typescript-eslint/parser': 8.46.2(eslint@8.57.0)(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.46.2
+ '@typescript-eslint/type-utils': 8.46.2(eslint@8.57.0)(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.46.2(eslint@8.57.0)(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.46.2
+ eslint: 8.57.0
+ graphemer: 1.4.0
+ ignore: 7.0.5
+ natural-compare: 1.4.0
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/parser@5.62.0(eslint@8.47.0)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3)
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.3)
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.47.0
optionalDependencies:
- typescript: 5.8.3
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.9.2)':
+ '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 7.18.0
'@typescript-eslint/types': 7.18.0
- '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.2)
+ '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 7.18.0
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.57.0
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.8.3)':
+ '@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.44.1
'@typescript-eslint/types': 8.44.1
- '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.8.3)
+ '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.44.1
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.47.0
- typescript: 5.8.3
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2)':
+ '@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.44.1
'@typescript-eslint/types': 8.44.1
- '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2)
+ '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.44.1
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.57.0
- typescript: 5.9.2
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)':
+ '@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.44.1
- '@typescript-eslint/types': 8.44.1
- '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2)
- '@typescript-eslint/visitor-keys': 8.44.1
+ '@typescript-eslint/scope-manager': 8.46.1
+ '@typescript-eslint/types': 8.46.1
+ '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.46.1
debug: 4.4.3(supports-color@8.1.1)
- eslint: 9.36.0(jiti@2.6.0)
- typescript: 5.9.2
+ eslint: 9.37.0(jiti@2.6.0)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.39.1(typescript@5.9.2)':
+ '@typescript-eslint/parser@8.46.2(eslint@8.57.0)(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.2)
- '@typescript-eslint/types': 8.40.0
+ '@typescript-eslint/scope-manager': 8.46.2
+ '@typescript-eslint/types': 8.46.2
+ '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.46.2
debug: 4.4.3(supports-color@8.1.1)
- typescript: 5.9.2
+ eslint: 8.57.0
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.44.1(typescript@5.8.3)':
+ '@typescript-eslint/project-service@8.39.1(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.8.3)
- '@typescript-eslint/types': 8.44.1
+ '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.1
debug: 4.4.3(supports-color@8.1.1)
- typescript: 5.8.3
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.44.1(typescript@5.9.2)':
+ '@typescript-eslint/project-service@8.44.1(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2)
- '@typescript-eslint/types': 8.44.1
+ '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.1
debug: 4.4.3(supports-color@8.1.1)
- typescript: 5.9.2
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/project-service@8.46.1(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.1
+ debug: 4.4.3(supports-color@8.1.1)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/project-service@8.46.2(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.2
+ debug: 4.4.3(supports-color@8.1.1)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -22906,75 +23355,101 @@ snapshots:
'@typescript-eslint/types': 8.44.1
'@typescript-eslint/visitor-keys': 8.44.1
- '@typescript-eslint/tsconfig-utils@8.39.1(typescript@5.9.2)':
+ '@typescript-eslint/scope-manager@8.46.1':
dependencies:
- typescript: 5.9.2
+ '@typescript-eslint/types': 8.46.1
+ '@typescript-eslint/visitor-keys': 8.46.1
- '@typescript-eslint/tsconfig-utils@8.44.1(typescript@5.8.3)':
+ '@typescript-eslint/scope-manager@8.46.2':
dependencies:
- typescript: 5.8.3
+ '@typescript-eslint/types': 8.46.2
+ '@typescript-eslint/visitor-keys': 8.46.2
+
+ '@typescript-eslint/tsconfig-utils@8.39.1(typescript@5.9.3)':
+ dependencies:
+ typescript: 5.9.3
- '@typescript-eslint/tsconfig-utils@8.44.1(typescript@5.9.2)':
+ '@typescript-eslint/tsconfig-utils@8.44.1(typescript@5.9.3)':
dependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
- '@typescript-eslint/type-utils@5.62.0(eslint@8.47.0)(typescript@5.8.3)':
+ '@typescript-eslint/tsconfig-utils@8.46.1(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3)
- '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@5.8.3)
+ typescript: 5.9.3
+
+ '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)':
+ dependencies:
+ typescript: 5.9.3
+
+ '@typescript-eslint/type-utils@5.62.0(eslint@8.47.0)(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@5.9.3)
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.47.0
- tsutils: 3.21.0(typescript@5.8.3)
+ tsutils: 3.21.0(typescript@5.9.3)
optionalDependencies:
- typescript: 5.8.3
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.9.2)':
+ '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.2)
- '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.9.2)
+ '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.9.3)
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.57.0
- ts-api-utils: 1.4.3(typescript@5.9.2)
+ ts-api-utils: 1.4.3(typescript@5.9.3)
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/type-utils@8.44.1(eslint@8.47.0)(typescript@5.8.3)':
+ '@typescript-eslint/type-utils@8.44.1(eslint@8.47.0)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 8.44.1
- '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.8.3)
- '@typescript-eslint/utils': 8.44.1(eslint@8.47.0)(typescript@5.8.3)
+ '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.44.1(eslint@8.47.0)(typescript@5.9.3)
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.47.0
- ts-api-utils: 2.1.0(typescript@5.8.3)
- typescript: 5.8.3
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/type-utils@8.44.1(eslint@8.57.0)(typescript@5.9.2)':
+ '@typescript-eslint/type-utils@8.44.1(eslint@8.57.0)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 8.44.1
- '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2)
- '@typescript-eslint/utils': 8.44.1(eslint@8.57.0)(typescript@5.9.2)
+ '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.44.1(eslint@8.57.0)(typescript@5.9.3)
debug: 4.4.3(supports-color@8.1.1)
eslint: 8.57.0
- ts-api-utils: 2.1.0(typescript@5.9.2)
- typescript: 5.9.2
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/type-utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)':
+ '@typescript-eslint/type-utils@8.46.1(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/types': 8.44.1
- '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2)
- '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)
+ '@typescript-eslint/types': 8.46.1
+ '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.46.1(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)
+ debug: 4.4.3(supports-color@8.1.1)
+ eslint: 9.37.0(jiti@2.6.0)
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/type-utils@8.46.2(eslint@8.57.0)(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/types': 8.46.2
+ '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.46.2(eslint@8.57.0)(typescript@5.9.3)
debug: 4.4.3(supports-color@8.1.1)
- eslint: 9.36.0(jiti@2.6.0)
- ts-api-utils: 2.1.0(typescript@5.9.2)
- typescript: 5.9.2
+ eslint: 8.57.0
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -22986,25 +23461,27 @@ snapshots:
'@typescript-eslint/types@8.39.1': {}
- '@typescript-eslint/types@8.40.0': {}
-
'@typescript-eslint/types@8.44.1': {}
- '@typescript-eslint/typescript-estree@5.62.0(typescript@5.8.3)':
+ '@typescript-eslint/types@8.46.1': {}
+
+ '@typescript-eslint/types@8.46.2': {}
+
+ '@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/visitor-keys': 5.62.0
debug: 4.4.3(supports-color@8.1.1)
globby: 11.1.0
is-glob: 4.0.3
- semver: 7.7.2
- tsutils: 3.21.0(typescript@5.8.3)
+ semver: 7.7.3
+ tsutils: 3.21.0(typescript@5.9.3)
optionalDependencies:
- typescript: 5.8.3
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@7.18.0(typescript@5.9.2)':
+ '@typescript-eslint/typescript-estree@7.18.0(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 7.18.0
'@typescript-eslint/visitor-keys': 7.18.0
@@ -23012,131 +23489,158 @@ snapshots:
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.5
- semver: 7.7.2
- ts-api-utils: 1.4.3(typescript@5.9.2)
+ semver: 7.7.3
+ ts-api-utils: 1.4.3(typescript@5.9.3)
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.31.0(typescript@5.8.3)':
+ '@typescript-eslint/typescript-estree@8.31.0(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 8.31.0
'@typescript-eslint/visitor-keys': 8.31.0
- debug: 4.4.0
+ debug: 4.4.3(supports-color@8.1.1)
fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.5
- semver: 7.7.2
- ts-api-utils: 2.1.0(typescript@5.8.3)
- typescript: 5.8.3
+ semver: 7.7.3
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.39.1(typescript@5.9.2)':
+ '@typescript-eslint/typescript-estree@8.39.1(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/project-service': 8.39.1(typescript@5.9.2)
- '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.2)
+ '@typescript-eslint/project-service': 8.39.1(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.3)
'@typescript-eslint/types': 8.39.1
'@typescript-eslint/visitor-keys': 8.39.1
debug: 4.4.1
fast-glob: 3.3.3
is-glob: 4.0.3
minimatch: 9.0.5
- semver: 7.7.2
- ts-api-utils: 2.1.0(typescript@5.9.2)
- typescript: 5.9.2
+ semver: 7.7.3
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.44.1(typescript@5.8.3)':
+ '@typescript-eslint/typescript-estree@8.44.1(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/project-service': 8.44.1(typescript@5.8.3)
- '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.8.3)
+ '@typescript-eslint/project-service': 8.44.1(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.3)
'@typescript-eslint/types': 8.44.1
'@typescript-eslint/visitor-keys': 8.44.1
debug: 4.4.3(supports-color@8.1.1)
fast-glob: 3.3.3
is-glob: 4.0.3
minimatch: 9.0.5
- semver: 7.7.2
- ts-api-utils: 2.1.0(typescript@5.8.3)
- typescript: 5.8.3
+ semver: 7.7.3
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.44.1(typescript@5.9.2)':
+ '@typescript-eslint/typescript-estree@8.46.1(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/project-service': 8.44.1(typescript@5.9.2)
- '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2)
- '@typescript-eslint/types': 8.44.1
- '@typescript-eslint/visitor-keys': 8.44.1
+ '@typescript-eslint/project-service': 8.46.1(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.1
+ '@typescript-eslint/visitor-keys': 8.46.1
debug: 4.4.3(supports-color@8.1.1)
fast-glob: 3.3.3
is-glob: 4.0.3
minimatch: 9.0.5
- semver: 7.7.2
- ts-api-utils: 2.1.0(typescript@5.9.2)
- typescript: 5.9.2
+ semver: 7.7.3
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@5.62.0(eslint@8.47.0)(typescript@5.8.3)':
+ '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/project-service': 8.46.2(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.2
+ '@typescript-eslint/visitor-keys': 8.46.2
+ debug: 4.4.3(supports-color@8.1.1)
+ fast-glob: 3.3.3
+ is-glob: 4.0.3
+ minimatch: 9.0.5
+ semver: 7.7.3
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@5.62.0(eslint@8.47.0)(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@8.47.0)
'@types/json-schema': 7.0.15
'@types/semver': 7.5.8
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3)
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.3)
eslint: 8.47.0
eslint-scope: 5.1.1
- semver: 7.7.2
+ semver: 7.7.3
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.9.2)':
+ '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@8.57.0)
'@typescript-eslint/scope-manager': 7.18.0
'@typescript-eslint/types': 7.18.0
- '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.2)
+ '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3)
eslint: 8.57.0
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/utils@8.44.1(eslint@8.47.0)(typescript@5.8.3)':
+ '@typescript-eslint/utils@8.44.1(eslint@8.47.0)(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@8.47.0)
'@typescript-eslint/scope-manager': 8.44.1
'@typescript-eslint/types': 8.44.1
- '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.8.3)
+ '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.3)
eslint: 8.47.0
- typescript: 5.8.3
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.44.1(eslint@8.57.0)(typescript@5.9.2)':
+ '@typescript-eslint/utils@8.44.1(eslint@8.57.0)(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@8.57.0)
'@typescript-eslint/scope-manager': 8.44.1
'@typescript-eslint/types': 8.44.1
- '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2)
+ '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.3)
eslint: 8.57.0
- typescript: 5.9.2
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)':
+ '@typescript-eslint/utils@8.46.1(eslint@9.37.0(jiti@2.6.0))(typescript@5.9.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0))
- '@typescript-eslint/scope-manager': 8.44.1
- '@typescript-eslint/types': 8.44.1
- '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2)
- eslint: 9.36.0(jiti@2.6.0)
- typescript: 5.9.2
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.0))
+ '@typescript-eslint/scope-manager': 8.46.1
+ '@typescript-eslint/types': 8.46.1
+ '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3)
+ eslint: 9.37.0(jiti@2.6.0)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@8.46.2(eslint@8.57.0)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.0)
+ '@typescript-eslint/scope-manager': 8.46.2
+ '@typescript-eslint/types': 8.46.2
+ '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3)
+ eslint: 8.57.0
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -23165,13 +23669,23 @@ snapshots:
'@typescript-eslint/types': 8.44.1
eslint-visitor-keys: 4.2.1
+ '@typescript-eslint/visitor-keys@8.46.1':
+ dependencies:
+ '@typescript-eslint/types': 8.46.1
+ eslint-visitor-keys: 4.2.1
+
+ '@typescript-eslint/visitor-keys@8.46.2':
+ dependencies:
+ '@typescript-eslint/types': 8.46.2
+ eslint-visitor-keys: 4.2.1
+
'@ungap/structured-clone@1.3.0': {}
- '@unhead/vue@2.0.17(vue@3.5.22(typescript@5.9.2))':
+ '@unhead/vue@2.0.19(vue@3.5.22(typescript@5.9.3))':
dependencies:
hookable: 5.5.3
- unhead: 2.0.17
- vue: 3.5.22(typescript@5.9.2)
+ unhead: 2.0.19
+ vue: 3.5.22(typescript@5.9.3)
'@unrs/resolver-binding-android-arm-eabi@1.11.1':
optional: true
@@ -23262,13 +23776,13 @@ snapshots:
dependencies:
graphql: 16.11.0
- '@urql/vue@2.0.0(@urql/core@6.0.1(graphql@16.11.0))(vue@3.5.22(typescript@5.9.2))':
+ '@urql/vue@2.0.0(@urql/core@6.0.1(graphql@16.11.0))(vue@3.5.22(typescript@5.9.3))':
dependencies:
'@urql/core': 6.0.1(graphql@16.11.0)
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
wonka: 6.3.5
- '@vitejs/plugin-legacy@2.3.0(terser@5.39.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))':
+ '@vitejs/plugin-legacy@2.3.0(terser@5.39.2)(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))':
dependencies:
'@babel/standalone': 7.24.5
core-js: 3.38.1
@@ -23276,9 +23790,9 @@ snapshots:
regenerator-runtime: 0.13.11
systemjs: 6.15.1
terser: 5.39.2
- vite: 4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)
+ vite: 4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
- '@vitejs/plugin-legacy@2.3.0(terser@5.39.2)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))':
+ '@vitejs/plugin-legacy@2.3.0(terser@5.39.2)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))':
dependencies:
'@babel/standalone': 7.24.5
core-js: 3.38.1
@@ -23286,9 +23800,9 @@ snapshots:
regenerator-runtime: 0.13.11
systemjs: 6.15.1
terser: 5.39.2
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- '@vitejs/plugin-legacy@2.3.0(terser@5.39.2)(vite@6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))':
+ '@vitejs/plugin-legacy@2.3.0(terser@5.39.2)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))':
dependencies:
'@babel/standalone': 7.24.5
core-js: 3.38.1
@@ -23296,9 +23810,9 @@ snapshots:
regenerator-runtime: 0.13.11
systemjs: 6.15.1
terser: 5.39.2
- vite: 6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- '@vitejs/plugin-legacy@2.3.0(terser@5.39.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))':
+ '@vitejs/plugin-legacy@2.3.0(terser@5.39.2)(vite@7.1.2(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))':
dependencies:
'@babel/standalone': 7.24.5
core-js: 3.38.1
@@ -23306,19 +23820,9 @@ snapshots:
regenerator-runtime: 0.13.11
systemjs: 6.15.1
terser: 5.39.2
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 7.1.2(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- '@vitejs/plugin-legacy@2.3.0(terser@5.39.2)(vite@7.1.2(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))':
- dependencies:
- '@babel/standalone': 7.24.5
- core-js: 3.38.1
- magic-string: 0.26.7
- regenerator-runtime: 0.13.11
- systemjs: 6.15.1
- terser: 5.39.2
- vite: 7.1.2(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
-
- '@vitejs/plugin-legacy@5.4.2(terser@5.39.2)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))':
+ '@vitejs/plugin-legacy@5.4.2(terser@5.39.2)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))':
dependencies:
'@babel/core': 7.25.7
'@babel/preset-env': 7.25.7(@babel/core@7.25.7)
@@ -23329,29 +23833,24 @@ snapshots:
regenerator-runtime: 0.14.1
systemjs: 6.15.1
terser: 5.39.2
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-vue@4.3.1(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))(vue@3.5.22(typescript@5.8.3))':
+ '@vitejs/plugin-vue@4.3.1(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))(vue@3.5.22(typescript@5.9.3))':
dependencies:
- vite: 4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)
- vue: 3.5.22(typescript@5.8.3)
+ vite: 4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
+ vue: 3.5.22(typescript@5.9.3)
- '@vitejs/plugin-vue@5.1.4(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))':
+ '@vitejs/plugin-vue@5.1.4(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))':
dependencies:
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vue: 3.5.22(typescript@5.9.2)
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vue: 3.5.22(typescript@5.9.3)
- '@vitejs/plugin-vue@5.1.4(vite@6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))':
+ '@vitejs/plugin-vue@5.1.4(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))':
dependencies:
- vite: 6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vue: 3.5.22(typescript@5.9.2)
-
- '@vitejs/plugin-vue@5.1.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))':
- dependencies:
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vue: 3.5.22(typescript@5.9.2)
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vue: 3.5.22(typescript@5.9.3)
'@vitest/expect@3.2.4':
dependencies:
@@ -23361,21 +23860,13 @@ snapshots:
chai: 5.2.1
tinyrainbow: 2.0.0
- '@vitest/mocker@3.2.4(vite@6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))':
- dependencies:
- '@vitest/spy': 3.2.4
- estree-walker: 3.0.3
- magic-string: 0.30.17
- optionalDependencies:
- vite: 6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
-
- '@vitest/mocker@3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))':
+ '@vitest/mocker@3.2.4(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))':
dependencies:
'@vitest/spy': 3.2.4
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
'@vitest/pretty-format@3.2.4':
dependencies:
@@ -23478,44 +23969,43 @@ snapshots:
'@vue/devtools-api@6.6.4': {}
- '@vue/eslint-config-typescript@11.0.3(eslint-plugin-vue@10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.8.3))(eslint@8.47.0)(vue-eslint-parser@10.2.0(eslint@8.47.0)))(eslint@8.47.0)(typescript@5.8.3)':
+ '@vue/eslint-config-typescript@11.0.3(eslint-plugin-vue@10.5.1(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.9.3))(eslint@8.47.0)(vue-eslint-parser@10.2.0(eslint@8.47.0)))(eslint@8.47.0)(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.47.0)(typescript@5.8.3))(eslint@8.47.0)(typescript@5.8.3)
- '@typescript-eslint/parser': 5.62.0(eslint@8.47.0)(typescript@5.8.3)
+ '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.47.0)(typescript@5.9.3))(eslint@8.47.0)(typescript@5.9.3)
+ '@typescript-eslint/parser': 5.62.0(eslint@8.47.0)(typescript@5.9.3)
eslint: 8.47.0
- eslint-plugin-vue: 10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.8.3))(eslint@8.47.0)(vue-eslint-parser@10.2.0(eslint@8.47.0))
+ eslint-plugin-vue: 10.5.1(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.9.3))(eslint@8.47.0)(vue-eslint-parser@10.2.0(eslint@8.47.0))
vue-eslint-parser: 9.4.3(eslint@8.47.0)
optionalDependencies:
- typescript: 5.8.3
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@vue/eslint-config-typescript@13.0.0(eslint-plugin-vue@10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0)))(eslint@8.57.0)(typescript@5.9.2)':
+ '@vue/eslint-config-typescript@13.0.0(eslint-plugin-vue@10.5.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0)))(eslint@8.57.0)(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(typescript@5.9.2)
- '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.9.2)
+ '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(typescript@5.9.3)
+ '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.9.3)
eslint: 8.57.0
- eslint-plugin-vue: 10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0))
+ eslint-plugin-vue: 10.5.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0))
vue-eslint-parser: 9.4.3(eslint@8.57.0)
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@vue/language-core@1.8.8(typescript@5.8.3)':
+ '@vue/eslint-config-typescript@13.0.0(eslint-plugin-vue@10.5.1(@typescript-eslint/parser@8.46.2(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0)))(eslint@8.57.0)(typescript@5.9.3)':
dependencies:
- '@volar/language-core': 1.10.10
- '@volar/source-map': 1.10.10
- '@vue/compiler-dom': 3.5.19
- '@vue/reactivity': 3.5.19
- '@vue/shared': 3.5.19
- minimatch: 9.0.5
- muggle-string: 0.3.1
- vue-template-compiler: 2.7.16
+ '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(typescript@5.9.3)
+ '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.9.3)
+ eslint: 8.57.0
+ eslint-plugin-vue: 10.5.1(@typescript-eslint/parser@8.46.2(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0))
+ vue-eslint-parser: 9.4.3(eslint@8.57.0)
optionalDependencies:
- typescript: 5.8.3
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
- '@vue/language-core@1.8.8(typescript@5.9.2)':
+ '@vue/language-core@1.8.8(typescript@5.9.3)':
dependencies:
'@volar/language-core': 1.10.10
'@volar/source-map': 1.10.10
@@ -23526,9 +24016,9 @@ snapshots:
muggle-string: 0.3.1
vue-template-compiler: 2.7.16
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
- '@vue/language-core@2.1.6(typescript@5.9.2)':
+ '@vue/language-core@2.1.6(typescript@5.9.3)':
dependencies:
'@volar/language-core': 2.4.22
'@vue/compiler-dom': 3.5.19
@@ -23539,9 +24029,9 @@ snapshots:
muggle-string: 0.4.1
path-browserify: 1.0.1
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
- '@vue/language-core@2.2.0(typescript@5.9.2)':
+ '@vue/language-core@2.2.0(typescript@5.9.3)':
dependencies:
'@volar/language-core': 2.4.22
'@vue/compiler-dom': 3.5.19
@@ -23552,7 +24042,7 @@ snapshots:
muggle-string: 0.4.1
path-browserify: 1.0.1
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
'@vue/reactivity@3.5.19':
dependencies:
@@ -23574,61 +24064,48 @@ snapshots:
'@vue/shared': 3.5.22
csstype: 3.1.3
- '@vue/server-renderer@3.5.22(vue@3.5.22(typescript@5.8.3))':
- dependencies:
- '@vue/compiler-ssr': 3.5.22
- '@vue/shared': 3.5.22
- vue: 3.5.22(typescript@5.8.3)
-
- '@vue/server-renderer@3.5.22(vue@3.5.22(typescript@5.9.2))':
+ '@vue/server-renderer@3.5.22(vue@3.5.22(typescript@5.9.3))':
dependencies:
'@vue/compiler-ssr': 3.5.22
'@vue/shared': 3.5.22
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
'@vue/shared@3.5.19': {}
'@vue/shared@3.5.22': {}
- '@vue/typescript@1.8.8(typescript@5.8.3)':
+ '@vue/typescript@1.8.8(typescript@5.9.3)':
dependencies:
'@volar/typescript': 1.10.10
- '@vue/language-core': 1.8.8(typescript@5.8.3)
+ '@vue/language-core': 1.8.8(typescript@5.9.3)
transitivePeerDependencies:
- typescript
- '@vue/typescript@1.8.8(typescript@5.9.2)':
- dependencies:
- '@volar/typescript': 1.10.10
- '@vue/language-core': 1.8.8(typescript@5.9.2)
- transitivePeerDependencies:
- - typescript
-
- '@vueuse/core@10.5.0(vue@3.5.22(typescript@5.8.3))':
+ '@vueuse/core@10.5.0(vue@3.5.22(typescript@5.9.3))':
dependencies:
'@types/web-bluetooth': 0.0.18
'@vueuse/metadata': 10.5.0
- '@vueuse/shared': 10.5.0(vue@3.5.22(typescript@5.8.3))
- vue-demi: 0.14.10(vue@3.5.22(typescript@5.8.3))
+ '@vueuse/shared': 10.5.0(vue@3.5.22(typescript@5.9.3))
+ vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- '@vueuse/core@13.7.0(vue@3.5.22(typescript@5.9.2))':
+ '@vueuse/core@13.7.0(vue@3.5.22(typescript@5.9.3))':
dependencies:
'@types/web-bluetooth': 0.0.21
'@vueuse/metadata': 13.7.0
- '@vueuse/shared': 13.7.0(vue@3.5.22(typescript@5.9.2))
- vue: 3.5.22(typescript@5.9.2)
+ '@vueuse/shared': 13.7.0(vue@3.5.22(typescript@5.9.3))
+ vue: 3.5.22(typescript@5.9.3)
- '@vueuse/core@8.9.4(vue@3.5.22(typescript@5.9.2))':
+ '@vueuse/core@8.9.4(vue@3.5.22(typescript@5.9.3))':
dependencies:
'@types/web-bluetooth': 0.0.14
'@vueuse/metadata': 8.9.4
- '@vueuse/shared': 8.9.4(vue@3.5.22(typescript@5.9.2))
- vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.2))
+ '@vueuse/shared': 8.9.4(vue@3.5.22(typescript@5.9.3))
+ vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.3))
optionalDependencies:
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
'@vueuse/metadata@10.5.0': {}
@@ -23636,22 +24113,22 @@ snapshots:
'@vueuse/metadata@8.9.4': {}
- '@vueuse/shared@10.5.0(vue@3.5.22(typescript@5.8.3))':
+ '@vueuse/shared@10.5.0(vue@3.5.22(typescript@5.9.3))':
dependencies:
- vue-demi: 0.14.10(vue@3.5.22(typescript@5.8.3))
+ vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- '@vueuse/shared@13.7.0(vue@3.5.22(typescript@5.9.2))':
+ '@vueuse/shared@13.7.0(vue@3.5.22(typescript@5.9.3))':
dependencies:
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
- '@vueuse/shared@8.9.4(vue@3.5.22(typescript@5.9.2))':
+ '@vueuse/shared@8.9.4(vue@3.5.22(typescript@5.9.3))':
dependencies:
- vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.2))
+ vue-demi: 0.14.10(vue@3.5.22(typescript@5.9.3))
optionalDependencies:
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
'@webassemblyjs/ast@1.14.1':
dependencies:
@@ -23882,7 +24359,7 @@ snapshots:
ajv@8.17.1:
dependencies:
fast-deep-equal: 3.1.3
- fast-uri: 3.0.6
+ fast-uri: 3.1.0
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
@@ -23960,7 +24437,7 @@ snapshots:
argon2@0.44.0:
dependencies:
'@phc/format': 1.0.0
- cross-env: 10.0.0
+ cross-env: 10.1.0
node-addon-api: 8.5.0
node-gyp-build: 4.8.4
@@ -24082,34 +24559,20 @@ snapshots:
transitivePeerDependencies:
- debug
- babel-jest@30.1.2(@babel/core@7.28.3):
- dependencies:
- '@babel/core': 7.28.3
- '@jest/transform': 30.1.2
- '@types/babel__core': 7.20.5
- babel-plugin-istanbul: 7.0.0
- babel-preset-jest: 30.0.1(@babel/core@7.28.3)
- chalk: 4.1.2
- graceful-fs: 4.2.11
- slash: 3.0.0
- transitivePeerDependencies:
- - supports-color
-
- babel-jest@30.1.2(@babel/core@7.28.4):
+ babel-jest@30.2.0(@babel/core@7.28.4):
dependencies:
'@babel/core': 7.28.4
- '@jest/transform': 30.1.2
+ '@jest/transform': 30.2.0
'@types/babel__core': 7.20.5
- babel-plugin-istanbul: 7.0.0
- babel-preset-jest: 30.0.1(@babel/core@7.28.4)
+ babel-plugin-istanbul: 7.0.1
+ babel-preset-jest: 30.2.0(@babel/core@7.28.4)
chalk: 4.1.2
graceful-fs: 4.2.11
slash: 3.0.0
transitivePeerDependencies:
- supports-color
- optional: true
- babel-plugin-istanbul@7.0.0:
+ babel-plugin-istanbul@7.0.1:
dependencies:
'@babel/helper-plugin-utils': 7.27.1
'@istanbuljs/load-nyc-config': 1.1.0
@@ -24119,10 +24582,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
- babel-plugin-jest-hoist@30.0.1:
+ babel-plugin-jest-hoist@30.2.0:
dependencies:
- '@babel/template': 7.27.2
- '@babel/types': 7.28.2
'@types/babel__core': 7.20.5
babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.7):
@@ -24155,7 +24616,7 @@ snapshots:
dependencies:
'@babel/core': 7.28.4
'@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4)
- core-js-compat: 3.45.1
+ core-js-compat: 3.46.0
transitivePeerDependencies:
- supports-color
@@ -24175,26 +24636,7 @@ snapshots:
babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: {}
- babel-preset-current-node-syntax@1.1.0(@babel/core@7.28.3):
- dependencies:
- '@babel/core': 7.28.3
- '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.3)
- '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.3)
- '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.3)
- '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.3)
- '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.3)
- '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.3)
- '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.3)
- '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.3)
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.3)
- '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.3)
- '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.3)
- '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.3)
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.3)
- '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.3)
- '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.3)
-
- babel-preset-current-node-syntax@1.1.0(@babel/core@7.28.4):
+ babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.4):
dependencies:
'@babel/core': 7.28.4
'@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.4)
@@ -24212,7 +24654,6 @@ snapshots:
'@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4)
'@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.4)
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.4)
- optional: true
babel-preset-fbjs@3.4.0(@babel/core@7.28.0):
dependencies:
@@ -24247,18 +24688,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- babel-preset-jest@30.0.1(@babel/core@7.28.3):
- dependencies:
- '@babel/core': 7.28.3
- babel-plugin-jest-hoist: 30.0.1
- babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.3)
-
- babel-preset-jest@30.0.1(@babel/core@7.28.4):
+ babel-preset-jest@30.2.0(@babel/core@7.28.4):
dependencies:
'@babel/core': 7.28.4
- babel-plugin-jest-hoist: 30.0.1
- babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.4)
- optional: true
+ babel-plugin-jest-hoist: 30.2.0
+ babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.4)
babel-walk@3.0.0-canary-5:
dependencies:
@@ -24275,7 +24709,7 @@ snapshots:
base64url@3.0.1: {}
- baseline-browser-mapping@2.8.7: {}
+ baseline-browser-mapping@2.8.19: {}
basic-auth@2.0.1:
dependencies:
@@ -24394,13 +24828,13 @@ snapshots:
update-browserslist-db: 1.1.3(browserslist@4.25.3)
optional: true
- browserslist@4.26.2:
+ browserslist@4.26.3:
dependencies:
- baseline-browser-mapping: 2.8.7
- caniuse-lite: 1.0.30001745
- electron-to-chromium: 1.5.224
- node-releases: 2.0.21
- update-browserslist-db: 1.1.3(browserslist@4.26.2)
+ baseline-browser-mapping: 2.8.19
+ caniuse-lite: 1.0.30001751
+ electron-to-chromium: 1.5.238
+ node-releases: 2.0.26
+ update-browserslist-db: 1.1.3(browserslist@4.26.3)
bs-logger@0.2.6:
dependencies:
@@ -24453,7 +24887,7 @@ snapshots:
dotenv: 16.6.1
exsolve: 1.0.7
giget: 2.0.0
- jiti: 2.5.1
+ jiti: 2.6.0
ohash: 2.0.11
pathe: 2.0.3
perfect-debounce: 1.0.0
@@ -24517,7 +24951,7 @@ snapshots:
caniuse-lite@1.0.30001736:
optional: true
- caniuse-lite@1.0.30001745: {}
+ caniuse-lite@1.0.30001751: {}
capital-case@1.0.4:
dependencies:
@@ -24533,6 +24967,8 @@ snapshots:
loupe: 3.2.0
pathval: 2.0.1
+ chai@6.2.0: {}
+
chalk@2.4.2:
dependencies:
ansi-styles: 3.2.1
@@ -24769,13 +25205,11 @@ snapshots:
commander@9.5.0:
optional: true
- comment-json@4.2.5:
+ comment-json@4.4.1:
dependencies:
array-timsort: 1.0.3
core-util-is: 1.0.3
esprima: 4.0.1
- has-own-prop: 2.0.0
- repeat-string: 1.6.1
common-tags@1.8.2: {}
@@ -24867,17 +25301,17 @@ snapshots:
cookiejar@2.1.4: {}
- copy-anything@3.0.5:
+ copy-anything@4.0.5:
dependencies:
- is-what: 4.1.16
+ is-what: 5.5.0
core-js-compat@3.38.1:
dependencies:
browserslist: 4.24.0
- core-js-compat@3.45.1:
+ core-js-compat@3.46.0:
dependencies:
- browserslist: 4.26.2
+ browserslist: 4.26.3
core-js@3.38.1: {}
@@ -24890,12 +25324,12 @@ snapshots:
corser@2.0.1: {}
- cosmiconfig-typescript-loader@6.1.0(@types/node@24.5.2)(cosmiconfig@9.0.0(typescript@5.9.2))(typescript@5.9.2):
+ cosmiconfig-typescript-loader@6.1.0(@types/node@24.9.1)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3):
dependencies:
- '@types/node': 24.5.2
- cosmiconfig: 9.0.0(typescript@5.9.2)
+ '@types/node': 24.9.1
+ cosmiconfig: 9.0.0(typescript@5.9.3)
jiti: 2.6.0
- typescript: 5.9.2
+ typescript: 5.9.3
cosmiconfig@8.0.0:
dependencies:
@@ -24913,23 +25347,23 @@ snapshots:
optionalDependencies:
typescript: 5.8.3
- cosmiconfig@8.3.6(typescript@5.9.2):
+ cosmiconfig@8.3.6(typescript@5.9.3):
dependencies:
import-fresh: 3.3.1
js-yaml: 4.1.0
parse-json: 5.2.0
path-type: 4.0.0
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
- cosmiconfig@9.0.0(typescript@5.9.2):
+ cosmiconfig@9.0.0(typescript@5.9.3):
dependencies:
env-paths: 2.2.1
import-fresh: 3.3.1
js-yaml: 4.1.0
parse-json: 5.2.0
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
create-require@1.1.1: {}
@@ -24940,15 +25374,11 @@ snapshots:
'@types/luxon': 3.7.1
luxon: 3.7.2
- cross-env@10.0.0:
+ cross-env@10.1.0:
dependencies:
'@epic-web/invariant': 1.0.0
cross-spawn: 7.0.6
- cross-env@7.0.3:
- dependencies:
- cross-spawn: 7.0.6
-
cross-fetch@3.2.0:
dependencies:
node-fetch: 2.7.0
@@ -25270,17 +25700,11 @@ snapshots:
diff@7.0.0: {}
- dioc@3.0.2(vue@3.5.22(typescript@5.8.3)):
- dependencies:
- rxjs: 7.8.2
- optionalDependencies:
- vue: 3.5.22(typescript@5.8.3)
-
- dioc@3.0.2(vue@3.5.22(typescript@5.9.2)):
+ dioc@3.0.2(vue@3.5.22(typescript@5.9.3)):
dependencies:
rxjs: 7.8.2
optionalDependencies:
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
dir-glob@3.0.1:
dependencies:
@@ -25364,7 +25788,7 @@ snapshots:
dotenv@16.6.1: {}
- dotenv@17.2.2: {}
+ dotenv@17.2.3: {}
dset@3.1.4: {}
@@ -25402,13 +25826,13 @@ snapshots:
electron-to-chromium@1.5.207:
optional: true
- electron-to-chromium@1.5.224: {}
+ electron-to-chromium@1.5.238: {}
electron-to-chromium@1.5.35: {}
emittery@0.13.1: {}
- emoji-regex@10.5.0: {}
+ emoji-regex@10.6.0: {}
emoji-regex@8.0.0: {}
@@ -25854,6 +26278,35 @@ snapshots:
'@esbuild/win32-ia32': 0.25.10
'@esbuild/win32-x64': 0.25.10
+ esbuild@0.25.11:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.25.11
+ '@esbuild/android-arm': 0.25.11
+ '@esbuild/android-arm64': 0.25.11
+ '@esbuild/android-x64': 0.25.11
+ '@esbuild/darwin-arm64': 0.25.11
+ '@esbuild/darwin-x64': 0.25.11
+ '@esbuild/freebsd-arm64': 0.25.11
+ '@esbuild/freebsd-x64': 0.25.11
+ '@esbuild/linux-arm': 0.25.11
+ '@esbuild/linux-arm64': 0.25.11
+ '@esbuild/linux-ia32': 0.25.11
+ '@esbuild/linux-loong64': 0.25.11
+ '@esbuild/linux-mips64el': 0.25.11
+ '@esbuild/linux-ppc64': 0.25.11
+ '@esbuild/linux-riscv64': 0.25.11
+ '@esbuild/linux-s390x': 0.25.11
+ '@esbuild/linux-x64': 0.25.11
+ '@esbuild/netbsd-arm64': 0.25.11
+ '@esbuild/netbsd-x64': 0.25.11
+ '@esbuild/openbsd-arm64': 0.25.11
+ '@esbuild/openbsd-x64': 0.25.11
+ '@esbuild/openharmony-arm64': 0.25.11
+ '@esbuild/sunos-x64': 0.25.11
+ '@esbuild/win32-arm64': 0.25.11
+ '@esbuild/win32-ia32': 0.25.11
+ '@esbuild/win32-x64': 0.25.11
+
esbuild@0.25.8:
optionalDependencies:
'@esbuild/aix-ppc64': 0.25.8
@@ -25940,9 +26393,9 @@ snapshots:
dependencies:
eslint: 8.57.0
- eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)):
+ eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@2.6.0)):
dependencies:
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.37.0(jiti@2.6.0)
eslint-plugin-prettier@4.2.1(eslint@8.47.0)(prettier@3.6.2):
dependencies:
@@ -25960,41 +26413,54 @@ snapshots:
'@types/eslint': 9.6.1
eslint-config-prettier: 10.1.8(eslint@8.57.0)
- eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2):
+ eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.37.0(jiti@2.6.0)))(eslint@9.37.0(jiti@2.6.0))(prettier@3.6.2):
dependencies:
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.37.0(jiti@2.6.0)
prettier: 3.6.2
prettier-linter-helpers: 1.0.0
synckit: 0.11.11
optionalDependencies:
'@types/eslint': 9.6.1
- eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.6.0))
+ eslint-config-prettier: 10.1.8(eslint@9.37.0(jiti@2.6.0))
- eslint-plugin-vue@10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.8.3))(eslint@8.47.0)(vue-eslint-parser@10.2.0(eslint@8.47.0)):
+ eslint-plugin-vue@10.5.1(@typescript-eslint/parser@8.44.1(eslint@8.47.0)(typescript@5.9.3))(eslint@8.47.0)(vue-eslint-parser@10.2.0(eslint@8.47.0)):
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@8.47.0)
eslint: 8.47.0
natural-compare: 1.4.0
nth-check: 2.1.1
postcss-selector-parser: 6.1.2
- semver: 7.7.2
+ semver: 7.7.3
vue-eslint-parser: 10.2.0(eslint@8.47.0)
xml-name-validator: 4.0.0
optionalDependencies:
- '@typescript-eslint/parser': 8.44.1(eslint@8.47.0)(typescript@5.8.3)
+ '@typescript-eslint/parser': 8.44.1(eslint@8.47.0)(typescript@5.9.3)
- eslint-plugin-vue@10.5.0(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.2))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0)):
+ eslint-plugin-vue@10.5.1(@typescript-eslint/parser@8.44.1(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0)):
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@8.57.0)
eslint: 8.57.0
natural-compare: 1.4.0
nth-check: 2.1.1
postcss-selector-parser: 6.1.2
- semver: 7.7.2
+ semver: 7.7.3
vue-eslint-parser: 10.2.0(eslint@8.57.0)
xml-name-validator: 4.0.0
optionalDependencies:
- '@typescript-eslint/parser': 8.44.1(eslint@8.57.0)(typescript@5.9.2)
+ '@typescript-eslint/parser': 8.44.1(eslint@8.57.0)(typescript@5.9.3)
+
+ eslint-plugin-vue@10.5.1(@typescript-eslint/parser@8.46.2(eslint@8.57.0)(typescript@5.9.3))(eslint@8.57.0)(vue-eslint-parser@10.2.0(eslint@8.57.0)):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.0)
+ eslint: 8.57.0
+ natural-compare: 1.4.0
+ nth-check: 2.1.1
+ postcss-selector-parser: 6.1.2
+ semver: 7.7.3
+ vue-eslint-parser: 10.2.0(eslint@8.57.0)
+ xml-name-validator: 4.0.0
+ optionalDependencies:
+ '@typescript-eslint/parser': 8.46.2(eslint@8.57.0)(typescript@5.9.3)
eslint-scope@5.1.1:
dependencies:
@@ -26100,16 +26566,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint@9.36.0(jiti@2.6.0):
+ eslint@9.37.0(jiti@2.6.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0))
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.0))
'@eslint-community/regexpp': 4.12.1
'@eslint/config-array': 0.21.0
- '@eslint/config-helpers': 0.3.1
- '@eslint/core': 0.15.2
+ '@eslint/config-helpers': 0.4.0
+ '@eslint/core': 0.16.0
'@eslint/eslintrc': 3.3.1
- '@eslint/js': 9.36.0
- '@eslint/plugin-kit': 0.3.5
+ '@eslint/js': 9.37.0
+ '@eslint/plugin-kit': 0.4.0
'@humanfs/node': 0.16.6
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3
@@ -26118,7 +26584,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.6
- debug: 4.4.1
+ debug: 4.4.3(supports-color@8.1.1)
escape-string-regexp: 4.0.0
eslint-scope: 8.4.0
eslint-visitor-keys: 4.2.1
@@ -26277,14 +26743,14 @@ snapshots:
jest-mock: 30.0.5
jest-util: 30.0.5
- expect@30.1.2:
+ expect@30.2.0:
dependencies:
- '@jest/expect-utils': 30.1.2
+ '@jest/expect-utils': 30.2.0
'@jest/get-type': 30.1.0
- jest-matcher-utils: 30.1.2
- jest-message-util: 30.1.0
- jest-mock: 30.0.5
- jest-util: 30.0.5
+ jest-matcher-utils: 30.2.0
+ jest-message-util: 30.2.0
+ jest-mock: 30.2.0
+ jest-util: 30.2.0
express-session@1.18.2:
dependencies:
@@ -26427,7 +26893,7 @@ snapshots:
fast-safe-stringify@2.1.1: {}
- fast-uri@3.0.6: {}
+ fast-uri@3.1.0: {}
fast-url-parser@1.1.3:
dependencies:
@@ -26548,7 +27014,7 @@ snapshots:
dependencies:
magic-string: 0.30.17
mlly: 1.7.4
- rollup: 4.52.2
+ rollup: 4.52.5
fixpack@4.0.0:
dependencies:
@@ -26606,7 +27072,7 @@ snapshots:
minimatch: 3.1.2
node-abort-controller: 3.1.1
schema-utils: 3.3.0
- semver: 7.7.2
+ semver: 7.7.3
tapable: 2.2.1
typescript: 5.8.3
webpack: 5.100.2(@swc/core@1.4.2)
@@ -26657,12 +27123,6 @@ snapshots:
jsonfile: 6.1.0
universalify: 2.0.1
- fs-extra@11.3.1:
- dependencies:
- graceful-fs: 4.2.11
- jsonfile: 6.2.0
- universalify: 2.0.1
-
fs-extra@9.1.0:
dependencies:
at-least-node: 1.0.0
@@ -26697,6 +27157,8 @@ snapshots:
functions-have-names@1.2.3: {}
+ generator-function@2.0.1: {}
+
gensync@1.0.0-beta.2: {}
get-caller-file@2.0.5: {}
@@ -26866,13 +27328,13 @@ snapshots:
graphemer@1.4.0: {}
- graphql-config@4.5.0(@types/node@24.5.2)(graphql@16.11.0):
+ graphql-config@4.5.0(@types/node@24.9.1)(graphql@16.11.0):
dependencies:
'@graphql-tools/graphql-file-loader': 7.5.17(graphql@16.11.0)
'@graphql-tools/json-file-loader': 7.4.18(graphql@16.11.0)
'@graphql-tools/load': 7.8.14(graphql@16.11.0)
'@graphql-tools/merge': 8.4.2(graphql@16.11.0)
- '@graphql-tools/url-loader': 7.17.18(@types/node@24.5.2)(graphql@16.11.0)
+ '@graphql-tools/url-loader': 7.17.18(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/utils': 9.2.1(graphql@16.11.0)
cosmiconfig: 8.0.0
graphql: 16.11.0
@@ -26886,15 +27348,15 @@ snapshots:
- encoding
- utf-8-validate
- graphql-config@5.1.3(@types/node@18.18.8)(graphql@16.11.0)(typescript@5.8.3):
+ graphql-config@5.1.3(@types/node@24.9.1)(graphql@16.11.0)(typescript@5.9.3):
dependencies:
'@graphql-tools/graphql-file-loader': 8.0.1(graphql@16.11.0)
'@graphql-tools/json-file-loader': 8.0.1(graphql@16.11.0)
'@graphql-tools/load': 8.0.2(graphql@16.11.0)
'@graphql-tools/merge': 9.0.24(graphql@16.11.0)
- '@graphql-tools/url-loader': 8.0.2(@types/node@18.18.8)(graphql@16.11.0)
+ '@graphql-tools/url-loader': 8.0.2(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/utils': 10.8.6(graphql@16.11.0)
- cosmiconfig: 8.3.6(typescript@5.8.3)
+ cosmiconfig: 8.3.6(typescript@5.9.3)
graphql: 16.11.0
jiti: 2.3.3
minimatch: 9.0.5
@@ -26907,15 +27369,15 @@ snapshots:
- typescript
- utf-8-validate
- graphql-config@5.1.5(@types/node@24.5.2)(graphql@16.11.0)(typescript@5.9.2):
+ graphql-config@5.1.5(@types/node@24.9.1)(graphql@16.11.0)(typescript@5.9.3):
dependencies:
'@graphql-tools/graphql-file-loader': 8.0.22(graphql@16.11.0)
'@graphql-tools/json-file-loader': 8.0.20(graphql@16.11.0)
'@graphql-tools/load': 8.1.2(graphql@16.11.0)
'@graphql-tools/merge': 9.1.1(graphql@16.11.0)
- '@graphql-tools/url-loader': 8.0.33(@types/node@24.5.2)(graphql@16.11.0)
+ '@graphql-tools/url-loader': 8.0.33(@types/node@24.9.1)(graphql@16.11.0)
'@graphql-tools/utils': 10.9.1(graphql@16.11.0)
- cosmiconfig: 8.3.6(typescript@5.9.2)
+ cosmiconfig: 8.3.6(typescript@5.9.3)
graphql: 16.11.0
jiti: 2.5.1
minimatch: 9.0.5
@@ -26931,13 +27393,13 @@ snapshots:
- uWebSockets.js
- utf-8-validate
- graphql-language-service-interface@2.10.2(@types/node@24.5.2)(graphql@16.11.0):
+ graphql-language-service-interface@2.10.2(@types/node@24.9.1)(graphql@16.11.0):
dependencies:
graphql: 16.11.0
- graphql-config: 4.5.0(@types/node@24.5.2)(graphql@16.11.0)
- graphql-language-service-parser: 1.10.4(@types/node@24.5.2)(graphql@16.11.0)
- graphql-language-service-types: 1.8.7(@types/node@24.5.2)(graphql@16.11.0)
- graphql-language-service-utils: 2.7.1(@types/node@24.5.2)(graphql@16.11.0)
+ graphql-config: 4.5.0(@types/node@24.9.1)(graphql@16.11.0)
+ graphql-language-service-parser: 1.10.4(@types/node@24.9.1)(graphql@16.11.0)
+ graphql-language-service-types: 1.8.7(@types/node@24.9.1)(graphql@16.11.0)
+ graphql-language-service-utils: 2.7.1(@types/node@24.9.1)(graphql@16.11.0)
vscode-languageserver-types: 3.17.5
transitivePeerDependencies:
- '@types/node'
@@ -26946,10 +27408,10 @@ snapshots:
- encoding
- utf-8-validate
- graphql-language-service-parser@1.10.4(@types/node@24.5.2)(graphql@16.11.0):
+ graphql-language-service-parser@1.10.4(@types/node@24.9.1)(graphql@16.11.0):
dependencies:
graphql: 16.11.0
- graphql-language-service-types: 1.8.7(@types/node@24.5.2)(graphql@16.11.0)
+ graphql-language-service-types: 1.8.7(@types/node@24.9.1)(graphql@16.11.0)
transitivePeerDependencies:
- '@types/node'
- bufferutil
@@ -26957,10 +27419,10 @@ snapshots:
- encoding
- utf-8-validate
- graphql-language-service-types@1.8.7(@types/node@24.5.2)(graphql@16.11.0):
+ graphql-language-service-types@1.8.7(@types/node@24.9.1)(graphql@16.11.0):
dependencies:
graphql: 16.11.0
- graphql-config: 4.5.0(@types/node@24.5.2)(graphql@16.11.0)
+ graphql-config: 4.5.0(@types/node@24.9.1)(graphql@16.11.0)
vscode-languageserver-types: 3.17.5
transitivePeerDependencies:
- '@types/node'
@@ -26969,11 +27431,11 @@ snapshots:
- encoding
- utf-8-validate
- graphql-language-service-utils@2.7.1(@types/node@24.5.2)(graphql@16.11.0):
+ graphql-language-service-utils@2.7.1(@types/node@24.9.1)(graphql@16.11.0):
dependencies:
'@types/json-schema': 7.0.9
graphql: 16.11.0
- graphql-language-service-types: 1.8.7(@types/node@24.5.2)(graphql@16.11.0)
+ graphql-language-service-types: 1.8.7(@types/node@24.9.1)(graphql@16.11.0)
nullthrows: 1.1.1
transitivePeerDependencies:
- '@types/node'
@@ -27020,12 +27482,6 @@ snapshots:
dependencies:
graphql: 16.11.0
- graphql-ws@6.0.4(graphql@16.11.0)(ws@8.17.1):
- dependencies:
- graphql: 16.11.0
- optionalDependencies:
- ws: 8.17.1
-
graphql-ws@6.0.6(graphql@16.11.0)(ws@8.17.1):
dependencies:
graphql: 16.11.0
@@ -27059,8 +27515,6 @@ snapshots:
has-flag@4.0.0: {}
- has-own-prop@2.0.0: {}
-
has-property-descriptors@1.0.2:
dependencies:
es-define-property: 1.0.1
@@ -27118,9 +27572,9 @@ snapshots:
selderee: 0.11.0
optional: true
- htmlnano@2.1.2(cssnano@7.1.1(postcss@8.5.6))(postcss@8.5.6)(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ htmlnano@2.1.2(cssnano@7.1.1(postcss@8.5.6))(postcss@8.5.6)(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
- cosmiconfig: 9.0.0(typescript@5.9.2)
+ cosmiconfig: 9.0.0(typescript@5.9.3)
posthtml: 0.16.6
optionalDependencies:
cssnano: 7.1.1(postcss@8.5.6)
@@ -27295,9 +27749,9 @@ snapshots:
through: 2.3.8
wrap-ansi: 6.2.0
- inquirer@8.2.7(@types/node@24.5.2):
+ inquirer@8.2.7(@types/node@24.9.1):
dependencies:
- '@inquirer/external-editor': 1.0.0(@types/node@24.5.2)
+ '@inquirer/external-editor': 1.0.0(@types/node@24.9.1)
ansi-escapes: 4.3.2
chalk: 4.1.2
cli-cursor: 3.1.0
@@ -27476,9 +27930,10 @@ snapshots:
dependencies:
has-tostringtag: 1.0.2
- is-generator-function@1.1.0:
+ is-generator-function@1.1.2:
dependencies:
call-bound: 1.0.4
+ generator-function: 2.0.1
get-proto: 1.0.1
has-tostringtag: 1.0.2
safe-regex-test: 1.1.0
@@ -27622,7 +28077,7 @@ snapshots:
call-bind: 1.0.7
get-intrinsic: 1.3.0
- is-what@4.1.16: {}
+ is-what@5.5.0: {}
is-windows@1.0.2: {}
@@ -27658,11 +28113,11 @@ snapshots:
istanbul-lib-instrument@6.0.3:
dependencies:
- '@babel/core': 7.28.3
+ '@babel/core': 7.28.4
'@babel/parser': 7.28.4
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
- semver: 7.7.2
+ semver: 7.7.3
transitivePeerDependencies:
- supports-color
@@ -27674,7 +28129,7 @@ snapshots:
istanbul-lib-source-maps@5.0.6:
dependencies:
- '@jridgewell/trace-mapping': 0.3.30
+ '@jridgewell/trace-mapping': 0.3.31
debug: 4.4.3(supports-color@8.1.1)
istanbul-lib-coverage: 3.2.2
transitivePeerDependencies:
@@ -27712,31 +28167,31 @@ snapshots:
filelist: 1.0.4
minimatch: 3.1.2
- jest-changed-files@30.0.5:
+ jest-changed-files@30.2.0:
dependencies:
execa: 5.1.1
- jest-util: 30.0.5
+ jest-util: 30.2.0
p-limit: 3.1.0
- jest-circus@30.1.3:
+ jest-circus@30.2.0:
dependencies:
- '@jest/environment': 30.1.2
- '@jest/expect': 30.1.2
- '@jest/test-result': 30.1.3
- '@jest/types': 30.0.5
- '@types/node': 24.5.2
+ '@jest/environment': 30.2.0
+ '@jest/expect': 30.2.0
+ '@jest/test-result': 30.2.0
+ '@jest/types': 30.2.0
+ '@types/node': 24.9.1
chalk: 4.1.2
co: 4.6.0
dedent: 1.6.0
is-generator-fn: 2.1.0
- jest-each: 30.1.0
- jest-matcher-utils: 30.1.2
- jest-message-util: 30.1.0
- jest-runtime: 30.1.3
- jest-snapshot: 30.1.2
- jest-util: 30.0.5
+ jest-each: 30.2.0
+ jest-matcher-utils: 30.2.0
+ jest-message-util: 30.2.0
+ jest-runtime: 30.2.0
+ jest-snapshot: 30.2.0
+ jest-util: 30.2.0
p-limit: 3.1.0
- pretty-format: 30.0.5
+ pretty-format: 30.2.0
pure-rand: 7.0.1
slash: 3.0.0
stack-utils: 2.0.6
@@ -27744,17 +28199,17 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)):
+ jest-cli@30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)):
dependencies:
- '@jest/core': 30.1.3(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
- '@jest/test-result': 30.1.3
- '@jest/types': 30.0.5
+ '@jest/core': 30.2.0(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
+ '@jest/test-result': 30.2.0
+ '@jest/types': 30.2.0
chalk: 4.1.2
exit-x: 0.2.2
import-local: 3.2.0
- jest-config: 30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
- jest-util: 30.0.5
- jest-validate: 30.1.0
+ jest-config: 30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
+ jest-util: 30.2.0
+ jest-validate: 30.2.0
yargs: 17.7.2
transitivePeerDependencies:
- '@types/node'
@@ -27763,35 +28218,35 @@ snapshots:
- supports-color
- ts-node
- jest-config@30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)):
+ jest-config@30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)):
dependencies:
- '@babel/core': 7.28.3
+ '@babel/core': 7.28.4
'@jest/get-type': 30.1.0
'@jest/pattern': 30.0.1
- '@jest/test-sequencer': 30.1.3
- '@jest/types': 30.0.5
- babel-jest: 30.1.2(@babel/core@7.28.3)
+ '@jest/test-sequencer': 30.2.0
+ '@jest/types': 30.2.0
+ babel-jest: 30.2.0(@babel/core@7.28.4)
chalk: 4.1.2
ci-info: 4.3.0
deepmerge: 4.3.1
glob: 10.4.5
graceful-fs: 4.2.11
- jest-circus: 30.1.3
- jest-docblock: 30.0.1
- jest-environment-node: 30.1.2
+ jest-circus: 30.2.0
+ jest-docblock: 30.2.0
+ jest-environment-node: 30.2.0
jest-regex-util: 30.0.1
- jest-resolve: 30.1.3
- jest-runner: 30.1.3
- jest-util: 30.0.5
- jest-validate: 30.1.0
+ jest-resolve: 30.2.0
+ jest-runner: 30.2.0
+ jest-util: 30.2.0
+ jest-validate: 30.2.0
micromatch: 4.0.8
parse-json: 5.2.0
- pretty-format: 30.0.5
+ pretty-format: 30.2.0
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 24.5.2
- ts-node: 10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)
+ '@types/node': 24.9.1
+ ts-node: 10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -27810,56 +28265,56 @@ snapshots:
chalk: 4.1.2
pretty-format: 30.0.5
- jest-diff@30.1.2:
+ jest-diff@30.2.0:
dependencies:
'@jest/diff-sequences': 30.0.1
'@jest/get-type': 30.1.0
chalk: 4.1.2
- pretty-format: 30.0.5
+ pretty-format: 30.2.0
- jest-docblock@30.0.1:
+ jest-docblock@30.2.0:
dependencies:
detect-newline: 3.1.0
- jest-each@30.1.0:
+ jest-each@30.2.0:
dependencies:
'@jest/get-type': 30.1.0
- '@jest/types': 30.0.5
+ '@jest/types': 30.2.0
chalk: 4.1.2
- jest-util: 30.0.5
- pretty-format: 30.0.5
+ jest-util: 30.2.0
+ pretty-format: 30.2.0
- jest-environment-node@30.1.2:
+ jest-environment-node@30.2.0:
dependencies:
- '@jest/environment': 30.1.2
- '@jest/fake-timers': 30.1.2
- '@jest/types': 30.0.5
- '@types/node': 24.5.2
- jest-mock: 30.0.5
- jest-util: 30.0.5
- jest-validate: 30.1.0
+ '@jest/environment': 30.2.0
+ '@jest/fake-timers': 30.2.0
+ '@jest/types': 30.2.0
+ '@types/node': 24.9.1
+ jest-mock: 30.2.0
+ jest-util: 30.2.0
+ jest-validate: 30.2.0
jest-get-type@29.6.3: {}
- jest-haste-map@30.1.0:
+ jest-haste-map@30.2.0:
dependencies:
- '@jest/types': 30.0.5
- '@types/node': 24.5.2
+ '@jest/types': 30.2.0
+ '@types/node': 24.9.1
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
jest-regex-util: 30.0.1
- jest-util: 30.0.5
- jest-worker: 30.1.0
+ jest-util: 30.2.0
+ jest-worker: 30.2.0
micromatch: 4.0.8
walker: 1.0.8
optionalDependencies:
fsevents: 2.3.3
- jest-leak-detector@30.1.0:
+ jest-leak-detector@30.2.0:
dependencies:
'@jest/get-type': 30.1.0
- pretty-format: 30.0.5
+ pretty-format: 30.2.0
jest-matcher-utils@29.7.0:
dependencies:
@@ -27875,12 +28330,12 @@ snapshots:
jest-diff: 30.0.5
pretty-format: 30.0.5
- jest-matcher-utils@30.1.2:
+ jest-matcher-utils@30.2.0:
dependencies:
'@jest/get-type': 30.1.0
chalk: 4.1.2
- jest-diff: 30.1.2
- pretty-format: 30.0.5
+ jest-diff: 30.2.0
+ pretty-format: 30.2.0
jest-message-util@29.7.0:
dependencies:
@@ -27906,131 +28361,137 @@ snapshots:
slash: 3.0.0
stack-utils: 2.0.6
- jest-message-util@30.1.0:
+ jest-message-util@30.2.0:
dependencies:
'@babel/code-frame': 7.27.1
- '@jest/types': 30.0.5
+ '@jest/types': 30.2.0
'@types/stack-utils': 2.0.3
chalk: 4.1.2
graceful-fs: 4.2.11
micromatch: 4.0.8
- pretty-format: 30.0.5
+ pretty-format: 30.2.0
slash: 3.0.0
stack-utils: 2.0.6
- jest-mock-extended@4.0.0(@jest/globals@30.1.2)(jest@30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)))(typescript@5.9.2):
+ jest-mock-extended@4.0.0(@jest/globals@30.2.0)(jest@30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)))(typescript@5.9.3):
dependencies:
- '@jest/globals': 30.1.2
- jest: 30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
- ts-essentials: 10.0.2(typescript@5.9.2)
- typescript: 5.9.2
+ '@jest/globals': 30.2.0
+ jest: 30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
+ ts-essentials: 10.0.2(typescript@5.9.3)
+ typescript: 5.9.3
jest-mock@30.0.5:
dependencies:
'@jest/types': 30.0.5
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
jest-util: 30.0.5
- jest-pnp-resolver@1.2.3(jest-resolve@30.1.3):
+ jest-mock@30.2.0:
+ dependencies:
+ '@jest/types': 30.2.0
+ '@types/node': 24.9.1
+ jest-util: 30.2.0
+
+ jest-pnp-resolver@1.2.3(jest-resolve@30.2.0):
optionalDependencies:
- jest-resolve: 30.1.3
+ jest-resolve: 30.2.0
jest-regex-util@30.0.1: {}
- jest-resolve-dependencies@30.1.3:
+ jest-resolve-dependencies@30.2.0:
dependencies:
jest-regex-util: 30.0.1
- jest-snapshot: 30.1.2
+ jest-snapshot: 30.2.0
transitivePeerDependencies:
- supports-color
- jest-resolve@30.1.3:
+ jest-resolve@30.2.0:
dependencies:
chalk: 4.1.2
graceful-fs: 4.2.11
- jest-haste-map: 30.1.0
- jest-pnp-resolver: 1.2.3(jest-resolve@30.1.3)
- jest-util: 30.0.5
- jest-validate: 30.1.0
+ jest-haste-map: 30.2.0
+ jest-pnp-resolver: 1.2.3(jest-resolve@30.2.0)
+ jest-util: 30.2.0
+ jest-validate: 30.2.0
slash: 3.0.0
unrs-resolver: 1.11.1
- jest-runner@30.1.3:
+ jest-runner@30.2.0:
dependencies:
- '@jest/console': 30.1.2
- '@jest/environment': 30.1.2
- '@jest/test-result': 30.1.3
- '@jest/transform': 30.1.2
- '@jest/types': 30.0.5
- '@types/node': 24.5.2
+ '@jest/console': 30.2.0
+ '@jest/environment': 30.2.0
+ '@jest/test-result': 30.2.0
+ '@jest/transform': 30.2.0
+ '@jest/types': 30.2.0
+ '@types/node': 24.9.1
chalk: 4.1.2
emittery: 0.13.1
exit-x: 0.2.2
graceful-fs: 4.2.11
- jest-docblock: 30.0.1
- jest-environment-node: 30.1.2
- jest-haste-map: 30.1.0
- jest-leak-detector: 30.1.0
- jest-message-util: 30.1.0
- jest-resolve: 30.1.3
- jest-runtime: 30.1.3
- jest-util: 30.0.5
- jest-watcher: 30.1.3
- jest-worker: 30.1.0
+ jest-docblock: 30.2.0
+ jest-environment-node: 30.2.0
+ jest-haste-map: 30.2.0
+ jest-leak-detector: 30.2.0
+ jest-message-util: 30.2.0
+ jest-resolve: 30.2.0
+ jest-runtime: 30.2.0
+ jest-util: 30.2.0
+ jest-watcher: 30.2.0
+ jest-worker: 30.2.0
p-limit: 3.1.0
source-map-support: 0.5.13
transitivePeerDependencies:
- supports-color
- jest-runtime@30.1.3:
+ jest-runtime@30.2.0:
dependencies:
- '@jest/environment': 30.1.2
- '@jest/fake-timers': 30.1.2
- '@jest/globals': 30.1.2
+ '@jest/environment': 30.2.0
+ '@jest/fake-timers': 30.2.0
+ '@jest/globals': 30.2.0
'@jest/source-map': 30.0.1
- '@jest/test-result': 30.1.3
- '@jest/transform': 30.1.2
- '@jest/types': 30.0.5
- '@types/node': 24.5.2
+ '@jest/test-result': 30.2.0
+ '@jest/transform': 30.2.0
+ '@jest/types': 30.2.0
+ '@types/node': 24.9.1
chalk: 4.1.2
cjs-module-lexer: 2.1.0
collect-v8-coverage: 1.0.2
glob: 10.4.5
graceful-fs: 4.2.11
- jest-haste-map: 30.1.0
- jest-message-util: 30.1.0
- jest-mock: 30.0.5
+ jest-haste-map: 30.2.0
+ jest-message-util: 30.2.0
+ jest-mock: 30.2.0
jest-regex-util: 30.0.1
- jest-resolve: 30.1.3
- jest-snapshot: 30.1.2
- jest-util: 30.0.5
+ jest-resolve: 30.2.0
+ jest-snapshot: 30.2.0
+ jest-util: 30.2.0
slash: 3.0.0
strip-bom: 4.0.0
transitivePeerDependencies:
- supports-color
- jest-snapshot@30.1.2:
+ jest-snapshot@30.2.0:
dependencies:
- '@babel/core': 7.28.3
+ '@babel/core': 7.28.4
'@babel/generator': 7.28.3
- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3)
- '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.3)
- '@babel/types': 7.28.2
- '@jest/expect-utils': 30.1.2
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4)
+ '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4)
+ '@babel/types': 7.28.4
+ '@jest/expect-utils': 30.2.0
'@jest/get-type': 30.1.0
- '@jest/snapshot-utils': 30.1.2
- '@jest/transform': 30.1.2
- '@jest/types': 30.0.5
- babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.3)
+ '@jest/snapshot-utils': 30.2.0
+ '@jest/transform': 30.2.0
+ '@jest/types': 30.2.0
+ babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.4)
chalk: 4.1.2
- expect: 30.1.2
+ expect: 30.2.0
graceful-fs: 4.2.11
- jest-diff: 30.1.2
- jest-matcher-utils: 30.1.2
- jest-message-util: 30.1.0
- jest-util: 30.0.5
- pretty-format: 30.0.5
- semver: 7.7.2
+ jest-diff: 30.2.0
+ jest-matcher-utils: 30.2.0
+ jest-message-util: 30.2.0
+ jest-util: 30.2.0
+ pretty-format: 30.2.0
+ semver: 7.7.3
synckit: 0.11.11
transitivePeerDependencies:
- supports-color
@@ -28038,7 +28499,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -28047,52 +28508,61 @@ snapshots:
jest-util@30.0.5:
dependencies:
'@jest/types': 30.0.5
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
+ chalk: 4.1.2
+ ci-info: 4.3.0
+ graceful-fs: 4.2.11
+ picomatch: 4.0.3
+
+ jest-util@30.2.0:
+ dependencies:
+ '@jest/types': 30.2.0
+ '@types/node': 24.9.1
chalk: 4.1.2
ci-info: 4.3.0
graceful-fs: 4.2.11
picomatch: 4.0.3
- jest-validate@30.1.0:
+ jest-validate@30.2.0:
dependencies:
'@jest/get-type': 30.1.0
- '@jest/types': 30.0.5
+ '@jest/types': 30.2.0
camelcase: 6.3.0
chalk: 4.1.2
leven: 3.1.0
- pretty-format: 30.0.5
+ pretty-format: 30.2.0
- jest-watcher@30.1.3:
+ jest-watcher@30.2.0:
dependencies:
- '@jest/test-result': 30.1.3
- '@jest/types': 30.0.5
- '@types/node': 24.5.2
+ '@jest/test-result': 30.2.0
+ '@jest/types': 30.2.0
+ '@types/node': 24.9.1
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
- jest-util: 30.0.5
+ jest-util: 30.2.0
string-length: 4.0.2
jest-worker@27.5.1:
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
merge-stream: 2.0.0
supports-color: 8.1.1
- jest-worker@30.1.0:
+ jest-worker@30.2.0:
dependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
'@ungap/structured-clone': 1.3.0
- jest-util: 30.0.5
+ jest-util: 30.2.0
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)):
+ jest@30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)):
dependencies:
- '@jest/core': 30.1.3(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
- '@jest/types': 30.0.5
+ '@jest/core': 30.2.0(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
+ '@jest/types': 30.2.0
import-local: 3.2.0
- jest-cli: 30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
+ jest-cli: 30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -28197,7 +28667,7 @@ snapshots:
acorn: 8.15.0
eslint-visitor-keys: 3.4.3
espree: 9.6.1
- semver: 7.7.2
+ semver: 7.7.3
jsonc-parser@3.3.1: {}
@@ -28234,7 +28704,7 @@ snapshots:
lodash.isstring: 4.0.1
lodash.once: 4.1.1
ms: 2.1.3
- semver: 7.7.2
+ semver: 7.7.3
jstransformer@1.0.0:
dependencies:
@@ -28333,12 +28803,12 @@ snapshots:
dependencies:
uc.micro: 2.1.0
- lint-staged@16.2.1:
+ lint-staged@16.2.5:
dependencies:
commander: 14.0.1
- listr2: 9.0.4
+ listr2: 9.0.5
micromatch: 4.0.8
- nano-spawn: 1.0.3
+ nano-spawn: 2.0.0
pidtree: 0.6.0
string-argv: 0.3.2
yaml: 2.8.1
@@ -28361,7 +28831,7 @@ snapshots:
through: 2.3.8
wrap-ansi: 7.0.0
- listr2@9.0.4:
+ listr2@9.0.5:
dependencies:
cli-truncate: 5.1.0
colorette: 2.0.20
@@ -28483,7 +28953,7 @@ snapshots:
dependencies:
js-tokens: 4.0.0
- lossless-json@4.2.0: {}
+ lossless-json@4.3.0: {}
loupe@3.2.0: {}
@@ -28536,7 +29006,7 @@ snapshots:
libmime: 5.3.5
linkify-it: 5.0.0
mailsplit: 5.4.0
- nodemailer: 6.9.13
+ nodemailer: 7.0.7
punycode.js: 2.3.1
tlds: 1.252.0
optional: true
@@ -28550,7 +29020,7 @@ snapshots:
make-dir@4.0.0:
dependencies:
- semver: 7.7.2
+ semver: 7.7.3
make-error@1.3.6: {}
@@ -28611,17 +29081,13 @@ snapshots:
merge2@1.4.1: {}
- meros@1.3.0(@types/node@18.18.8):
- optionalDependencies:
- '@types/node': 18.18.8
-
- meros@1.3.0(@types/node@24.5.2):
+ meros@1.3.0(@types/node@24.9.1):
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
- meros@1.3.1(@types/node@24.5.2):
+ meros@1.3.1(@types/node@24.9.1):
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
methods@1.1.2: {}
@@ -28686,11 +29152,11 @@ snapshots:
minisearch@7.2.0: {}
- mjml-accordion@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-accordion@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28702,11 +29168,11 @@ snapshots:
- uncss
optional: true
- mjml-body@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-body@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28718,11 +29184,11 @@ snapshots:
- uncss
optional: true
- mjml-button@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-button@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28734,11 +29200,11 @@ snapshots:
- uncss
optional: true
- mjml-carousel@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-carousel@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28750,14 +29216,14 @@ snapshots:
- uncss
optional: true
- mjml-cli@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-cli@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
chokidar: 3.6.0
glob: 10.4.5
lodash: 4.17.21
minimatch: 9.0.5
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
mjml-parser-xml: 5.0.0-alpha.4
mjml-validator: 5.0.0-alpha.4
yargs: 17.7.2
@@ -28772,11 +29238,11 @@ snapshots:
- uncss
optional: true
- mjml-column@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-column@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28788,13 +29254,13 @@ snapshots:
- uncss
optional: true
- mjml-core@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-core@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
cheerio: 1.0.0-rc.12
cssnano: 7.1.1(postcss@8.5.6)
detect-node: 2.1.0
- htmlnano: 2.1.2(cssnano@7.1.1(postcss@8.5.6))(postcss@8.5.6)(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ htmlnano: 2.1.2(cssnano@7.1.1(postcss@8.5.6))(postcss@8.5.6)(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
juice: 10.0.1
lodash: 4.17.21
mjml-parser-xml: 5.0.0-alpha.4
@@ -28812,11 +29278,11 @@ snapshots:
- uncss
optional: true
- mjml-divider@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-divider@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28828,11 +29294,11 @@ snapshots:
- uncss
optional: true
- mjml-group@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-group@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28844,11 +29310,11 @@ snapshots:
- uncss
optional: true
- mjml-head-attributes@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-head-attributes@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28860,11 +29326,11 @@ snapshots:
- uncss
optional: true
- mjml-head-breakpoint@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-head-breakpoint@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28876,11 +29342,11 @@ snapshots:
- uncss
optional: true
- mjml-head-font@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-head-font@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28892,11 +29358,11 @@ snapshots:
- uncss
optional: true
- mjml-head-html-attributes@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-head-html-attributes@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28908,11 +29374,11 @@ snapshots:
- uncss
optional: true
- mjml-head-preview@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-head-preview@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28924,11 +29390,11 @@ snapshots:
- uncss
optional: true
- mjml-head-style@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-head-style@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28940,11 +29406,11 @@ snapshots:
- uncss
optional: true
- mjml-head-title@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-head-title@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28956,11 +29422,11 @@ snapshots:
- uncss
optional: true
- mjml-head@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-head@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28972,11 +29438,11 @@ snapshots:
- uncss
optional: true
- mjml-hero@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-hero@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -28988,11 +29454,11 @@ snapshots:
- uncss
optional: true
- mjml-image@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-image@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -29004,11 +29470,11 @@ snapshots:
- uncss
optional: true
- mjml-navbar@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-navbar@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -29028,34 +29494,34 @@ snapshots:
lodash: 4.17.21
optional: true
- mjml-preset-core@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-preset-core@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
- mjml-accordion: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-body: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-button: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-carousel: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-column: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-divider: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-group: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-head: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-head-attributes: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-head-breakpoint: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-head-font: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-head-html-attributes: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-head-preview: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-head-style: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-head-title: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-hero: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-image: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-navbar: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-raw: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-section: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-social: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-spacer: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-table: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-text: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-wrapper: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-accordion: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-body: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-button: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-carousel: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-column: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-divider: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-group: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-head: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-head-attributes: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-head-breakpoint: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-head-font: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-head-html-attributes: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-head-preview: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-head-style: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-head-title: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-hero: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-image: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-navbar: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-raw: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-section: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-social: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-spacer: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-table: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-text: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-wrapper: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -29067,11 +29533,11 @@ snapshots:
- uncss
optional: true
- mjml-raw@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-raw@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -29083,11 +29549,11 @@ snapshots:
- uncss
optional: true
- mjml-section@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-section@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -29099,11 +29565,11 @@ snapshots:
- uncss
optional: true
- mjml-social@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-social@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -29115,11 +29581,11 @@ snapshots:
- uncss
optional: true
- mjml-spacer@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-spacer@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -29131,11 +29597,11 @@ snapshots:
- uncss
optional: true
- mjml-table@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-table@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -29147,11 +29613,11 @@ snapshots:
- uncss
optional: true
- mjml-text@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-text@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -29168,12 +29634,12 @@ snapshots:
'@babel/runtime': 7.28.3
optional: true
- mjml-wrapper@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml-wrapper@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
lodash: 4.17.21
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-section: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-section: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- encoding
- purgecss
@@ -29185,12 +29651,12 @@ snapshots:
- uncss
optional: true
- mjml@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2):
+ mjml@5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.3
- mjml-cli: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
- mjml-preset-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.2)
+ mjml-cli: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
+ mjml-preset-core: 5.0.0-alpha.4(relateurl@0.2.7)(terser@5.39.2)(typescript@5.9.3)
mjml-validator: 5.0.0-alpha.4
transitivePeerDependencies:
- encoding
@@ -29218,7 +29684,7 @@ snapshots:
pkg-types: 1.3.1
ufo: 1.6.1
- mocha@11.7.2:
+ mocha@11.7.4:
dependencies:
browser-stdout: 1.3.1
chokidar: 4.0.3
@@ -29228,6 +29694,7 @@ snapshots:
find-up: 5.0.0
glob: 10.4.5
he: 1.2.0
+ is-path-inside: 3.0.3
js-yaml: 4.1.0
log-symbols: 4.1.0
minimatch: 9.0.5
@@ -29285,7 +29752,7 @@ snapshots:
object-assign: 4.1.1
thenify-all: 1.6.0
- nano-spawn@1.0.3: {}
+ nano-spawn@2.0.0: {}
nanoid@3.3.11: {}
@@ -29316,11 +29783,11 @@ snapshots:
node-abi@3.62.0:
dependencies:
- semver: 7.7.2
+ semver: 7.7.3
node-abi@3.75.0:
dependencies:
- semver: 7.7.2
+ semver: 7.7.3
node-abort-controller@3.1.1: {}
@@ -29365,15 +29832,12 @@ snapshots:
node-releases@2.0.19: {}
- node-releases@2.0.21: {}
+ node-releases@2.0.26: {}
- nodemailer@6.9.13:
+ nodemailer@7.0.7:
optional: true
- nodemailer@6.9.15:
- optional: true
-
- nodemailer@7.0.6: {}
+ nodemailer@7.0.9: {}
normalize-package-data@2.5.0:
dependencies:
@@ -29783,6 +30247,8 @@ snapshots:
path-to-regexp@8.2.0: {}
+ path-to-regexp@8.3.0: {}
+
path-type@3.0.0:
dependencies:
pify: 3.0.0
@@ -29926,29 +30392,13 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.5.6
- postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.8.3)):
- dependencies:
- lilconfig: 3.1.3
- yaml: 2.8.1
- optionalDependencies:
- postcss: 8.5.6
- ts-node: 10.9.2(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.8.3)
-
- postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.3.0)(typescript@5.9.2)):
- dependencies:
- lilconfig: 3.1.3
- yaml: 2.8.1
- optionalDependencies:
- postcss: 8.5.6
- ts-node: 10.9.2(@swc/core@1.4.2)(@types/node@24.3.0)(typescript@5.9.2)
-
- postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)):
+ postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)):
dependencies:
lilconfig: 3.1.3
yaml: 2.8.1
optionalDependencies:
postcss: 8.5.6
- ts-node: 10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)
+ ts-node: 10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)
postcss-load-config@6.0.1(jiti@2.6.0)(postcss@8.5.6)(yaml@2.8.1):
dependencies:
@@ -30125,9 +30575,9 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
- posthog-node@5.8.8:
+ posthog-node@5.10.0:
dependencies:
- '@posthog/core': 1.1.0
+ '@posthog/core': 1.3.0
posthtml-parser@0.11.0:
dependencies:
@@ -30221,6 +30671,12 @@ snapshots:
ansi-styles: 5.2.0
react-is: 18.3.1
+ pretty-format@30.2.0:
+ dependencies:
+ '@jest/schemas': 30.0.5
+ ansi-styles: 5.2.0
+ react-is: 18.3.1
+
preview-email@3.1.0:
dependencies:
ci-info: 3.9.0
@@ -30228,7 +30684,7 @@ snapshots:
fixpack: 4.0.0
get-port: 5.1.1
mailparser: 3.7.1
- nodemailer: 6.9.15
+ nodemailer: 7.0.7
open: 7.4.2
p-event: 4.2.0
p-wait-for: 3.2.0
@@ -30236,12 +30692,12 @@ snapshots:
uuid: 9.0.1
optional: true
- prisma@6.16.2(typescript@5.9.2):
+ prisma@6.17.1(typescript@5.9.3):
dependencies:
- '@prisma/config': 6.16.2
- '@prisma/engines': 6.16.2
+ '@prisma/config': 6.17.1
+ '@prisma/engines': 6.17.1
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
transitivePeerDependencies:
- magicast
@@ -30603,8 +31059,6 @@ snapshots:
remove-trailing-spaces@1.0.9: {}
- repeat-string@1.6.1: {}
-
require-directory@2.1.1: {}
require-from-string@2.0.2: {}
@@ -30629,6 +31083,12 @@ snapshots:
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
+ resolve@1.22.11:
+ dependencies:
+ is-core-module: 2.16.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
resolve@1.22.8:
dependencies:
is-core-module: 2.13.1
@@ -30674,10 +31134,10 @@ snapshots:
dependencies:
rollup-plugin-inject: 3.0.2
- rollup-plugin-polyfill-node@0.13.0(rollup@4.52.2):
+ rollup-plugin-polyfill-node@0.13.0(rollup@4.52.5):
dependencies:
- '@rollup/plugin-inject': 5.0.5(rollup@4.52.2)
- rollup: 4.52.2
+ '@rollup/plugin-inject': 5.0.5(rollup@4.52.5)
+ rollup: 4.52.5
rollup-pluginutils@2.8.2:
dependencies:
@@ -30719,6 +31179,34 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.52.2
fsevents: 2.3.3
+ rollup@4.52.5:
+ dependencies:
+ '@types/estree': 1.0.8
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.52.5
+ '@rollup/rollup-android-arm64': 4.52.5
+ '@rollup/rollup-darwin-arm64': 4.52.5
+ '@rollup/rollup-darwin-x64': 4.52.5
+ '@rollup/rollup-freebsd-arm64': 4.52.5
+ '@rollup/rollup-freebsd-x64': 4.52.5
+ '@rollup/rollup-linux-arm-gnueabihf': 4.52.5
+ '@rollup/rollup-linux-arm-musleabihf': 4.52.5
+ '@rollup/rollup-linux-arm64-gnu': 4.52.5
+ '@rollup/rollup-linux-arm64-musl': 4.52.5
+ '@rollup/rollup-linux-loong64-gnu': 4.52.5
+ '@rollup/rollup-linux-ppc64-gnu': 4.52.5
+ '@rollup/rollup-linux-riscv64-gnu': 4.52.5
+ '@rollup/rollup-linux-riscv64-musl': 4.52.5
+ '@rollup/rollup-linux-s390x-gnu': 4.52.5
+ '@rollup/rollup-linux-x64-gnu': 4.52.5
+ '@rollup/rollup-linux-x64-musl': 4.52.5
+ '@rollup/rollup-openharmony-arm64': 4.52.5
+ '@rollup/rollup-win32-arm64-msvc': 4.52.5
+ '@rollup/rollup-win32-ia32-msvc': 4.52.5
+ '@rollup/rollup-win32-x64-gnu': 4.52.5
+ '@rollup/rollup-win32-x64-msvc': 4.52.5
+ fsevents: 2.3.3
+
router@2.2.0:
dependencies:
debug: 4.4.1
@@ -30840,7 +31328,7 @@ snapshots:
semver@7.7.1: {}
- semver@7.7.2: {}
+ semver@7.7.3: {}
send@0.19.0:
dependencies:
@@ -31249,7 +31737,7 @@ snapshots:
string-width@7.2.0:
dependencies:
- emoji-regex: 10.5.0
+ emoji-regex: 10.6.0
get-east-asian-width: 1.4.0
strip-ansi: 7.1.2
@@ -31413,9 +31901,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- superjson@2.2.2:
+ superjson@2.2.3:
dependencies:
- copy-anything: 3.0.5
+ copy-anything: 4.0.5
supertest@7.1.4:
dependencies:
@@ -31461,7 +31949,7 @@ snapshots:
transitivePeerDependencies:
- openapi-types
- swagger-ui-dist@5.21.0:
+ swagger-ui-dist@5.29.4:
dependencies:
'@scarf/scarf': 1.4.0
@@ -31503,7 +31991,7 @@ snapshots:
systemjs@6.15.1: {}
- tailwindcss@3.3.6(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.8.3)):
+ tailwindcss@3.3.6(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -31522,7 +32010,7 @@ snapshots:
postcss: 8.5.6
postcss-import: 15.1.0(postcss@8.5.6)
postcss-js: 4.0.1(postcss@8.5.6)
- postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.8.3))
+ postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
postcss-nested: 6.0.1(postcss@8.5.6)
postcss-selector-parser: 6.1.2
resolve: 1.22.8
@@ -31530,34 +32018,7 @@ snapshots:
transitivePeerDependencies:
- ts-node
- tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.3.0)(typescript@5.9.2)):
- dependencies:
- '@alloc/quick-lru': 5.2.0
- arg: 5.0.2
- chokidar: 3.6.0
- didyoumean: 1.2.2
- dlv: 1.1.3
- fast-glob: 3.3.3
- glob-parent: 6.0.2
- is-glob: 4.0.3
- jiti: 1.21.7
- lilconfig: 3.1.3
- micromatch: 4.0.8
- normalize-path: 3.0.0
- object-hash: 3.0.0
- picocolors: 1.1.1
- postcss: 8.5.6
- postcss-import: 15.1.0(postcss@8.5.6)
- postcss-js: 4.0.1(postcss@8.5.6)
- postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.3.0)(typescript@5.9.2))
- postcss-nested: 6.2.0(postcss@8.5.6)
- postcss-selector-parser: 6.1.2
- resolve: 1.22.10
- sucrase: 3.35.0
- transitivePeerDependencies:
- - ts-node
-
- tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)):
+ tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -31576,7 +32037,7 @@ snapshots:
postcss: 8.5.6
postcss-import: 15.1.0(postcss@8.5.6)
postcss-js: 4.0.1(postcss@8.5.6)
- postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
+ postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
postcss-nested: 6.2.0(postcss@8.5.6)
postcss-selector-parser: 6.1.2
resolve: 1.22.10
@@ -31626,17 +32087,17 @@ snapshots:
minimatch: 3.1.2
resolve-from: 2.0.0
- terser-webpack-plugin@5.3.14(@swc/core@1.4.2)(esbuild@0.25.10)(webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.10)):
+ terser-webpack-plugin@5.3.14(@swc/core@1.4.2)(esbuild@0.25.11)(webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.11)):
dependencies:
'@jridgewell/trace-mapping': 0.3.30
jest-worker: 27.5.1
schema-utils: 4.3.2
serialize-javascript: 6.0.2
terser: 5.39.2
- webpack: 5.100.2(@swc/core@1.4.2)(esbuild@0.25.10)
+ webpack: 5.100.2(@swc/core@1.4.2)(esbuild@0.25.11)
optionalDependencies:
'@swc/core': 1.4.2
- esbuild: 0.25.10
+ esbuild: 0.25.11
optional: true
terser-webpack-plugin@5.3.14(@swc/core@1.4.2)(webpack@5.100.2(@swc/core@1.4.2)):
@@ -31774,59 +32235,55 @@ snapshots:
tree-kill@1.2.2: {}
- ts-api-utils@1.4.3(typescript@5.9.2):
- dependencies:
- typescript: 5.9.2
-
- ts-api-utils@2.1.0(typescript@5.8.3):
+ ts-api-utils@1.4.3(typescript@5.9.3):
dependencies:
- typescript: 5.8.3
+ typescript: 5.9.3
- ts-api-utils@2.1.0(typescript@5.9.2):
+ ts-api-utils@2.1.0(typescript@5.9.3):
dependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
- ts-essentials@10.0.2(typescript@5.9.2):
+ ts-essentials@10.0.2(typescript@5.9.3):
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
ts-interface-checker@0.1.13: {}
- ts-jest@29.4.4(@babel/core@7.28.4)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.4))(jest-util@30.0.5)(jest@30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)))(typescript@5.9.2):
+ ts-jest@29.4.5(@babel/core@7.28.4)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.4))(jest-util@30.2.0)(jest@30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)))(typescript@5.9.3):
dependencies:
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
handlebars: 4.7.8
- jest: 30.1.3(@types/node@24.5.2)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2))
+ jest: 30.2.0(@types/node@24.9.1)(ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3))
json5: 2.2.3
lodash.memoize: 4.1.2
make-error: 1.3.6
- semver: 7.7.2
+ semver: 7.7.3
type-fest: 4.41.0
- typescript: 5.9.2
+ typescript: 5.9.3
yargs-parser: 21.1.1
optionalDependencies:
'@babel/core': 7.28.4
- '@jest/transform': 30.1.2
- '@jest/types': 30.0.5
- babel-jest: 30.1.2(@babel/core@7.28.4)
- jest-util: 30.0.5
+ '@jest/transform': 30.2.0
+ '@jest/types': 30.2.0
+ babel-jest: 30.2.0(@babel/core@7.28.4)
+ jest-util: 30.2.0
- ts-loader@9.5.4(typescript@5.9.2)(webpack@5.100.2(@swc/core@1.4.2)):
+ ts-loader@9.5.4(typescript@5.9.3)(webpack@5.100.2(@swc/core@1.4.2)):
dependencies:
chalk: 4.1.2
enhanced-resolve: 5.18.1
micromatch: 4.0.8
- semver: 7.7.2
+ semver: 7.7.3
source-map: 0.7.4
- typescript: 5.9.2
+ typescript: 5.9.3
webpack: 5.100.2(@swc/core@1.4.2)
ts-log@2.2.5: {}
ts-log@2.2.7: {}
- ts-node-dev@2.0.0(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2):
+ ts-node-dev@2.0.0(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3):
dependencies:
chokidar: 3.6.0
dynamic-dedupe: 0.3.0
@@ -31836,71 +32293,29 @@ snapshots:
rimraf: 2.7.1
source-map-support: 0.5.21
tree-kill: 1.2.2
- ts-node: 10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2)
+ ts-node: 10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3)
tsconfig: 7.0.0
- typescript: 5.9.2
+ typescript: 5.9.3
transitivePeerDependencies:
- '@swc/core'
- '@swc/wasm'
- '@types/node'
- ts-node@10.9.2(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.8.3):
- dependencies:
- '@cspotcode/source-map-support': 0.8.1
- '@tsconfig/node10': 1.0.11
- '@tsconfig/node12': 1.0.11
- '@tsconfig/node14': 1.0.3
- '@tsconfig/node16': 1.0.4
- '@types/node': 18.18.8
- acorn: 8.12.1
- acorn-walk: 8.3.4
- arg: 4.1.3
- create-require: 1.1.1
- diff: 4.0.2
- make-error: 1.3.6
- typescript: 5.8.3
- v8-compile-cache-lib: 3.0.1
- yn: 3.1.1
- optionalDependencies:
- '@swc/core': 1.4.2
- optional: true
-
- ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.3.0)(typescript@5.9.2):
- dependencies:
- '@cspotcode/source-map-support': 0.8.1
- '@tsconfig/node10': 1.0.11
- '@tsconfig/node12': 1.0.11
- '@tsconfig/node14': 1.0.3
- '@tsconfig/node16': 1.0.4
- '@types/node': 24.3.0
- acorn: 8.12.1
- acorn-walk: 8.3.4
- arg: 4.1.3
- create-require: 1.1.1
- diff: 4.0.2
- make-error: 1.3.6
- typescript: 5.9.2
- v8-compile-cache-lib: 3.0.1
- yn: 3.1.1
- optionalDependencies:
- '@swc/core': 1.4.2
- optional: true
-
- ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.5.2)(typescript@5.9.2):
+ ts-node@10.9.2(@swc/core@1.4.2)(@types/node@24.9.1)(typescript@5.9.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
acorn: 8.12.1
acorn-walk: 8.3.4
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
- typescript: 5.9.2
+ typescript: 5.9.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
optionalDependencies:
@@ -31942,7 +32357,7 @@ snapshots:
tslib@2.8.1: {}
- tsup@8.5.0(@swc/core@1.4.2)(jiti@2.6.0)(postcss@8.5.6)(typescript@5.9.2)(yaml@2.8.1):
+ tsup@8.5.0(@swc/core@1.4.2)(jiti@2.6.0)(postcss@8.5.6)(typescript@5.9.3)(yaml@2.8.1):
dependencies:
bundle-require: 5.1.0(esbuild@0.25.8)
cac: 6.7.14
@@ -31955,7 +32370,7 @@ snapshots:
picocolors: 1.1.1
postcss-load-config: 6.0.1(jiti@2.6.0)(postcss@8.5.6)(yaml@2.8.1)
resolve-from: 5.0.0
- rollup: 4.52.2
+ rollup: 4.52.5
source-map: 0.8.0-beta.0
sucrase: 3.35.0
tinyexec: 0.3.2
@@ -31964,17 +32379,17 @@ snapshots:
optionalDependencies:
'@swc/core': 1.4.2
postcss: 8.5.6
- typescript: 5.9.2
+ typescript: 5.9.3
transitivePeerDependencies:
- jiti
- supports-color
- tsx
- yaml
- tsutils@3.21.0(typescript@5.8.3):
+ tsutils@3.21.0(typescript@5.9.3):
dependencies:
tslib: 1.14.1
- typescript: 5.8.3
+ typescript: 5.9.3
tunnel-agent@0.6.0:
dependencies:
@@ -32074,7 +32489,7 @@ snapshots:
typescript@5.8.3: {}
- typescript@5.9.2: {}
+ typescript@5.9.3: {}
ua-parser-js@1.0.40: {}
@@ -32113,13 +32528,9 @@ snapshots:
unc-path-regex@0.1.2: {}
- undici-types@5.26.5: {}
-
- undici-types@7.10.0: {}
-
- undici-types@7.12.0: {}
+ undici-types@7.16.0: {}
- unhead@2.0.17:
+ unhead@2.0.19:
dependencies:
hookable: 5.5.3
@@ -32166,23 +32577,23 @@ snapshots:
unpipe@1.0.0: {}
- unplugin-fonts@1.1.1(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)):
+ unplugin-fonts@1.1.1(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)):
dependencies:
fast-glob: 3.3.2
unplugin: 1.10.1
- vite: 4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)
+ vite: 4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
- unplugin-fonts@1.4.0(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ unplugin-fonts@1.4.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
fast-glob: 3.3.3
unplugin: 2.3.5
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- unplugin-fonts@1.4.0(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ unplugin-fonts@1.4.0(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
fast-glob: 3.3.3
unplugin: 2.3.5
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
unplugin-icons@0.14.9(@vue/compiler-sfc@3.5.22)(vue-template-compiler@2.7.16):
dependencies:
@@ -32223,7 +32634,7 @@ snapshots:
pathe: 2.0.3
picomatch: 4.0.3
- unplugin-vue-components@0.21.0(@babel/parser@7.28.4)(esbuild@0.25.10)(rollup@2.79.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))(vue@3.5.22(typescript@5.8.3))(webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.10)):
+ unplugin-vue-components@0.21.0(@babel/parser@7.28.4)(esbuild@0.25.11)(rollup@2.79.2)(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))(vue@3.5.22(typescript@5.9.3))(webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.11)):
dependencies:
'@antfu/utils': 0.5.2
'@rollup/pluginutils': 4.2.1
@@ -32234,8 +32645,8 @@ snapshots:
magic-string: 0.26.7
minimatch: 5.1.6
resolve: 1.22.8
- unplugin: 0.7.2(esbuild@0.25.10)(rollup@2.79.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))(webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.10))
- vue: 3.5.22(typescript@5.8.3)
+ unplugin: 0.7.2(esbuild@0.25.11)(rollup@2.79.2)(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))(webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.11))
+ vue: 3.5.22(typescript@5.9.3)
optionalDependencies:
'@babel/parser': 7.28.4
transitivePeerDependencies:
@@ -32245,7 +32656,7 @@ snapshots:
- vite
- webpack
- unplugin-vue-components@29.0.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.2)):
+ unplugin-vue-components@29.0.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.9.3)):
dependencies:
chokidar: 3.6.0
debug: 4.4.1
@@ -32255,23 +32666,23 @@ snapshots:
tinyglobby: 0.2.14
unplugin: 2.3.5
unplugin-utils: 0.2.5
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
optionalDependencies:
'@babel/parser': 7.28.4
transitivePeerDependencies:
- supports-color
- unplugin@0.7.2(esbuild@0.25.10)(rollup@2.79.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))(webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.10)):
+ unplugin@0.7.2(esbuild@0.25.11)(rollup@2.79.2)(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))(webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.11)):
dependencies:
acorn: 8.12.1
chokidar: 3.6.0
webpack-sources: 3.2.3
webpack-virtual-modules: 0.4.6
optionalDependencies:
- esbuild: 0.25.10
+ esbuild: 0.25.11
rollup: 2.79.2
- vite: 4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)
- webpack: 5.100.2(@swc/core@1.4.2)(esbuild@0.25.10)
+ vite: 4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
+ webpack: 5.100.2(@swc/core@1.4.2)(esbuild@0.25.11)
unplugin@0.9.6:
dependencies:
@@ -32352,9 +32763,9 @@ snapshots:
picocolors: 1.1.1
optional: true
- update-browserslist-db@1.1.3(browserslist@4.26.2):
+ update-browserslist-db@1.1.3(browserslist@4.26.3):
dependencies:
- browserslist: 4.26.2
+ browserslist: 4.26.3
escalade: 3.2.0
picocolors: 1.1.1
@@ -32411,7 +32822,7 @@ snapshots:
v8-to-istanbul@9.3.0:
dependencies:
- '@jridgewell/trace-mapping': 0.3.30
+ '@jridgewell/trace-mapping': 0.3.31
'@types/istanbul-lib-coverage': 2.0.6
convert-source-map: 2.0.0
@@ -32437,44 +32848,23 @@ snapshots:
dependencies:
zod: 3.25.32
- vite-dev-rpc@1.1.0(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ vite-dev-rpc@1.1.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
birpc: 2.5.0
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-hot-client: 2.1.0(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
-
- vite-hot-client@2.1.0(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
- dependencies:
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite-hot-client: 2.1.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
- vite-node@3.2.4(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
+ vite-hot-client@2.1.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
- cac: 6.7.14
- debug: 4.4.1
- es-module-lexer: 1.7.0
- pathe: 2.0.3
- vite: 6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- transitivePeerDependencies:
- - '@types/node'
- - jiti
- - less
- - lightningcss
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
- - tsx
- - yaml
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
+ vite-node@3.2.4(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
dependencies:
cac: 6.7.14
debug: 4.4.1
es-module-lexer: 1.7.0
pathe: 2.0.3
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -32489,7 +32879,7 @@ snapshots:
- tsx
- yaml
- vite-plugin-checker@0.10.3(eslint@8.57.0)(meow@13.2.0)(optionator@0.9.4)(typescript@5.9.2)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-tsc@1.8.8(typescript@5.9.2)):
+ vite-plugin-checker@0.10.3(eslint@8.57.0)(meow@13.2.0)(optionator@0.9.4)(typescript@5.9.3)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-tsc@1.8.8(typescript@5.9.3)):
dependencies:
'@babel/code-frame': 7.27.1
chokidar: 4.0.3
@@ -32499,78 +32889,78 @@ snapshots:
strip-ansi: 7.1.0
tiny-invariant: 1.3.3
tinyglobby: 0.2.14
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
vscode-uri: 3.1.0
optionalDependencies:
eslint: 8.57.0
meow: 13.2.0
optionator: 0.9.4
- typescript: 5.9.2
- vue-tsc: 1.8.8(typescript@5.9.2)
+ typescript: 5.9.3
+ vue-tsc: 1.8.8(typescript@5.9.3)
- vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
'@rollup/pluginutils': 4.2.1
'@types/eslint': 8.56.12
eslint: 8.57.0
rollup: 2.79.2
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
'@rollup/pluginutils': 4.2.1
'@types/eslint': 8.56.12
eslint: 8.57.0
rollup: 2.79.2
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-plugin-eslint@1.8.1(eslint@9.36.0(jiti@2.6.0))(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ vite-plugin-eslint@1.8.1(eslint@9.37.0(jiti@2.6.0))(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
'@rollup/pluginutils': 4.2.1
'@types/eslint': 8.56.12
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.37.0(jiti@2.6.0)
rollup: 2.79.2
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-plugin-eslint@1.8.1(eslint@9.36.0(jiti@2.6.0))(vite@6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ vite-plugin-eslint@1.8.1(eslint@9.37.0(jiti@2.6.0))(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
'@rollup/pluginutils': 4.2.1
'@types/eslint': 8.56.12
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.37.0(jiti@2.6.0)
rollup: 2.79.2
- vite: 6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-plugin-eslint@1.8.1(eslint@9.36.0(jiti@2.6.0))(vite@7.1.2(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ vite-plugin-eslint@1.8.1(eslint@9.37.0(jiti@2.6.0))(vite@7.1.2(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
'@rollup/pluginutils': 4.2.1
'@types/eslint': 8.56.12
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.37.0(jiti@2.6.0)
rollup: 2.79.2
- vite: 7.1.2(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 7.1.2(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-plugin-fonts@0.7.0(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ vite-plugin-fonts@0.7.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
fast-glob: 3.3.2
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-plugin-fonts@0.7.0(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ vite-plugin-fonts@0.7.0(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
fast-glob: 3.3.2
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-plugin-html-config@1.0.11(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)):
+ vite-plugin-html-config@1.0.11(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)):
dependencies:
- vite: 4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)
+ vite: 4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
- vite-plugin-html-config@2.0.2(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ vite-plugin-html-config@2.0.2(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-plugin-html-config@2.0.2(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ vite-plugin-html-config@2.0.2(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-plugin-inspect@0.7.38(rollup@2.79.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)):
+ vite-plugin-inspect@0.7.38(rollup@2.79.2)(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.2(rollup@2.79.2)
@@ -32580,12 +32970,12 @@ snapshots:
open: 9.1.0
picocolors: 1.1.0
sirv: 2.0.4
- vite: 4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)
+ vite: 4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
transitivePeerDependencies:
- rollup
- supports-color
- vite-plugin-inspect@11.3.3(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ vite-plugin-inspect@11.3.3(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
ansis: 4.1.0
debug: 4.4.3(supports-color@8.1.1)
@@ -32595,8 +32985,8 @@ snapshots:
perfect-debounce: 2.0.0
sirv: 3.0.1
unplugin-utils: 0.3.0
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-dev-rpc: 1.1.0(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite-dev-rpc: 1.1.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
transitivePeerDependencies:
- supports-color
@@ -32607,7 +32997,7 @@ snapshots:
sitemap: 8.0.0
xml-formatter: 3.6.7
- vite-plugin-pages@0.26.0(@vue/compiler-sfc@3.5.22)(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)):
+ vite-plugin-pages@0.26.0(@vue/compiler-sfc@3.5.22)(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)):
dependencies:
'@types/debug': 4.1.12
debug: 4.3.7
@@ -32617,14 +33007,14 @@ snapshots:
json5: 2.2.3
local-pkg: 0.4.3
picocolors: 1.1.0
- vite: 4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)
+ vite: 4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
yaml: 2.5.1
optionalDependencies:
'@vue/compiler-sfc': 3.5.22
transitivePeerDependencies:
- supports-color
- vite-plugin-pages@0.33.1(@vue/compiler-sfc@3.5.22)(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2))):
+ vite-plugin-pages@0.33.1(@vue/compiler-sfc@3.5.22)(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3))):
dependencies:
'@types/debug': 4.1.12
debug: 4.4.1
@@ -32635,15 +33025,15 @@ snapshots:
micromatch: 4.0.8
picocolors: 1.1.1
tinyglobby: 0.2.14
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
yaml: 2.8.1
optionalDependencies:
'@vue/compiler-sfc': 3.5.22
- vue-router: 4.5.1(vue@3.5.22(typescript@5.9.2))
+ vue-router: 4.6.3(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- supports-color
- vite-plugin-pages@0.33.1(@vue/compiler-sfc@3.5.22)(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2))):
+ vite-plugin-pages@0.33.1(@vue/compiler-sfc@3.5.22)(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3))):
dependencies:
'@types/debug': 4.1.12
debug: 4.4.1
@@ -32654,168 +33044,134 @@ snapshots:
micromatch: 4.0.8
picocolors: 1.1.1
tinyglobby: 0.2.14
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
yaml: 2.8.1
optionalDependencies:
'@vue/compiler-sfc': 3.5.22
- vue-router: 4.5.1(vue@3.5.22(typescript@5.9.2))
+ vue-router: 4.6.3(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- supports-color
- vite-plugin-pwa@0.13.1(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@6.6.0):
+ vite-plugin-pwa@1.1.0(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@6.6.0):
dependencies:
- debug: 4.3.7
- fast-glob: 3.3.2
+ debug: 4.4.3(supports-color@8.1.1)
pretty-bytes: 6.1.1
- rollup: 2.79.2
- vite: 4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)
+ tinyglobby: 0.2.15
+ vite: 4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
workbox-build: 7.1.0(@types/babel__core@7.20.5)
workbox-window: 6.6.0
transitivePeerDependencies:
- supports-color
- vite-plugin-pwa@1.0.3(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.3.0):
+ vite-plugin-pwa@1.1.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.3.0):
dependencies:
- debug: 4.4.1
+ debug: 4.4.3(supports-color@8.1.1)
pretty-bytes: 6.1.1
- tinyglobby: 0.2.14
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ tinyglobby: 0.2.15
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
workbox-build: 7.1.0(@types/babel__core@7.20.5)
workbox-window: 7.3.0
transitivePeerDependencies:
- supports-color
- vite-plugin-pwa@1.0.3(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.3.0):
+ vite-plugin-pwa@1.1.0(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.3.0):
dependencies:
- debug: 4.4.1
+ debug: 4.4.3(supports-color@8.1.1)
pretty-bytes: 6.1.1
- tinyglobby: 0.2.14
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ tinyglobby: 0.2.15
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
workbox-build: 7.1.0(@types/babel__core@7.20.5)
workbox-window: 7.3.0
transitivePeerDependencies:
- supports-color
- vite-plugin-static-copy@0.12.0(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)):
+ vite-plugin-static-copy@0.12.0(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)):
dependencies:
chokidar: 3.6.0
fast-glob: 3.3.2
fs-extra: 10.1.0
picocolors: 1.1.0
- vite: 4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)
+ vite: 4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
- vite-plugin-static-copy@3.1.2(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
+ vite-plugin-static-copy@3.1.4(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)):
dependencies:
chokidar: 3.6.0
- fs-extra: 11.3.1
p-map: 7.0.3
picocolors: 1.1.1
- tinyglobby: 0.2.14
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ tinyglobby: 0.2.15
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-plugin-vue-layouts@0.11.0(vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2)):
+ vite-plugin-vue-layouts@0.11.0(vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)):
dependencies:
debug: 4.3.7
fast-glob: 3.3.2
- vite: 6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vue: 3.5.22(typescript@5.9.2)
- vue-router: 4.5.1(vue@3.5.22(typescript@5.9.2))
+ vite: 6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vue: 3.5.22(typescript@5.9.3)
+ vue-router: 4.6.3(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- supports-color
- vite-plugin-vue-layouts@0.11.0(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2)):
+ vite-plugin-vue-layouts@0.11.0(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)):
dependencies:
debug: 4.3.7
fast-glob: 3.3.2
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vue: 3.5.22(typescript@5.9.2)
- vue-router: 4.5.1(vue@3.5.22(typescript@5.9.2))
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vue: 3.5.22(typescript@5.9.3)
+ vue-router: 4.6.3(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- supports-color
- vite-plugin-vue-layouts@0.7.0(vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2))(vue-router@4.5.1(vue@3.5.22(typescript@5.8.3)))(vue@3.5.22(typescript@5.8.3)):
+ vite-plugin-vue-layouts@0.7.0(vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2))(vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)))(vue@3.5.22(typescript@5.9.3)):
dependencies:
'@vue/compiler-sfc': 3.5.22
debug: 4.3.7
fast-glob: 3.3.2
- vite: 4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2)
- vue: 3.5.22(typescript@5.8.3)
- vue-router: 4.5.1(vue@3.5.22(typescript@5.8.3))
+ vite: 4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
+ vue: 3.5.22(typescript@5.9.3)
+ vue-router: 4.6.3(vue@3.5.22(typescript@5.9.3))
transitivePeerDependencies:
- supports-color
- vite@3.2.11(@types/node@24.5.2)(sass@1.93.2)(terser@5.39.2):
+ vite@3.2.11(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2):
dependencies:
esbuild: 0.15.18
postcss: 8.5.6
resolve: 1.22.8
rollup: 2.79.2
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
fsevents: 2.3.3
sass: 1.93.2
terser: 5.39.2
- vite@4.5.0(@types/node@18.18.8)(sass@1.93.2)(terser@5.39.2):
+ vite@4.5.0(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2):
dependencies:
esbuild: 0.18.20
postcss: 8.5.6
rollup: 3.29.5
optionalDependencies:
- '@types/node': 18.18.8
- fsevents: 2.3.3
- sass: 1.93.2
- terser: 5.39.2
-
- vite@6.3.5(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
- dependencies:
- esbuild: 0.25.9
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
- postcss: 8.5.6
- rollup: 4.52.2
- tinyglobby: 0.2.14
- optionalDependencies:
- '@types/node': 24.3.0
+ '@types/node': 24.9.1
fsevents: 2.3.3
- jiti: 2.6.0
sass: 1.93.2
terser: 5.39.2
- yaml: 2.8.1
- vite@6.3.5(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
+ vite@6.3.5(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
dependencies:
esbuild: 0.25.9
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
- rollup: 4.52.2
+ rollup: 4.52.5
tinyglobby: 0.2.14
optionalDependencies:
- '@types/node': 24.5.2
- fsevents: 2.3.3
- jiti: 2.6.0
- sass: 1.93.2
- terser: 5.39.2
- yaml: 2.8.1
-
- vite@6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
- dependencies:
- esbuild: 0.25.10
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
- postcss: 8.5.6
- rollup: 4.52.2
- tinyglobby: 0.2.15
- optionalDependencies:
- '@types/node': 24.3.0
+ '@types/node': 24.9.1
fsevents: 2.3.3
jiti: 2.6.0
sass: 1.93.2
terser: 5.39.2
yaml: 2.8.1
- vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
+ vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
dependencies:
esbuild: 0.25.10
fdir: 6.5.0(picomatch@4.0.3)
@@ -32824,81 +33180,38 @@ snapshots:
rollup: 4.52.2
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
fsevents: 2.3.3
jiti: 2.6.0
sass: 1.93.2
terser: 5.39.2
yaml: 2.8.1
- vite@7.1.2(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
+ vite@7.1.2(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
dependencies:
- esbuild: 0.25.10
+ esbuild: 0.25.11
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
- rollup: 4.52.2
+ rollup: 4.52.5
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
fsevents: 2.3.3
jiti: 2.6.0
sass: 1.93.2
terser: 5.39.2
yaml: 2.8.1
- vitefu@0.2.5(vite@3.2.11(@types/node@24.5.2)(sass@1.93.2)(terser@5.39.2)):
- optionalDependencies:
- vite: 3.2.11(@types/node@24.5.2)(sass@1.93.2)(terser@5.39.2)
-
- vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(jiti@2.6.0)(jsdom@26.1.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
- dependencies:
- '@types/chai': 5.2.2
- '@vitest/expect': 3.2.4
- '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
- '@vitest/pretty-format': 3.2.4
- '@vitest/runner': 3.2.4
- '@vitest/snapshot': 3.2.4
- '@vitest/spy': 3.2.4
- '@vitest/utils': 3.2.4
- chai: 5.2.1
- debug: 4.4.1
- expect-type: 1.2.2
- magic-string: 0.30.17
- pathe: 2.0.3
- picomatch: 4.0.3
- std-env: 3.9.0
- tinybench: 2.9.0
- tinyexec: 0.3.2
- tinyglobby: 0.2.14
- tinypool: 1.1.1
- tinyrainbow: 2.0.0
- vite: 6.3.6(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- why-is-node-running: 2.3.0
+ vitefu@0.2.5(vite@3.2.11(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)):
optionalDependencies:
- '@types/debug': 4.1.12
- '@types/node': 24.3.0
- jsdom: 26.1.0
- transitivePeerDependencies:
- - jiti
- - less
- - lightningcss
- - msw
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
- - tsx
- - yaml
+ vite: 3.2.11(@types/node@24.9.1)(sass@1.93.2)(terser@5.39.2)
- vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.0)(jsdom@26.1.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.9.1)(jiti@2.6.0)(jsdom@26.1.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1):
dependencies:
'@types/chai': 5.2.2
'@vitest/expect': 3.2.4
- '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
+ '@vitest/mocker': 3.2.4(vite@6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1))
'@vitest/pretty-format': 3.2.4
'@vitest/runner': 3.2.4
'@vitest/snapshot': 3.2.4
@@ -32916,12 +33229,12 @@ snapshots:
tinyglobby: 0.2.14
tinypool: 1.1.1
tinyrainbow: 2.0.0
- vite: 6.3.6(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
- vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite: 6.3.6(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
+ vite-node: 3.2.4(@types/node@24.9.1)(jiti@2.6.0)(sass@1.93.2)(terser@5.39.2)(yaml@2.8.1)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/debug': 4.1.12
- '@types/node': 24.5.2
+ '@types/node': 24.9.1
jsdom: 26.1.0
transitivePeerDependencies:
- jiti
@@ -32944,13 +33257,9 @@ snapshots:
vscode-uri@3.1.0: {}
- vue-demi@0.14.10(vue@3.5.22(typescript@5.8.3)):
- dependencies:
- vue: 3.5.22(typescript@5.8.3)
-
- vue-demi@0.14.10(vue@3.5.22(typescript@5.9.2)):
+ vue-demi@0.14.10(vue@3.5.22(typescript@5.9.3)):
dependencies:
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
vue-eslint-parser@10.2.0(eslint@8.47.0):
dependencies:
@@ -32960,7 +33269,7 @@ snapshots:
eslint-visitor-keys: 4.2.1
espree: 10.4.0
esquery: 1.6.0
- semver: 7.7.2
+ semver: 7.7.3
transitivePeerDependencies:
- supports-color
@@ -32972,7 +33281,7 @@ snapshots:
eslint-visitor-keys: 4.2.1
espree: 10.4.0
esquery: 1.6.0
- semver: 7.7.2
+ semver: 7.7.3
transitivePeerDependencies:
- supports-color
@@ -32985,7 +33294,7 @@ snapshots:
espree: 9.6.1
esquery: 1.6.0
lodash: 4.17.21
- semver: 7.7.2
+ semver: 7.7.3
transitivePeerDependencies:
- supports-color
@@ -32998,111 +33307,81 @@ snapshots:
espree: 9.6.1
esquery: 1.6.0
lodash: 4.17.21
- semver: 7.7.2
+ semver: 7.7.3
transitivePeerDependencies:
- supports-color
- vue-i18n@11.1.12(vue@3.5.22(typescript@5.8.3)):
- dependencies:
- '@intlify/core-base': 11.1.12
- '@intlify/shared': 11.1.12
- '@vue/devtools-api': 6.6.4
- vue: 3.5.22(typescript@5.8.3)
- optional: true
-
- vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.2)):
+ vue-i18n@11.1.12(vue@3.5.22(typescript@5.9.3)):
dependencies:
'@intlify/core-base': 11.1.12
'@intlify/shared': 11.1.12
'@vue/devtools-api': 6.6.4
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
- vue-json-pretty@2.5.0(vue@3.5.22(typescript@5.9.2)):
+ vue-json-pretty@2.5.0(vue@3.5.22(typescript@5.9.3)):
dependencies:
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
- vue-pdf-embed@2.1.3(vue@3.5.22(typescript@5.9.2)):
+ vue-pdf-embed@2.1.3(vue@3.5.22(typescript@5.9.3)):
dependencies:
pdfjs-dist: 4.10.38
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
- vue-promise-modals@0.1.0(typescript@5.9.2):
+ vue-promise-modals@0.1.0(typescript@5.9.3):
dependencies:
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
transitivePeerDependencies:
- typescript
- vue-router@4.5.1(vue@3.5.22(typescript@5.8.3)):
- dependencies:
- '@vue/devtools-api': 6.6.4
- vue: 3.5.22(typescript@5.8.3)
-
- vue-router@4.5.1(vue@3.5.22(typescript@5.9.2)):
+ vue-router@4.6.3(vue@3.5.22(typescript@5.9.3)):
dependencies:
'@vue/devtools-api': 6.6.4
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
vue-template-compiler@2.7.16:
dependencies:
de-indent: 1.0.2
he: 1.2.0
- vue-tippy@6.7.1(vue@3.5.22(typescript@5.9.2)):
+ vue-tippy@6.7.1(vue@3.5.22(typescript@5.9.3)):
dependencies:
tippy.js: 6.3.7
- vue: 3.5.22(typescript@5.9.2)
-
- vue-tsc@1.8.8(typescript@5.8.3):
- dependencies:
- '@vue/language-core': 1.8.8(typescript@5.8.3)
- '@vue/typescript': 1.8.8(typescript@5.8.3)
- semver: 7.7.2
- typescript: 5.8.3
+ vue: 3.5.22(typescript@5.9.3)
- vue-tsc@1.8.8(typescript@5.9.2):
+ vue-tsc@1.8.8(typescript@5.9.3):
dependencies:
- '@vue/language-core': 1.8.8(typescript@5.9.2)
- '@vue/typescript': 1.8.8(typescript@5.9.2)
- semver: 7.7.2
- typescript: 5.9.2
+ '@vue/language-core': 1.8.8(typescript@5.9.3)
+ '@vue/typescript': 1.8.8(typescript@5.9.3)
+ semver: 7.7.3
+ typescript: 5.9.3
- vue-tsc@2.1.6(typescript@5.9.2):
+ vue-tsc@2.1.6(typescript@5.9.3):
dependencies:
'@volar/typescript': 2.4.22
- '@vue/language-core': 2.1.6(typescript@5.9.2)
- semver: 7.7.2
- typescript: 5.9.2
+ '@vue/language-core': 2.1.6(typescript@5.9.3)
+ semver: 7.7.3
+ typescript: 5.9.3
- vue-tsc@2.2.0(typescript@5.9.2):
+ vue-tsc@2.2.0(typescript@5.9.3):
dependencies:
'@volar/typescript': 2.4.22
- '@vue/language-core': 2.2.0(typescript@5.9.2)
- typescript: 5.9.2
-
- vue@3.5.22(typescript@5.8.3):
- dependencies:
- '@vue/compiler-dom': 3.5.22
- '@vue/compiler-sfc': 3.5.22
- '@vue/runtime-dom': 3.5.22
- '@vue/server-renderer': 3.5.22(vue@3.5.22(typescript@5.8.3))
- '@vue/shared': 3.5.22
- optionalDependencies:
- typescript: 5.8.3
+ '@vue/language-core': 2.2.0(typescript@5.9.3)
+ typescript: 5.9.3
- vue@3.5.22(typescript@5.9.2):
+ vue@3.5.22(typescript@5.9.3):
dependencies:
'@vue/compiler-dom': 3.5.22
'@vue/compiler-sfc': 3.5.22
'@vue/runtime-dom': 3.5.22
- '@vue/server-renderer': 3.5.22(vue@3.5.22(typescript@5.9.2))
+ '@vue/server-renderer': 3.5.22(vue@3.5.22(typescript@5.9.3))
'@vue/shared': 3.5.22
optionalDependencies:
- typescript: 5.9.2
+ typescript: 5.9.3
- vuedraggable-es@4.1.1(vue@3.5.22(typescript@5.9.2)):
+ vuedraggable-es@4.1.1(vue@3.5.22(typescript@5.9.3)):
dependencies:
sortablejs: 1.14.0
- vue: 3.5.22(typescript@5.9.2)
+ vue: 3.5.22(typescript@5.9.3)
w3c-keyname@2.2.8: {}
@@ -33195,7 +33474,7 @@ snapshots:
- esbuild
- uglify-js
- webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.10):
+ webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.11):
dependencies:
'@types/eslint-scope': 3.7.7
'@types/estree': 1.0.8
@@ -33219,7 +33498,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 4.3.2
tapable: 2.2.1
- terser-webpack-plugin: 5.3.14(@swc/core@1.4.2)(esbuild@0.25.10)(webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.10))
+ terser-webpack-plugin: 5.3.14(@swc/core@1.4.2)(esbuild@0.25.11)(webpack@5.100.2(@swc/core@1.4.2)(esbuild@0.25.11))
watchpack: 2.4.2
webpack-sources: 3.3.3
transitivePeerDependencies:
@@ -33280,7 +33559,7 @@ snapshots:
is-async-function: 2.1.1
is-date-object: 1.1.0
is-finalizationregistry: 1.1.1
- is-generator-function: 1.1.0
+ is-generator-function: 1.1.2
is-regex: 1.2.1
is-weakref: 1.1.1
isarray: 2.0.5
diff --git a/prod.Dockerfile b/prod.Dockerfile
index 4774448b8df..42789e935e1 100644
--- a/prod.Dockerfile
+++ b/prod.Dockerfile
@@ -1,6 +1,6 @@
# This step is used to build a custom build of Caddy to prevent
# vulnerable packages on the dependency chain
-FROM alpine:3.22.1 AS caddy_builder
+FROM alpine:3.22.2 AS caddy_builder
RUN apk add --no-cache curl git && \
mkdir -p /tmp/caddy-build && \
curl -L -o /tmp/caddy-build/src.tar.gz https://github.com/caddyserver/caddy/releases/download/v2.10.2/caddy_2.10.2_src.tar.gz
@@ -12,9 +12,9 @@ RUN expected="a9efa00c161922dd24650fd0bee2f4f8bb2fb69ff3e63dcc44f0694da64bb0cf"
echo "✅ Caddy Source Checksum OK" || \
(echo "❌ Caddy Source Checksum failed!" && exit 1)
-# Install Go 1.25.1 from GitHub releases to fix CVE-2025-47907
+# Install Go 1.25.3 from GitHub releases to fix CVE-2025-47907
ARG TARGETARCH
-ENV GOLANG_VERSION=1.25.1
+ENV GOLANG_VERSION=1.25.3
# Download and install Go from the official tarball
RUN case "${TARGETARCH}" in amd64) GOARCH=amd64 ;; arm64) GOARCH=arm64 ;; *) echo "Unsupported arch: ${TARGETARCH}" && exit 1 ;; esac && \
curl -fsSL "https://go.dev/dl/go${GOLANG_VERSION}.linux-${GOARCH}.tar.gz" -o go.tar.gz && \
@@ -27,6 +27,8 @@ ENV PATH="/usr/local/go/bin:${PATH}" \
WORKDIR /tmp/caddy-build
RUN tar xvf /tmp/caddy-build/src.tar.gz && \
+ # Patch to resolve CVE on quic-go
+ go get github.com/quic-go/quic-go@v0.55.0 && \
# Clean up any existing vendor directory and regenerate with updated deps
rm -rf vendor && \
go mod tidy && \
@@ -39,12 +41,27 @@ RUN go build
# Shared Node.js base with optimized NPM installation
-FROM alpine:3.22.1 AS node_base
-RUN apk add --no-cache nodejs npm curl tini bash && \
- # apk provides an outdated npm; immediately upgrade to a pinned version to avoid vulnerabilities
- # TODO: Find a better method which is resistant to supply chain attacks
- npm install -g npm@11.6.0 && \
- npm install -g pnpm@10.17.1 @import-meta-env/cli
+FROM alpine:3.22.2 AS node_base
+# Install dependencies
+RUN apk add --no-cache nodejs curl bash tini ca-certificates \
+ && mkdir -p /tmp/npm-install
+# Set working directory for NPM installation
+WORKDIR /tmp/npm-install
+# Download NPM tarball
+RUN curl -fsSL https://registry.npmjs.org/npm/-/npm-11.6.2.tgz -o npm.tgz
+# Verify checksum
+RUN expected="585f95094ee5cb2788ee11d90f2a518a7c9ef6e083fa141d0b63ca3383675a20" \
+ && actual=$(sha256sum npm.tgz | cut -d' ' -f1) \
+ && [ "$actual" = "$expected" ] \
+ && echo "✅ NPM Tarball Checksum OK" \
+ || (echo "❌ NPM Tarball Checksum failed!" && exit 1)
+# Install NPM from verified tarball and global packages
+RUN tar -xzf npm.tgz && \
+ cd package && \
+ node bin/npm-cli.js install -g npm@11.6.2 && \
+ cd / && \
+ rm -rf /tmp/npm-install && \
+ npm install -g pnpm@10.18.3 @import-meta-env/cli
@@ -183,7 +200,7 @@ COPY aio-subpath-access.Caddyfile /etc/caddy/aio-subpath-access.Caddyfile
ENTRYPOINT [ "tini", "--" ]
COPY --chmod=755 healthcheck.sh /
-HEALTHCHECK --interval=2s CMD /bin/sh /healthcheck.sh
+HEALTHCHECK --interval=2s --start-period=15s CMD /bin/sh /healthcheck.sh
WORKDIR /dist/backend
CMD ["node", "/usr/src/app/aio_run.mjs"]